<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>O bar no fim do universo &#187; coding</title>
	<atom:link href="http://piero.contezini.net/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://piero.contezini.net</link>
	<description></description>
	<lastBuildDate>Sat, 12 Jun 2010 21:36:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Driver Interface multi-serial MOSCHIP MCS 9865</title>
		<link>http://piero.contezini.net/2010/01/25/driver-interface-multi-serial-moschip-mcs-9865/</link>
		<comments>http://piero.contezini.net/2010/01/25/driver-interface-multi-serial-moschip-mcs-9865/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 12:12:20 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[mcs9865]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=268</guid>
		<description><![CDATA[Olá,
O Blog não tá sendo atualizado com frequencia, estou totalmente sem tempo.
De qualquer forma, semana passada atualizei um driver p/ uma controladora multi-serial, assim possibilitando ele rodar no kernel 2.6.32.3.
Como ele é um driver GNU/GPL, a licença diz claramente que devo tornar disponível as alterações para download, assim hospedei no google code.
A URL para download [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>O Blog não tá sendo atualizado com frequencia, estou totalmente sem tempo.</p>
<p>De qualquer forma, semana passada atualizei um driver p/ uma controladora multi-serial, assim possibilitando ele rodar no kernel 2.6.32.3.<br />
Como ele é um driver GNU/GPL, a licença diz claramente que devo tornar disponível as alterações para download, assim hospedei no google code.<br />
A URL para download é <a href="https://code.google.com/p/mcs9865/">https://code.google.com/p/mcs9865/</a</p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2010/01/25/driver-interface-multi-serial-moschip-mcs-9865/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entendendo o Controle de versão (SVN)</title>
		<link>http://piero.contezini.net/2009/10/17/controle-de-versao-svn/</link>
		<comments>http://piero.contezini.net/2009/10/17/controle-de-versao-svn/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 01:18:31 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/2009/10/17/256/</guid>
		<description><![CDATA[A finalizade do controle de versão é óbvia para qualquer pessoa envolvida em projetos onde o volume de informações é grande, e, é necessário manter uma cópia com segurança do resultado final. Mas o que muita gente não vê, é que o controle de versão é muito mais útil do que isto, na realidade, a [...]]]></description>
			<content:encoded><![CDATA[<p>A finalizade do controle de versão é óbvia para qualquer pessoa envolvida em projetos onde o volume de informações é grande, e, é necessário manter uma cópia com segurança do resultado final. Mas o que muita gente não vê, é que o controle de versão é muito mais útil do que isto, na realidade, a principal utilidade dele não é manter a última versão, e sim um <strong>registro detalhado de *todas* as versões</strong>.<br />
Um sistema de controle de versão separa cada inserção na <strong>&#8220;arvore&#8221;</strong> de informação, ela normalmente é chamada de &#8220;commit&#8221;. Cada commit, é uma gravação identificada na base de dados final, contendo a diferença das últimas alterações da arvore disponível na servidora, com as atualizações sendo enviadas.<br />
No caso do SVN, cada atualização é atribuída um <strong>número único e progressivo</strong>, chamado <strong>revisão</strong>. Com esse &#8220;tageamento&#8221; de cada versão, é possível se requisitar ao SVN, uma versão de um dia específico, ou de uma pessoa em específico, até é possível solicitar ao SVN que mostre as diferenças entre uma revisão e outra.<br />
O benefício desse número, é que, ao se fazer deploy de uma aplicação, não é necessário criar uma cópia dessa versão do software, pois basta se anotar o número da revisão em que esta versão deu origem, e poderá sempre requisitar ao controle de versão uma cópia exata.<br />
O uso das pastas de <strong>tags</strong> e <strong>branches</strong>, tem <strong>outra finalidade</strong>.<br />
As versões colocadas no <strong>tag</strong>, geralmente são versões consideradas estáveis, como por exemplo uma versão 1.0 de um produto, ou um marco grande, para facilitar.<br />
<strong>Branches</strong>, são trabalhos paralelos, onde é necessário ter uma copia para se trabalhar em uma nova funcionalidade que quebra compatibilidade com a arvore atual, e exigirá um certo trabalho na hora de integrar com a versão original do produto. Também em branches se poe versões em que a compatibilidade não será restorada, como customizações para clientes e etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2009/10/17/controle-de-versao-svn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Aprenda a programar em 10 anos</title>
		<link>http://piero.contezini.net/2009/10/03/aprenda-a-programar-em-10-anos/</link>
		<comments>http://piero.contezini.net/2009/10/03/aprenda-a-programar-em-10-anos/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 03:50:34 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[informação]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=198</guid>
		<description><![CDATA[O texto abaixo foi traduzido pelo meu amigo Augusto Radtke e é de autoria de Peter Norvig. É dirigido para todos que fazem ciência da computação, ou estudam em alguma área das ciências exatas ou tem interesse ou até mesmo em necessidade de aprender a programar.
Para quem já fez Inteligência Artificial na faculdade deve conhecer [...]]]></description>
			<content:encoded><![CDATA[<p>O texto abaixo foi traduzido pelo meu amigo <a href="http://www.radtke.com.br">Augusto Radtke</a> e é de autoria de Peter Norvig. É dirigido para todos que fazem ciência da computação, ou estudam em alguma área das ciências exatas ou tem interesse ou até mesmo em necessidade de aprender a programar.</p>
<p>Para quem já fez Inteligência Artificial na faculdade deve conhecer o Norvig do seu livro verde, o Artificial Intelligence, a Modern Approach, ou AIMA para os íntimos. Ele era chefe de desenvolvimento dos robôs que foram pra marte da NASA, agora trabalha no Google. Ou seja, ele sabe do que está falando! O texto é longo (uns 10 minutos de leitura).<br />
Aprenda a Programar em Dez Anos<br />
Peter Norvig<br />
Tradução por Augusto Radtke<br />
Porque todo mundo tem tanta pressa?</p>
<p>Entre em qualquer livraria, você vai ver Aprenda Java em 7 dias assim como diversas variações oferecendo lições de Visual Basic, Windows, Internet e por ai vai, em dias ou horas. Eu fiz a seguinte pesquisa na Amazon.com:<br />
CODE<br />
pubdate: after 1992 and title: days and</p>
<p>(title: learn or title: teach yourself)</p>
<p>e encontrei 248 entradas. As primeiras 78 eram livros sobre computadores (número 79 era Learn<br />
Bengali in 30 days). Troquei “dias” por “horas” e encontrei resultados incrivelmente similares: 253 livros, 77 de computadores, seguidos de Teach Yourself Grammar and Style in 24 Hours no número 78. Do total de 200, 96% eram livros de computadores.</p>
<p>A conclusão é que ou as pessoas estão com muita pressa de aprender sobre computadores, ou computadores são extremamente fáceis de aprender do que qualquer outra coisa. Não há livros de como aprender Beethoven, ou Física Quântica ou até adestramento de cães em alguns dias.</p>
<p>Vamos analisar o que um título como Learn Pascal in Three Days<br />
pode significar:</p>
<p>* Aprenda: Em três dias você não terá tempo de escrever programas significantes, e aprender com seu sucesso ou fracasso. Você não terá tempo para trabalhar com um programador experiente e entender o que é conviver neste ambiente. Em resumo, você não terá tempo para aprender muito. Logo eles só podem estar falando a respeito de entendimento supercial, como disse Alexander Pope, aprender pouco é uma coisa perigosa.<br />
* Pascal: Em três dias você deve ser capaz de aprender a sintaxe do Pascal (isso se você já conhece uma linguagem similar), mas não vai aprender muito sobre como utilizar essa sintaxe. Em resumo, se você era, vamos dizer, um programador Basic, você pode aprender a escrever programas no estilo Basic usando a sintaxe do Pascal mas não aprender em que o Pascal é bom (ou ruim). Então, qual o ponto? Alan Perlis disse certa vez: “Uma linguagem que não afeta a maneira que você pensa sobre programação, não vela a pena ser aprendida”. Um ponto é se você precisar aprender um pouco de Pascal (ou algo como Visual Basic ou Javascript) porque você precisa interagir com alguma ferramenta existente para uma tarefa específica. Mas nesse caso você não esta aprendendo a programar, você está aprendendo a como resolver essa tarefa.<br />
* em três dias: Infelizmente, não é suficiente, como veremos a seguir.</p>
<p>Aprenda a Programar em Dez Anos.</p>
<p>Pesquisadores (Hayes, Bloom) tem demonstrado que leva em torno de dez anos para desenvolver perícia em qualquer de uma variedade de áreas, includindo jogar xadrez, compor músicas, pintar, tocar piano, nadar, jogar tênis e pesquisar neuropsicologia ou topologia. Aparentemente não há atalhos: até Mozart, que foi um prodígio musical aos 4 anos levou mais 13 antes de compor música de primeira classe. De outra forma, ou Beatles parecem ter disparado nas paradas em primeiro lugar com a aparição no show do Ed Sullivan em 1964. Mas eles estavam tocando em pequenos clubes em Liverpool e Hamburgo desde 1957, e mesmo que eles conseguiram uma aparição em masa, o primeiro grande sucesso mesmo, Sgt. Peppers, foi lançado em 1967. Samuel Johnson pensa que pode levar mais do que dez anos: “Excelência em qualquer departamento pode ser alcançada apenas com o trabalho de uma vida toda; não é possível compra-lá por menos.” E Chaucer reclamou: “vida tão curta, leva tantu pra aprender.” Sim, é “tantu”, e não “tanto”, um dia você entende.</p>
<p>Então aqui vai minha receita para sucesso na programação:</p>
<p>* Aprenda inglês. Leia o original deste texto. Essa tradução só está aqui para exercitar o meu inglês, não o seu. (Nota do tradutor)<br />
* Se interesse por programação, e faça porque é legal. Tenha certeza que isso continue a ser legal para você dedicar dez anos nisso.<br />
* Converse com outros programadores; leia outros programas. Isso é mais importante do que qualquer livro ou curso de treinamento.<br />
* Programe. O melhor tipo de aprendizado é aprender fazendo.<br />
Colocando de uma forma mais técnica, “o nível máximo de performace individual em um domínio é não é alcançado automaticamente em função de uma experiência extendida, mas sim aumentado mesmo por indivíduos extramente experientes por um esforço deliberativo de melhorar.” (p. 366) e “o aprendizado mais efetivo requer uma tarefa bem definida com uma dificuldade apropriada para o indivíduo em particular, dado que exista um retorno sobre a experiência e oportunidades de repetição e correções de erros.” (p. 20-21) do livro<br />
Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, que é uma referência interessante deste ponto de vista.<br />
* Se você quiser, gaste quatro anos em uma universidade (ou mais em uma pós-graduação). Isso lhe dará acesso a alguns empregos que requerem alguma formação e um grande entendimento do campo de trabalho, mas se você não gosta muito de ir para escolha, você pode (com alguma dedicação) conseguir alguma experiência similiar sobre esse tipo de trabalho. Em qualquer caso, apenas ler livros não será suficiente.<br />
“Educação em ciências da computação não faz de ninguém um gênio em programação tanto quanto estudar pincéis e pigmentos não fazem um bom pintor.” diz Eric Raymond, autor de The New Hacker’s Dictionary. Um dos melhores programadores que eu já contratei tinha apenas o segundo grau, e ele produziu vários softwares incríveis, tem seu próprio grupo de discussão,<br />
e fez dinheiro suficiente em ações para comprar seu próprio clube nortuno.<br />
* Trabalhe em projetos com outros programadores. Seja o melhor programador em alguns projetos, seja o pior em outros. Quando você é o melhor você testa suas habilidades para liderar um projeto, e para inspirar outros com a sua visão. Quando você é o pior aprende o que os mestres ensinam e o que não gostam de fazer (porque eles fazem você fazer por eles).<br />
* Trabalhe em projetos após outros programadores. Esteja envolvido em entender um programa<br />
escrito por outro. Veja o que é preciso para entender e consertar quando o programador original não esta por perto. Pense em como desenvolver seus programas para que seja fácil para quem for mante-lós após você.<br />
* Aprenda pelo menos meia dúzia de linguagens de programação. Includa na lista uma linguagem orientada a objetos (como Java ou C++), uma que seja de abstração funcional (como Lisp ou ML), uma que suporte abstração sintática (como Lisp), uma que suporte especificação declarativa (como Prolog ou C++ com templates), uma que suporte co-rotinas (como Icon ou Scheme), e uma que suporte paralelismo (como Sisal).<br />
* Lembre-se que há um “computador” em “ciência da computação”. Saiba quanto tempo leva para o seu computador computar uma instrução, carregar uma palavra ad memória (com e sem cache), ler palavras consecutivas do disco rígido, procurar por uma nova posição no disco.(As respostas estão aqui.)<br />
* Se envolva no esforço de padronização de uma linguagem. Pode ser o comite ANSI C++, ou na padronização de programação na sua empresa, se utilizaram identação com 2 ou 4 espaços. Em qualquer caso, você aprende o que outras pessoas gostam em uma linguagem, o quanto eles gostam e talvez um pouco do porque eles gostam.<br />
* Tenha o bom senso de cair fora desse processo de padronização tão rápido quanto possível.</p>
<p>Com tudo isso em mente, é questionável o quão longe você pode ir apenas lendo livros. Antes que do meu primeiro filho nascer eu li todos os livros de Como Fazer e ainda me sentia como um novato. Trinta meses depois, quando nasceu meu segundo filho, voltei aos livros para relembra? Não, ao invés disso resolvi utilizar minha experiência pessoal do primeiro filho, que se tornou muito mais útil do que milhares de páginas escritas por especialistas.</p>
<p>Fred Brooks, em seu trabalho No Silver Bullets identificou um plano em três partes para encontrar grandes projetistas de software:</p>
<p>1. Sistematicamente identifique os melhores projetistas o quanto antes.<br />
2. Atribua um orientador de carreira responsável pelo desenvolvimento cuidadosamente de um plano de carreira<br />
3. Promova oportunidades para desenvolvedores em aprendizado interagir e estimular uns aos outros.</p>
<p>Isto assumo que algumas pessoas já possuem as qualidades necessárias para ser um grande desenvolvedor de software; o grande trabalho é apenas coloca-los no caminho correto. AlanPerlis coloca de forma mais sucinta: “Qualquer um pode ser ensinado a esculpir: Michelangelo poderia ser ensinado a não esculpir. É o mesmo com grandes programadores”.</p>
<p>Então vá em frente e compre aquele livro de Java; provavelmente você terá algum uso dele. Mas isso não vai mudar a sua vida, ou o seu conhecimento como um programador em 24 horas, dias, ou meses.<br />
Referências</p>
<p>Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.</p>
<p>Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.</p>
<p>Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.</p>
<p>Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.<br />
Respostas</p>
<p>O tempo aproximado de execução de várias operações num PC típico de 1Ghz no verão de 2001:<br />
executar uma instrução simples 1 nseg = (1/1,000,000,000) seg<br />
extrair uma palavra da memória L1 2 nseg<br />
extrair uma palavra da memória RAM 10 nsec<br />
extrair uma palavra consecutivamente do disco rígido 200 nseg<br />
extrair uma palavra de uma nova posição o disco (busca) 8,000,000nseg = 8mseg<br />
Apêndice: Escolha de Linguagem</p>
<p>Muitas pessoas tem me perguntado sobre qual linguagem devem aprender primeiro.<br />
Não há resposta, mas considere estes pontos:</p>
<p>* Use os seus amigos. Quando me perguntam “que sistema operacioal devo usar, Windows, Unix ou Mac?” minha resposta geralmenet é: “use o que seus amigos usarem”. A vantagem é que você poder aprender com os seus amigos vence qualquer diferença entre sistemas operacionais ou linguagens. Considere também seus futuros amigos: a comunidade de programadores que você fará parte se continuar. A sua escolha possuia uma grande comunidade de usuários ou apenas uma comunidade morta? Existem livros, sites e fórums para encontrar respostas? Você gosta das pessoas desses fórums?<br />
* Mantenha-se simples. Linguagens como C++ ou Java são desenvolvidas para utilização profissional por um grande time de desenvolvedores experientes que estão preocupados com a eficiência de execução de seus códigos. Como resultado, essas linguagens possuem partes complicadas desenvolvidas para essas circunstâncias. Você esta focado em aprender a programar, não precisa dessa preocupação. Você precisa de uma linguagem que foi desenvolvida para ser fácil de aprender e lembrar.<br />
* Interaja. Como normalmente você aprenderia piano: de modo interativo, no qual você escuta uma nota logo que pressiona uma tecla ou de um modo automizado em que você escuta cada nota quando a música termina de tocar? Claramente, aprender interativamente é muito mais fácil, e assim é com a programação. Insista em uma linguagem com um modo interativo e use-o.</p>
<p>Baseado nesses critérios, minhas recomendações para uma primeira linguagem seria Python ou Scheme. Mas as suas circunstâncias podem variar, e existem<br />
outras boas opções. Se a sua idade ainda tiver apenas um dígito, é melhor escolher Alice ou Squeak (aprendizes mais velhos podem gostar também). O importante é você escolher e começar.<br />
Apêndice: Livros e outros recursos</p>
<p>Muitas pessoas me perguntam em quais livros e páginas elas devem aprender. Eu repito que “apenas ler livros não é suficiente” mas eu posso recomendar o seguinte:</p>
<p>* Scheme: Structure and Interpretation of Computer Programs (Abelson &#038; Sussman)é provavelmente a melhor introdução a ciência da computação e ele faz ensinando a programar enquanto você aprende computação.<br />
Você pode ver vídeos de aulas desde livro, assim como o texto completo. online O livro é desafiante e talvez algumas pessoas precisem de outra forma de aprendizado.<br />
* Scheme: How to Design Programs (Felleisen et al.) é um dos melhores livros sobre como projetar programas de forma elegante e funcional.<br />
* Python:Python Programming: Uma introdução a computação (Zelle) e também a linguagem Python.<br />
* Python: Vários tutorials online estão disponíveis em Python.org.<br />
* Oz: Concepts, Techniques, and Models of Computer Programming (Van Roy &#038; Haridi)parece ser um sucessor moderno para Abelson &#038; Sussman. É um tour pelas grandes idéias da programação, muito mais amplo que<br />
Abelson &#038; Sussman mas mantendo uma certa facilidade de leitura. Ele utiliza uma linguagem, Oz, que não é muito reconhecida mas serve como base para outras linguagens.</p>
<p>Notas</p>
<p>T. Capey informa que a página de Complete Problem Solver na Amazon agora possui “Teach Yourself Bengali in 21 days” e “Teach Yourself Grammar and Style” na lista de livros que “Consumidores que compram esse item também costuma comprar estes”.<br />
Eu imagino que um grande parte das pessoas que visualizam esse livro vem dessa página.</p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2009/10/03/aprenda-a-programar-em-10-anos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDOM</title>
		<link>http://piero.contezini.net/2009/07/13/pdom/</link>
		<comments>http://piero.contezini.net/2009/07/13/pdom/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 23:25:24 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=155</guid>
		<description><![CDATA[Há alguns anos atrás comecei a criar uma implementação simplificada para manipulação de XML&#8217;s em C++, na época a única forma &#8220;fácil&#8221; era utilizando a libxml2.
O tempo passou e agora notei que era hora de publicá-la, então há algumas semanas atrás eu reescrevi ela completamente para poder liberar opensource, dado que a primeira versão tinha [...]]]></description>
			<content:encoded><![CDATA[<p>Há alguns anos atrás comecei a criar uma implementação simplificada para manipulação de XML&#8217;s em C++, na época a única forma &#8220;fácil&#8221; era utilizando a libxml2.<br />
O tempo passou e agora notei que era hora de publicá-la, então há algumas semanas atrás eu reescrevi ela completamente para poder liberar opensource, dado que a primeira versão tinha sido desenvolvida para fins comerciais.<br />
Acredito que agora ela chega perto da implementação DOM presente em qualquer engine javascript para browsers web, facilitando bastante a manipulação destes arquivos.<br />
Por enquanto ela ainda não está thread safe, não tem autoconf nem automake, e provavelmente nem vai ter, visto que eu abomino estes caras.<br />
Eu hospedei ela no google code, a URL é: <a href="http://code.google.com/p/pdom/">http://code.google.com/p/pdom/</a></p>
<p>Exemplo de utilização:<br />
<code><br />
DomTree *html = new DomTree("html","utf-8","1.0");<br />
DomElement *body = html-&gt;newElement("body");<br />
body-&gt;setAttribute("bgcolor","black");<br />
DomElement *h1 = body-&gt;newElement("h1");<br />
h1-&gt;setValue("teste de html");<br />
cout << html-&gt;xml(true) << endl;<br />
</code><br />
O resultado será:<br />
<code><br />
&lt;?xml version="1.0" encoding="utf-8"?><br />
&lt;html><br />
  &lt;body bgcolor="black">&lt;h1>teste de html&lt;/h1></body><br />
&lt;/html><br />
</code></p>
<p>Ela manipula uma série de tipos de dados através do SetValue, basicamente os principais tipos de números, endereços ipv6, time_t's e o que mais eu achar necessário no futuro.<br />
Se alguém usar favor deixar um comentário para eu saber, a licença é BSD então pode usar em software comercial que não é necessário abrir os fontes <img src='http://piero.contezini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2009/07/13/pdom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BeerSoap</title>
		<link>http://piero.contezini.net/2009/01/14/beersoap/</link>
		<comments>http://piero.contezini.net/2009/01/14/beersoap/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 21:56:23 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=84</guid>
		<description><![CDATA[A BeerSoap é uma biblioteca desenvolvida por mim para manipulação de chamadas remotas a Web Services baseados em SOAP.
Estou colocando ela em dominío público hoje e pode ser acessada aqui mesmo no blog na parte de Software.
]]></description>
			<content:encoded><![CDATA[<p>A BeerSoap é uma biblioteca desenvolvida por mim para manipulação de chamadas remotas a Web Services baseados em SOAP.<br />
Estou colocando ela em dominío público hoje e pode ser acessada aqui mesmo no blog na parte de <a href="/software">Software</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2009/01/14/beersoap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bug no XCode usando iPhone Simulator e iPhone Device com provisioning</title>
		<link>http://piero.contezini.net/2008/10/18/bug-no-xcode-usando-iphone-simulator-e-iphone-device-com-provisioning/</link>
		<comments>http://piero.contezini.net/2008/10/18/bug-no-xcode-usando-iphone-simulator-e-iphone-device-com-provisioning/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 19:25:14 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[informação]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=49</guid>
		<description><![CDATA[Um bug me deixou louco esta semana e vou compartilhar aqui para tentar ajudar alguma alma sendo torturada pelo mesmo problema.
Após criar o arquivo de provisioning na Apple com o seu certificado, e instalar no Xcode você não consegue mais rodar seu aplicativo no simulador, no device vai perfeitamente mas no Simulador não tem jeito, [...]]]></description>
			<content:encoded><![CDATA[<p>Um bug me deixou louco esta semana e vou compartilhar aqui para tentar ajudar alguma alma sendo torturada pelo mesmo problema.</p>
<p>Após criar o arquivo de provisioning na Apple com o seu certificado, e instalar no Xcode você não consegue mais rodar seu aplicativo no simulador, no device vai perfeitamente mas no Simulador não tem jeito, ele da um erro mais ou menos assim:</p>
<p>No UUID for XXX-XXXX-XXXX-XXXX&#8230;</p>
<p>E simplesmente não faz nada.</p>
<p>O erro esta no arquivo project.pbxproj dentro do seu projeto .xcodeproj.</p>
<p>Basta remover todas as linhas que comecem com: CODE_SIGN_IDENTITY</p>
<p>EXCETO a linha que tem sdk=iphoneos* deixando como conteudo iPhone Developer.</p>
<p>Depois disso basta ir no code signing do projeto e ver se esta tudo ok, se faltar algo basta completar.</p>
<p>Isso acontece pelo que eu entendi se você tinha um Xcode versão anterior e fez o upgrade para o XCode do cocoa touch..</p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2008/10/18/bug-no-xcode-usando-iphone-simulator-e-iphone-device-com-provisioning/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fraquezas da SDK do iPhone (Cocoa Touch)</title>
		<link>http://piero.contezini.net/2008/09/29/fraquezas-da-sdk-do-iphone-cocoa-touch/</link>
		<comments>http://piero.contezini.net/2008/09/29/fraquezas-da-sdk-do-iphone-cocoa-touch/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 19:08:23 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=47</guid>
		<description><![CDATA[Estou relativamente decepcionado com a API fornecida pela Apple para desenvolvimento de aplicações nativas para o iPhone.
Uma das premissas seria disponibilidade de ferramentas para o desenvolvimento de aplicações para o mercado corporativo. Mas o que eu acabei descobrindo é a falta de ferramentas para este tipo de aplicações:

O método padrão de criação de XML&#8217;s para [...]]]></description>
			<content:encoded><![CDATA[<p>Estou relativamente decepcionado com a API fornecida pela Apple para desenvolvimento de aplicações nativas para o iPhone.</p>
<p>Uma das premissas seria disponibilidade de ferramentas para o desenvolvimento de aplicações para o mercado corporativo. Mas o que eu acabei descobrindo é a falta de ferramentas para este tipo de aplicações:</p>
<ul>
<li>O método padrão de criação de XML&#8217;s para a plataforma Mac OS X foi simplesmente esquecido, na documentação só são explicadas maneiras de se interpretar XML&#8217;s mas nenhuma forma de cria-los com facilidade. Descobri &#8220;fora da documentação&#8221; a.k.a jailbreak, que o firmware do iPhone vem com a libxml2, então pude usar uma interface que eu construí em C++ para criação de XML&#8217;s similar ao DOM.</li>
<li>Não existe processamento de SOAP nativo na plataforma, o utilitário que vem com o Xcode esta quebrado mesmo para o Leopard, assim também tive de construir um client SOAP que irei em breve liberar aqui para quem precisar. Batizado de SoapBeer <img src='http://piero.contezini.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>No geral eu tenho gostado de programar em Objective C e a API é interessante, impossível comparar com o Windows Mobile ou o pseudo-sistema operacional Symbian, mas sempre há o que melhorar, não?</p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2008/09/29/fraquezas-da-sdk-do-iphone-cocoa-touch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SVN e Xcode</title>
		<link>http://piero.contezini.net/2008/09/15/svn-e-xcode/</link>
		<comments>http://piero.contezini.net/2008/09/15/svn-e-xcode/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 17:56:57 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=45</guid>
		<description><![CDATA[SVN é a ferramenta mais indispensável para qualquer desenvolvedor responsável, pois garante controle de revisão e integridade dos fontes.
Xcode é a IDE de desenvolvimento para Mac mais completa que existe, mas o que acontece quando você tenta ativar o suporte a SVN no próprio? Não funciona direito, sua &#8220;brench&#8221; fica quebrando toda hora pois a [...]]]></description>
			<content:encoded><![CDATA[<p>SVN é a ferramenta mais indispensável para qualquer desenvolvedor responsável, pois garante controle de revisão e integridade dos fontes.</p>
<p>Xcode é a IDE de desenvolvimento para Mac mais completa que existe, mas o que acontece quando você tenta ativar o suporte a SVN no próprio? Não funciona direito, sua &#8220;brench&#8221; fica quebrando toda hora pois a cada nova build ele da um unlink(); na pasta de dependências e cria novamente, logo some o arquivo .svn</p>
<p>Depois de muito ser castigado por este problema acabei encontrando a solução:</p>
<p>remova do seu projeto a pasta build, para sempre, com ela é impossível manter a sua tree no svn consistente.</p>
<p>E para que nunca mais isto volte a acontecer, ponha no arquivo ~/.subversion/config:</p>
<p>global-ignores = build *.mode1 *.pbxuser *~.nib .DS_Store *~</p>
<p>Isto irá solucionar o problema!</p>
<p>Espero que ajude alguém</p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2008/09/15/svn-e-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objective C, minha próxima linguagem predileta</title>
		<link>http://piero.contezini.net/2008/09/03/objective-c-minha-proxima-linguagem-predileta/</link>
		<comments>http://piero.contezini.net/2008/09/03/objective-c-minha-proxima-linguagem-predileta/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 22:24:06 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[informação]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=43</guid>
		<description><![CDATA[Eu tenho estudado bastante ultimamente, por isto a ausência de posts por aqui.
Um dos meus projetos será o desenvolvimento de uma aplicação para iPhone, então me senti compelido a ler toda a documentação disponível sobre ele.
A parte que mais me encantou realmente foi a linguagem que a Apple escolheu para acesso aos seus Frameworks, o [...]]]></description>
			<content:encoded><![CDATA[<p>Eu tenho estudado bastante ultimamente, por isto a ausência de posts por aqui.</p>
<p>Um dos meus projetos será o desenvolvimento de uma aplicação para iPhone, então me senti compelido a ler toda a documentação disponível sobre ele.</p>
<p>A parte que mais me encantou realmente foi a linguagem que a Apple escolheu para acesso aos seus Frameworks, o Objective C.</p>
<p>Além de ter todas as características do C e C++, permitindo inclusive utilização de objetos e classes dos mesmos, ele implementa a parte que falta do C++ em termos de orientação de objetos.</p>
<p>Dos aspectos mais interessantes tá a questão de objetos não publicarem métodos, ou seja nenhum objeto conhece o método que irá receber a informação de outro objeto, ele ao contrário envia uma mensagem para o objeto e solicita que o receptor pertinente a ela a receba, caso o objeto em tempo de execução não tenha este receptor, ele pode optar por despachar a mensagem para outro objeto que a tenha, isto torna a linguagem extremamente poderosa, pois um objeto pode ser dinamicamente construído em runtime, e receber uma mensagem sem que seja linkado estaticamente como pré requisito no C++.</p>
<p>Dá para construir uma classe pai que envie genericamente informação e solicitar que todos os objetos herdem ela, assim mesmo que um objeto não saiba o que fazer com a informação ele saberá que alguém tem como fazer e poderá despachar para qualquer outro objeto, somando a arquitetura distribuída de chamadas remotas, temos um sistema de orientação a objeto distribuído em tempo de execução já pronto para utilizar.</p>
<p>Ainda conta com Garbage collector, Interfaces, Auto construção de Setters e Getters, Protocolos e muito mais!</p>
<p>Ah e para não parar por ai, tudo é Thread Safe e existem tags especificas para tratar Spin Locks&#8230;</p>
<p>Referência: <a href="http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html">The Objective-C 2.0 Programming Language</a></p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2008/09/03/objective-c-minha-proxima-linguagem-predileta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Amazon S3</title>
		<link>http://piero.contezini.net/2008/07/25/amazon-s3/</link>
		<comments>http://piero.contezini.net/2008/07/25/amazon-s3/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 15:46:55 +0000</pubDate>
		<dc:creator>piero</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[informação]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[cloudcomputing]]></category>
		<category><![CDATA[s3]]></category>

		<guid isPermaLink="false">http://piero.contezini.net/?p=20</guid>
		<description><![CDATA[Um dos primeiros serviços de &#8220;computação nas nuvens&#8221; que eu irei avaliar é o S3 da Amazon, este é um serviço interessante pois ele provê uma forma de gravar dados via interface Web Service, e publicar via HTTP e Torrent a informação lá guardada.
Ele guarda informações em formato chave/valor e metadados customizáveis, dentro de uma [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos primeiros serviços de &#8220;computação nas nuvens&#8221; que eu irei avaliar é o S3 da Amazon, este é um serviço interessante pois ele provê uma forma de gravar dados via interface Web Service, e publicar via HTTP e Torrent a informação lá guardada.</p>
<p>Ele guarda informações em formato chave/valor e metadados customizáveis, dentro de uma especie de pasta que deve ter um nome único entre todos os usuários do serviço, chamado &#8220;<em>Bucket&#8221;</em>. O limite por chave é de 5 GB, nada mal para um Web Service.</p>
<p>Os dados podem ser guardados fisicamente em dois lugares distintos, um dos servidores se localiza nos EUA, e outro na Europa, para se gravar dados em um ou em outro deve-se mudar o endereço de acesso do servidor.</p>
<p>A Interface de acesso é bem documentada, e vários softwares já estão compatíveis com o serviço:</p>
<ul>
<li><a href="http://s3browse.com">S3browse</a> é um serviço via web que usa o S3 para simular um disco virtual online, é gratuito e bem fácil de usar.</li>
<li><a href="https://jets3t.dev.java.net/">Jets3t</a> é um componente em Java para desenvolvedores que também vem com o Cockpit, uma especie de software de FTP muito amigável também</li>
<li><a href="http://cyberduck.ch/">Cyberduck</a> é um programa de FTP para Mac OS X que também suporta de forma transparente o serviço S3</li>
<li><a href="http://www.jungledisk.com/">JungleDisk</a> na minha opnião é a mais profissional das ferramentas aqui citadas, ele implementa um drive virtual utilizando o <a href="http://fuse.sourceforge.net/">FUSE</a> como se fosse local, e também tem a opção de usar o serviço S3 para fazer backup da mesma forma que o Time Machine faz.</li>
</ul>
<p>Os custos são relativamente baixos, custa 0.15 centavos de dolar por GB ocupado, e mais 0.10 centavos por GB enviado e 0.17 por GB baixado.</p>
<p>Minha ultima conta deu 1.26 dolares, com 3 GB&#8217;s ocupados em arquivos e uma boa quantidade de transferência.</p>
<p>Como todos os serviços novos ele ainda não é perfeito, as vezes há quedas bruscas nas conexões de download/upload, lentidão e latencias de rede. Mas a coisa tende a melhorar, a própria Amazon já prometeu verificar todos estes problemas e solucioná-los.</p>
<p>Maiores informações no próprio site: <a href="http://aws.amazon.com">Amazon AWS</a></p>
]]></content:encoded>
			<wfw:commentRss>http://piero.contezini.net/2008/07/25/amazon-s3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
