<?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>Bruno Souza &#62; /dev/log &#187; Programacão</title> <atom:link href="http://brunosouza.com.br/blog/category/programacao/feed/" rel="self" type="application/rss+xml" /><link>http://brunosouza.com.br/blog</link> <description></description> <lastBuildDate>Sun, 04 Dec 2011 00:24:05 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>7 novas vagas para programadores na Studio Sol!</title><link>http://brunosouza.com.br/blog/7-novas-vagas-para-programadores-na-studio-sol/</link> <comments>http://brunosouza.com.br/blog/7-novas-vagas-para-programadores-na-studio-sol/#comments</comments> <pubDate>Sat, 23 Oct 2010 14:15:57 +0000</pubDate> <dc:creator>Bruno Souza</dc:creator> <category><![CDATA[Programacão]]></category> <category><![CDATA[ninja]]></category> <category><![CDATA[studiosol]]></category> <category><![CDATA[vaga]]></category><guid isPermaLink="false">http://brunosouza.com.br/blog/?p=560</guid> <description><![CDATA[Acabamos de abrir novas 7 vagas para programadores ninjas na Studio Sol! Para quem não conhece, Studio Sol é a empresa responsável pelos maiores sites de música do Brasil (Letras Terra, Cifra Club, Palco MP3), além dos maiores aplicativos de torcida e de música do Brasil no Orkut. Ampliamos o nosso leque e agora estamos [...]]]></description> <content:encoded><![CDATA[<p>Acabamos de abrir novas 7 vagas para programadores ninjas na <a title="Studio Sol Comunicação Digital" href="http://www.studiosol.com.br/" target="_blank">Studio Sol</a>! Para quem não conhece, Studio Sol é a empresa responsável pelos maiores sites de música do Brasil (<a href="http://letras.terra.com.br/" target="_blank">Letras Terra</a>, <a href="http://cifraclub.com.br/" target="_blank">Cifra Club</a>, <a href="http://palcomp3.com/" target="_blank">Palco MP3</a>), além dos maiores <a href="http://www.orkut.com.br/AppDirectory?dirFilters=sports&amp;dirQuery=Sou+studiosol.com.br" target="_blank">aplicativos de torcida</a> e de <a href="http://www.orkut.com.br/AppDirectory?dirFilters=music&amp;dirQuery=Minha+M%C3%BAsica" target="_blank">música</a> do Brasil no Orkut. Ampliamos o nosso leque e agora estamos trabalhando também com desenvolvimento Mobile.</p><p>Fizemos o vídeo abaixo vídeo para vocês saberem mais sobre essas vagas!</p><p><iframe src="http://www.youtube.com/embed/oUAMMNgrTJc" frameborder="0" width="700" height="420"></iframe></p><p><span id="more-560"></span><br /> Os profissionais que buscamos não precisam saber tudo de programação, temos vagas de júnior a sênior. Trabalhamos com uma variedade muito grande de tecnologias e linguagens, sendo que não é necessário ter nível avançado em todas, e nem mesmo na maioria delas. Mas se por acaso você dominar algumas das linguagens e tecnologias abaixo, já terá chances dobradas de fazer parte do nosso time:</p><p>» PHP, Python, JavaScript, jQuery, C/C++, Objective C, Cocoa, ActionScript, Java, MySQL/SQLLite, MongoDB/Redis, Linux, Memcached, Varnish, Nginx, Lighttpd, apps para Orkut (OpenSocial) e Facebook, H2O-templates, JSON, Flex, oAuth, APIs (Twitter, YouTube, Google Analytics, etc) «</p><p>Pra se candidatar às vagas, basta <a href="http://www.studiosol.com.br/trabalheconosco/curriculo.php?acao=cadastrar" target="_blank">cadastrar</a> ou <a href="http://www.studiosol.com.br/trabalheconosco/curriculo.php?acao=editar" target="_blank">atualizar</a> o seu currículo e <a href="http://www.studiosol.com.br/trabalheconosco/preselecao.php?vaga=24" target="_blank">fazer as provas online</a>. Você encontrará mais informações na <a href="http://www.studiosol.com.br/trabalheconosco/vaga.php?vaga=24" target="_blank">página da vaga</a>.</p><p>Qualquer dúvida é só perguntar aqui pelo blog ou no meu twitter (<a href="http://twitter.com/souzabruno" target="_blank">@souzabruno</a>).<br /> <em>Bruno Souza, Gerente de Desenvolvimento @ Studio Sol</em></p> ]]></content:encoded> <wfw:commentRss>http://brunosouza.com.br/blog/7-novas-vagas-para-programadores-na-studio-sol/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Google Closure Tools &#8211; Visão Geral</title><link>http://brunosouza.com.br/blog/google-closure-tools-visao-geral/</link> <comments>http://brunosouza.com.br/blog/google-closure-tools-visao-geral/#comments</comments> <pubDate>Mon, 09 Nov 2009 00:58:41 +0000</pubDate> <dc:creator>Bruno Souza</dc:creator> <category><![CDATA[Livre]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Programacão]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[closure]]></category> <category><![CDATA[escalabilidade]]></category> <category><![CDATA[framework]]></category> <category><![CDATA[google]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[opensource]]></category> <category><![CDATA[performance]]></category><guid isPermaLink="false">http://brunosouza.com.br/blog/?p=381</guid> <description><![CDATA[Dia 5 passado o Google anunciou sua suite de ferramentas de desenvolvimento javascript utilizada em algumas de suas aplicações web mais populares como GMail, Google Maps e Google Docs. A suite possui três bases: Closure Compiler, Closure Library e Closure Templates. Closure Library: A biblioteca Closure Library, inclui uma variedade diversificada de recursos com funcionalidades [...]]]></description> <content:encoded><![CDATA[<p><img class="size-full wp-image-389 alignright" title="Google Closure Tools" src="http://s.vaddder.com/b/wp-content/uploads/2009/11/closure1.png" alt="Google Closure Tools" width="128" height="128" /></p><p>Dia 5 passado o Google <a href="http://googlecode.blogspot.com/2009/11/introducing-closure-tools.html" target="_blank">anunciou</a> sua suite de ferramentas de desenvolvimento javascript utilizada em algumas de suas aplicações web mais populares como <a title="Google Mail" href="http://www.gmail.com/" target="_blank">GMail</a>, <a title="Google Maps" href="http://maps.google.com/" target="_blank">Google Maps</a> e <a title="Google Docs" href="http://docs.google.com/" target="_blank">Google Docs</a>.</p><p>A suite possui três bases: <a href="http://code.google.com/intl/pt-BR/closure/compiler/" target="_blank">Closure Compiler</a>, <a href="http://code.google.com/intl/pt-BR/closure/library/" target="_blank">Closure Library</a> e <a href="http://code.google.com/intl/pt-BR/closure/templates/" target="_blank">Closure Templates</a>.</p><h2>Closure Library:</h2><p>A biblioteca Closure Library, inclui uma variedade diversificada de recursos com funcionalidades que vão desde serialização JSON até widgets padrões de interface de usuário. Todos os recursos são cross-browser e podem ser implementados desde já sem a preocupação de qualquer dano aos usuários.</p><p><span id="more-381"></span><br /> A biblioteca preenche algumas lacunas do javascript e possui funcionalidades que &#8220;consertam&#8221; algumas deficiências históricas da linguagem como, por exemplo, um <a href="http://code.google.com/closure/library/docs/introduction.html#oop" target="_blank">mecanismo</a> que porta a herança convencional da orientação a objetos para o javascript. Ela oferece também sistema de <a href="http://code.google.com/intl/pt-BR/closure/library/docs/introduction.html" target="_blank">namespaces</a> e suporte a <a href="http://code.google.com/intl/pt-BR/closure/library/docs/introduction.html" target="_blank">carregamento de módulos com resolução de dependências</a>. O código-fonte foi distribuido sob a licença Apache e está disponivel para download na <a href="http://code.google.com/p/closure-library/source/checkout" target="_blank">página do projeto</a> no Google Code onde também encontram-se <a href="http://code.google.com/closure/library/docs/overview.html" target="_blank">documentação</a> e alguns <a href="http://code.google.com/intl/pt-BR/closure/library/docs/tutorial.html">tutoriais introdutórios</a> para quem está pensando em começar a usá-la e não sabe como.</p><h2>Closure Compiler:</h2><p>Além de abrir a biblioteca, o Google anunciou também a abertura do Closure Compiler, uma ferramenta para compressão e otimização do código javascript com funcionalidades avançadas como, por exemplo, análise do código-fonte ajudando o desevolvedor a identificar certos tipos de erros de programação. Assim como a Closure Library, o Closure Compiler também foi disponibilizado sob a licença Apache.</p><p>Closure Compiler foi construido em Java e pode ser usado via linha de comando ou via uma <a href="http://closure-compiler.appspot.com/home" target="_blank">interface web</a> criada pelo Google. Uma <a href="http://code.google.com/intl/pt-BR/closure/compiler/docs/api-ref.html" target="_blank">API RESTful</a> também está disponível para uma utilização automatizada do compilador quando hospedado em algum lugar. Um plugin para firebug chamado <a href="http://code.google.com/closure/compiler/docs/inspector.html" target="_blank">Closure Inspector</a> também foi disponibilizado para ajudar a debugar o código-fonte javascript comprimido pelo Closure Compiler descomprimindo-o.</p><h2>Closure Templates:</h2><p>Closure Tools conta também com sistema de templates que &#8220;cresceu do desejo de ter templates web que fossem pré-compilados para um javascript mais eficiente&#8221;. Ele conta com uma sintaxe simples e natural para desenvolvedores. Diferentemente do outros sistemas de templates tradicionais Closure Templates utiliza pequenos componentes para criar a interface do usuário ao invés de criar um grande template por página.</p><p>Closure Templates foi implementado em javascript e em Java.</p><h2>Considerações finais:</h2><blockquote><p>&#8220;[Closure] started as 20% projects and hundreds of Googlers have contributed thousands of patches. Today, each Closure Tool has grown to be a key part of the JavaScript infrastructure behind web apps at Google&#8221; equipe da Google Closure Tools</p></blockquote><blockquote><p>&#8220;That&#8217;s why we&#8217;re particularly excited (and humbled) to open source them to encourage and support web development outside Google. We want to hear what you think, but more importantly, we want to see what you make.&#8221; equipe da Google Closure Tools</p></blockquote><p>As funcionalidades da Google Closure são bacanas, e sua arquitetura modular também. Parece que o Google tem usado internamente essa suite a um bom tempo, o que para nós desenvolvedores significa que muitos recursos já foram agregados, e provavelmente de uma maneira muito otimizada e escalável. Só falta agora um plugin para alguma IDE que permita auto-complete do código-fonte. Acredito que podemos esperar em breve uma a boa integração com IDEs como Eclipse.</p> ]]></content:encoded> <wfw:commentRss>http://brunosouza.com.br/blog/google-closure-tools-visao-geral/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Compilando, Instalando e Configurando PHP 6 no Linux</title><link>http://brunosouza.com.br/blog/tutorial-compilando-configurando-instalando-php6-no-linux/</link> <comments>http://brunosouza.com.br/blog/tutorial-compilando-configurando-instalando-php6-no-linux/#comments</comments> <pubDate>Tue, 06 Jan 2009 02:53:55 +0000</pubDate> <dc:creator>Bruno Souza</dc:creator> <category><![CDATA[Programacão]]></category> <category><![CDATA[Tutoriais]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[php6]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[ubuntu]]></category><guid isPermaLink="false">http://brunosouza.info/?p=257</guid> <description><![CDATA[Aviso Importante: O projeto PHP6 foi cancelado! Mais informações aqui. Este mini-tutorial tem como objetivo ser um guia para aqueles que querem começar a se aventurar com o php6 mas não sabem como Considerações: Enquanto não existe uma versão disponível para instalação via apt-get, temos que fazer o trabalho sujo manualmente (sem piadinhas! rs). Esse [...]]]></description> <content:encoded><![CDATA[<p><span style="color: #ff0000;"><img class="alignright size-medium wp-image-621" title="PHP" src="http://s.vaddder.com/b/wp-content/uploads/2009/01/php_brand-300x157.png" alt="" width="240" height="126" />Aviso Importante: O projeto PHP6 foi cancelado! Mais informações <a href="http://readwriteweb.com.br/2010/08/02/cancelamento-do-php-6-antecipa-aceleracao-para-o-php-5-4/" target="_blank">aqui</a>.</span></p><p>Este mini-tutorial tem como objetivo ser um guia para aqueles que querem começar a se aventurar com o php6 mas não sabem como</p><p>Considerações:<br /> Enquanto não existe uma versão disponível para instalação via apt-get, temos que fazer o trabalho sujo manualmente (sem piadinhas! rs). Esse tutorial foca instalação de módulos fora de repositórios e pressupõe que você esteja usando o Apache 2.</p><p>Ambiente usado:</p><ul><li>Distro: Ubuntu 8.10</li><li>Web Server: Apache 2</li></ul><h2>Passo a passo:</h2><p><span id="more-257"></span></p><h1>1. Preparando o terreno.</h1><p>O primeiro passo é instalar via apt-get alguns pacotes base para a instalação do PHP 6. O comando a seguir fará isso.<br /> Com esses pacotes instalados, o próximo passo é instalar a biblioteca unicode ICU. Para garantir que a versão da ICU seja compatível com o PHP 6, instale exatamente a mesma versão que uso nos exemplos. A instalação da versão mais nova via repositório não é compativel com o PHP 6 neste momento (data do tutorial). Os comandos abaixo irão baixar, compilar e instalar a biblioteca ICU sem maiores esforços.<!--more--></p><h1>2. Instalando o php 6.</h1><p>O primeiro passo é baixar o arquivo source. Você consegue encontrá-lo em http://snaps.php.net. Baixe o arquivo de formato php6.0-xxxxxxxxxxxx.tar.bz2 (durante o tutorial o nome do arquivo era: php6.0-200901052330.tar.bz2).</p><p>Tendo o arquivo no PC, execute os seguintes comandos para descompacta-lo e configura-lo para compilação:<br /> (ps. tive que adicionar os &#8211;without para evitar incompatibilidades na hora de executar o make.)<br /> <!--</p><pre class="csharp" style="overflow:auto;" mce_style="overflow: auto;">#baixa compila e instala PHP 6
tar xf php6.0-xxxxxxxxxxxx.tar.bz2
cd php6.0-xxxxxxxxxxxx
sudo ./configure  prefix=/usr/local/php6  with-icu-dir=/usr/local/icu  with-apxs2=/usr/bin/apxs2  without-sqlite  without-sqlite3  without-pdo_sqlite
sudo make
sudo make install</pre><p>--></p><blockquote><p> Ocorreu o erro a seguir durante o make install?</p><pre class="csharp" style="overflow: auto;">apxs:Error: Activation failed for custom /etc/apache2/httpd.conf file..
apxs:Error: At least one `LoadModule’ directive already has to exist..
make: *** [install-sapi] Error</pre><p>Caso sim, remova o arquivo httpd.conf atual (que é vazio por padrão) e crie um novo arquivo /etc/apache2/httpd.conf como um link relativo para /etc/apache2/apache2.conf.</p><pre class="csharp" style="overflow: auto;">#remove httpd.conf antigo (vazio por padrão no debian/ubuntu).
sudo rm -rf /etc/apache2/httpd.conf
#cria link relativo
sudo ln -s /etc/apache2/apache2.conf /etc/apache2/httpd.conf</pre></blockquote><p>Continue: Abra o arquivo de configuração do apache com o comando:<br /> <br /> Com o arquivo de configuração do apache2 aberto, execute os seguintes passos:</p><ol><li>Procure por "Include /etc/apache2/httpd.conf", e quando achar, comente a linha adicionando um "#" antes de Include. Ex: "#Include /etc/apache2/httpd.conf".</li><li>Adicione as seguintes linhas ao final do arquivo:<ul><li>LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so</li><li>LoadModule php6_module /usr/lib/apache2/modules/libphp6.so</li></ul></li></ol><p>Reinicie o apache e teste a instação:<br /> <br /> Se ocorreu tudo certo durante a instalação você receberá de output o texto:</p><blockquote><p>PHP 6.0.0-dev (cli) (built: Jan 4 2009 22:44:21)<br /> Copyright (c) 1997-2009 The PHP Group<br /> Zend Engine v3.0.0-dev, Copyright (c) 1998-2009 Zend Technologies</p></blockquote> ]]></content:encoded> <wfw:commentRss>http://brunosouza.com.br/blog/tutorial-compilando-configurando-instalando-php6-no-linux/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Iniciação C#</title><link>http://brunosouza.com.br/blog/iniciacao-csharp-2/</link> <comments>http://brunosouza.com.br/blog/iniciacao-csharp-2/#comments</comments> <pubDate>Sat, 08 Nov 2008 15:22:07 +0000</pubDate> <dc:creator>Bruno Souza</dc:creator> <category><![CDATA[Programacão]]></category> <category><![CDATA[código]]></category> <category><![CDATA[console]]></category> <category><![CDATA[csharp]]></category> <category><![CDATA[Faculdade]]></category><guid isPermaLink="false">http://brunosouza.info/?p=124</guid> <description><![CDATA[Código feito para um trabalho da faculdade. Alguns conceitos já conhecidos. Agora em C#.]]></description> <content:encoded><![CDATA[<p>Código feito para um trabalho da faculdade. Alguns conceitos já conhecidos. Agora em C#.</p><p><span id="more-124"></span><br /> <br /> <!--<pre class="csharp" style="overflow: auto;" mce_style="overflow: auto;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PD2___Atividade_II
{
    class GrupoPessoas
    {
        public static int qtdePessoas, cont;
        public static string[] arrayPessoas;

        static void Main(string[] args){

            int opcaoBusca, buscaNumerica;
            string buscaString;
            bool excecao = false;

            Console.Write(&#8220;Digite a quantidade de pessoas: &#8220;);
            try {
                qtdePessoas = Int16.Parse(Console.ReadLine());
            }
            catch (Exception) {
                excecao = true;
                Console.Write(&#8220;\nErro! A quantidade de pessoas deve ser um número inteiro! Tente novamente.&#8221;);
            }

            if(!excecao){
                //passagem de parâmetro por saída
                setArrayPessoas(out arrayPessoas);

                do{
                    //passagem de parâmetro por referência
                    preencheArray(ref cont);
                }
                while (qtdePessoas &gt; cont);

                Console.Write(&#8220;\nVocê deseja buscar pelo nome ou pela posição? [1] nome, [2] posição: &#8220;);

                opcaoBusca = Int16.Parse(Console.ReadLine());

                if (opcaoBusca == 1) {
                    Console.Write(&#8220;\nDigite o nome da pessoa a encontrar: &#8220;);
                    buscaString = Console.ReadLine();

                    //método sobrecarregado, passagem de parâmetro por referência implícita e cópia
                    pesquisaArray(buscaString, arrayPessoas);

                }
                else if (opcaoBusca == 2){
                    Console.Write(&#8220;\nDigite a posição do array a encontrar: &#8220;);
                    try{
                        buscaNumerica = Int16.Parse(Console.ReadLine());
                        //método sobrecarregado, passagem de parâmetro por referência implícita e cópia
                        pesquisaArray(buscaNumerica, arrayPessoas);
                    }
                    catch (Exception) {
                        excecao = true;
                        Console.Write(&#8220;\nErro! Neste array só existem posições numéricas. Tente novamente.&#8221;);
                    }
                }
                else {
                    Console.Write(&#8220;\nErro! Opção Inválida. Tente novamente.&#8221;);
                }
            }
            Console.Read();
        }

        private static void setArrayPessoas(out string[] arr){
            arr = new String[qtdePessoas];
        }

        private static void preencheArray(ref int posicao){
            Console.Write(&#8220;Digite um nome para a pessoa que ficará na posição [" + posicao + "]: &#8220;);
            arrayPessoas[posicao] = Console.ReadLine();
            posicao++;
        }

        //método sobrecarregado
        private static void pesquisaArray(string nome, string[] arr){
            bool algoEncontrado = false;
            Console.WriteLine(&#8220;\nResultado da busca:\n&#8221;);
            for (int c = 0; c &lt; arr.Length; c++){
                if (arr[c] == nome){
                    Console.WriteLine(&#8221; &#8211; A pessoa &#8216;{0}&#8217; encontra-se na posição [{1}] do array.\n&#8221;, nome, c);
                    algoEncontrado = true;
                }
            }
            if(!algoEncontrado)
                Console.WriteLine(&#8221; &#8211; Nenhuma pessoa foi encontrada no array com o nome &#8216;{0}&#8217;.&#8221;, nome);
        }

        //método sobrecarregado
        private static void pesquisaArray(int posicao, string[] arr){
            try{
                Console.WriteLine(&#8220;\n &#8211; Na posição [{0}] encontra-se a pessoa &#8216;{1}&#8217;.&#8221;, posicao, arr[posicao]);
            }
            catch (Exception){
                Console.WriteLine(&#8220;\nErro! A posição requerida não existe no array.&#8221;);
            }
        }
    }
}</pre><p>--></p> ]]></content:encoded> <wfw:commentRss>http://brunosouza.com.br/blog/iniciacao-csharp-2/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Feliz Dia do Programador!</title><link>http://brunosouza.com.br/blog/feliz-dia-do-programador/</link> <comments>http://brunosouza.com.br/blog/feliz-dia-do-programador/#comments</comments> <pubDate>Sat, 13 Sep 2008 06:04:26 +0000</pubDate> <dc:creator>Bruno Souza</dc:creator> <category><![CDATA[Geek]]></category> <category><![CDATA[Programacão]]></category> <category><![CDATA[comedia]]></category> <category><![CDATA[video]]></category><guid isPermaLink="false">http://brunosouza.info/?p=58</guid> <description><![CDATA[]]></description> <content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="376" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blip.tv/play/gYwjwZJqjdEh" /><embed type="application/x-shockwave-flash" width="100%" height="376" src="http://blip.tv/play/gYwjwZJqjdEh"></embed></object></p> ]]></content:encoded> <wfw:commentRss>http://brunosouza.com.br/blog/feliz-dia-do-programador/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Served from: brunosouza.com.br @ 2012-02-06 01:54:44 by W3 Total Cache -->
