<?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>pessoal.zehfernando.com &#187; pirações</title>
	<atom:link href="http://pessoal.zehfernando.com/category/piracoes/feed/" rel="self" type="application/rss+xml" />
	<link>http://pessoal.zehfernando.com</link>
	<description></description>
	<lastBuildDate>Thu, 06 May 2010 21:32:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Histórias para bois e outros seres dormirem</title>
		<link>http://pessoal.zehfernando.com/2009/historias-para-bois-e-outros-seres-dormirem/</link>
		<comments>http://pessoal.zehfernando.com/2009/historias-para-bois-e-outros-seres-dormirem/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 15:34:17 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[crônicas]]></category>
		<category><![CDATA[línguas]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=819</guid>
		<description><![CDATA[Pra quem não percebeu pelos últimos posts, ou não leu o que escrevi antes, gosto muito de escrever histórias. Sempre foi a área em que me dei melhor na escola.
Uma das razões principais de eu ter criado este blog foi exatamente pra ter a oportunidade de poder escrever histórias e artigos em português sem ter [...]]]></description>
			<content:encoded><![CDATA[<p>Pra quem não percebeu pelos últimos posts, ou <a href="http://pessoal.zehfernando.com/2009/enquanto-isso-na-cidade-de-townsville-acabou-a-tinta-da-impressora/">não leu o que escrevi antes</a>, gosto muito de escrever histórias. Sempre foi a área em que me dei melhor na escola.</p>
<p>Uma das razões principais de eu ter criado este blog foi exatamente pra ter a oportunidade de poder escrever histórias e artigos em português sem ter de me preocupar muito com o conteúdo, ou com o que as pessoas iriam achar &#8211; afinal, é um blog feito pra ter conteúdo <em>pessoal</em> mesmo, então não tenho que me preocupar com alguém acessando o site do outro lado do mundo pra tirar uma dúvida de ActionScript e acabar se deparando com uma história estranha sobre gaivotas, velhos homens anônimos, ou outros seres parecidos.</p>
<p>Escrever histórias do tipo das que gosto de escrever acaba sendo um exercício de criatividade imenso. Acho que é por isso que gosto de escrevê-las. Pode não parecer, mas pra mim, as histórias que conto não são aquela coisa de escrever uma experiência anterior disfarçada de ficção só pra poupar os envolvidos: nunca estou falando de mim ou de algo que aconteceu e quero botar pra fora, mas sim tentando fazer uma metáfora de <em>lições de vida</em> (tão pretensioso como isso possa soar) ou só situações interessantes/irônicas que imaginei.</p>
<p>Por uma feliz coincidência (ou não), há um tempo atrás comecei a sair com uma garota que quase todo dia me pedia pra contar uma história pra ela antes de dormir &#8211; ao vivo, ou via instant messenger. Cheguei a ler histórias de livros de fábulas (ótimo pra praticar o inglês por sinal), mas o que me dava mais prazer era bolar alguma história na hora.</p>
<p>É por isso que muitas das <a href="http://pessoal.zehfernando.com/category/cronicas/">histórias que escrevo aqui</a> são baseadas em contos ou argumentos trazidos de outras histórias, como <a href="http://www.chinapage.com/story/story.html">contos chineses</a>. O que eu fazia era procurar alguma história rapidamente, ler mais ou menos a premissa básica, e começar re-contar a história com modificações próprias, inventando alguma história diferente no decorrer do processo. Às vezes, só um personagem ou uma frase já serviam de ponto de partida. Pra se ter uma noção, uma das histórias mais tristes que contei usava uma frase da letra da <a href="http://www.youtube.com/watch?v=Wt85tL4pYX4">música de abertura do desenho <em>Sawamu, o Demolidor</em></a> como ponto de partida (a parte que fala dos insetos dos charcos). E quando paro pra pensar, muitas das histórias que eu escrevia quando era mais novo se baseavam na mesma receita: eu assistia alguma propaganda de filme, <em>imaginava</em> do que se tratava o filme, e escrevia uma redação com a história, ou só baseada num personagem específico (e depois, quando eu ia ver o filme, ele geralmente não tinha nada a ver com o que eu tinha escrito).</p>
<p>O relacionamento no final das contas não durou muito tempo, e acabou como a maioria dos meus contos acabam &#8211; sem um final feliz. Mas as histórias ficaram; salvas no histórico do MSN, escritas rapidamente num arquivo <em>txt</em> qualquer, ou até mesmo anotadas com pressa num post-it, tenho uma série de histórias prontas para serem traduzidas ou reescritas em português.</p>
<p>Mas, mais importante, ficou acesa a chama da escrita. Não só nas histórias já elaboradas que estão esperando pra serem postadas, mas nas idéias que ainda estão surgindo a todo momento, uma vez que a prática do exercício de imaginação foi relembrado.</p>
<p>Enfim, tudo isso pra dizer, não se surpreendam se a partir de agora eu postar mais histórias estranhas aqui do que outra coisa. Minha cabeça anda coçando.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/historias-para-bois-e-outros-seres-dormirem/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Algo entre formiga e sardinhas</title>
		<link>http://pessoal.zehfernando.com/2009/algo-entre-formiga-e-sardinhas/</link>
		<comments>http://pessoal.zehfernando.com/2009/algo-entre-formiga-e-sardinhas/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 20:02:09 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[choque]]></category>
		<category><![CDATA[nova york]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=686</guid>
		<description><![CDATA[São Paulo é uma cidade lotada. Acho que nossos governantes perceberam isso: eu costumo dizer que o único papel dos governos municipal e estadual de São Paulo é tornar a cidade tão insuportável para todos que as pessoas vão querer se mudar para outro lugar (resolvendo, assim, o problema da lotação). No meu caso, eles [...]]]></description>
			<content:encoded><![CDATA[<p>São Paulo é uma cidade <em>lotada</em>. Acho que nossos governantes perceberam isso: eu costumo dizer que o único papel dos governos municipal e estadual de São Paulo é tornar a cidade tão insuportável para todos que as pessoas vão querer se mudar para outro lugar (resolvendo, assim, o problema da lotação). No meu caso, eles conseguiram, mas é triste ver que nem por isso o declínio do conforto está em vias de parar (se é que dá pra chamar o aperto de um metrô ou ônibus e a velocidade média de 15km/h nas principais vias de &#8220;conforto&#8221;).</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ru0ZoYVR_UQ&amp;hl=en&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/ru0ZoYVR_UQ&amp;hl=en&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Fiquei sabendo através de websites da <a href="http://www.viomundo.com.br/voce-escreve/paulistano-transportado-feito-gado-no-metro/">recente e malfadada tentativa de pôr ordem no metrô</a>, e é interessante pensar como a coisa se compara ao metrô de NY.</p>
<p>O metrô de São Paulo é muito melhor que o metrô de Nova York. As estações são muito mais limpas. É tudo muito mais bonito, mais espaçoso, e mais bem conservado. Tudo parece muito novo. Os trens são rápidos, grandes, com número de portas e vagões padronizados, ótima distribuição interna das barras de suporte para os usuários, e os pontos de parada são bem distantes entre si, permitindo o máximo de velocidade e eficiência no transporte. As estações têm identidade visual muito bem definida, embora nem sempre completamente idênticas, e são, no geral, bastante seguras. O sistema, no geral, é muito novo e avançado &#8211; coisa de dar orgulho.</p>
<p>Ao mesmo tempo, o metrô de Nova York é muito melhor que o metrô de São Paulo. O metrô está em todo o canto &#8211; existem inúmeras linhas que cobrem a cidade e seus arredores de forma bastante eficaz. Ele funciona 24 horas por dia &#8211; você <em>nunca</em> precisa usar carro, e <em>nunca</em> sai de casa precisando se preocupar em voltar até um horário máximo. A cidade possui uma concentração enorme de pessoas, mas ainda assim, independente do horário, sempre tem bastante espaço dentro do vagão.</p>
<p>É uma comparação estranha. São Paulo tem tudo para ter o melhor sistema, mas acaba ficando devendo no que realmente importa &#8211; cobertura e padrões mínimos de conforto.</p>
<p>Obviamente, tudo se resume na quantidade de vias. Com seus 61 km de vias que vão do ponto A ao ponto B com 2 gargalos horríveis no meio do caminho, é uma difícil comparação ao sistema velho, sujo, mal feito e caótico de Nova York, onde os 369 km disponíveis fazem toda a diferença.</p>
<p>Quando aluguei meu novo apartamento por aqui e me mudei <a href="http://en.wikipedia.org/wiki/Williamsburg,_Brooklyn">pro meu bairro</a>, amigos meus me avisaram que eu poderia pegar o metrô lotado de manhã, pra ir trabalhar, já que existe um certo gargalo naquela região. O resultado? O pior que acontece é eu pegar um metrô onde não posso ler meu livro em pé com muito espaço. Às vezes até acontece de passar um trem lotado que <em>não estou a fim de pegar</em>, porque já me acostumei a um certo nível de conforto, mas logo após sempre passa um mais vazio. No geral, acabo demorando 30 minutos pra chegar no escritório, todo dia.</p>
<p>Quando alguém por aqui me diz que o metrô está lotado, dou risada.</p>
<p>Isso porque, em São Paulo, eu desfrutava do luxo de morar do lado do <a href="http://www.metro.sp.gov.br/redes/vermelha/tebelem.shtml">metrô Belém</a>, na Zona Leste. Resultado? Eu nunca pegava o metrô pra ir pra lugar nenhum de manhã, já que tal tarefa era impossível devido à superlotação. Se precisasse ir trabalhar, pegava um ônibus. O metrô era bastante conveniente nos finais-de-semana, se quisesse ir pro centro, mas em qualquer outro caso, era completamente inútil.</p>
<p>Nova York já foi escrava do carro, há décadas atrás, mas numa <a href="http://en.wikipedia.org/wiki/Robert_Moses#End_of_the_Moses_era">turbulenta mini-revolução</a> acordou desse devaneio e hoje é escrava do pedestre. São Paulo, ao contrário, ainda faz de conta que automóvel é o meio de transporte urbano ideal. E enquanto o governo finge que faz alguma coisa e os Paulistanos fazem de conta que acreditam enquanto compram carros maiores e mais potentes para andar cada vez mais devagar, ou acreditam em <a href="http://pt.wikipedia.org/wiki/Fura-fila">projetos inócuos superfaturados</a>, a rotina na cidade vai ficando cada vez mais difícil de suportar.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/algo-entre-formiga-e-sardinhas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Aprendendo ActionScript 3</title>
		<link>http://pessoal.zehfernando.com/2009/aprendendo-actionscript-3/</link>
		<comments>http://pessoal.zehfernando.com/2009/aprendendo-actionscript-3/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 17:44:14 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[pirações]]></category>
		<category><![CDATA[trampo]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=519</guid>
		<description><![CDATA[Esta semana, publico aqui o conteúdo de minha coluna de cartas do leitor, originalmente publicada nas páginas do Compêndio Anual Regulatório de Análise Linguística e Habilidades Outras. Reproduzido com permissão da editora.
Caro Sr. Zeh Fernando,
Eu quero criar websites Flash em ActionScript 3, mas não sei o que eles comem. Pode me ajudar?
Um abraço,
Leitor Assíduo
Caro Leitor [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana, publico aqui o conteúdo de minha coluna de <em>cartas do leitor</em>, originalmente publicada nas páginas do <em>Compêndio Anual Regulatório de Análise Linguística e Habilidades Outras</em>. Reproduzido com permissão da editora.</p>
<blockquote><p>Caro Sr. Zeh Fernando,</p>
<p>Eu quero criar websites Flash em ActionScript 3, mas não sei o que eles comem. Pode me ajudar?</p>
<p>Um abraço,<br />
Leitor Assíduo</p></blockquote>
<p>Caro Leitor Assíduo,</p>
<p>Muito pertinente sua dúvida. Essa é uma questão que sempre vem à tona nos círculos intelectuais dos criadores Flash, seja em palestras, mesas de discussão, mesas de bar, ou sarjetas pós-mesa de bar. A criação de sites Flash é algo difícil, e considerando-se a velocidade das mutações à qual o organismo desta plataforma tem passado nos últimos anos, as técnicas para criação e manutenção de websites em Flash estão também em constante mudança.</p>
<p>Para tentar elucidar as questões mais pertinentes e retratar o patamar atual desta parcela tão curiosa de nossa ecologia de interfaces, listo aqui algumas conclusões à qual cheguei após a observação da espécie, não só em cativeiro mas também em seu habitat natural. No entanto, seria difícil para mim discorrer aqui sobre todas as técnicas para criação de websites em ActionScript 3, considerando-se a complexidade do tema, então o que farei é listar algumas das soluções normalmente utilizadas para o aprendizado das tais técnicas. Um meta-ensino, por assim dizer.</p>
<p>Uma das primeiras alternativas para o aprendizado de ActionScript 3 que geralmente vem à mente de criadores amadores é o de utilizar <em>cursos</em> de Flash ou de ActionScript 3.</p>
<p>Talvez eu não seja a melhor pessoa indicada para falar disso &#8211; visto que nunca fiz nenhum curso de ActionScript, Flash ou de nenhuma outra linguagem de programação (com a exceção de algumas aulas de <em>BASIC</em> que tive na escola, quando ainda era um mero pimpolho de 10 anos, um <em>programacultor</em> em formação) &#8211; mas minha sincera opinião é de que cursos desse estilo não funcionam muito bem. Como a maioria das variantes das linguagens de programação orientadas a objeto, ActionScript 3 é um assunto de difícil assimilação e definitamente não é algo que se aprende em 6 meses, ou mesmo em um ano, a menos que o aspirante a programacultor ActionScript já tenha uma boa experiência com outras culturas de linguagem de programação.</p>
<p>Da mesma forma, cursos voltados a plataformas parecidas geralmente tentam atrair e manter o aluno através de <em>resultados rápidos</em>,  o que nem sempre isto é a melhor opção. Existem diferentes formas de criar websites com ActionScript 3, e os melhores métodos a longo prazo são, geralmente, os que levam mais tempo para assimilação. Infelizmente, a grande maioria dos alunos quer ver seus botões em ActionScript 3 desabrochando e saltitantes com o mínimo tempo e esforço, sem se preocupar em aprender as melhores técnicas para seu semeio, ou sem explicar <em>o porquê</em> deles serem criados de uma forma e não de outra. Isso faz com que a longevidade de sua produção sofra, algo que só se percebe tarde demais.</p>
<p>Um último e controverso ponto é de que <em>a maioria</em> dos instrutores encontrados em escolas de programacultura não são exatamente os melhores criadores de websites em ActionScript 3. Infelizmente, instrutores são só isso, <em>instrutores</em>, geralmente pagos para ensinar o semeio de diferentes culturas ao mesmo tempo, sem nunca se focar no cultivo de uma plataforma específica. Isso quer dizer que eles são treinados para passar o conteúdo de uma apostila previamente planejada com louvor, mas possuem limites em seu conhecimento &#8211; resultando num discurso bem linear e unilateral. Questões oriundas de uma mente em aprendizado inquisitiva poderão ficar sem resposta. Pior, seu conhecimento é frequentemente datado, especialmente quando pensamos numa cultura em mutação constante como a de ActionScript.</p>
<p>Minha conclusão nesse sentido é de que, para quem gosta de um aprendizado coletivo, em grupos, um curso pode ser uma boa porta de entrada ao mundo da programacultura para Flash. No entanto, provavelmente não é o caminho ideal para se seguir. Não recomendo gastar muito dinheiro nisso.</p>
<p>Outra alternativa é através de <em>publicações</em>. Nessa área, felizmente, a programacultura ActionScript 3 está muito bem servida, já que existe uma boa quantidade de de material didático existente.</p>
<p>E perceba que quando falo de material didático, quero dizer livros, não <em>apostilas</em>. Apostilas é coisa de quem quer fazer cursinho e não tem paciência pra estudar, quem quer plantar e não quer esperar a planta crescer, quem quer adubar e sentir cheiro de flores, quem quer aprender kung-fu sem levantar a bunda da cadeira. Apostilas são um mito.</p>
<p>A principal recomendação literária de minha parte é ler, de cabo a rabo, o último livro do Colin Moock &#8211; atualmente, <a href="http://www.moock.org/eas3/">Essential Actionscript 3.0</a>. Este livro contém todo tipo de informação que os criadores de sites em Flash precisam saber para um cultivo proveitoso, não só para programacultores experientes como também para iniciantes (embora seja uma leitura mais demorada). É realmente leitura obrigatória, inclusive a cada nova versão escrita.</p>
<p>Uma boa leitura complementar é o <a href="http://oreilly.com/catalog/9780596526955/">ActionScript 3.0 Cookbook</a>, que ensina diversas técnicas bastante práticas para o semeio de ActionScript &#8211; não só técnicas que podem ser usados no dia-a-dia em sua criação, mas que lhe ensinarão a ser um melhor programacultor.</p>
<p>Existem algumas leituras complementares avançadas, mas talvez fuja um pouco do escopo deste artigo, já que programacultores experientes provavelmente não precisarão de minhas dicas para irem atrás do que precisam. No entanto, em prol da ilustração, cito em especial o <a href="http://oreilly.com/catalog/9780596528461/">ActionScript 3.0 Design Patterns</a>, que ensina aos criadores a melhor maneira de dispor sua horta de forma a conseguir o melhor aproveitamento possível do solo e por consequência o melhor semeio a curto e longo prazos.</p>
<p>E, finalmente, gostaria de encerrar esta coluna com uma constatação do óbvio: nada substitui a prática. A criação com sucesso de sites em Flash é algo que requer tempo, paciência, e um pouquinho de amor. Portanto, não existem atalhos. A minha recomendação final é simplesmente tentar, errar, e fazer algo de diversas formas diferentes, até acertar. Por mais incrível que possa soar, criação orientada a objetos não é uma ciência exata, e requer um certo tempo até todos acertarmos a mão. Comece aos poucos, mantenha o foco, que a coisa vem naturalmente.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/aprendendo-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>A cidade ideal</title>
		<link>http://pessoal.zehfernando.com/2009/a-cidade-ideal/</link>
		<comments>http://pessoal.zehfernando.com/2009/a-cidade-ideal/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 14:47:34 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[crônicas]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=617</guid>
		<description><![CDATA[A cidade ideal teria suas ruas divididas em retângulos, como em Nova York. Quer ir pro norte? É só pegar uma rua que vai pro norte. Não precisa se preocupar com curvas sinuosas que te fazem sair do caminho.
Da mesma forma, a cidade também teria avenidas e ruas com nomes numéricos, em sequência &#8211; do [...]]]></description>
			<content:encoded><![CDATA[<p>A cidade ideal teria suas ruas divididas em retângulos, como em Nova York. Quer ir pro norte? É só pegar uma rua que vai pro norte. Não precisa se preocupar com curvas sinuosas que te fazem sair do caminho.</p>
<p>Da mesma forma, a cidade também teria avenidas e ruas com nomes numéricos, em sequência &#8211; do norte pro sul, e do leste pro oeste (ou vice-versa). Quer ir da oitava avenida pra sexta avenida? Dois quarteirões na direção leste. Não sabe onde é a 50a rua, nunca ouviu falar? Fica depois da 49a, é lógico.</p>
<p>E ainda obedecendo ao <em>grid</em>, as ruas e avenidas teriam mãos previsíveis: pares vão numa direção, ímpares em outra. Não precisa circular 10 quarteirões só porque você quer entrar numa rua de mão única e não consegue nenhum ponto de acesso.</p>
<p>Já os prédios, casas, lojas e demais logradouros seriam numerados de acordo com sua distância até o início da rua, em metros, como em São Paulo. Fica fácil de saber a distância de um ponto a outro. Quer ir da altura do número 120 até o número 500? São 380 metros.</p>
<p>Essa cidade teria um metrô 24 horas, que percorre praticamente a cidade toda, incluindo os pontos mais remotos, como em Nova York. E os metrôs teriam linhas expressas, que pulam algumas estações, pra quem quer ir rapidamente pra algum canto. Não só isso, mas diversos pontos de transferência e integração entre linhas. E, desnecessário citar, os trens seriam pouco lotados, mas ainda assim teriam um ar-condicionado bem eficiente.</p>
<p>Mas os metrôs seriam rápidos, limpos e bem-conservados, como em São Paulo. Além disso, você não teria entradas extremamente específicas, que te obrigam a sair, atravessar a rua, e pagar outro bilhete se você tiver entrado, sem querer, na plataforma da direção errada &#8211; os pontos de entrada e saída seriam unificados.</p>
<p>As estações de metrô teriam máquinas de compra de bilhetes que aceitariam cartão de crédito, débito, notas, ou moedas, permitindo a qualquer um adquirir um bilhete &#8211; ou colocar créditos em seu bilhete recarregável &#8211; de forma rápida e, geralmente, sem filas. Como em Nova York. As catracas para entrada seriam inúmeras, como em São Paulo, e com catracas específicas para entrada ou saída, para evitar confusões de catracas que servem aos dois propósitos.</p>
<p>Como em Nova York, você não precisaria de carro para nada. Seria muito mais fácil, rápido, e barato, chegar de metrô em qualquer lugar. O trânsito seria um problema menor, senão inexistente. A cidade seria escrava do pedestre, não do automóvel. E as bicicletas seriam extremamente práticas.</p>
<p>Toda esquina da cidade ideal teria uma lata de lixo de verdade, e toda residência teria coleta de lixo reciclável, como em Nova York. Mas as calçadas e ruas pareceriam mais limpas, assim como, incrivelmente, São Paulo (ou partes de São Paulo).</p>
<p>Na cidade ideal, os caixas eletrônicos dos bancos permitiriam depósitos em dinheiro ou cheque sem a necessidade de envelopes especiais ou do preenchimento de qualquer outra coisa. Como em Nova York, elas leriam os valores das notas, e os valores dos cheques, e permitiriam a você conferir o depósito antes de efetuá-lo. Os caixas seriam limpos e bem conservados, como em São Paulo.</p>
<p>Os parques seriam limpos, confortáveis, e convidativos, sem terem sido dominados por moradores de rua, drogados, trombadinhas ou outros seres estranhos. Crianças brincariam felizes nos parques das áreas mais residenciais, e os mesmos também teriam específicas para donos de cachorros deixarem seus melhores abrigos brincarem e correrem, assim como se vê em Nova York.</p>
<p>Da mesma forma que em Nova York, as cervejas encontradas nos bares seriam inúmeras, sem o domínio de uma ou outra marca. E com sabores e texturas das mais distintos, ao invés de poucas variações do mesmo tipo de cerveja. Mas você poderia beber na rua, como em São Paulo.</p>
<p>O churrasco da cidade ideal seria como em São Paulo, ou outras partes do sul do Brasil &#8211; regado a muita carne, muito sal, e churrasqueiras exclusivamente de carvão. Mas o hambúrger ou o sanduíche encontrados em qualquer esquina seriam como seus equivalentes de Nova York &#8211; bem servidos, e dos tipos e sabores mais variados.</p>
<p>As garotas da cidade ideal seriam tão bonitas &#8211; e usariam roupas tão sensuais &#8211; quanto as de São Paulo (ou de qualquer outra cidade brasileira). Mas teriam histórias de vida, origens e experiências tão variadas quanto as que você encontra nas garotas de Nova York.</p>
<p>Para ser realista, o aluguel de alguma casa ou apartamento na cidade ideal seria tão barato quanto o aluguel médio de São Paulo. As residências também seriam tão espaçosas quanto as que você geralmente encontra lá. Mas, ao mesmo tempo, seria muito mais rápido de chegar em qualquer lugar, como em Nova York &#8211; morar <em>na periferia</em> seria algo comum. Toda a idéia de periferia seria algo difícil de entender, no entanto, já que o contraste entre áreas não seria mais tão grande.</p>
<p>A cidade ideal seria uma cidade extremamente urbanizada em seu núcleo. Com lojas para tudo, e áreas mais ou menos especializadas num determinado tipo de comércio. Com em São Paulo ou, especialmente, Nova York. Com áreas de lazer e relaxamento &#8211; praias e parques &#8211; a dois passos de distância, como em Nova York, mas com praias tão boas quanto as do Brasil.</p>
<p>A cidade ideal seria perfeita.</p>
<p>Mas talvez aí já não teria mais tanta graça.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/a-cidade-ideal/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Pense duas vezes antes de abrir a próxima porta</title>
		<link>http://pessoal.zehfernando.com/2009/pense-duas-vezes-antes-de-abrir-a-proxima-porta/</link>
		<comments>http://pessoal.zehfernando.com/2009/pense-duas-vezes-antes-de-abrir-a-proxima-porta/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 12:52:34 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[choque]]></category>
		<category><![CDATA[nova york]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=609</guid>
		<description><![CDATA[Em Nova York, todas as fechaduras são de cabeça-pra-baixo.
Isso é uma coisa que reparei no meu apartamento temporário (no qual passei o primeiro mês): em todas as fechaduras, eu tinha de usar a chave ao contrário do que eu estava acostumado. Não liguei; era um prédio meio antigo, as fechaduras deviam ter sido instaladas erradas, [...]]]></description>
			<content:encoded><![CDATA[<p>Em Nova York, todas as fechaduras são de cabeça-pra-baixo.</p>
<p>Isso é uma coisa que reparei no meu apartamento temporário (no qual passei o primeiro mês): em todas as fechaduras, eu tinha de usar a chave ao contrário do que eu estava acostumado. Não liguei; era um prédio meio antigo, as fechaduras deviam ter sido instaladas erradas, coisa típica de se encontrar em qualquer canto.</p>
<p>Quando me mudei pro meu novo apartamento &#8211; desta vez, um prédio novo &#8211; me surpreendi ao perceber que ali, também, a fechadura estava de cabeça-pra-baixo. Foi aí que reparei: o nome do fabricante gravado na fechadura estava corretamente orientado, e era perfeitamente legível. A fechadura não estava de cabeça-pra-baixo; era pra ser daquele jeito mesmo.</p>
<p><a href="http://www.flickr.com/photos/darwinbell/2436097666/"><img src="http://pessoal.zehfernando.com/wp-content/uploads/2009/08/lock.jpg" alt="Etched Lock, por Darwin Bell" title="Etched Lock, por Darwin Bell" width="560" height="381" class="aligncenter size-full wp-image-610" /></a></p>
<p>Às vezes não é a fechadura que está de cabeça-pra-baixo, só nossas expectativas.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/pense-duas-vezes-antes-de-abrir-a-proxima-porta/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pequenas coisas (II)</title>
		<link>http://pessoal.zehfernando.com/2009/pequenas-coisas-ii/</link>
		<comments>http://pessoal.zehfernando.com/2009/pequenas-coisas-ii/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 20:42:56 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[choque]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=591</guid>
		<description><![CDATA[Se a mudança pra um apartamento temporário mobiliado já é meio esquisita, imagina mudar pra um apartamento novo vazio.
Semana passada me mudei pro que considero o meu apartamento mais ou menos definitivo &#8211; o apartamento que devo ocupar pelo próximo ano (já que é o que diz o contrato que assinei). Ao contrário do meu [...]]]></description>
			<content:encoded><![CDATA[<p>Se a mudança <a href="http://pessoal.zehfernando.com/2009/pequenas-coisas/">pra um apartamento temporário mobiliado</a> já é meio esquisita, imagina mudar pra um apartamento novo vazio.</p>
<p>Semana passada me mudei pro que considero o meu apartamento <em>mais ou menos definitivo</em> &#8211; o apartamento que devo ocupar pelo próximo ano (já que é o que diz o contrato que assinei). Ao contrário do meu apartamento anterior, que era mobiliado (já que era preparado pra residentes temporários), esse é um apartamento <em>normal</em>, então não tem mobília nenhuma. Pior (ou melhor), é num prédio recém-construído, o que quer dizer que o apartamento não tem absolutamente nada &#8211; nada de cortinas nas janelas, por exemplo. O que é um problema, já que as janelas desse apartamento dão pra rua.</p>
<p>Se já era um choque perceber que você precisava de esponja e que não tem nenhuma, imagina estar num apartamento sem absolutamente nada. É tipo viver numa casca oca. Se olho meu apartamento hoje, dá impressão de que um mendigo invadiu o lugar, dada a quantidade de tranqueiras jogadas pelo chão do que normalmente seria um apartamento bem arrumadinho.</p>
<p>Mais importante, a mudança pra esse apartamento também tem funcionado como experiência de compreensão de todo o ecosistema envolvido na preparação e manutenção de uma residência comum, principalmente quando você se muda pro lugar sem nada (ou, como no meu caso, só com um pouco de roupa, um laptop, e alguns outros itens essenciais).</p>
<p>Pra explicar por partes: eu tinha um problema (janelas sem cobertura) que deveria ser resolvido. A solução escolhida, então, foi instalar persianas nas janelas.</p>
<p>O primeiro passo foi dar um pulo numa loja de tranqueiras aleatórias &#8211; existem milhares dessa por aqui &#8211; e comprar <em>persianas</em>, que eu já sabia que existiam à venda. Persianas compradas, levo-as para casa para a instalação. Desmonto, vejo as instruções (horrivelmente mal escritas por sinal) e percebo que preciso de&#8230; uma furadeira para montar as persianas. Não tenho nada disso. Provavelmente estava imaginando que as persianas usariam algum outro método mágico de fixação.</p>
<p>No dia seguinte, compro a furadeira (de novo, numa loja de tranqueiras aleatórias) e levo pra casa. Feliz e contente, vou finalmente instalar minhas persianas, e percebo que&#8230; não tenho nenhuma <em>ponta para furadeira</em>. Burro eu, não fazia nem idéia de que precisava disso. Achava que a furadeira já vinha com as tais pontas.</p>
<p>No dia seguinte, visito mais uma das minhas lojas favoritas de tranqueiras (já num ponto em que virei sócio de carteirinha), compro pontas de furadeiras de vários tamanhos. Chego em casa, pronto pra instalar 30 persianas, e percebo que&#8230; as pontas que comprei são para furar em madeira, mas eu preciso de pontas para furar parede (aqui, chamados de <em>drywall</em>, que são compostos de gesso).</p>
<p>No dia seguinte, compro as pontas de furadeiras para drywall, chego em casa já na ânsia, furo as paredes feliz e contente, e instalando as persianas, percebo que&#8230; comprei persianas do tamanho errado, ficam faltando umas polegadas na base. Vai contra minha natureza deixar as persianas assim, então desencano e resolvo nem continuar a instalação. Sorte que só tinha comprado persianas pra 2 (das 4) janelas.</p>
<p>No dia seguinte, resoluto e confiante no sucesso, chego em casa com persianas novas do tamanho certo, furo a parede, aparafuso tudo, arrumo as persianas, e finalmente tenho janelas bonitinhas.</p>
<p><img src="http://pessoal.zehfernando.com/wp-content/uploads/2009/08/parede.jpg" alt="Persianas" title="Persianas" width="560" height="335" class="aligncenter size-full wp-image-603" /></p>
<p>É meio bobo, mas poucas coisas na vida me deram mais orgulho do que finalmente instalar essas persianas.</p>
<p>Demora um tempo, mas chega-se lá.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/pequenas-coisas-ii/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Pequenas coisas</title>
		<link>http://pessoal.zehfernando.com/2009/pequenas-coisas/</link>
		<comments>http://pessoal.zehfernando.com/2009/pequenas-coisas/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 16:44:27 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[choque]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=441</guid>
		<description><![CDATA[Se mudar pra um apartamento novo (ainda que temporário) é também perceber a falta que coisas pequenas fazem. Algo que eu sabia (até porque quanto tinha me mudado de volta pra São Paulo há 15 anos atrás eu tinha sentido a mesma coisa), mas aqui é amplificado já que é uma cidade e país novos [...]]]></description>
			<content:encoded><![CDATA[<p>Se mudar pra um apartamento novo (ainda que temporário) é também perceber a falta que coisas pequenas fazem. Algo que eu sabia (até porque quanto tinha me mudado de volta pra São Paulo há 15 anos atrás eu tinha sentido a mesma coisa), mas aqui é amplificado já que é uma cidade e país novos sem muitos conhecidos ou parentes ao redor; não tem a quem recorrer quando falta alguma coisa.</p>
<p>É perceber que você tem de tomar banho e não tem esponja ou bucha, e não fazer a menor idéia de onde encontrar isso, aí ser obrigado a tomar banho um dia só com o sabonete mesmo. Explico: aqui as categorias de lojas são meio diferentes, então é difícil saber onde ir quando você precisa de algo. Acabei encontrando uma bucha legal numa loja que é um misto de mercadinho, farmácia, e loja de cosméticos. Você acha batom do lado do doritos e da cerveja. Nada incomum por aqui.</p>
<p>É também perceber que os pacotes de produtos de consumo aqui são oferecidos de forma diferente. Você não tem pacotes médios; só pequenos ou gigantes. Fui comprar band-aid &#8211; outra coisa que você só percebe que faz falta quando é tarde demais &#8211; e só pude comprar um mini-pacotinho com 8 unidades. Mesma coisa pra cotonetes: é um pacotinho que cabe no bolso. Já sucos, você só acha em embalagens de 2 litros pra cima.</p>
<p>É se dar conta que a variação também irrita um pouco. Comprimido pra dor-de-cabeça? Tem de 200 tipos diferentes. Uma mesma marca vai ter uma dúzia de categorias &#8211; pro dia, pra noite, pra tarde ensolarada, pra manhã de ressaca, pra homens às 3 horas da tarde quando você está assistindo TV e seu peso é um número par e seu sobrenome começa com a letra &#8220;D&#8221;. Coisas assim. Só pensar em qual você precisa pra uma dor-de-cabeça típica já amplifica a dor. Só quero paracetamol puro ou o equivalente, obrigado.</p>
<p>Eu atualmente tenho uma lista de coisas simples que preciso comprar. É a lista mais aleatória do mundo. Bloco de papel pra anotações. Caneta. Papel vegetal pro microondas. Abajur. Cabo USB extra pra ligar o celular no computador. Um carregador pro meu celular antigo (esqueci no Brasil, duh). Catchup. Lanterna. Chaveiro. Rádio-relógio. Mais toalhas de banho. Tesoura. Algum cesto pra pôr a roupa suja. Suportes para coisas no chuveiro. Panela pra esquentar água. Isso porque já comprei alguns dos itens mais fundamentais.</p>
<p>Sempre que passo em alguma loja mais esquisita, entro pra ver se tem algum item da lista. Aí também é comum perceber que tinha algo lá que eu precisava, mas que não tinha me dado conta ou adicionado à minha lista ainda. Foi assim com cortador de unha e com adaptador de tomada &#8211; achei ambos, sem querer, no primeiro dia, numa loja onde só entrei pra tirar xerox. Ainda bem; precisava cortar a unha e precisava do adaptador de tomada pra poder fazer a barba com meu barbeador antigo. Um viva para a aleatoriedade, me fazendo parecer menos com um ser da caverna.</p>
<p>Nem todas as pequenas coisas você pode comprar, no entanto. E essas podem, da mesma forma, fazer uma falta descomunal.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/pequenas-coisas/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Aprenda programação orientada a objetos no dia dos namorados</title>
		<link>http://pessoal.zehfernando.com/2009/aprenda-programacao-orientada-a-objetos-no-dia-dos-namorados/</link>
		<comments>http://pessoal.zehfernando.com/2009/aprenda-programacao-orientada-a-objetos-no-dia-dos-namorados/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 08:16:35 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[crônicas]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=348</guid>
		<description><![CDATA[Há algumas semanas atrás, o grande @mjlogan publicou uma frase em sua conta do Twitter que achei genial:
@mjlogan: Gata, pode vir populando que meu array já está inicializado. #pedreiro_geek
Era mais uma &#8211; de muitas &#8211; cantadas geek que estavam circulando naquele dia no Twitter (e que continuam circulando) com a hashtag #pedreiro_geek (ou #geekpickuplines na [...]]]></description>
			<content:encoded><![CDATA[<p>Há algumas semanas atrás, o grande <a href="http://twitter.com/mjlogan">@mjlogan</a> publicou <a href="http://twitter.com/mjlogan/status/1913079272">uma frase</a> em sua conta do Twitter que achei genial:</p>
<blockquote><p><a href="http://twitter.com/mjlogan">@mjlogan</a>: Gata, pode vir populando que meu array já está inicializado. #pedreiro_geek</p></blockquote>
<p>Era mais uma &#8211; de muitas &#8211; <em>cantadas</em> geek que estavam circulando naquele dia no Twitter (e que continuam circulando) com a hashtag <a href="http://search.twitter.com/search?q=%23pedreiro_geek">#pedreiro_geek</a> (ou <a href="http://search.twitter.com/search?q=geekpickuplines">#geekpickuplines</a> na versão gringa). Neste caso, bastante voltada pra programação.</p>
<p>Ler isso fez com que uma verdadeira lâmpada se acendesse acima da minha cabeça. Ou seja, estava sem fazer porra nenhuma e pensei, &#8220;<em>Caralho, dá pra fazer um monte de cantadas toscas desse tipo relacionadas a programação!</em>&#8220;.</p>
<p>Quem me conhece sabe que sou um solteiro convicto, mas a oportunidade me pareceu boa demais pra deixar passar. Sabe aqueles momentos em que a inspiração bate e você não liga muito pras consequências? Então. Foi aí que acabei despejando uma torrente de frases parecidas <a href="http://twitter.com/zeh_br">na minha conta no Twitter</a>, mas todas relacionadas a <em><a href="http://en.wikipedia.org/wiki/Object-oriented_programming">Object-Oriented Programming</a></em>, ou <em>OOP</em> (<a href="http://pt.wikipedia.org/wiki/Orientação_a_objetos">Programação Orientada a Objetos</a>, em português). Quem teve a <del datetime="2009-06-12T04:22:10+00:00">honra</del> <del datetime="2009-06-12T04:22:10+00:00">prazer</del> <del datetime="2009-06-12T04:22:10+00:00">sorte</del> infelicidade de acompanhar os tweets não deve ter entendido muita coisa, porque elas são realmente muito voltadas pro mundo OOP; no máximo, pode ter achado uma ou outra engraçadinha.</p>
<p>Como <a href="http://search.twitter.com/">o search</a> do Twitter não parece funcionar pra coisas muito antigas, não dá mais pra listar tudo que postei através de um simples link. Mas como a data é bastante propícia, decidi postá-las aqui para guardá-las pra posteridade.</p>
<p>No entanto, pro bem da humanidade, e pra ter algum propósito minimamente útil neste artigo, decidi colocar explicações de cada frase junto de cada uma delas. Pra quem não entendeu nada quando as escrevi, pode ser uma oportunidade de entender o quão <del datetime="2009-06-12T04:22:10+00:00">genial</del> razoável cada uma das frases era; pra quem está aprendendo OOP, pode ser uma oportunidade de sacar alguns conceitos através de exemplos, digamos, pouco ortodoxos; e pra quem já sabe, pode ler sem precisar de muitas explicações, no máximo utilizar as descrições pra ver se acertou, e talvez, quem sabe, achar um pouco de graça.</p>
<p>Seguem abaixo as <em>cantadas oop</em>, na ordem em que foram postadas. A explicação de cada uma delas está escondida; clique na setinha no final de cada frase para ler a explicação correspondente.</p>
<p>Nota: os links que coloquei na explicação, bem como as expressões que usei, são dos conceitos originais em inglês (porque foi assim que aprendi), mas é só clicar no link pra versão em português na página da Wikipedia que se abre pra achar o equivalente em português. Além disso, alguns dos conceitos explicados nas frases do começo não são repetidos mais além, então vale a pena ler na sequência porque as explicações podem parecer meio vagas mais pro final da lista.</p>
<div style="margin: 0px 2.5em;">
<p><em>Gata, você é uma constante na minha classe estática.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1000247945'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1000247945' style='display:none;'>
Em OOP, geralmente criamos <a href="http://en.wikipedia.org/wiki/Class_(computer_science)">classes</a> com uma série de métodos ou propriedades <a href="http://en.wikipedia.org/wiki/Static_method#Static_methods">estáticas</a> quando precisamos de alguma funcionalidade genérica, que será acessada de diversos lugares do código, sem que uma nova <a href="http://en.wikipedia.org/wiki/Object_(computer_science)">instância</a> da classe seja usada. Feito isso, é comum utilizarmos <a href="http://en.wikipedia.org/wiki/Constant_(programming)">constantes</a> (valores que nunca serão alterados) para guardar algum dado especial que poderá ser utilizado diversas vezes como referência.<br/><br/>Assim, é comum termos classes que servem para pouco mais do que guardar dados para fácil acesso de forma estática, daí o termo um tanto quanto incorreto de <em>classe estática</em>. Em ActionScript 3, um bom exemplo é a classe <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/StageScaleMode.html">StageScaleMode</a> que só serve para guardar dados constantes como <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/StageScaleMode.html#EXACT_FIT">EXACT_FIT</a>, <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/StageScaleMode.html#NO_BORDER">NO_BORDER</a> e outros.
</div>
<p><em>Gata, no Singleton do meu coração, você é a instância default.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID770279012'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID770279012' style='display:none;'>
Em OOP, existe uma série de <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)">design patterns</a> que podem ser utilizados. Design patterns são combinações comuns de classes, como que receitinhas de soluções que acabam sendo bastante frequentes em projetos OOP, mesmo por quem nem sabe o que é um design pattern. O <a href="http://en.wikipedia.org/wiki/Singleton_pattern">Singleton</a> é um dos patterns mais comuns, talvez especialmente no ActionScript; ele consiste na criação de uma classe que cria uma única instância de si mesma (a tal instância default) que pode ser acessada a qualquer momento, de qualquer lugar, através de métodos estáticos da classe. E, como alguém já disse certa vez, singleton se tornou &#8220;<em>o _global do ActionScript 3</em>&#8220;, já que é bastante comum de cair na armadilha de sair criando singletons pra tudo quanto é lado em trabalhos Flash pra resolver problemas de forma rápida mas sem muito planejamento.
</div>
<p><em>Gata, se meu coração é o Model, você é o Controller e eu sou o View.</em><a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID71941147'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID71941147' style='display:none;'>
Originalmente postado errado (escrevi &#8220;Master&#8221; ao invés de &#8220;Model&#8221;), esta é outra referência a um design pattern; desta vez, ao famigerado <a href="http://en.wikipedia.org/wiki/Model-View-Controller">Model-View-Controller</a>, ou MVC. É um pattern mais complexo, que costuma utilizar uma série de classes através de <a href="http://en.wikipedia.org/wiki/Object_composition">composição</a>, mas também bastante prático em trabalhos Flash. Resumidamente, <em>model</em> é a instância que gerencia dados relacionados à classe, como o processador interno de um relógio; <em>view</em> é uma instância que contém a visão desses dados, como o painel que mostra as horas do relógio; <em>controller</em> é algo que permite controlar os dados, como os botões de ajuste de hora de um relógio.
</div>
<p><em>Gata, não tem Garbage Collection que consiga fazer eu te esquecer.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID402838510'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID402838510' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)">Garbage Collection</a> é um termo relacionado à programação em ambientes de execução <em>gerenciados</em>, onde o <a href="http://en.wikipedia.org/wiki/Memory_management">gerenciamento de memória</a> é feito pela <a href="http://en.wikipedia.org/wiki/Virtual_machine">máquina virtual</a> que executa um programa. É como é chamado o processo de <em>limpeza de memória</em> para a remoção de dados que não são mais necessários.<br/><br/>Quando um dado é apagado (como quando uma variável é removida ou um objeto deixa de existir), ele não necessariamente é removido da memória; ele continua existindo, meio órfão, até que a máquina virtual que está executando o código dispare a <em>coleta de lixo</em> que faz com que o dado seja efetivamente esquecido. Normalmente, isso é feito de maneira cíclica, não imediata, para melhor performance.
</div>
<p><em>Gata, eu ter esquecido o dia do seu aniversário é culpa de um memory leak.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1822810104'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1822810104' style='display:none;'>
Diretamente relacionado a Garbage Collection, <a href="http://en.wikipedia.org/wiki/Memory_leak">memory leaks</a> ou <em>vazamentos de memória</em> acontecem quando dados são criados e nunca removidos, preenchendo a memória com dados inúteis lentamente (ou até rapidamente). Normalmente, dados que não são mais necessários só são efetivamente removidos da memória através do garbage collection quando não existem mais referências a eles. Esquecer de remover alguma referência leva aos tais vazamentos de memória, que podem até mesmo interromper a execução de um programa quando ocorrem em excesso.
</div>
<p><em>Gata, sua classe é final.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID699675060'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID699675060' style='display:none;'>
Em OOP, é comum extender uma classe através de um conceito chamado <a href="http://en.wikipedia.org/wiki/Inheritance_(computer_science)">herança</a>. No entanto, na maioria das linguagens OOP é possível criar uma classe que não pode ser extendida, nem usada como base para outra classe; neste caso, ela é considerada uma classe <em>final</em>. Esta é uma necessidade rara, no entanto.
</div>
<p><em>Gata, não tem longint grande o suficiente pra dizer o quanto eu gosto de você.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID99964680'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID99964680' style='display:none;'>
Em linguagens de programação, geralmente existem vários tipos de dados que podem ser armazenados em variáveis. Cada tipo possui um número máximo de bytes de memória que pode ocupar, em especial números, já que existe um limite nos números com que um computador pode lidar. Longint ou <a href="http://en.wikipedia.org/wiki/Long_integer">long integer</a> são tipos de dados que armazenam números inteiros <em>longos</em>. Como todos os tipos numéricos, variáveis desse tipo têm um valor máximo e mínimo &#8211; e bastante altos, neste caso.
</div>
<p><em>Gata, vou extender meu coração só pra fazer um override no toString() pra escrever seu nome nele.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1438236949'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1438236949' style='display:none;'>
Classes geralmente são extendidas quando se deseja adicionar novos recursos a ela. Este tipo de controle de herança e hierarquia é uma das bases da programação orientada a objetos. <em>Override</em> é o processo de se substituir um método que já existe na classe base, criando um novo método substituto na classe que a extende, efetivamente mudando o comportamento da classe. Já <em>toString()</em> é uma função bastante usada em ActionScript pra representar um objeto como texto.
</div>
<p><em>Gata, sua classe não tem clone().</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1332337105'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1332337105' style='display:none;'>
Algumas linguagens, talvez ActionScript em especial, implementam uma função chamada <em>clone()</em> que simplesmente duplica uma instância, criando um clone completo do objeto original. Certas classes especiais, no entanto, como a <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Sprite.html">Sprite</a>, devido à sua complexidade interna, não possuem esta função.
</div>
<p><em>Gata, você implementa ILoveYou.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1711577469'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1711577469' style='display:none;'>
Além da possibilidade de se extender uma classe, em OOP também é bem comum a implementação de <a href="http://en.wikipedia.org/wiki/Interface_(computer_science)">interfaces</a> ou protocolos que declaram métodos ou propriedades que uma classe pode ter (sem relação com <em>interfaces gráficas</em>). Essas interfaces geralmente servem para <em>dar forma</em> a instâncias e permitir que elas sejam usadas como parâmetros em funções que exigem um tipo específico de objeto. Como convenção, classes que declaram interfaces começam com a letra <em>I</em>; por exemplo, em ActionScript, temos a <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/IBitmapDrawable.html">IBitmapDrawable</a>.
</div>
<p><em>Gata, todos os meus overloads têm você como parâmetro.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID449637199'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID449637199' style='display:none;'>
Um conceito não utilizado no ActionScript, <a href="http://en.wikipedia.org/wiki/Function_overloading">overloads</a> são funções diferentes que possuem o mesmo nome e que são executadas de acordo com os parâmetros de entrada da função. Assim, é possível ter uma função que executa dois conjuntos de comandos diferentes (embora com propósitos parecidos) dependendo dos tipos de parâmetros passados. É provável que ActionScript adote este recurso em breve, embora seja possível simulá-lo através de algumas gambiarras.
</div>
<p><em>Gata, meu dispose() é disparado automaticamente se sua referência for removida da instância.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID75680214'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID75680214' style='display:none;'>
É comum a inclusão de uma função <em>dispose()</em>, <em>destroy()</em>, <em>kill()</em> ou semelhante em certas classes que se utilizam de muitos dados internamente. O propósito da função geralmente é preparar uma instância para deleção, já se desfazendo de todos os seus dados e abrindo caminho para o garbage collector. Um exemplo em ActionScript é o <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html">BitmapData.dispose()</a>.
</div>
<p><em>Gata, me diz qual o método da sua API que retorna seu coração.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID913393210'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID913393210' style='display:none;'>
API, ou <a href="http://en.wikipedia.org/wiki/API">Application Programming Interface</a>, é o conjunto de métodos, funções e propriedades usados para acessar uma biblioteca de classes pública. Como o nome <em>interface</em> diz, é todo o conjunto de membros para permitir o diálogo de um programa qualquer com um grupo de classes. É comum que programadores utilizem APIs de terceiros para a realização de diversas tarefas diferentes, ou para a utilização de funções que retornam os mais variados tipos de dados.
</div>
<p><em>Gata, sua instância é única.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1334031671'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1334031671' style='display:none;'>
Classes são como receitas de objetos. Inúmeros objetos, ou instâncias, podem ser criados a partir de uma única classe.
</div>
<p><em>Gata, quero te extender pra classe MyGirl.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1729413275'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1729413275' style='display:none;'>
Criar uma extensão de uma classe &#8211; processo chamado de <a href="http://en.wikipedia.org/wiki/Inheritance_(computer_science)">inheritance</a> ou herança &#8211; é um dos principais conceitos utilizados em programação orientada a objetos. Ele permite a criação de uma nova classe que herdam todos os métodos, funções e propriedades de uma classe base, mas com nova funcionalidade ou diferentes recursos.
</div>
<p><em>Gata, vamos fazer um composition que instancia nós dois.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1197150916'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1197150916' style='display:none;'>
Em contraponto à herança, <a href="http://en.wikipedia.org/wiki/Composition">composition</a> ou composição é quando um ou mais objetos são utilizados dentro de um novo objeto de outra classe, ao invés de extender a classe original. Assim, objetos mais simples &#8211; mais <em>baixo nível</em> &#8211; são utilizados na criação de objetos mais complexos, de nível mais alto. Por exemplo, um objeto da classe <em>Casal</em> poderia ser uma composição que conteria instâncias da classe <em>Homem</em> e da classe <em>Mulher</em> (ou equivalentes).
</div>
<p><em>Gata, depois que eu terminar com você, vão escrever um capítulo novo sobre você no Gang Of Four.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID141709558'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID141709558' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Design_Patterns_(book)">Gang of Four</a> é o nome comunemente dado ao livro, ou aos autores, do livro &#8220;Design Patterns: Elements of Reusable Object-Oriented Software&#8221;, um dos livros seminais na difusão dos conceitos de <a href="http://en.wikipedia.org/wiki/Design_pattern">design patterns</a> entre programadores. O livro contém inúmeros exemplos dos padrões mais comuns em OOP.
</div>
<p><em>Gata, depois que eu terminar com você, não vai ter refactoring que faça você me esquecer.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1989538901'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1989538901' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Refactoring">Refactoring</a> é o processo de mudança do design interno de uma classe sem mudança de sua <em>interface</em>, isto é, mudança do código sem mudança de funcionalidade ou recursos. Este processo geralmente é necessário para melhorar a performance de uma classe ou para resolver problemas inesperados.
</div>
<p><em>Gata, o unit testing de minha classe só retorna válido se ele te encontrar.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1036164913'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1036164913' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Unit_testing">Unit testing</a> é um processo de validação de código geralmente utilizado para se testar a confiabilidade de uma classe. Ele é realizado através da checagem da saída de funções e métodos baseado nos dados de entrada, ao invés da leitura do código em si; quando uma lista de resultados necessários é gerada, uma classe pode ser testada pra ver se passa nos testes com sucesso.
</div>
<p><em>Gata, depois de ser instanciada, deus removeu sua classe do repositório.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1636171714'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1636171714' style='display:none;'>
<em>Instanciar</em> é o processo de criar uma nova cópia de um objeto, ou <em>instância</em>, a partir de uma classe. Repositório é onde arquivos relacionados a um projeto são armazenados, geralmente através de um serviço como <a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a> ou <a href="http://en.wikipedia.org/wiki/Subversion_(software)">Subversion</a>. Serviços desse tipo são bastante utilizados por times de programadores. Essa frase é meio que um equivalente de &#8220;depois que deus te fez, jogou a planta fora&#8221;.
</div>
<p><em>Gata, não tem encapsulamento que esconda o que eu sinto por você.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1732370470'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1732370470' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Encapsulation_(computer_science)">Encapsulation</a> ou encapsulamento é outro recurso chave de OOP, em referência à possibilidade de se <em>esconder</em> o funcionamento de uma parte do código dentro de uma classe. Esse tipo de separação faz com que projetos OOP possam ser montados de forma mais modular, sem que haja um diálogo muito grande entre diferentes classes &#8211; cada classe deve possuir uma funcionalidade própria e não interferir com o resto do projeto.
</div>
<p><em>Gata, não dá setar o que sinto por você pra null.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID861624788'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID861624788' style='display:none;'>
Setar algo para um valor <a href="http://en.wikipedia.org/wiki/Null_(computer_programming)">null</a> ou <em>nulo</em> geralmente significa remover uma referência a um objeto, efetivamente apagando-o, uma vez que objetos sem referência são removidos da memória pelo garbage collector.
</div>
<p><em>Gata, meu o command pattern tá preso em loveYou().</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID2050483736'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID2050483736' style='display:none;'>
Outro <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)">design pattern</a> clássico, um <a href="http://en.wikipedia.org/wiki/Command_pattern">command pattern</a> controla uma lista de ações que deve ser realizada de forma sequencial.
</div>
<p><em>Gata, minha paixão está em loop infinito.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1600188229'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1600188229' style='display:none;'>
Um dos tipos mais comuns de controle de fluxo dentro de um programa, um <a href="http://en.wikipedia.org/wiki/Control_flow#Loops">loop</a> é um conjunto de comandos que deve ser repetido diversas vezes de forma sequencial. Um tipo especialmente indesejado de loop é o <a href="http://en.wikipedia.org/wiki/Infinite_loop">loop infinito</a>, caracterizado por um bloco de código inescapável &#8211; geralmente causado por algum erro de programação &#8211; que acaba interrompendo a execução de um programa, uma vez que mantém o fluxo <em>preso</em> num mesmo ponto.
</div>
<p><em>Gata, todas as entradas do meu iterator apontam pra você.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1614281892'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1614281892' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Iterator_pattern">Iterator pattern</a> é um <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)">design pattern</a> geralmente utilizado para a leitura de dados de uma lista de forma sequencial.
</div>
<p><em>Gata, você não tem factory, é base class.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1844052236'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1844052236' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Factory_method_pattern">Factory</a> é um <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)">design pattern</a> para um tipo de classe que, como o nome diz, cria objetos de um tipo definido, como uma <em>fábrica</em>. Já uma <a href="http://en.wikipedia.org/wiki/Base_class">base class</a> ou superclass é uma classe que está no topo de sua hierarquia, e não herda funcionalidade de nenhuma outra classe, servindo ao invés como base para outras.<br/><br/>Note que nesta cantada os conceitos estão um pouco misturados em prol da liberdade poética.
</div>
<p><em>Gata, você provocou uma exceção no init() do meu coração.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1268150011'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1268150011' style='display:none;'>
Em OOP, exceções ou <em>exceptions</em> são acontecimentos fora do comum e inesperados, geralmente disparados por algum erro interno, pelo uso de propriedades ou parâmetros inválidos, ou por valores fora do limite permitido. Essas exceções devem ser tratadas através do <em>tratamento de exceções</em> ou <a href="http://en.wikipedia.org/wiki/Exception_handling">exception handling</a>.<br/><br/>Já <em>init()</em>, neste caso, é um nome de função arbitrário, geralmente utilizada para funções de inicialização de um objeto.
</div>
<p><em>Gata, não tem especificação que explique sua classe.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1672773168'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1672773168' style='display:none;'>
Especificações de classes são como receitas, criadas para definir tudo que uma classe deve fazer ou deixar de fazer, em especial dentro de um ambiente corporativo ou quando trabalhando em times. Um conceito mais genérico, a idéia aqui &#8211; também fruto da liberdade poética &#8211; foi dizer que a garota alvo da cantada tinha muita classe.
</div>
<p><em>Gata, você conseguiu acessar uma propriedade do meu coração que era protected até eu te conhecer.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID2107981800'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID2107981800' style='display:none;'>
Propriedades de classes podem ser de diversos tipos (também chamados de access modifiers) &#8211; públicas (public), privadas (private), protegidas (protected), etc. Essa definição diz respeito aos tipos de acesso que as propriedades permitem &#8211; propriedades privadas ou protegidas, por exemplo, não podem ser acessadas por nenhuma classe além da classe que as define (embora existam diferenças entre a interpretação destas definições de linguagem para linguagem).
</div>
<p><em>Gata, depois de te conhecer, deu um lock na instância do meu coração.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID815470234'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID815470234' style='display:none;'>
<em>Lock</em> (trancar) e <em>unlock</em> (destrancar) é algo que geralmente é feito em propriedades para impedir sua modificação, protegendo os dados lá contidos.
</div>
<p><em>Gata, não tem pattern que explique o que sinto por você.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID144670565'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID144670565' style='display:none;'>
Como dito acima, <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)">design patterns</a> são combinações comuns de classes &#8211; como <em>modelos</em> estruturais &#8211; que visam solucionar problemas rotineiros e frequentes em projetos OOP.
</div>
<p><em>Gata, meu try é pra dizer o que sinto por você, pra catch seu coração, e finally te conquistar.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID960746098'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID960746098' style='display:none;'>
<a href="http://en.wikipedia.org/wiki/Exception_handling_syntax#Java">Try&#8230;catch&#8230;finally</a> é o conjunto de blocos comunemente utilizado para <a href="http://en.wikipedia.org/wiki/Exception_handling">tratamento de exceções</a> em OOP para evitar erros num código; o código dentro do bloco <em>try</em> é algo a ser tentado; o(s) bloco(s) <em>catch</em> são utilizados para a execução de comandos específicos quando algum erro acontece durante o bloco try; e o bloco <em>finally</em> é para a definição de comandos que são executados após o teste.<br/><br/>Esta frase na verdade é a que mais abusa de liberdade poética, uma vez que, caso os comandos executados pelo bloco <em>try</em> tenham sucesso, o bloco <em>catch</em> é ignorado.
</div>
<p><em>Gata, quero adicionar um listener em todos os seus eventos.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1585749247'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1585749247' style='display:none;'>
Em OOP, é também bastante comum a utilização do pattern <a href="http://en.wikipedia.org/wiki/Observer_pattern">Observer</a>, que define a criação de objetos que contém <em>eventos</em> que são disparados quando uma condição é atingida, como o pressionar de uma tecla, o carregamento de um arquivo, ou um erro. Neste pattern, muito utilizado em programas que precisam de interação com o usuário, outros objetos podem assinar os eventos, virando assim <em>listeners</em>. Listeners são <em>notificados</em> quando um evento ocorre no objeto que o disparou, permitindo assim funcionamentos específicos baseados em eventos.
</div>
<p><em>Gata, você é tão única que seu prototype é private.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID216611712'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID216611712' style='display:none;'>
Em certas variantes de OOP, todos os objetos possuem um <em>prototype</em>, que é um objeto único que define os métodos e propriedades básicos de uma classe, comuns a todas as suas instâncias. Esse prototype geralmente pode ser publicamente acessado e modificado, tornando possível a uma classe a mudança de funcionalidades internas em tempo real, embora este seja um recurso pouco ortodoxo.
</div>
<p><em>Gata, todos os seus erros são fatais para meu coração.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1363584608'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1363584608' style='display:none;'>
Durante o tratamento de erros de execução de projetos OOP, em especial durante o <a href="http://en.wikipedia.org/wiki/Exception_handling">tratamento de exceções</a>, existem diversas categorias genéricas de erros que podem ocorrer, desde <em>warnings</em> (avisos meramente informativos) até <em>fatal errors</em> (<em>erros fatais</em>, que fazem com que o programa seja encerrado de forma prematura).
</div>
<p><em>Gata, espero a documentação que me ajude a conquistar seu coração.</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID1261075703'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID1261075703' style='display:none;'>
Em OOP, talvez em especial após a criação de bibliotecas de uso público, a <a href="http://en.wikipedia.org/wiki/API_documentation">documentação</a> é peça de extrema importância para a utilização eficaz de código criado por terceiros. É na documentação que estão listadas as classes e suas propriedades, métodos e funções. Documentação de projetos OOP geralmente é gerada de forma automática, através de ferramentas como <a href="http://en.wikipedia.org/wiki/Javadoc">javadoc</a> ou <a href="http://livedocs.adobe.com/flex/201/html/asdoc_127_1.html#121714">asdoc</a>, mas ainda dependendo de intervenção humana para a descrição do propósito e ação de cada método, classe, função ou propriedade.
</div>
<p><em>Gata, universo = universo.replace(/([\.-,;\s]+s|^s)o(l$|l[\.-,;\s])/im, &#8220;você&#8221;);</em> <a href="javascript:void(null);" onclick="s_toggleDisplay(document.getElementById('SID916286772'), this, '&#9660;', '&#9650;');">&#9660;</a></p>
<div class='spoilerBlock' id='SID916286772' style='display:none;'>
Talvez não OOP, esta é uma última cantada baseada em <a href="http://en.wikipedia.org/wiki/Regular_expression">regular expressions</a> ou expressões regulares (RegExp para os íntimos). Regular expressions é uma sintaxe utilizada para a procura e substituição de texto de forma mais avançada, indo além de simplesmente &#8220;substituir x por y&#8221;. A expressão descrita na frase visa substituir a palavra &#8220;sol&#8221; por &#8220;você&#8221; em qualquer texto, desde que seja uma palavra separada (para evitar a substituição de &#8220;sol&#8221; no meio de outras palavras, como &#8220;solidão&#8221;). Já <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html#replace()">replace()</a> é a função utilizada em ActionScript para efetuar a substituição de texto através de regular expressions.<br/><br/>A idéia aqui era basicamente querer dizer &#8220;meu mundo gira em torno de você&#8221;, já que substitui a palavra &#8220;sol&#8221; por &#8220;você&#8221; numa variável chamada &#8220;universo&#8221;. Não cheguei a testar e é capaz de que tenha algum erro na expressão.
</div>
</div>
<p>Nota final: não garanto a eficácia de nenhuma das cantadas listadas acima. Use por sua própria conta e risco.</p>
<p>E, por favor, não leve a sério.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/aprenda-programacao-orientada-a-objetos-no-dia-dos-namorados/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Falar é fácil, difícil é dizer</title>
		<link>http://pessoal.zehfernando.com/2009/falar-e-facil-dificil-e-dizer/</link>
		<comments>http://pessoal.zehfernando.com/2009/falar-e-facil-dificil-e-dizer/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 01:16:16 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[pirações]]></category>
		<category><![CDATA[trampo]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=82</guid>
		<description><![CDATA[Acabei de voltar do 14º EDTED, onde dei uma palestra prum público de umas 400 pessoas (chute aproximação heurística), basicamente sobre meu trampo de Flash e porque eu acho que sites em Flash não são a cria do demônio. Era mais ou menos a mesma apresentação que fiz no EWD do Rio de Janeiro mês [...]]]></description>
			<content:encoded><![CDATA[<p>Acabei de voltar do <a href="http://www.edted.com.br/ewd-14/">14º EDTED</a>, onde dei <a href="http://www.slideshare.net/zehfernando/interfaces-ricas-como-ferramenta-de-envolvimento-do-pblico">uma palestra</a> prum público de umas 400 pessoas (<span style="text-decoration: line-through;">chute</span> aproximação heurística), basicamente sobre meu trampo de Flash e porque eu acho que sites em Flash não são a cria do demônio. Era mais ou menos a mesma apresentação que fiz no EWD do Rio de Janeiro mês passado, embora melhorada &#8211; com algumas imagens adicionais, e utilizando os sites ao vivo ao invés de só mostrar screenshots.</p>
<p><span id="__ss_1335304" class="aligncenter size-full" style="width: 425px; text-align: left;"><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20090329ewd-090423210112-phpapp01&amp;rel=0&amp;stripped_title=interfaces-ricas-como-ferramenta-de-envolvimento-do-pblico" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20090329ewd-090423210112-phpapp01&amp;rel=0&amp;stripped_title=interfaces-ricas-como-ferramenta-de-envolvimento-do-pblico" /><param name="allowfullscreen" value="true" /></object></span></p>
<p>Não que eu costume palestrar demais (geralmente evito), mas sempre que estou pra fazer apresentações pra um público superior a 10 pessoas, quem não me conhece faz as perguntas óbvias, tipo, &#8220;tá tudo certo? cê tá nervoso?&#8221;.</p>
<p>Eu tenho várias fobias/bloqueios/vergonhas na vida, algumas razoavelmente bizarras. Felizmente, falar em público não é uma delas. Ao contrário, eu acho muito louco.</p>
<div id="attachment_85" class="wp-caption aligncenter" style="width: 560px"><img class="size-full wp-image-85" title="Edted 14" src="http://pessoal.zehfernando.com/wp-content/uploads/2009/04/edted14_rr.jpg" alt="Edted 14" width="550" height="293" /><p class="wp-caption-text">Slide mostrando o website &quot;Absolut Ruby Red&quot;, por Gringo Interactive<br/>(foto por Henrique Locatelli)</p></div>
<p>O que não quer dizer que eu faça a coisa muito bem. Eu falo rápido demais &#8211; não porque eu esteja nervoso, mas porque realmente falo rápido demais &#8211; e às vezes esqueço de me controlar pro pessoal poder acompanhar e pra eu não me enrolar muito. Eu também tenho problemas pra olhar nos olhos dos espectadores &#8211; não gosto de ficar <em>secando</em> ninguém &#8211; então geralmente fico olhando pro chão ou pro além. Mas, no geral, pelo fato de não ficar nervoso e conseguir falar o que planejei antes, acho que conduzo apresentações de forma razoável.</p>
<p>No entanto, o legal de ir em eventos como o de hoje é que dá pra medir legal como está sua habilidade em criar uma apresentação decente e mostrá-la pro público. Você vê como os outros palestrantes de comportaram com um conteúdo voltado pra uma mesma audiência, então tem alguns parâmetros de comparação que podem ser usados.</p>
<p>O foda é que sempre que faço isso fico meio com vergonha da minha palestra, achando ela a coisa mais banal e óbvia do mundo, e me sentindo meio lixo. Isso porque neguinho vem e faz um questionamento super pertinente e aí eu penso &#8220;caralho, cadê o questionamento na minha palestra, tá conformista demais&#8221;. Aí fulano vem e faz uma apresentação impecável e eu penso &#8220;cacete, titubeei na hora de falar tal frase, já esse cara não titubeia nunca&#8221;. Dá pra ver o que te falta ainda pra melhorar.</p>
<p>O evento de hoje não foi diferente.</p>
<p>Duas das palestras &#8211; a do <a href="http://gilgiardelli.wordpress.com/">Gil Gardelli</a> e a do <a href="http://www.cassano.com.br/">Roberto Cassano</a> &#8211; eu já sabia o que esperar, afinal, já havia assistido às duas no evento do Rio de Janeiro. No entanto, ambas &#8211; a primeira, uma metralhada de questionamentos que eu continuo achando muito pertinentes, e a segunda, um resumo de uma experiência singular com mídias sociais online &#8211; são duas das que me fizeram sentir um pouco diminuído. Não que eu não tenha fé e não goste de meu trabalho, muito pelo contrário; mas ambas são apresentações que levavam a crer que talvez minha mensagem não se encaixasse tanto ali no meio.</p>
<p>Mas hoje, em especial, o que me fez sentir que tem algo mais além foi assistir à palestra do <a href="http://www.luli.com.br/">Luli Radfahrer</a>. De conteúdo, sua palestra foi um misto de experiência, questionamento e divagações; difícil definir, já que foram pulos entre tópicos diferentes de forma muito rápida. Onde a palestra realmente funcionou, no entanto, foi no formato &#8211; vídeo/slideshow sincronizado com uma fala meticulosamente trabalhada &#8211; e na retórica aguçada do palestrante.</p>
<p>Só pra constar, não acho que sou nenhum ignorante em relação a palestras e apresentações. Já assisti vídeos de muitas apresentações do <a href="http://www.ted.com/">TED</a>, <a href="http://www.pecha-kucha.org/">Pecha Kucha</a> e afins. E não é que a palestra tenha sido uma coisa de outro mundo, com fogos de artifício e coisa e tal. Foi, sim, uma apresentação muito bem feita, sem <em>desvios</em> de atenção. Mas acho que o que fez a diferença pra mim &#8211; comparando com vídeos que já vi do TED &#8211; foi assistir a palestra ao vivo. Tem quase uma <em>energia</em> que rola que faz com que você perceba que a apresentação não está sendo só uma palestrinha normal. Não devido a algum segredo técnico empregado na sua realização, mas por um resultado final impecável.</p>
<p>Deu pra perceber que tenho que comer muito <span style="text-decoration: line-through;">PowerPoint</span> Impress ainda.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/falar-e-facil-dificil-e-dizer/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Hoje eu comi um Bauru de verdade</title>
		<link>http://pessoal.zehfernando.com/2009/hoje-eu-comi-um-bauru-de-verdade/</link>
		<comments>http://pessoal.zehfernando.com/2009/hoje-eu-comi-um-bauru-de-verdade/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 02:42:28 +0000</pubDate>
		<dc:creator>Zeh</dc:creator>
				<category><![CDATA[comida]]></category>
		<category><![CDATA[memória]]></category>
		<category><![CDATA[pirações]]></category>

		<guid isPermaLink="false">http://pessoal.zehfernando.com/?p=54</guid>
		<description><![CDATA[No artigo anterior sobre trabalhar em casa eu disse que comer fora, num lugar legal, acabava perdendo o sentido quando você trabalha sozinho.
Bom, é verdade, quando você trabalha em casa não tem mais aquela coisa divertida de ir comer na churrascaria toda última sexta-feira do mês, ou fazer um almoço mais longo só pra comer [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="http://pessoal.zehfernando.com/2009/trabalhar-em-casa-e-foda/">artigo anterior</a> sobre trabalhar em casa eu disse que comer fora, num lugar legal, acabava perdendo o sentido quando você trabalha sozinho.</p>
<p>Bom, é verdade, quando você trabalha em casa não tem mais aquela coisa divertida de ir comer na churrascaria toda última sexta-feira do mês, ou fazer um almoço mais longo só pra comer num lugar legal específico, ou num lugar mais caro só porque é dia do pagamento. Não faz <em>tanto</em> sentido se você vai sozinho e não tem com quem compartilhar aquele momento gastronômico solene ou o almoço de 3 horas reservado especialmente pra estragação financiada pelo chefe.</p>
<p>Mas acho que menti um pouquinho. Pelo menos no meu caso, mesmo trabalhando em casa, acabei sim criando alguns costumes gastronômicos vagamente relacionados ao trabalho. Basicamente, após cada trabalho que faço que vai pro ar, tomo um gole da <a href="http://twitpic.com/1qndu">Vodka Absolut de baunilha</a> que ganhei da <a href="http://gringo.nu">Gringo</a> há um tempão atrás (valeu!); e sempre que efetivamente <em>recebo</em> um pagamento, vou comer num lugar legal pra comemorar. Nada super chique, só um lugar que eu goste, talvez meio fora de mão, talvez um lugar que não visito há muito tempo, etc. Não é nada tão bom quanto trabalhar num escritório &#8211; onde é mais fácil você ir comer num lugar diferente a cada dia &#8211; mas é alguma coisa.</p>
<p>No final do mês passado recebi um pagamento por um trabalho que fiz mas, devido à correria de outro trabalho que estava terminando, nem pude ir no banco transferir a grana pra minha conta (como recebo de fora do país, sempre tenho de ir no banco fazer o pedido de transferência do câmbio). Finalmente fui lá hoje, com o dólar num lindo palíndromo (2.22000222), e saindo do banco, decidi dar início a mais uma instância deste importante ritual alimentício. Como meu banco é perto da Praça da República, resolvi dar uma volta no beco da memória e ir comer no <a href="http://www.pontochic.com.br/defaultie.asp">Ponto Chic</a>, que fica no Largo do Paissandú (atrás da Galeria do Rock, perto da Praça do Correio).</p>
<p>Pra quem não conhece, o Ponto Chic é um bar/restaurante/lanchonete super antigo de São Paulo (com várias filiais pela cidade, mas este do centro é o original). Fundado em 1922, é um lugarzinho meio cult embora não seja, assim, nada de mais visualmente. É também onde foi inventado o <em>Bauru</em>.</p>
<p><a href="http://www.pontochic.com.br/frameset.asp?frame=bauru"><img class="aligncenter size-full wp-image-55" title="Bauru do Ponto Chic" src="http://pessoal.zehfernando.com/wp-content/uploads/2009/04/bauru.jpg" alt="Bauru do Ponto Chic" width="351" height="251" /></a></p>
<p>A principal razão de eu ter ido lá é porque este é um lugar que costumava ir bastante com meus pais quando eu era mais novo (no final da década de 80), em nossas inúmeras andanças pelo centro, então tenho boas memórias do ponto. E também gosto bastante do Bauru que eles fazem. Costumo ir lá esporadicamente, mas já faziam uns 4 anos que eu não visitava o lugar.</p>
<p>Sempre que vou lá, é um momento meio agridoce: legal repetir o mesmo ato que realizei décadas atrás, mas meio chato ver como o lugar mudou. Aquela coisa meio nostálgico-bobalhão.</p>
<p>Entrando no restaurante hoje, já tive um choque: razoavelmente lotado, todo mundo comendo&#8230; comida. Comida normal. Tipo grelhado e tal. Pô, pra mim o lugar é lanchonete, gostava de ir lá e comer Bauru e Banana-split. Mas, pelo menos naquele horário &#8211; deviam ser umas 2 ou 3 da tarde &#8211; o lugar era um restaurante <em>normal</em>.</p>
<p>O que é meio triste é pensar que, até pela localização, o lugar tem de se adaptar. Não é um lugar <em>da moda</em>: é no meio do centrão. Não é mais ponto de encontro de intelectuais nem nada do tipo. Imagino que não tenha muita coisa do lado que justifique uma clientela assídua, nem muitos atrativos especiais pro lugar, até porque já tem choperias mais <em>badaladas</em> por perto. Então não dá pro lugar sobreviver só na base da memória. Até o nome hoje soa meio esquisito, quase um eufemismo. Então acho que ninguém devia estar lá pelo que o lugar oferece de diferente, mas sim por <em>ser mais um lugar normal pra comer</em>.</p>
<p>Cheguei, sentei. O garçom que veio me atender era um cara um pouco mais de idade, e provavelmente um veterano do restaurante. Recusei o cardápio, e, resoluto, pedi um Bauru logo de cara.</p>
<p>Posso estar errado, mas acho que percebi um brilho em seus olhos.</p>
]]></content:encoded>
			<wfw:commentRss>http://pessoal.zehfernando.com/2009/hoje-eu-comi-um-bauru-de-verdade/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
