@zeroandradehttps://zeroandrade.com.br/2019-09-11T12:11:00-03:00Um blog sobre TI, Cibersegurança, Linux e por aí vaiSerá que seus dados vazaram?2019-09-11T12:11:00-03:002019-09-11T12:11:00-03:00zeroandradetag:zeroandrade.com.br,2019-09-11:/sera-que-seus-dados-vazaram.html<p>Um dos assuntos mais tratados no contexto de cibersegurança brasileira em 2019 é sem dúvida a <a href="http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/L13709.htm">Lei Nº 13.709</a> - Lei Geral de Proteção de Dados Pessoais(LGPD). Afinal, está na pauta de toda em empresa que lide com dados de usuários, tendo em vista que em agosto de 2020 …</p><p>Um dos assuntos mais tratados no contexto de cibersegurança brasileira em 2019 é sem dúvida a <a href="http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/L13709.htm">Lei Nº 13.709</a> - Lei Geral de Proteção de Dados Pessoais(LGPD). Afinal, está na pauta de toda em empresa que lide com dados de usuários, tendo em vista que em agosto de 2020 ela entra em vigência "pra valer". Sucintamente, o objetivo desta lei é garantir que nossos dados pessoais sejam manipulados de forma segura e responsável pelas empresas e entidades, sempre respeitando nosso interesse, propriedade e privacidade. Esta é uma lei que vem na esteira de muitas inciativas internacionais no mesmo sentido, sobretudo por se espelhar na Lei Europeia, a <a href="https://gdpr-info.eu">GDPR</a>. Resta saber qual será o efeito prático, uma vez que são notórios e recorrentes os casos de vazamentos de dados, além de dados de usuários serem tratados mundo afora como uma nova fonte de riqueza. Já ouviu por aí a frase que dados são o novo petróleo?</p>
<p>Agora, quantas vezes nossos dados pessoais já foram expostos? Já verificou se você foi afetado por algum grande vazamento? Dois serviços são muito legais para você verificar seus dados:</p>
<ul>
<li><a href="https://haveibeenpwned.com/">https://haveibeenpwned.com/</a> Neste portal, você insere um e-mail que normalmente utilize para cadastro em serviços web, e descobre se ele aparece em algum grande vazamento.</li>
<li><a href="https://monitor.firefox.com/">https://monitor.firefox.com/</a> Neste serviço da Firefox, o princípio é o mesmo, mas você também pode criar uma conta para ser avisado em caso de novos vazamentos.</li>
</ul>
<p>Verificar vazamentos é extremamente importante, inclusive para que você possa reagir alterando senhas, cancelando contas e avisando pessoas próximas. </p>Criptografar arquivos com OpenSSL2019-08-22T15:00:00-03:002019-08-22T15:00:00-03:00Ze R. Andrade Jr.tag:zeroandrade.com.br,2019-08-22:/como-criptografar-arquivos-com-openssl.html<p>Eis aqui um mini tutorial de como podemos criptografar arquivos utilizando Openssl. Estas orientações se aplicam à maioria das distribuições Linux, sejam para servidores como para desktops, que possuam o OpenSSL devidamente instalado.</p>
<p>O conteúdo deste artigo foi baseado em outros dois tutoriais encontrados via Google: <a href="https://www.shellhacks.com/encrypt-decrypt-file-password-openssl/">ShellHacks</a> e outro do …</p><p>Eis aqui um mini tutorial de como podemos criptografar arquivos utilizando Openssl. Estas orientações se aplicam à maioria das distribuições Linux, sejam para servidores como para desktops, que possuam o OpenSSL devidamente instalado.</p>
<p>O conteúdo deste artigo foi baseado em outros dois tutoriais encontrados via Google: <a href="https://www.shellhacks.com/encrypt-decrypt-file-password-openssl/">ShellHacks</a> e outro do blog de <a href="https://www.czeskis.com/random/openssl-encrypt-file.html">Alexei Czeskis</a></p>
<h3>Criptografar utilizando uma senha</h3>
<p><img alt="Tipo 1" src="images/cripto_tipo1.png"></p>
<p>Para criptografar utilizando uma senha e o OpenSSL, eis o comando abaixo. O parâmetro <em>-a</em> faz com que o arquivo de saída esteja apropriadamente codificado em base64. Ainda o <em>-salt</em> é altamente recomendável quando se utiliza uma senha para criptografar.</p>
<div class="highlight"><pre><span></span>openssl enc -aes-256-cbc -salt -a -in file.txt -out file.txt.enc
</pre></div>
<p>Obs.: Este comando termina com um <em>warning</em>, pois este procedimento será considerado obsoleto por causa de ataques de força bruta.</p>
<p>Para descriptografar:</p>
<div class="highlight"><pre><span></span>openssl enc -aes-256-cbc -d -a -in file.txt.enc -out file_recuperado1.txt
</pre></div>
<p>Para um procedimento mais resiliente a ataques de força bruta, adicionar -pbkdf2 e -iter :</p>
<div class="highlight"><pre><span></span> openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter <span class="m">1000</span> -salt -in file.txt -out file.txt.enc2
</pre></div>
<p>Porém , para desciptografar,será imprescindível lembrar de todos os parâmetros e valores utilizados:</p>
<div class="highlight"><pre><span></span>openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter <span class="m">1000</span> -d -in file.txt.enc2 -out file_recuperado2.txt
</pre></div>
<h3>Criptografar utilizando um par de chaves</h3>
<p><img alt="Tipo 2" src="images/cripto_tipo2.png"></p>
<p>Este procedimento é mais adequado para arquivos regulares, e se vale apenas de um par de chaves RSA.</p>
<p>se você não possui um par de chaves, você pode criá-las:</p>
<div class="highlight"><pre><span></span><span class="c1">#chave privada</span>
openssl genrsa -out /caminho_da_chave/keyfile.key <span class="m">4096</span>
<span class="c1">#chave pública</span>
openssl rsa -in /caminho_da_chave/keyfile.key -pubout -out /caminho_da_chave/keyfile.pub
</pre></div>
<p>Então, uma vez distribuída a chave pública, para criptografar:</p>
<div class="highlight"><pre><span></span>cat texto_para_criptografar.txt <span class="p">|</span> openssl rsautl -encrypt -pubin -inkey /caminho_da_chave/keyfile.pub > texto_para_criptografar.txt.enc
</pre></div>
<p>O resultado é um arquivo binário.</p>
<p>Para descriptografar, obviamente utilize a chave privada:</p>
<div class="highlight"><pre><span></span>cat texto_para_criptografar.txt.enc <span class="p">|</span> openssl rsautl -decrypt -inkey /caminho_da_chave/keyfile.key > recuperado.txt
</pre></div>
<h3>Criptografar arquivos maiores</h3>
<p><img alt="Tipo 3" src="images/cripto_tipo3.png"></p>
<p>Por questões de performance, é possível utilizar uma "chave simétrica" descartável para criptografar os arquivos, e então criptografar esta chave com a chave pública.</p>
<p>Primeiramente, gere a chave simétrica de forma genérica (o número é o tamanho do arquivo):</p>
<div class="highlight"><pre><span></span>openssl rand -out secret.key <span class="m">128</span>
</pre></div>
<p>Depois, o arquivo em questão é criptografado:</p>
<div class="highlight"><pre><span></span>openssl aes-256-cbc -in arquivo.pdf -out arquivo.pdf.enc -pass file:secret.key
</pre></div>
<p>Por último, é criptografada a chave genérica:</p>
<div class="highlight"><pre><span></span>openssl rsautl -encrypt -oaep -pubin -inkey /caminho_da_chave/keyfile.pub -in secret.key -out secret.key.enc
</pre></div>
<p>a chave genérica original poderá ser descartada</p>
<div class="highlight"><pre><span></span>rm secret.key
</pre></div>
<p>Neste cenário seriam armazenados ou repassados tanto o arquivo da chave simétrica criptografada, como o arquivo criptografado. Esta chave genérica criptografada é imprescindível para recuperação do arquivo.</p>
<p>Para descriptografar, primeiro se recupera a chave genérica utilizando a chave privada:</p>
<div class="highlight"><pre><span></span> openssl rsautl -decrypt -oaep -inkey /caminho_da_chave/keyfile.key -in secret.key.enc -out secret.key
</pre></div>
<p>Em seguida, é recuperado o arquivo:</p>
<div class="highlight"><pre><span></span>openssl aes-256-cbc -d -in arquivo.pdf.enc -out saida.pdf -pass file:secret.key
</pre></div>
<p>Assim, a ideia seria não reaproveitar esta chave genérica para outros arquivos.</p>A volta do blog2019-08-06T10:21:00-03:002019-08-06T10:21:00-03:00Ze R. Andrade Jr.tag:zeroandrade.com.br,2019-08-06:/a-volta-do-blog.html<p>Em 2009 resolvi organizar um blog pessoal para concentrar e compartilhar algumas coisas legais que eu encontro pelo caminho em minha jornada como profissional de TI. Apesar de inúmeras iniciativas semelhantes existentes, creio ser válido ter um canto para colocar as coisas, nem que seja só para apontar o local …</p><p>Em 2009 resolvi organizar um blog pessoal para concentrar e compartilhar algumas coisas legais que eu encontro pelo caminho em minha jornada como profissional de TI. Apesar de inúmeras iniciativas semelhantes existentes, creio ser válido ter um canto para colocar as coisas, nem que seja só para apontar o local onde alguém já resolveu um problema e compartilhou a solução. A essência é basicamente esta: compartilhar. </p>
<p>Só que o desativei em janeiro de 2016. Naquela época eu usava o WordPress e agora resolvi arriscar o <a href="http://getpelican.com">Pelican</a> por eu usar Python todo dia. A proposta do <a href="http://getpelican.com">Pelican</a> é (acredito ser) a mesma do <a href="https://jekyllrb.com">Jekyll</a>, ou seja, gerar conteúdo estático. Isto parece ser um pouco mais compatível com as minhas neuras em relação à segurança da informação. Só que algumas coisas ficaram desconfiguradas na conversão. Aos poucos vou corrigindo os artigos quebrados, o que não será um trabalho hercúleo já que na importação dos dados antigos percebi que as atividades no blog não foram das mais intensas, como comprovou o meu comando:</p>
<div class="highlight"><pre><span></span>cat *.rst <span class="p">|</span> grep <span class="s2">":date:"</span> <span class="p">|</span> cut -d<span class="s2">" "</span> -f2 <span class="p">|</span> cut -d <span class="s2">"-"</span> -f1 <span class="p">|</span> sort <span class="p">|</span> uniq -c
<span class="m">18</span> <span class="m">2009</span>
<span class="m">18</span> <span class="m">2010</span>
<span class="m">6</span> <span class="m">2011</span>
<span class="m">2</span> <span class="m">2012</span>
<span class="m">1</span> <span class="m">2013</span>
<span class="m">2</span> <span class="m">2015</span>
</pre></div>
<p>Uma média vergonhosa de 8 artigo por ano - desconsiderando 2014, em que não houve um texto sequer. Mas é assim: no começo empolgação, e depois embolação. Espero ter um pouco mais de disciplina e algo a declarar nesta retomada. Amém.</p>
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="s2">"Olá mundo, de novo!"</span><span class="p">)</span>
</pre></div>Draw.io2019-08-06T10:20:00-03:002019-08-22T18:20:00-03:00Ze R. Andrade Jr.tag:zeroandrade.com.br,2019-08-06:/drawio.html<p>Estes dias um colega da pós-graduação me apresentou o <a href="https://draw.io" target="_blank">Draw.io</a>. Pense numa excelente ferramenta! Você usa ela direto no navegador, salva o resultado onde for mais conveniente ou se quiser pode instalar no seu S.O. favorito. Considero-a mais prática e versátil do que o Dia, semelhante muito popular …</p><p>Estes dias um colega da pós-graduação me apresentou o <a href="https://draw.io" target="_blank">Draw.io</a>. Pense numa excelente ferramenta! Você usa ela direto no navegador, salva o resultado onde for mais conveniente ou se quiser pode instalar no seu S.O. favorito. Considero-a mais prática e versátil do que o Dia, semelhante muito popular entre o pessoal quem usa Linux. Se a intenção for produzir apenas diagramas, dá para fazer uma série deles: redes, BPM, UML, mockup de sites, diagramas de software, mapas mentais. A biblioteca é extensa e você pode exportar a saída para diversos formatos, inclusive SVG, que te permite edição em outros softwares. Porém no caso de diagramas mais elaborados como Diagramas de classes e modelos de processo, ferramentas especializadas serão sempre melhores, pois facilitam a entrada de dados e modificações dinâmicas dos elementos. No draw.io é tudo feito "na unha".</p>
<p><img alt="Tipo 1" src="images/modelo-draw.png"></p>Mais legal que wget ou curl2015-04-30T09:54:00-03:002015-04-30T09:54:00-03:00zeandradetag:zeroandrade.com.br,2015-04-30:/mais-legal-que-wget-ou-curl.html<p>Se você usa Linux, deve estar acostumado ao wget e ao curl para lidar com o protocolo HTTP em linha de comando. Pois só há alguns dias é que conheci o <strong>httpie (<a href="http://httpie.org">http://httpie.org</a>) .</strong></p>
<p>Posso afirmar que a surpresa foi muito agradável. Fácil de usar, resposta amigável , ótimo para …</p><p>Se você usa Linux, deve estar acostumado ao wget e ao curl para lidar com o protocolo HTTP em linha de comando. Pois só há alguns dias é que conheci o <strong>httpie (<a href="http://httpie.org">http://httpie.org</a>) .</strong></p>
<p>Posso afirmar que a surpresa foi muito agradável. Fácil de usar, resposta amigável , ótimo para testes e também para tarefas automatizadas. Detalhe: o comando para uso é <strong>http .</strong></p>
<p>Por exemplo, se você quiser fazer apenas um teste de conectividade com o Google, recuperando apenas os cabeçalhos da conexão, basta usar:</p>
<p><strong>http -h google.com</strong></p>Codeacademy2015-04-09T14:25:00-03:002015-04-09T14:25:00-03:00zeandradetag:zeroandrade.com.br,2015-04-09:/codeacademy.html<p>Excelente ferramenta para aprendizagem :</p>
<p><a href="http://www.codeacademy.com" title="Code Academy">www.codeacademy.com</a></p>
<p>É possível estudar Python, Ruby, Javascript, PHP e muito mais através desta ferramenta on-line simples e intuitiva. Detalhe : gratuitamente!</p>Gráficos no Python2013-10-09T14:48:00-03:002013-10-09T14:48:00-03:00zeandradetag:zeroandrade.com.br,2013-10-09:/graficos-no-python.html<p>Uma ferramenta interessante para geração de gráficos com Python , para WEB , é o <strong><a href="http://pygal.org/">pygal</a></strong></p>
<p>Os gráficos são gerados em SVG, com dinamismos implementados através de Jquery. Detalhe: As bibliotecas Jquery e pygal.js são referenciadas em endereços no próprio site pygal.org, mas nada impede que se faça o download …</p><p>Uma ferramenta interessante para geração de gráficos com Python , para WEB , é o <strong><a href="http://pygal.org/">pygal</a></strong></p>
<p>Os gráficos são gerados em SVG, com dinamismos implementados através de Jquery. Detalhe: As bibliotecas Jquery e pygal.js são referenciadas em endereços no próprio site pygal.org, mas nada impede que se faça o download dos arquivos e a edição do SVG para apontar para arquivos locais.</p>
<p>A implementação é simples e o resultado é bem interessante. Requer pip e lxml para instalação.</p>Que tal uma fonte de computador criada por um carro?2012-06-18T08:06:00-03:002012-06-18T08:06:00-03:00zeandradetag:zeroandrade.com.br,2012-06-18:/que-tal-uma-fonte-de-computador-criada-por-um-carro.html<iframe src="http://player.vimeo.com/video/5233789" frameborder="0" width="500" height="281"></iframe>
<p><a href="http://vimeo.com/5233789">iQ font - When driving becomes writing / Full making of</a> from <a href="http://vimeo.com/tomgalle">tomgalle</a> on <a href="http://vimeo.com">Vimeo</a>.</p>integração do Ubuntu com Android2012-02-25T16:16:00-02:002012-02-25T16:16:00-02:00zeandradetag:zeroandrade.com.br,2012-02-25:/integracao-do-ubuntu-com-android.html<p>fonte: Olhar Digital</p>
<p><a href="http://www.youtube.com/watch?feature=player_embedded&v=3pZUCKt0RKc">android+ubuntu</a></p>
<p>http://olhardigital.uol.com.br/produtos/digital_news/noticias/ubuntu-para-android-seu-computador-podera-ser-um-smartphone</p>Editando PDF's no Linux2011-05-12T19:54:00-03:002011-05-12T19:54:00-03:00zeandradetag:zeroandrade.com.br,2011-05-12:/editando-pdfs-no-linux.html<p>Resolvi publicar este post pois muitas fontes na web ao tratar de edição de PDF no Linux fazem referência ao pdfedit , um aplicativo "sofrido" de usar. Existem outras alternativas mais amigáveis.</p>
<p>1ª) <del>Através de uma extensão disponível em <a href="http://extensions.services.openoffice.org/project/pdfimport">http://extensions.services.openoffice.org/project/pdfimport</a> é possível realizar a edição …</del></p><p>Resolvi publicar este post pois muitas fontes na web ao tratar de edição de PDF no Linux fazem referência ao pdfedit , um aplicativo "sofrido" de usar. Existem outras alternativas mais amigáveis.</p>
<p>1ª) <del>Através de uma extensão disponível em <a href="http://extensions.services.openoffice.org/project/pdfimport">http://extensions.services.openoffice.org/project/pdfimport</a> é possível realizar a edição de PDF's no OpenOffice ( BrOffice/LibreOffice) Draw.</del></p>
<p>1ª) Atualmente é possível importar PDF's diretamente no LibreOffice/OpenOffice Draw e realizar as alterações necessárias.</p>
<p>Para mim, o resultado foi muito legal e fácil de conseguir.</p>
<p>2ª) O editor de vetores <a href="http://www.inkscape.org">Inkscape</a> realiza a importação de PDF's com bastante fidelidade. Mas as modificações exigem familiaridade com a ferramenta.</p>
<p>Obviamente,para ambos os casos a edição não se aplica a documentos protegidos. ;)</p>firefox4 ubuntu11.04 java2011-05-03T15:15:00-03:002011-05-03T15:15:00-03:00zeandradetag:zeroandrade.com.br,2011-05-03:/firefox4-ubuntu1104-java.html<p>firefox4+ubuntu11.04+java</p>
<p>Como fazemos para funcionar:</p>
<ol>
<li>
<p>Baixar o java e extraia o conteúdo (eu joguei tudo no /opt)</p>
</li>
<li>
<p>Como root:</p>
</li>
</ol>
<div class="highlight"><pre><span></span> <span class="n">cd</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">mozilla</span><span class="o">/</span><span class="n">plugins</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">jre1</span><span class="p">.</span><span class="mi">6</span><span class="p">.</span><span class="mi">0</span><span class="n">_25</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">i386</span><span class="o">/</span><span class="n">libnpjp2</span><span class="p">.</span><span class="n">so</span>
</pre></div>
<ol>
<li>Testar (http://java.com/pt_BR/download/installed.jsp) clique no botão vermelho …</li></ol><p>firefox4+ubuntu11.04+java</p>
<p>Como fazemos para funcionar:</p>
<ol>
<li>
<p>Baixar o java e extraia o conteúdo (eu joguei tudo no /opt)</p>
</li>
<li>
<p>Como root:</p>
</li>
</ol>
<div class="highlight"><pre><span></span> <span class="n">cd</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">mozilla</span><span class="o">/</span><span class="n">plugins</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">jre1</span><span class="p">.</span><span class="mi">6</span><span class="p">.</span><span class="mi">0</span><span class="n">_25</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">i386</span><span class="o">/</span><span class="n">libnpjp2</span><span class="p">.</span><span class="n">so</span>
</pre></div>
<ol>
<li>Testar (http://java.com/pt_BR/download/installed.jsp) clique no botão vermelho.</li>
</ol>
<p>Para mim deu certo, detalhe na primeira vez em que ele é carregado o Firefox parece que trava (carregando...) mas não trava : )</p>
<p>Me baseei nas informações do site da Oracle: <a href="http://www.oracle.com/technetwork/java/javase/manual-plugin-install-linux-136395.html">http://www.oracle.com/technetwork/java/javase/manual-plugin-install-linux-136395.html</a></p>Calcular o hash MD5 recursivamente de um diretório no Linux2011-03-15T17:27:00-03:002011-03-15T17:27:00-03:00zeandradetag:zeroandrade.com.br,2011-03-15:/calcular-o-hash-md5-recursivamente-de-um-diretorio-no-linux.html<p>É possível gerar no Linux , através do md5sum ou do sha1sum , recursivamente , o hash de arquivos presentes em um diretório.</p>
<p>Se não há subdiretórios, basta:</p>
<div class="highlight"><pre><span></span>md5sum um-diretorio-que-deseja-listar/*.*
</pre></div>
<p>Porém , num ponto com muitos subdiretórios, pode se usar:</p>
<p>(Para facilitar o trabalho , primeiramente, instale o comando <strong>tree.</strong>)</p>
<p>Debian/Ubuntu:</p>
<div class="highlight"><pre><span></span>apt-get install tree …</pre></div><p>É possível gerar no Linux , através do md5sum ou do sha1sum , recursivamente , o hash de arquivos presentes em um diretório.</p>
<p>Se não há subdiretórios, basta:</p>
<div class="highlight"><pre><span></span>md5sum um-diretorio-que-deseja-listar/*.*
</pre></div>
<p>Porém , num ponto com muitos subdiretórios, pode se usar:</p>
<p>(Para facilitar o trabalho , primeiramente, instale o comando <strong>tree.</strong>)</p>
<p>Debian/Ubuntu:</p>
<div class="highlight"><pre><span></span>apt-get install tree
</pre></div>
<p>Eis o comando:</p>
<div class="highlight"><pre><span></span>md5sum <span class="k">$(</span>tree -ifF um-diretorio-que-deseja-listar <span class="p">|</span>
grep -v <span class="s1">'\/$'</span> <span class="p">|</span> grep -v <span class="s1">'^$'</span> <span class="p">|</span> grep -v <span class="s1">'directories, '</span><span class="k">)</span>
</pre></div>
<p>Isto pode ser útil para encontrar arquivos de conteúdo igual, porém com nomes diferentes.</p>Apresentações com JessyInk2011-03-03T13:10:00-03:002011-03-03T13:10:00-03:00zeandradetag:zeroandrade.com.br,2011-03-03:/apresentacoes-com-jessyink.html<p>Utilizando os arquivo vetoriais SVG produzidos pelo <a href="http://www.inkscape.org">Inkscape</a>, associado a Javascript, o JessyInk produz arquivos para apresentações, que são executados diretamente do navegador. O resultado é muito bom. Porém a produção das apresentações exige um prévio conhecimento do funcionamento do <a href="http://www.inkscape.org">Inkscape</a></p>
<p>Conheça melhor o complemento em:</p>
<p><a href="http://code.google.com/p/jessyink/">http://code.google.com …</a></p><p>Utilizando os arquivo vetoriais SVG produzidos pelo <a href="http://www.inkscape.org">Inkscape</a>, associado a Javascript, o JessyInk produz arquivos para apresentações, que são executados diretamente do navegador. O resultado é muito bom. Porém a produção das apresentações exige um prévio conhecimento do funcionamento do <a href="http://www.inkscape.org">Inkscape</a></p>
<p>Conheça melhor o complemento em:</p>
<p><a href="http://code.google.com/p/jessyink/">http://code.google.com/p/jessyink/</a></p>Gnome 3 em abril2011-03-03T11:56:00-03:002011-03-03T11:56:00-03:00zeandradetag:zeroandrade.com.br,2011-03-03:/gnome-3-em-abril.html<p>acompanhe em:</p>
<p><a href="http://www.gnome3.org/">http://www.gnome3.org/</a></p>
<p>é possível experimentar a novidade, que ainda está em desenvolvimento, através de uma prévia disponível em <em>live cd</em> :</p>
<p><a href="http://www.gnome3.org/tryit.html">http://www.gnome3.org/tryit.html</a></p>seu navegador fala HTML5?2010-12-15T09:47:00-02:002010-12-15T09:47:00-02:00zeandradetag:zeroandrade.com.br,2010-12-15:/seu-navegador-fala-html5.html<p>O HTML5 será, num futuro próximo, o padrão de marcação que vigorará na Internet. É no que apostam as grandes empresas da rede. Ele, em suas primeiras especificações já traz consigo muita inovação.</p>
<p>O HTML5 facilitará muito a vida de desenvolvedores e tornará mais leves e ágeis certos recursos que …</p><p>O HTML5 será, num futuro próximo, o padrão de marcação que vigorará na Internet. É no que apostam as grandes empresas da rede. Ele, em suas primeiras especificações já traz consigo muita inovação.</p>
<p>O HTML5 facilitará muito a vida de desenvolvedores e tornará mais leves e ágeis certos recursos que hoje só conseguimos através do uso de Javascript/<a href="http://pt.wikipedia.org/wiki/Internet_rica">RIA</a>.</p>
<p>Caso você queira avaliar a evolução de seu navegador favorito em relação a esta nova tecnologia, visite: <a href="http://html5test.com/">http://html5test.com/</a></p>
<p>Outro recurso interessante são as simulações em:<a href="http://html5demos.com/">http://html5demos.com/</a></p>
<p>E para saber mais sobre o assunto:</p>
<p><a href="http://knol.google.com/k/luciano-%C3%A9dipo-pereira-da-silva/html-5/w98ptswyb0qd/15#">http://knol.google.com/k/luciano-%C3%A9dipo-pereira-da-silva/html-5/w98ptswyb0qd/15#</a></p>Novo endereço !2010-12-14T17:17:00-02:002019-08-06T09:20:00-03:00zeandradetag:zeroandrade.com.br,2010-12-14:/novo-endereco.html<p>Boa tarde pessoal.</p>
<p>Agora, o endereço de meu blog é <del>www.zeandrade.com.br</del></p>
<p>(Atualizando): <a href="https://zeroandrade.com.br">zeroandrade.com.br</a></p>
<p>Endereços antigos apontarão para cá.</p>Console interativo no Python - melhorado!2010-11-18T17:15:00-02:002010-11-18T17:15:00-02:00zeandradetag:zeroandrade.com.br,2010-11-18:/console-interativo-no-python-melhorado.html<p>Eu que já curto o Python e estava acostumado a testar recursos no console interativo, ao digitar o comando "python", agora aproveito ainda melhor os recursos de documentação embutida das classes em python. Basta utilizar o aplicativo 'ipython'.</p>
<p>O 'ipython' oferece um console muito mais poderoso.</p>
<p>Teste já (se for …</p><p>Eu que já curto o Python e estava acostumado a testar recursos no console interativo, ao digitar o comando "python", agora aproveito ainda melhor os recursos de documentação embutida das classes em python. Basta utilizar o aplicativo 'ipython'.</p>
<p>O 'ipython' oferece um console muito mais poderoso.</p>
<p>Teste já (se for necessário, instale o <a href="http://ipython.scipy.org/moin/Documentation">ipython</a>): [Atenção à pontuação pertinente!]</p>
<p><strong>1.</strong> digite <strong>ipython</strong></p>
<p><strong>2.</strong> digite <strong>import os</strong></p>
<p><strong>3.</strong> digite <strong>os.</strong> e pressione a tecla <strong>[TAB]</strong></p>
<p><strong>4</strong>.digite <strong>os.kill ?</strong></p>
<p><strong>5.</strong> digite <strong>a = 2</strong></p>
<p><strong>6.</strong> digite <strong>a ?<br>
</strong></p>descobrir se é utf-82010-10-19T09:51:00-02:002010-10-19T09:51:00-02:00zeandradetag:zeroandrade.com.br,2010-10-19:/descobrir-se-e-utf-8.html<p>Um colega meu estava com a necessidade de descobrir, no Linux, qual a codificação (encoding) de um arquivo. Afinal, é uma droga quando o servidor está numa codificação e o arquivo em outra. Certamente você já se deparou com alguma página na Internet em que uma palavra, por exemplo: "comunicação …</p><p>Um colega meu estava com a necessidade de descobrir, no Linux, qual a codificação (encoding) de um arquivo. Afinal, é uma droga quando o servidor está numa codificação e o arquivo em outra. Certamente você já se deparou com alguma página na Internet em que uma palavra, por exemplo: "comunicação", se transforma em algo como "comunicaC&aÂ#%o" ou coisa parecida...</p>
<p>o pulo do gato é esta linha, via shell</p>
<div class="highlight"><pre><span></span>file <span class="nv">$1</span> --mime-encoding <span class="p">|</span> cut -d<span class="s2">":"</span> -f2 <span class="p">|</span> sed -e <span class="s1">'s/ //g'</span>
</pre></div>
<p>aí dá até para montar um script, seja para testar ou mesmo evitar uma situação:</p>
<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>
<span class="nv">tipo</span><span class="o">=</span><span class="k">$(</span>file <span class="nv">$1</span> --mime-encoding <span class="p">|</span> cut -d<span class="s2">":"</span> -f2 <span class="p">|</span> sed -e <span class="s1">'s/ //g'</span><span class="k">)</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$tipo</span> !<span class="o">=</span> <span class="s1">'utf-8'</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
<span class="c1"># echo "nao eh utf-8"</span>
<span class="nb">exit</span> <span class="m">1</span>
<span class="k">else</span>
<span class="c1"># echo "eh utf-8"</span>
<span class="nb">exit</span> <span class="m">0</span>
<span class="k">fi</span>
</pre></div>
<p>porém arquivo sem caracteres como 'ç' ou 'á' , por exemplo um texto sem acentuação , sempre será identificado como 'us-ascii'.</p>
<p>Ah, em PHP existe a função mb_detect_encoding para realizar este teste com strings...<br>
<a href="http://www.php.net/manual/en/function.mb-detect-encoding.php">http://www.php.net/manual/en/function.mb-detect-encoding.php</a></p>Xubuntu - ativar o numlock por padrão2010-10-13T09:45:00-03:002010-10-13T09:45:00-03:00zeandradetag:zeroandrade.com.br,2010-10-13:/xubuntu-ativar-o-numlock-por-padrao.html<p>Atualmente tenho me aventurado a utilizar o Xubuntu ( nada relacionado com a Xuxa, que aliás, não entende lhufas de informática: <a href="http://migre.me/1yHfK">veja http://migre.me/1yHfK</a>) . Xubuntu é uma versão do Ubuntu Linux, utilizando a interface gráfica Xfce4 - mais leve e mais simples que as tradicionais Gnome ou Kde. Em toda …</p><p>Atualmente tenho me aventurado a utilizar o Xubuntu ( nada relacionado com a Xuxa, que aliás, não entende lhufas de informática: <a href="http://migre.me/1yHfK">veja http://migre.me/1yHfK</a>) . Xubuntu é uma versão do Ubuntu Linux, utilizando a interface gráfica Xfce4 - mais leve e mais simples que as tradicionais Gnome ou Kde. Em toda "migração", algumas coisas acabam faltando. E algo que me incomodava era o Numlock desativado..., bem nesta página encontrei a solução: <a href="http://migre.me/1yHqd">http://migre.me/1yHqd</a></p>
<div id="post_message_5232097">
É necessário editar este arquivo:
<div>
``` {lang="bash"}
sudo mousepad / etc /gdm/Init/Default
<div class="highlight"><pre><span></span><span class="o"></</span><span class="nv">div</span><span class="o">></span>
<span class="o"><</span><span class="nv">div</span><span class="o">></span>
<span class="nv">a</span> ú<span class="nv">ltima</span> <span class="nv">linha</span> <span class="k">do</span> <span class="nv">arquivo</span> <span class="nv">provavelmente</span> <span class="nv">ser</span>á:
``` {<span class="nv">lang</span><span class="o">=</span><span class="s2">"</span><span class="s">bash</span><span class="s2">"</span>}
<span class="k">exit</span> <span class="mi">0</span>
</pre></div>
</div>
<div>
Antes dela adicione:
``` {lang="bash"}
if [ -x /usr/ bin /numlockx ]; then
/usr/ bin /numlockx on
fi
```
e pronto!
Obs: desconsiderar os espaços em "etc" e "bin", que foram colocados para "viabilizar " a publicação de trechos de código, barrados no filtro de segurança do provedor que utilizo.
</div>
</div>Mitos sobre a Internet!2010-08-25T16:23:00-03:002010-08-25T16:23:00-03:00zeandradetag:zeroandrade.com.br,2010-08-25:/mitos-sobre-a-internet.html<p>testes seus conhecimentos sobre os mitos a respeito da Internet, nesta interessante matéria do portal G1:</p>
<p><a href="http://g1.globo.com/tecnologia/noticia/2010/08/g1-lista-mitos-sobre-internet-veja-verdades-e-mentiras.html">http://g1.globo.com/tecnologia/noticia/2010/08/g1-lista-mitos-sobre-internet-veja-verdades-e-mentiras.html</a></p>Playing for change!2010-05-05T14:03:00-03:002010-05-05T14:03:00-03:00zeandradetag:zeroandrade.com.br,2010-05-05:/playing-for-change.html<p>Músicos que se apresentam nas ruas de diversos lugares do mundo - juntos pela paz. Muito legal.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/Us-TVg40ExM&hl=pt_BR&fs=1&color1=0x006699&color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Us-TVg40ExM&hl=pt_BR&fs=1&color1=0x006699&color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<div style="text-align: center;">
<http://www.playingforchange.com/>
</div>Cursos gratuitos FVG2010-05-04T09:34:00-03:002010-05-04T09:34:00-03:00zeandradetag:zeroandrade.com.br,2010-05-04:/cursos-gratuitos-fvg.html<p><a href="http://www5.fgv.br/fgvonline/CursosGratuitos.aspx">http://www5.fgv.br/fgvonline/CursosGratuitos.aspx</a></p>Circuito Celepar de Software Livre - Etapa Londrina2010-04-27T15:27:00-03:002010-04-27T15:27:00-03:00zeandradetag:zeroandrade.com.br,2010-04-27:/circuito-celepar-de-software-livre-etapa-londrina.html<p>Estive em Londrina-PR neste último fim de semana (24/04) para efetuar uma palestra sobre segurança e software livre.</p>
<p><a href="José%20Roberto%20Andrade%20Junior"><img alt="[foto de José Roberto Andrade Junior]" class="aligncenter" height="267" src="http://www.circuito.pr.gov.br/modules/galeria/uploads/12/00075_00123.jpg" title="José Roberto Andrade Junior" width="225"></a></p>
<p>acompanhe as datas e obtenha os conteúdos em :<br>
<a href="http://www.circuito.pr.gov.br">www.circuito.pr.gov.br</a></p>Eclipse Galileo no Debian Lenny2010-04-16T11:14:00-03:002010-04-16T11:14:00-03:00zeandradetag:zeroandrade.com.br,2010-04-16:/eclipse-galileo-debian-lenny.html<p>Como eu fiz para funcionar:</p>
<p>baixar o<a href="http://www.eclipse.org/downloads">Eclipse</a> conforme sua linha de projetos (no meu caso PHP).</p>
<p>``` {lang="bash"}
cd diretorio_onde_esta_o_pacote</p>
<p>tar -xzf eclipse-php-galileo-SR2-linux-gtk.tar.gz</p>
<p>cp -R eclipse /usr/lib/eclipse</p>
<p>ln -s /usr/lib/eclipse/eclipse /usr/bin/eclipse</p>
<p>ln -s caminho_para_o_java_jre /usr/lib/eclipse/jre
```</p>
<p>Obs: estou …</p><p>Como eu fiz para funcionar:</p>
<p>baixar o<a href="http://www.eclipse.org/downloads">Eclipse</a> conforme sua linha de projetos (no meu caso PHP).</p>
<p>``` {lang="bash"}
cd diretorio_onde_esta_o_pacote</p>
<p>tar -xzf eclipse-php-galileo-SR2-linux-gtk.tar.gz</p>
<p>cp -R eclipse /usr/lib/eclipse</p>
<p>ln -s /usr/lib/eclipse/eclipse /usr/bin/eclipse</p>
<p>ln -s caminho_para_o_java_jre /usr/lib/eclipse/jre
```</p>
<p>Obs: estou usando o JRE 1.6.0-20, obtido no <a href="http://www.java.com/pt_BR/download/linux_manual.jsp?locale=pt_BR&host=www.java.com">site do Java</a></p>
<p>Daí é só usar! Boa sorte.</p>XHP - uma nova forma de programar em PHP2010-04-14T10:47:00-03:002010-04-14T10:47:00-03:00zeandradetag:zeroandrade.com.br,2010-04-14:/xhp-uma-nova-forma-de-programar-em-php.html<p>Em busca de desempenho, e acredito que inovação e agilidade de programação, o pessoal do Facebook surgiu este ano com algumas novidades em relação ao PHP . Uma delas é o HipHop, que seria um compilador para os códigos em PHP.</p>
<p>Nas minhas andanças pela web, a implementação do <strong>XHP</strong> chamou …</p><p>Em busca de desempenho, e acredito que inovação e agilidade de programação, o pessoal do Facebook surgiu este ano com algumas novidades em relação ao PHP . Uma delas é o HipHop, que seria um compilador para os códigos em PHP.</p>
<p>Nas minhas andanças pela web, a implementação do <strong>XHP</strong> chamou minha atenção. Pelo que vi, eles criaram uma extensão para o PHP , permitindo uma forma 'hibrida' de código com o HTML ou XML. Veja com seus próprios olhos:</p>
<ul>
<li><a href="http://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919">XHP: A New Way to Write PHP</a></li>
<li><a href="http://wiki.github.com/facebook/xhp/">http://wiki.github.com/facebook/xhp/</a></li>
</ul>
<p><a href="http://toys.lerdorf.com/">Rasmus Lerdorf</a>, um dos pais do PHP, também escreveu em seu blog um artigo com <a href="http://toys.lerdorf.com/archives/54-A-quick-look-at-XHP.html">suas impressões sobre o XHP.</a></p>
<p>Será que a moda pega? Será que compensa?Hummm...</p>ubuntu 10.04 está chegando e com nova logo2010-04-11T10:54:00-03:002010-04-11T10:54:00-03:00zeandradetag:zeroandrade.com.br,2010-04-11:/ubuntu-10-04-esta-chegando-e-com-nova-logo.html<p>Está para sair do forno, faltam alguns dias para o lançamento do Ubuntu 10.04</p>
<div style="text-align: center;">
<script src="http://www.ubuntu.com/files/countdown/display1.js" type="text/javascript"></script>
</div>
<p>Visite ubuntu.com para acompanhar as mudanças</p>
<p>O blog <a href="http://www.tecnocafe.com.br/ubuntu-10-04-com-novo-logo-e-visual/">Tecnocafé</a> também está comentando.</p>Dia Mundial dos Documentos Livres2010-03-26T15:01:00-03:002010-03-26T15:01:00-03:00zeandradetag:zeroandrade.com.br,2010-03-26:/dia-mundial-dos-documentos-livres.html<p>Dia Mundial dos Documentos Livres (DocumentFreedomDay), no próximo dia 31 de março, será comemorado pela Companhia de Informática do Paraná (Celepar) com um ciclo de palestras, a partir das 14h. Com o evento, a empresa pretende junto com o Movimento Software Livre Paraná e o Grupo de Usuários do BrOffice …</p><p>Dia Mundial dos Documentos Livres (DocumentFreedomDay), no próximo dia 31 de março, será comemorado pela Companhia de Informática do Paraná (Celepar) com um ciclo de palestras, a partir das 14h. Com o evento, a empresa pretende junto com o Movimento Software Livre Paraná e o Grupo de Usuários do BrOffice (Gubro), demonstrar a importância do uso do formato aberto de documentos, o ODF, padrão recomendado pelo Governo do Paraná para a produção, armazenamento e distribuição de documentos no Estado.</p>
<p>As palestras são abertas aos profissionais da área, estudantes, professores, empresários e funcionários públicos com um limite de vagas para as primeiras 250 inscrições.</p>
<p>Mais informações e inscrição em:</p>
<p><a href="http://www.celepar.pr.gov.br/modules/noticias/article.php?storyid=546">http://www.celepar.pr.gov.br/modules/noticias/article.php?storyid=546</a></p>Emacs + OrgMode : Impressionante2010-03-17T15:54:00-03:002010-03-17T15:54:00-03:00zeandradetag:zeroandrade.com.br,2010-03-17:/emacs-orgmode-impressionante.html<p>Uma piada nerd diz que o Emacs é um excelente "sistema operacional" em que só falta um "editor de texto". O poder deste editor me surpreendeu esses dias.(confesso que nunca tinha usado o Emacs) . Meu camarada Leslie me apresentou o <a href="http://orgmode.org/">http://orgmode.org/</a> , que integrado ao Emacs, permite barbaridades …</p><p>Uma piada nerd diz que o Emacs é um excelente "sistema operacional" em que só falta um "editor de texto". O poder deste editor me surpreendeu esses dias.(confesso que nunca tinha usado o Emacs) . Meu camarada Leslie me apresentou o <a href="http://orgmode.org/">http://orgmode.org/</a> , que integrado ao Emacs, permite barbaridades em termos de organização. Resumindo, é a versão "bloco de notas" de uma agenda muito poderosa.</p>
<p>Emacs + OrgMode = um organizador para nerd nenhum botar defeito.</p>Google Reader: uma mão na roda!2010-02-22T10:39:00-03:002010-02-22T10:39:00-03:00zeandradetag:zeroandrade.com.br,2010-02-22:/google-reader-uma-mao-na-roda.html<p>Recomendo, para quem nunca usou, testar o Google Reader. Se você já tem conta no Gmail e gosta de acompanhar blogs, aproveite. Apesar do surgimento do Buzz, o Google Reader funciona melhor quando a missão é organizar em um só lugar vários posts de blogs ou notícias do seu jornal …</p><p>Recomendo, para quem nunca usou, testar o Google Reader. Se você já tem conta no Gmail e gosta de acompanhar blogs, aproveite. Apesar do surgimento do Buzz, o Google Reader funciona melhor quando a missão é organizar em um só lugar vários posts de blogs ou notícias do seu jornal favorito, através do recursos de {RSS, Feed , Atom, etc.}. Mostra estatísticas - para quem gosta, além de otimizar um pouco seu tempo de navegação. Veja lá: www.google.com/reader</p>Python - emulando comandos shell2010-01-25T14:01:00-02:002010-01-25T14:01:00-02:00zeandradetag:zeroandrade.com.br,2010-01-25:/python-emulando-comandos-shell.html<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/python</span>
<span class="c1">#-*- coding: UTF-8 -*-</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="k">class</span> <span class="nc">Cmd</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span>
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
<span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cmd …</span></pre></div></td></tr></table><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/python</span>
<span class="c1">#-*- coding: UTF-8 -*-</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="k">class</span> <span class="nc">Cmd</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span>
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
<span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cmd</span><span class="p">,</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">args</span><span class="p">)))</span>
<span class="k">class</span> <span class="nc">Sh</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attribute</span><span class="p">):</span>
<span class="k">return</span> <span class="n">Cmd</span><span class="p">(</span><span class="n">attribute</span><span class="p">)</span>
<span class="c1"># exemplos de uso:</span>
<span class="n">sh</span> <span class="o">=</span> <span class="n">Sh</span><span class="p">()</span>
<span class="n">sh</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="s1">'-la'</span><span class="p">)</span>
<span class="n">sh</span><span class="o">.</span><span class="n">free</span><span class="p">()</span>
<span class="n">sh</span><span class="o">.</span><span class="n">ps</span><span class="p">(</span><span class="s1">'aux'</span><span class="p">)</span>
<span class="n">sh</span><span class="o">.</span><span class="n">uname</span><span class="p">(</span><span class="s1">'-a'</span><span class="p">)</span>
</pre></div>
</td></tr></table>Python - ordenar linhas de um arquivo2010-01-25T13:51:00-02:002010-01-25T13:51:00-02:00zeandradetag:zeroandrade.com.br,2010-01-25:/python-ordenar-linhas-de-um-arquivo.html<p>uma dica legal que en contrei em :</p>
<p><a href="http://code.activestate.com/recipes/440612/">http://code.activestate.com/recipes/440612/</a></p>
<p>Um script em Pyhon para ordenar as linhas de um arquivo:</p>
<p>``` {style="padding-left: 30px;"}</p>
<h1>!/usr/bin/python</h1>
<h1>-<em>- coding: utf-8 -</em>-</h1>
<p>import sys
map(sys.stdout.write, sorted(file(sys.argv[1]).readlines()))
```</p>Inkscape 0.47 no Debian Lenny2009-12-04T10:07:00-02:002009-12-04T10:07:00-02:00zeandradetag:zeroandrade.com.br,2009-12-04:/inkscape-047-no-debian-lenny.html<p>1º - Baixe o código- fonte em :</p>
<p>http://downloads.sourceforge.net/inkscape/inkscape-0.47.tar.bz2</p>
<p>(também disponível em .gz)</p>
<p>2º - Descompacte o arquivo inkscape-0.47.tar.bz2</p>
<p><strong>com usuário root:</strong></p>
<p>3º- Instale as dependências e bibliotecas necessário. No meu caso, que uso um Debian Lenny sempre atualizado , foram requeridas:</p>
<p>apt-get …</p><p>1º - Baixe o código- fonte em :</p>
<p>http://downloads.sourceforge.net/inkscape/inkscape-0.47.tar.bz2</p>
<p>(também disponível em .gz)</p>
<p>2º - Descompacte o arquivo inkscape-0.47.tar.bz2</p>
<p><strong>com usuário root:</strong></p>
<p>3º- Instale as dependências e bibliotecas necessário. No meu caso, que uso um Debian Lenny sempre atualizado , foram requeridas:</p>
<p>apt-get install intltool libgc-dev liblcms1-dev pkg-config libgsl0-dev libsigc++-dev libxslt-dev libgsl0-dev libgtkmm-dev libgtkmm-2.4-dev libboost-dev libpopt-dev</p>
<p>(e demais automaticamente atreladas)</p>
<p>4º - Acesse o diretório "inkscape-0.47" e digite <strong>./configure</strong></p>
<p>se ele reclamara de mais alguma dependência tente encontrá-la entre as 'libs' - e pegue sempre a 'dev' . Por ex: libpopt-dev</p>
<p>5º- No diretório , digite <strong>make</strong></p>
<p>esta etapa demora um pouco e mostra muita coisa na tela...</p>
<p>6º - Ainda no diretório , digite <strong>make install</strong></p>
<p>7º - Teste o inkscape 0.47 <strong>. Espero que dê certo para você, pois para mim funcionou legal.</strong></p>
<p><strong><br>
</strong></p>SQL, validações e PHP2009-11-19T14:53:00-02:002009-11-19T14:53:00-02:00zeandradetag:zeroandrade.com.br,2009-11-19:/sql-valicacoes-e-php.html<p>Dicas quando o assunto é SQL e PHP.</p>
<div class="highlight"><pre><span></span><span class="cp"><?php</span>
<span class="cm">/* </span>
<span class="cm"> sanitizar:</span>
<span class="cm"> Esta função realiza :</span>
<span class="cm"> - remove espaços no começo e fim do parâmetro</span>
<span class="cm"> - remove os caracteres *?--%'&#@"/,;</span>
<span class="cm"> - remoção de acentos, torna tudo minúsculo, preserva apenas: letras, números, .:-_</span>
<span class="cm"> */</span>
<span class="k">function</span> <span class="nf">sanitizar</span><span class="p">(</span><span class="nv">$parametro</span><span class="o">=</span><span class="k">false</span><span class="p">)</span>
<span class="p">{</span>
<span class="nv">$parametro</span><span class="o">=</span><span class="nb">stripslashes</span><span class="p">(</span><span class="nb">trim</span><span class="p">(</span><span class="nv">$parametro</span><span class="p">));</span>
<span class="nv">$parametro</span><span class="o">=</span><span class="nb">str_replace</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span><span class="s2">"?"</span><span class="p">,</span> <span class="s2">"--"</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="s2">"@"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">,</span> <span class="s2">","</span><span class="p">,</span> <span class="s2">";"</span><span class="p">),</span>
<span class="s2">""</span><span class="p">,</span> <span class="nv">$parametro</span><span class="p">);</span>
<span class="nv">$parametro</span><span class="o">=</span><span class="nb">strtolower</span><span class="p">(</span><span class="nb">preg_replace …</span></pre></div><p>Dicas quando o assunto é SQL e PHP.</p>
<div class="highlight"><pre><span></span><span class="cp"><?php</span>
<span class="cm">/* </span>
<span class="cm"> sanitizar:</span>
<span class="cm"> Esta função realiza :</span>
<span class="cm"> - remove espaços no começo e fim do parâmetro</span>
<span class="cm"> - remove os caracteres *?--%'&#@"/,;</span>
<span class="cm"> - remoção de acentos, torna tudo minúsculo, preserva apenas: letras, números, .:-_</span>
<span class="cm"> */</span>
<span class="k">function</span> <span class="nf">sanitizar</span><span class="p">(</span><span class="nv">$parametro</span><span class="o">=</span><span class="k">false</span><span class="p">)</span>
<span class="p">{</span>
<span class="nv">$parametro</span><span class="o">=</span><span class="nb">stripslashes</span><span class="p">(</span><span class="nb">trim</span><span class="p">(</span><span class="nv">$parametro</span><span class="p">));</span>
<span class="nv">$parametro</span><span class="o">=</span><span class="nb">str_replace</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span><span class="s2">"?"</span><span class="p">,</span> <span class="s2">"--"</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="s2">"@"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">,</span> <span class="s2">","</span><span class="p">,</span> <span class="s2">";"</span><span class="p">),</span>
<span class="s2">""</span><span class="p">,</span> <span class="nv">$parametro</span><span class="p">);</span>
<span class="nv">$parametro</span><span class="o">=</span><span class="nb">strtolower</span><span class="p">(</span><span class="nb">preg_replace</span><span class="p">(</span><span class="s1">'/[^[:alnum:]|_|.|:|-]/'</span><span class="p">,</span> <span class="s2">" "</span><span class="p">,</span><span class="nb">strtr</span><span class="p">(</span><span class="nv">$parametro</span><span class="p">,</span>
<span class="s2">"áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ-:"</span><span class="p">,</span><span class="s2">"aaaaeeiooouucAAAAEEIOOOUUC-:"</span><span class="p">)));</span>
<span class="k">return</span> <span class="nv">$parametro</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/* </span>
<span class="cm"> anti_sql:</span>
<span class="cm"> Esta função realiza :</span>
<span class="cm"> - remove caracteres e palavras reservadas de SQL.</span>
<span class="cm"> Obs: esta idéia foi retirada de um fórum de discussão.</span>
<span class="cm"> */</span>
<span class="k">function</span> <span class="nf">anti_sql</span><span class="p">(</span><span class="nv">$varivel</span><span class="p">)</span>
<span class="p">{</span>
<span class="nv">$varivel</span> <span class="o">=</span> <span class="nb">preg_replace</span><span class="p">(</span><span class="s2">"/(from|union select|select|insert|delete|</span>
<span class="s2">where|drop table|show tables|#|\*|--|;|=|@|</span><span class="se">\\\\</span><span class="s2">)/i"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="nv">$varivel</span><span class="p">);</span>
<span class="nv">$varivel</span> <span class="o">=</span> <span class="nb">trim</span><span class="p">(</span><span class="nv">$varivel</span><span class="p">);</span>
<span class="k">return</span> <span class="nv">$varivel</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/*</span>
<span class="cm"> Para evitar XSS, ao exibir valores recuperados na tela, utilize a função nativa htmlentities</span>
<span class="cm"> exemplo:</span>
<span class="cm"> */</span>
<span class="nv">$str</span><span class="o">=</span><span class="s2">"não encontrei o valor"</span><span class="p">;</span>
<span class="k">echo</span> <span class="nv">$str</span><span class="o">.</span><span class="s2">"<br />"</span><span class="p">;</span>
<span class="nv">$str</span><span class="o">=</span><span class="s2">"não encontrei o valor <img src='uma_imagem_nao autorizada.png' />"</span><span class="p">;</span>
<span class="k">echo</span> <span class="nv">$str</span><span class="o">.</span><span class="s2">"<br />"</span><span class="p">;</span>
<span class="k">echo</span> <span class="nb">htmlentities</span><span class="p">(</span><span class="nv">$str</span><span class="p">)</span><span class="o">.</span><span class="s2">"<br />"</span><span class="p">;</span>
<span class="cm">/* Inserir valor de campos numericos não tratados sempre oferecem risco de SQL Injection</span>
<span class="cm"> devido a não utilização da aspa na composição da query </span>
<span class="cm"> ex: SELECT titulo,mensagem FROM noticia WHERE noticia_id=234;</span>
<span class="cm"> já em campos text/string a SQL Injection torna-se dificultada pela existência da aspa</span>
<span class="cm"> ex: SELECT titulo,mensagem FROM noticia WHERE noticia_titulo='Meu titulo';</span>
<span class="cm"> porém pode ser contornada, se o interpretador não estiver habilitado para escapar aspas</span>
<span class="cm"> logo seguem algumas forma de evitar a SQL Injection:</span>
<span class="cm"> */</span>
<span class="c1">//campo numérico:</span>
<span class="cm">/* ---- ERRADO: ---- */</span>
<span class="nv">$numero</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">'numero'</span><span class="p">];</span>
<span class="nv">$sql</span><span class="o">=</span> <span class="s2">"SELECT titulo,mensagem FROM noticia WHERE noticia_id="</span><span class="o">.</span><span class="nv">$numero</span><span class="p">;</span>
<span class="cm">/* ---- Fazer: ---- */</span>
<span class="nv">$numero</span> <span class="o">=</span> <span class="p">(</span><span class="nx">int</span><span class="p">)</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">'numero'</span><span class="p">];</span>
<span class="c1">//ou</span>
<span class="nv">$numero</span> <span class="o">=</span> <span class="nb">intval</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">'numero'</span><span class="p">]);</span>
<span class="nv">$sql</span><span class="o">=</span> <span class="s2">"SELECT titulo,mensagem FROM noticia WHERE noticia_id="</span><span class="o">.</span><span class="nv">$numero</span><span class="p">;</span>
<span class="cm">/* ou então pode-se usar o sprintf */</span>
<span class="nv">$sql</span><span class="o">=</span> <span class="nb">sprintf</span><span class="p">(</span> <span class="s2">"SELECT titulo,mensagem FROM noticia WHERE noticia_id = %u"</span><span class="p">,</span><span class="nv">$numero</span><span class="p">);</span>
<span class="cm">/* inclusive para casos compostos */</span>
<span class="nv">$numero</span><span class="o">=</span><span class="mi">22</span><span class="p">;</span>
<span class="nv">$titulo</span><span class="o">=</span><span class="s1">'Minha noticia'</span><span class="p">;</span>
<span class="nv">$sql</span><span class="o">=</span> <span class="nb">sprintf</span><span class="p">(</span> <span class="s2">"SELECT titulo,mensagem FROM noticia WHERE noticia_id = %u OR titulo = '%s'"</span><span class="p">,</span><span class="nv">$numero</span><span class="p">,</span> <span class="nv">$titulo</span><span class="p">);</span>
<span class="cm">/* a SQL Injection no meio da string irá exigir a entrada de uma aspa </span>
<span class="cm"> Ex:</span>
<span class="cm"> "SELECT titulo,mensagem FROM noticia WHERE titulo = 'Meu Teste'</span>
<span class="cm"> SQL Injection:</span>
<span class="cm"> "SELECT titulo,mensagem FROM noticia WHERE titulo = 'Meu Teste' OR 1=1 --'</span>
<span class="cm"> a entrada deverá ser: Meu Teste' OR 1=1 --</span>
<span class="cm"> para resolver esta entrada, usar as funções pertinente conforme o banco de dados </span>
<span class="cm"> Ex:</span>
<span class="cm"> pg_escape_string</span>
<span class="cm"> pg_escape_bytea</span>
<span class="cm"> dbx_escape_string</span>
<span class="cm"> db2_escape_string</span>
<span class="cm"> maxdb_escape_string</span>
<span class="cm"> mysql_escape_string</span>
<span class="cm"> sqlite_escape_string</span>
<span class="cm"> mysqli_escape_string</span>
<span class="cm"> ingres_escape_string</span>
<span class="cm"> maxdb_real_escape_string</span>
<span class="cm"> mysql_real_escape_string</span>
<span class="cm"> */</span>
<span class="nv">$titulo</span> <span class="o">=</span> <span class="o">@</span><span class="nb">pg_escape_string</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">[</span><span class="s1">'titulo'</span><span class="p">]);</span>
<span class="cm">/* o 'arroba' à frente da função é usado para evitar warning oyu fatal error */</span>
<span class="nv">$sql</span><span class="o">=</span><span class="s2">"SELECT titulo,mensagem FROM noticia WHERE titulo = '"</span><span class="o">.</span><span class="nv">$titulo</span><span class="o">.</span><span class="s2">"'"</span><span class="p">;</span>
<span class="cm">/* </span>
<span class="cm"> o uso das funções de preparação de query também é recomendado </span>
<span class="cm"> pois faz o trabalho de escapar e validar dados antes da execução</span>
<span class="cm"> ex: </span>
<span class="cm"> pg_prepare</span>
<span class="cm"> mysqli_stmt_prepare</span>
<span class="cm"> ingres_prepare</span>
<span class="cm"> pg_send_prepare</span>
<span class="cm"> ovrimos_prepare</span>
<span class="cm"> maxdb_stmt_prepare</span>
<span class="cm"> db2_prepare</span>
<span class="cm"> ifx_prepare</span>
<span class="cm"> odbc_prepare</span>
<span class="cm"> maxdb_prepare</span>
<span class="cm"> swish_prepare</span>
<span class="cm"> ibase_prepare</span>
<span class="cm"> sdo_das_relational_executepreparedquery</span>
<span class="cm"> exemplo retirado de:</span>
<span class="cm"> http://br2.php.net/manual/pt_BR/function.pg-prepare.php</span>
<span class="cm"> $dbconn = pg_connect("dbname=mary");</span>
<span class="cm"> $result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');</span>
<span class="cm"> //---> Execute the prepared query. Note that it is not necessary</span>
<span class="cm"> to escape the string "Joe's Widgets" in any way:</span>
<span class="cm"> $result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));</span>
<span class="cm"> //---> Execute the same prepared query, this time with a different parameter:</span>
<span class="cm"> $result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));</span>
<span class="cm"> */</span>
<span class="cm">/* </span>
<span class="cm"> alguns padrões podem ser verificados com o uso de expressões regulares </span>
<span class="cm"> seguem exemplos para uma máscare de telefone e uma máscara de CPF </span>
<span class="cm"> - mas sem validação dos dados, apenas do padrão.</span>
<span class="cm"> */</span>
<span class="cm">/*verdadeiro se o parâmetro for algo como (99)9999-9999 */</span>
<span class="k">function</span> <span class="nf">checar_padrao_telefonico</span><span class="p">(</span><span class="nv">$valor</span><span class="o">=</span><span class="k">false</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="nb">preg_match</span><span class="p">(</span><span class="s1">'/^\([0-9]{2}\)[0-9]{4}-[0-9]{4}$/'</span><span class="p">,</span><span class="nv">$valor</span><span class="p">)</span><span class="o">?</span><span class="k">true</span><span class="o">:</span><span class="k">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/*verdadeiro se o parâmetro for algo como 999.999.999-99 */</span>
<span class="k">function</span> <span class="nf">checar_padrao_cpf</span><span class="p">(</span><span class="nv">$valor</span><span class="o">=</span><span class="k">false</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="nb">preg_match</span><span class="p">(</span><span class="s1">'/^([0-9]{3}\.){2}[0-9]{3}-[0-9]{2}$/'</span><span class="p">,</span><span class="nv">$valor</span><span class="p">)</span><span class="o">?</span><span class="k">true</span><span class="o">:</span><span class="k">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="cp">?></span><span class="x"></span>
</pre></div>Web2.02009-08-20T18:55:00-03:002009-08-20T18:55:00-03:00zeandradetag:zeroandrade.com.br,2009-08-20:/web2.html<p>um vídeo bem interessante sobre web 2.0</p>
<p><a href="http://www.youtube.com/watch?v=X4n90pO-kRk"><object width="425" height="350" data="http://www.youtube.com/v/X4n90pO-kRk" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/X4n90pO-kRk"></param></object><br>
</a></p>Fiat MIO - um carro Creative Commons2009-08-12T16:03:00-03:002009-08-12T16:03:00-03:00zeandradetag:zeroandrade.com.br,2009-08-12:/fiat-mio-um-carro-creative-commons.html<p><img src="http://www.fiatmio.cc/wp-content/themes/fiatmio/img/ico/logo.jpg" width="175" height="59" /></p>
<p>Todos podem colaborar na criação deste Carro conceito da Fiat, que será lançado no salão do automóvel de São Paulo em 2010.</p>
<p>Acesse <a href="http://www.fiatmio.cc">http://www.fiatmio.cc</a></p>FISL 102009-06-18T20:26:00-03:002009-06-18T20:26:00-03:00zeandradetag:zeroandrade.com.br,2009-06-18:/fisl-10.html<p>Na próxima semana ocorre a 10ª edição do Fórum Internacional de Software Livre. De 24 a 27 de Junho de 2009, em Porto Alegre - RS - Brasil. Mais detalhes em <a href="http://www.fisl.org.br" title="FISL">www.fisl.org.br</a>.</p>CMS Brasil 20092009-05-19T18:49:00-03:002009-05-19T18:49:00-03:00zeandradetag:zeroandrade.com.br,2009-05-19:/cms-brasil-2009.html<p>Para os técnicos que estão habituados à produtividade propriciada pelos CMS (ferramentas de gestão de conteúdo - como o Wordpress), eis aí um excelente evento: CMS Brasil 2009 (<a href="http://www.cmsbrasil2009.com/">http://www.cmsbrasil2009.com/</a>)</p>Nintendo Wii além do trivial2009-04-14T17:44:00-03:002009-04-14T17:44:00-03:00zeandradetag:zeroandrade.com.br,2009-04-14:/wii-alem-do-trivial.html<p>Se você já acha que a Nintendo está revolucionando o conceito de videogame com seu console <a href="http://wii.com">Wii</a>, considere uma visita ao site do dr. <a href="http://johnnylee.net">Johnny Chung Lee</a> . Além de ser um fera em tecnologia, o cara demonstra em seus vídeos as possibilidades de usar o controle do Nintendo Wii para …</p><p>Se você já acha que a Nintendo está revolucionando o conceito de videogame com seu console <a href="http://wii.com">Wii</a>, considere uma visita ao site do dr. <a href="http://johnnylee.net">Johnny Chung Lee</a> . Além de ser um fera em tecnologia, o cara demonstra em seus vídeos as possibilidades de usar o controle do Nintendo Wii para outras finalidades.</p>
<ul>
<li><a href="http://www.johnnylee.net/projects/wii/">http://www.johnnylee.net/projects/wii/</a></li>
</ul>
<p>Agradecimentos ao meu amigo Tarso, por compartilhar este conteúdo comigo.</p>Wubi: instale o Linux sem sair do Windows2009-04-05T20:45:00-03:002009-04-05T20:45:00-03:00zeandradetag:zeroandrade.com.br,2009-04-05:/wubi-linux-no-windows.html<p>o <a href="http://wubi-installer.org/">Wubi</a> é um instalável do Windows que torna fácil a vida de quem nunca usou Linux e não está habituado a instalá-lo. Através dele você instala uma versão do Ubuntu, sem preocupar-se com tarefas técnicas como particionamento de discos, sistema de arquivos, repositórios e etc. Para utiliza-lo você precisará …</p><p>o <a href="http://wubi-installer.org/">Wubi</a> é um instalável do Windows que torna fácil a vida de quem nunca usou Linux e não está habituado a instalá-lo. Através dele você instala uma versão do Ubuntu, sem preocupar-se com tarefas técnicas como particionamento de discos, sistema de arquivos, repositórios e etc. Para utiliza-lo você precisará de um bom espaço em disco (pelo menos uns 3 GB) e conexão com a Internet. A partir daí é só escolher uma versão do Ubuntu, usuário , senha e definir o espaço em disco; que o instalador faz o resto. Depois de instalado, ao ligar seu computador você poderá escolher se deseja utilizar o Windows ou o Ubuntu Linux.</p>
<p>Ainda, quando desejar é possível desinstalar o Ubuntu como qualquer outro aplicativo dentro do Windows, utilizando a opção apropriada de desinstalação.</p>3 a 0 para a Lei de Murphy2009-03-27T12:13:00-03:002009-03-27T12:13:00-03:00zeandradetag:zeroandrade.com.br,2009-03-27:/3-a-0-para-a-lei-de-murphy.html<p>Você provavelmente já ouviu falar sobre a <a href="http://pt.wikipedia.org/wiki/Lei_de_Murphy">Lei de Murphy</a>. Pois ela existe e está aí para acontecer com todo mundo, a todo tempo.</p>
<p>Compartilho aqui a mais recente ocorrência dela em minha vida profissional .</p>
<p>Eis que corriqueiramente gravo CDs e DVDs, e nesta semana ao tentar gravar um DVD …</p><p>Você provavelmente já ouviu falar sobre a <a href="http://pt.wikipedia.org/wiki/Lei_de_Murphy">Lei de Murphy</a>. Pois ela existe e está aí para acontecer com todo mundo, a todo tempo.</p>
<p>Compartilho aqui a mais recente ocorrência dela em minha vida profissional .</p>
<p>Eis que corriqueiramente gravo CDs e DVDs, e nesta semana ao tentar gravar um DVD (detectado sem problemas como virgem) , me deparei com uma falha. Achando o ocorrido estranho, apelei para outros programas de gravação de CD/DVD e obtive o mesmo erro. Utilizei uma outra mídia de CD para tentar gravar outros arquivos e... novamente a falha. Já comecei a suspeitar que o pior tinha acontecido. Não satisfeito, revirando minhas gavetas, peguei uma mídia de CD RW (bem novinha por sinal) , e... falha ao apagar o CDRW. Veredito: minha unidade de DVD estava com defeito. Comprovadamente!</p>
<p>Como se trata de um equipamento da empresa, acionei o departamento responsável pela manutenção do <em>hardware</em> , para que efetuasse a subtituição da unidade. Bem, um pouco depois de registrado o pedido, para sanar minha necessidade, recorri ao computador de um colega para gravar o bendito DVD. Ao fornecer minha mídia , adivinha só, erro de gravação!</p>
<p>Não acreditei. Seria a revolução das máquinas? Não. Mais uma bem sucedida demonstração da Ley de Murphy, pois o que aconteceu de verdade é que as 3 mídias escolhidas para os testes é que estavam com defeito...</p>
<p>Aí ficou assim: ordem de serviço cancelada, DVD gravado com sucesso (na mídia nº 4 - retirada da embalagem), 3 mídias no lixo e vida continua.</p>
<p>Legal que neste processo, como eu uso Linux tive oportunidade de testar trê programas diferentes:</p>
<ul>
<li><a href="http://projects.gnome.org/brasero/">Brasero</a></li>
<li><a href="http://gnomefiles.org/app.php/GnomeBaker">Gnomebacker</a></li>
<li><a href="http://k3b.org/">K3b</a></li>
</ul>
<p>Todos muito bons. Também peguei na Internet umas dicas de como gravar CD's pela linha de comando, usando o growisofs.</p>
<p><a href="http://www.vivaolinux.com.br/dica/Gravar-CD-ou-DVD-via-linha-de-comando">http://www.vivaolinux.com.br/dica/Gravar-CD-ou-DVD-via-linha-de-comando</a></p>
<p>Tenho um mouse bem legal, que deu problema ano passado e nunca mais usei. Deixei na gaveta e agora estou com medo de ligá-lo e ele voltar a funcionar...</p>Fontes para você2009-03-17T17:46:00-03:002009-03-17T17:46:00-03:00zeandradetag:zeroandrade.com.br,2009-03-17:/fontes-para-voce.html<p>Alguns amigos, de vez em quando me pedem um lugar para obter fontes legais (as letras, tipo... Arial, Verdana, Tahoma...). São os arquivos TTF ( True Type Fonts).</p>
<p>Um dos sites nacionais mais completos que conheço é <a href="http://www.netfontes.com.br">NetFontes</a>. É bem completo, separado por categorias e permite uma simulação do resultado no …</p><p>Alguns amigos, de vez em quando me pedem um lugar para obter fontes legais (as letras, tipo... Arial, Verdana, Tahoma...). São os arquivos TTF ( True Type Fonts).</p>
<p>Um dos sites nacionais mais completos que conheço é <a href="http://www.netfontes.com.br">NetFontes</a>. É bem completo, separado por categorias e permite uma simulação do resultado no próprio site.</p>
<p>vale conferir.</p>
<p>Para instalar é fácil :</p>
<p>[<code>Windows - copie seu(s) arquivo(s) .ttf para C:\Windows\Fonts (ou o caminho de sua instalação, no diretório Fonts)</code>]{style="color: #000000;"}</p>
<p>[Linux - Debian, Ubuntu e afins.]{style="color: #000000;"}</p>
<p>[1) copie seu(s) arquivo(s) .ttf para /usr/share/fonts/truetype,]{style="color: #003366;"}</p>
<p>[caso tenha acesso de administrador (root) ou ,]{style="color: #000000;"}</p>
<p>[2) copie seu(s) arquivo(s) .ttf para \~/.fonts/truetype]{style="color: #003366;"}</p>CSS Poderoso2009-03-17T10:11:00-03:002009-03-17T10:11:00-03:00zeandradetag:zeroandrade.com.br,2009-03-17:/css-poderoso.html<p><strong>CSS - Cascading Style Sheets</strong> , ou em português <strong>Folhas de Estilo</strong> , é o recurso utilizado para formatar as páginas HTML . Como se diz, é ele que faz a" perfumaria" das páginas. Como tudo na Internet, este recurso também está evoluindo. O CCS3 incorporará recursos interessantes, alguns inclusive já suportados por navegadores …</p><p><strong>CSS - Cascading Style Sheets</strong> , ou em português <strong>Folhas de Estilo</strong> , é o recurso utilizado para formatar as páginas HTML . Como se diz, é ele que faz a" perfumaria" das páginas. Como tudo na Internet, este recurso também está evoluindo. O CCS3 incorporará recursos interessantes, alguns inclusive já suportados por navegadores mais novos, como o Firefox 3.</p>
<p>Para conhecer muitos deste recursos indico o site <a href="http://www.css3.info">www.css3.info</a></p>
<p>Um destes recursos , que acredito estar disponível na maioria dos navegadores atuais é o tratamento mais específico do contexto dos elementos.</p>
<p>Abaixo, um código exemplo que faz o tratamento contextual de cada link. Ou seja, ao invés de inserir imagens e cores direto no corpo do documento para diferentes tipos de link , o que se faz é criar padrões no CSS que serão interpretados no contexto da página, criando o efeito visual desejado.</p>
<p><a href="http://an.drade.nom.br/pagina_teste_20090317.html">Veja aqui o resultado</a></p>
<p>Obs. Os ícones são do site <a href="http://www.famfamfam.com">www.famfamfam.com</a></p>
<div style="margin: 0px auto; padding: 5px; width: 90%; background-color: #efefef; text-align: left; font-family: monospace;">
`<html> <head> <style> div{ font-family: sans-serif; color:#000; } a:link, a:visited{ text-decoration:none; color:#00c; } a[href]{ padding-left:18px; } a[href^="http://an.drade.nom.br"]:link,a[href^="http://an.drade.nom.br"]:visited { color:#369; background:transparent url('http://www.famfamfam.com/lab/icons/mini/icons/icon_home.gif') no-repeat center left; } a[href$=".pdf"]:link,a[href$=".pdf"]:visited { color:#f90; background:transparent url('http://www.famfamfam.com/lab/icons/mini/icons/file_acrobat.gif') no-repeat center left; } a[href$=".flv"]:link,a[href$=".flv"]:visited,a[href$=".wmv"]:link,a[href$=".wmv"]:visited { color:#396; background:transparent url('http://www.famfamfam.com/lab/icons/mini/icons/page_video.gif') no-repeat center left; } a[href]:hover{ color:#c00; text-decoration:underline;} </style> </head> <body> <div> <p> veja a construção destes links:</p> </a> <a href="http://an.drade.nom.br" />Link para Home</a><br /> <a href="http://dominioquenaoexiste/doc.pdf" />Link para Documento 1</a><br /> <a href="http://dominioquenaoexiste/doc.pdf" />Link para Documento 2</a><br /> <a href="http://dominioquenaoexiste/video.flv" />Link para video 1</a><br /> <a href="http://dominioquenaoexiste/video.wmv" />Link para video 2</a><br /> </div> </body> </html>`
</div>Sala de estagiário2009-03-11T17:17:00-03:002009-03-11T17:17:00-03:00zeandradetag:zeroandrade.com.br,2009-03-11:/sala-de-estagiario.html<p>Alguém com muito tempo de sobra conseguiu produzir uma verdadeira obra de arte. Basta que você pesquise no Google o termo " <a href="http://www.google.com/search?q=sala+de+estagiário">Sala de estagiário</a>" e você encontrará uma série de blogs e fotologs com as imagens.</p>
<p>Eis uma amostra:</p>
<p><img src="http://i33.photobucket.com/albums/d85/chrisloki/estag/ATT5300583.jpg" width="764" height="573" /></p>Ícones interessantes2009-03-09T21:12:00-03:002009-03-09T21:12:00-03:00zeandradetag:zeroandrade.com.br,2009-03-09:/icones-interessantes.html<p>Você encontrará uma coleção de ícones " informáticos" em preto e branco, extremamente elementares, disponíveis em <a href="http://blog.picol.org/">http://blog.picol.org</a></p>
<p>Eles foram utilizados para produção de uma interessante animação que conta a <a href="http://www.lonja.de/motion/mo_history_internet.html">história da Internet</a> (em inglês).</p>
<p>[caption id="" align="alignleft" width="512" caption="PIcol Icons"]<img alt="PIcol Icons" height="512" src="http://blog.picol.org/wp-content/uploads/2009/03/picol_prerelease_16_090307.png" title="PIcol Icons" width="512">[/caption]</p>Juntando PDFs2009-03-06T22:26:00-03:002009-03-06T22:26:00-03:00zeandradetag:zeroandrade.com.br,2009-03-06:/juntando-pdfs.html<p>O pdftk ( PDF Tool Kit) é uma mão na roda para estas e outras tarefas. Para utilizá-lo você terá que recorrer ao modo texto ( Console, Tela Preta, DOS/ Shell , ou como dizem meus compadres nerds , "A interface amigável") .</p>
<p>O comando não tem mistério :</p>
<ul>
<li>[ [<strong>[pdftk arquivo1.pdf arquivo2.pdf arquivoN.pdf …</strong></li></ul><p>O pdftk ( PDF Tool Kit) é uma mão na roda para estas e outras tarefas. Para utilizá-lo você terá que recorrer ao modo texto ( Console, Tela Preta, DOS/ Shell , ou como dizem meus compadres nerds , "A interface amigável") .</p>
<p>O comando não tem mistério :</p>
<ul>
<li>[ [<strong>[pdftk arquivo1.pdf arquivo2.pdf arquivoN.pdf</strong>]{style="color: #333399;"}<strong>[cat output]{style="color: #808080;"} arquivofinal.pdf</strong>]{style="color: #333399;"}</li>
</ul>
<p>para baixar, acesse <a href="http://www.accesspdf.com/pdftk/">http://www.accesspdf.com/pdftk/</a> e escolha a versão apropriada para seu sistema operacional.</p>
<p>maiores informações: [<strong>pdftk --help</strong>]{style="color: #808080;"}</p>
<p>Quem usa Linux, pode simplemente usar o <strong>pdfunite</strong></p>
<blockquote>
<p>pdfunite arquivo1.pdf arquivo2.pdf arquivoN.pdf arquivofinal.pdf</p>
</blockquote>Segurem o Conficker2009-03-06T20:23:00-03:002009-03-06T20:23:00-03:00zeandradetag:zeroandrade.com.br,2009-03-06:/segurem-o-conficker.html<p>O vírus <a href="http://en.wikipedia.org/wiki/Conficker">Conficker</a> está dando trabalho a diversos administradores de rede. E olha que ele já está documentado desde o ano passado, com correções de sistema operacional lançadas e tudo mais. Seja você usuário do Windows 2000, XP , 2003 , Vista, etc.; só estará imune se estiver com seu computador protegido …</p><p>O vírus <a href="http://en.wikipedia.org/wiki/Conficker">Conficker</a> está dando trabalho a diversos administradores de rede. E olha que ele já está documentado desde o ano passado, com correções de sistema operacional lançadas e tudo mais. Seja você usuário do Windows 2000, XP , 2003 , Vista, etc.; só estará imune se estiver com seu computador protegido por um bom anti-vírus , com sistema operacional atualizado e com camada de segurança sobre seus compartilhamentos , bemcomo uma senha caprichada para acesso ao modo de administração.</p>
<p>Sintomas: Ele desabilita seus mecanismo de atualização e segurança, além de se propagar com facilidade, e é claro: deixar sua rede uma bagunça.</p>Abrir arquivos CDR sem o CorelDRAW2009-03-06T19:58:00-03:002009-03-06T19:58:00-03:00zeandradetag:zeroandrade.com.br,2009-03-06:/abrir-arquivos-cdr-sem-o-coreldraw.html<p>Isso existe?</p>
<p>Sim, graças a um utilitário denominado <a href="http://www.sk1project.org/modules.php?name=Products&product=uniconvertor">UniConvertor</a>. O projeto sk1 lançou a última versão deste utilitário (1.1.3) em julho de 2008, com versões para diversos sistemas operacionais ( então é possível abrir arquivo .CDR no Linux? Aparentemente sim - eu ainda não testei).</p>
<p>Fica aí um incentivo: Não …</p><p>Isso existe?</p>
<p>Sim, graças a um utilitário denominado <a href="http://www.sk1project.org/modules.php?name=Products&product=uniconvertor">UniConvertor</a>. O projeto sk1 lançou a última versão deste utilitário (1.1.3) em julho de 2008, com versões para diversos sistemas operacionais ( então é possível abrir arquivo .CDR no Linux? Aparentemente sim - eu ainda não testei).</p>
<p>Fica aí um incentivo: Não use software pirata! Precisa abrir um CDR e não tem CorelDraw ? Use o Uniconvertor e transforme-o em PDF ou SVG .</p>Adeus IE 62009-03-06T19:26:00-03:002009-03-06T19:26:00-03:00zeandradetag:zeroandrade.com.br,2009-03-06:/adeus-ie-6.html<p>O Internet Explorer 6, segundo dados do IMasters, ainda responde por mais de 30% da utilização na web. Ele nasceu em 2001.E convenhamos, a Internet de 2001 era diferente da Internet de hoje. De lá para cá, muita coisa rolou e aos trancos e barrancos o IE6 ainda está …</p><p>O Internet Explorer 6, segundo dados do IMasters, ainda responde por mais de 30% da utilização na web. Ele nasceu em 2001.E convenhamos, a Internet de 2001 era diferente da Internet de hoje. De lá para cá, muita coisa rolou e aos trancos e barrancos o IE6 ainda está aí... Vários navegadores são sensivelmente atualizados e alguns praticamente reescritos para comportar todo o avanço tecnológico, porém o IE6, apesar de suas atualizações, mostra-se incompatível com as demandas atuais. Fato fácil de constatar devido à existência do IE7. Então por que todo mundo não passou a usar o IE7? Incompatibilidade tecnológica para aqueles que tem computadores antigos, com poucos recursos de hardware; ou então por pura preguiça de instalar a nova versão.</p>
<p>Vale ressaltar que muita dor de cabeça com vírus, cavalos-de-Tróia e toda sorte de malwares e fraudes cibernéticas, se aproveitam de problemas (muitos corrigidos há tempos pela Microsoft) presentes no IE6.</p>
<p>Se você ainda utiliza este navegador "vovô", aposente-o. Sua máquina não é lá estas coisas e você teme que o IE7 sobrecarregue ela, experimente o Firefox , ou o Chrome da Google.</p>
<p>Se o caso for extremo : saiba que o Opera é o navegador mais leve. No começo será uma quebra de certos paradigmas habituar-se à uma nova tecnologia e uma interface onde" os botões são diferentes", mas tenho certeza que você consegue.</p>
<p>Existe uma considerável mobilização de desenvolvedores para que seja abandonado o suporte ao Internet Explorer 6. Sejam as iniciativas nacionais:</p>
<ul>
<li><a href="http://imasters.uol.com.br/crossbrowser/pt-br/">http://imasters.uol.com.br/crossbrowser/pt-br/</a></li>
</ul>
<p>como as internacionais:</p>
<ul>
<li><a href="http://www.stopie6.com/">http://www.stopie6.com/</a></li>
<li><a href="http://www.stopie6.org/">http://www.stopie6.org/</a></li>
</ul>
<p>Se mesmo assim você quiser , por qualquer motivo , "ficar no passado", pelo menos não deixe de regularmente atualizar seu programa.</p>
<p>Página de downloads e atualizações da Microsoft:</p>
<p><a href="http://www.microsoft.com/windows/ie/ie6/downloads/default.mspx#ETB">http://www.microsoft.com/windows/ie/ie6/downloads/default.mspx#ETB</a></p>
<p>
<script src="http://imasters.uol.com.br/crossbrowser/pt-br/banner/5.js" type="text/javascript"></script>
</p>Post Inaugural2009-03-06T13:03:00-03:002009-03-06T13:03:00-03:00zeandradetag:zeroandrade.com.br,2009-03-06:/post-inaugural.html<p>Meu Blog está oficialmente inaugurado. Meu muito obrigado ao meu colega <a href="http://www.hermano.com.br">Hermano Pereira</a> pelo incentivo e pela hospedagem cedida no primórdios.</p>