<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7624476069480039405</id><updated>2011-08-01T14:58:25.751-07:00</updated><category term='wiki'/><category term='protocol'/><category term='sound converter'/><category term='web'/><category term='Lucid Lynx'/><category term='jks'/><category term='maverick'/><category term='fonts'/><category term='Virtual System'/><category term='tecnologia'/><category term='SELinux'/><category term='http'/><category term='forum'/><category term='sync'/><category term='chrome'/><category term='splash'/><category term='C++'/><category term='mosaic'/><category term='x-splash'/><category term='browser'/><category term='jkd7'/><category term='haskell'/><category term='truetype'/><category term='The Thing King'/><category term='SSL'/><category term='kuki'/><category term='backup'/><category term='linux'/><category term='boot'/><category term='java'/><category term='conhecimento'/><category term='sockets'/><category term='language'/><category term='TTF'/><category term='memory'/><category term='biometric'/><category term='syncronization'/><category term='Go language'/><category term='keytool'/><category term='fast flip'/><category term='chrome os'/><category term='m4a'/><category term='SPDY'/><category term='netscape'/><category term='software'/><category term='netbook'/><category term='celestia'/><category term='kernel'/><category term='microsoft'/><category term='StackOverflowError'/><category term='exception'/><category term='face recognition'/><category term='mp3'/><category term='IE'/><category term='Ubuntu'/><category term='JAR script JAVA'/><category term='ESA'/><category term='criptografia'/><category term='java formatter'/><category term='w3c'/><category term='anti-IF campaign'/><category term='kernel modules'/><category term='keystore'/><category term='google'/><category term='nautilus'/><title type='text'>Should be something about IT</title><subtitle type='html'>Blog with something about IT</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-607676155417708852</id><published>2010-08-03T10:46:00.001-07:00</published><updated>2010-08-03T10:46:38.568-07:00</updated><title type='text'>Novo Site Tantam -  Claudio Cardozo</title><content type='html'>&lt;span class="z19Dle" id="col-z13ffjex2p2ojp1lc23fit5bqpehyrmt2"&gt;&lt;span class="zo"&gt;Demorou,  mas me rendi a "alugar" um domínio próprio... a partir de agora, meus &lt;i&gt;posts&lt;/i&gt; estarão no site abaixo, se deliciem, plz!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="medium_text" id="result_box"&gt;&lt;span title=""&gt;Late, but I surrendered to "rent" my own domain ... &lt;/span&gt;&lt;span style="background-color: white;" title=""&gt;from now, my posts will be at the site below, enjoy, plz!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="medium_text" id="result_box"&gt;&lt;span style="background-color: white;" title=""&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="z19Dle" id="col-z13ffjex2p2ojp1lc23fit5bqpehyrmt2"&gt;&lt;span class="zo"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z13ffjex2p2ojp1lc23fit5bqpehyrmt2"&gt;&lt;span class="zo"&gt;&lt;a href="http://www.ziben.com.br/"&gt;Ziben - Alfarrábio&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-607676155417708852?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/607676155417708852/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=607676155417708852' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/607676155417708852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/607676155417708852'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/08/novo-site-tantam-claudio-cardozo_03.html' title='Novo Site Tantam -  Claudio Cardozo'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-5518289566379662476</id><published>2010-08-03T10:43:00.000-07:00</published><updated>2010-08-03T10:45:57.640-07:00</updated><title type='text'>Novo Site Tantam -  Claudio Cardozo</title><content type='html'>&lt;span class="z19Dle" id="col-z13ffjex2p2ojp1lc23fit5bqpehyrmt2"&gt;&lt;span class="zo"&gt;Demorou,  mas me rendi a "alugar" um domínio próprio... a partir de agora, meus &lt;i&gt;posts&lt;/i&gt; estarão no site abaixo, se deliciem, plz!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="medium_text" id="result_box"&gt;&lt;span title=""&gt;Late, but I surrendered to "rent" my own domain ... &lt;/span&gt;&lt;span style="background-color: white;" title=""&gt;from now, my posts will be at the site below, enjoy, plz!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="medium_text" id="result_box"&gt;&lt;span style="background-color: white;" title=""&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="z19Dle" id="col-z13ffjex2p2ojp1lc23fit5bqpehyrmt2"&gt;&lt;span class="zo"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z13ffjex2p2ojp1lc23fit5bqpehyrmt2"&gt;&lt;span class="zo"&gt;&lt;a href="http://www.ziben.com.br/"&gt;Ziben - Alfarrábio&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-5518289566379662476?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/5518289566379662476/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=5518289566379662476' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5518289566379662476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5518289566379662476'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/08/novo-site-tantam-claudio-cardozo.html' title='Novo Site Tantam -  Claudio Cardozo'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-1163669346088928930</id><published>2010-07-12T11:14:00.000-07:00</published><updated>2010-07-12T11:22:35.061-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='conhecimento'/><category scheme='http://www.blogger.com/atom/ns#' term='forum'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Em defesa dos forum e wiki</title><content type='html'>Nenhum processo de Qualidade e Gestão de Conhecimento é possivel sem o comprometimento dos escalões mais altos da organização; fato!&lt;br /&gt;&lt;br /&gt;Na Oracle, o FAQ e forum são &lt;i&gt;good will&lt;/i&gt;; faz parte do patrimônio e responde por 95% das dúvidas... olha que tremenda economia! JBoss, Eclipse, Java, todos tem wiki riquíssimos!&lt;br /&gt;&lt;br /&gt;Sem margem para discussões, o meio mais eficiente de divulgação e busca de conhecimento técnicos hoje, são os forum e wiki's; fato! a partir do forum, geram-se documentos mais concisos, que vão para um &lt;i&gt;engine&lt;/i&gt; mais eficiente, caso dos wiki's. Teremos algo mais sofisticado se pensarmos isso junto com CMS.&lt;br /&gt;&lt;br /&gt;Já tive diversas experiências, muito bem sucedidas de compartilhamento de discussões e informações técnicas, incluindo clientes. Foi incrível a experiência de tempos atrás, retomar um assunto parado a 1,5 ano; não tive duvidas, tava lá! Imagina quão valiosa é a caixa de e-mails de dezenas de pessoas? Ao se desligar da empresa, normalmente se perdem ou não tem alta disponibilidade; em resumo, essas informações se perdem. Por que não usar um forum/wiki, no lugar da "praga" de e-mails? E-mail deve ter 3 pernas (send/receive/reply) e não dezenas de vai-e-volta; exceto raras exceções.&lt;br /&gt;&lt;br /&gt;Muita coisa hoje no wiki, foram compiladas de forum; quantos buscaram informações lá?&lt;br /&gt;&lt;br /&gt;Pra finalizar: gestão de conhecimento = preocupação com o futuro.&lt;br /&gt;Se não tivessem incendiado a biblioteca de Alexandria, provavelmente, não estaríamos discutindo isso!&lt;br /&gt;&lt;br /&gt;Em tecnologia/conhecimento, temos 3 opções: vanguarda (visão da arte), contemporânea/moderna (estado da arte) ou obsolescência/obsoleto (histórico). Ou tá na frente, no bolo, ou ficou pra trás!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-1163669346088928930?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/1163669346088928930/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=1163669346088928930' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1163669346088928930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1163669346088928930'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/07/em-defesa-dos-forum-e-wiki.html' title='Em defesa dos forum e wiki'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-1260768953418988444</id><published>2010-06-18T16:04:00.000-07:00</published><updated>2010-06-18T16:04:13.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='biometric'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='face recognition'/><title type='text'>Face Recognition Security Software</title><content type='html'>A quick Google search turned up a number of &lt;a href="http://pages.cpsc.ucalgary.ca/%7Ehanlen/vision/facelinks.html" target="_blank"&gt;projects in early development&lt;/a&gt;, and a couple of &lt;a href="http://www.filebuzz.com/findsoftware/linux_face/1.html" target="_blank"&gt;commercial systems&lt;/a&gt; with price tags in the hundreds of dollars (presumably for enterprise-level applications).&lt;br /&gt;&lt;br /&gt;Of course, you do know biometrics are a bit of a joke, and nowhere near  as secure and reliable as a good password, right?  You can fool 2D  facial recognition apps with a photograph.  Fingerprint scanners can be  fooled by a piece of tape with a lifted fingerprint, or a piece of damp  paper with a photocopy of the person's fingerprint.  Voice recognition  software can be fooled by a digital voice recorder with a decent  speaker.  &lt;br /&gt;&lt;br /&gt;And all of them will fail due to normal bodily changes.  Gain or lose a  few pounds, or wear a bit more or less makeup than usual, and the facial  recognition software might not recognize your face.  Get a cut or burn  on your finger, and the fingerprint scanner won't let you log in to your  computer.  Catch a cold or laryngitis, and neither will voice  recognition software.&lt;br /&gt;&lt;br /&gt;On the other hand, if a password is at least eight characters, includes  numbers and/or special characters, and is something you can easily  remember, it will &lt;i&gt;always&lt;/i&gt; work, and is very secure as long as you keep it in your head.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-1260768953418988444?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/1260768953418988444/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=1260768953418988444' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1260768953418988444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1260768953418988444'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/06/face-recognition-security-software.html' title='Face Recognition Security Software'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-2064213392808188433</id><published>2010-06-11T11:23:00.000-07:00</published><updated>2010-06-11T11:23:48.520-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='SELinux'/><title type='text'>SELinux</title><content type='html'>A maioria dos métodos de autenticação de controle de acesso são arbitrários. O dono do objeto (seja um programa ou dado) pode alterar as permissões para outras pessoas e grupos.&lt;br /&gt;Anos atrás, a Agência de Segurança Nacional (NSA) criou um projeto para aplicar “Mandatory Access Control” (MAC) dentro do kernel Linux. Este projeto ficou conhecido como “Security Enhanced Linux” ou “SELinux”. O MAC reforça as políticas de segurança que limitam o que um usuário ou programa pode fazer, e quais arquivos, portas, aparelhos e diretórios um programa ou usuário pode acessar.&lt;br /&gt;SELinux tem três modos: “Desabilitado”, “Permissivo” e “Execução”. No modo “Desabilitado” nada é feito. Neste modo você tem as políticas configuradas e prontas, mas não ativas. O modo “Permissivo” registra as violações da política em arquivos de log para que você possa verificar ou monitorar. No modo “Execução” qualquer violação da política de segurança será contida.&lt;br /&gt;SELinux utiliza cerca de 5 a 10% do desempenho do sistema quando no modo de Execução ou Permissivo.&lt;br /&gt;Da mesma forma, o SELinux pode ser executado em uma política de “Orientada” ou “Estrita”. A política “Orientada” significa que os controles MAC apenas se aplicam a determinados processos. A “Estrita” significa que os controles MAC se aplicam a todos os processos. As pessoas devem ser advertidas de que o uso indiscriminado da política “Estrita” do SELinux pode tornar o sistema praticamente inutilizável para alguns usuários. Tem que haver um compromisso de manter o sistema seguro, mas permitindo que os usuários façam o seu trabalho.&lt;br /&gt;Argumenta-se que o SELinux é um “exagero” em um sistema de um único usuário, mas com modernos exploits e o poder do “sistemas de um único usuário”, podemos encontrar mais e mais aplicações do SELinux em um desktop de um único usuário.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-2064213392808188433?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/2064213392808188433/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=2064213392808188433' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/2064213392808188433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/2064213392808188433'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/06/selinux.html' title='SELinux'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-9205005147833477854</id><published>2010-06-11T10:54:00.000-07:00</published><updated>2010-06-11T10:54:10.239-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='maverick'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu Maverick development updates</title><content type='html'>For last 2 hours, I dug through all the mails from ubuntu mailing  lists, esp the announcements related to development, recalled many  changes which I heard in last week or two and penned them down.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ubuntu Maverick Meerkat Alpha 1 released with Linux Kernel 2.6.34-5&amp;nbsp;  &lt;a href="http://fridge.ubuntu.com/node/2057" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Ubuntu sparc and IA64 ports are candidates for decommissioning  unless someone comes up to take the responsibility of maintaining it. &lt;a href="https://lists.ubuntu.com/archives/ubuntu-devel/2010-June/030857.html" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Maverick won’t run on processors below i686 &lt;a href="https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/587186" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;DebianImportFreeze on June 24th, Alpha 2 will come on July 1st &lt;a href="https://wiki.ubuntu.com/MaverickReleaseSchedule" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;On Alpha 1 alternate, creation of encrypted /home is broken &lt;a href="https://bugs.launchpad.net/ubuntu/+source/debian-installer/+bug/588705" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Shotwell replaces F-Spot as Image organizer &lt;a href="https://blueprints.launchpad.net/ubuntu/+spec/desktop-maverick-shotwell" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Daniel Holbach invites everyone for Operation Cleansweep. It aims to  bring down bugs with patches down to 0(&lt;em&gt;zero&lt;/em&gt;) by the time of  Maverick release. &lt;a href="http://daniel.holba.ch/blog/?p=689" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Ubuntu User Days has been postponed till July 10th, 2010 &lt;a href="https://lists.ubuntu.com/archives/ubuntu-classroom/2010-June/000192.html" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Jono Bacon has invited interested people to come forward and take  over Acire and PyJunior development &lt;a href="http://www.jonobacon.org/2010/06/04/project-maintainers-required/" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Maverick rebased to Kernel 2.6.35-rc1 &lt;a href="https://launchpad.net/ubuntu/+source/linux/2.6.35-1.1" target="_blank"&gt;#&lt;/a&gt; &lt;a href="http://www.linux.org/news/2010/05/30/0001.html" target="_blank"&gt;#&lt;/a&gt;  &lt;a href="https://wiki.ubuntu.com/KernelTeam/Meeting/2010-06-01" target="_blank"&gt;#&lt;/a&gt;&lt;em&gt; (Status: Maverick (ogasawara) section&lt;/em&gt;)&lt;/li&gt;&lt;li&gt;Maverick will be getting 1.8 X Server due to which all drivers need  to be rebuilt. It might break X when upgrading. Later in the cycle X  will be upgraded to 1.9 &lt;a href="https://lists.ubuntu.com/archives/ubuntu-devel-discuss/2010-June/011587.html" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Chromium is default for Ubuntu Netbook Remix &lt;a href="https://blueprints.launchpad.net/ubuntu/+spec/desktop-maverick-chromium" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Martin Pitt has a page for burn-down chart and work progress for  Maverick Alpha 2 &lt;a href="http://people.canonical.com/%7Epitti/workitems/maverick/canonical-desktop-team-maverick-alpha-2.html" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Lots of Software Center UI enhancements on the way &lt;a href="https://blueprints.launchpad.net/ubuntu/+spec/desktop-maverick-software-center-front-end" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Next Ubuntu Hug Day targets Gnome Games to be held on June 10th. 68  New bugs, 28 Incomplete and 14 Confirmed. &lt;a href="https://wiki.ubuntu.com/UbuntuBugDay/20100610" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Aptitude has been removed. Though it is still available in repos. &lt;a href="https://lists.ubuntu.com/archives/maverick-changes/2010-June/001202.html" target="_blank"&gt;#&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-9205005147833477854?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/9205005147833477854/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=9205005147833477854' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/9205005147833477854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/9205005147833477854'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/06/ubuntu-maverick-development-updates.html' title='Ubuntu Maverick development updates'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8323022560088344226</id><published>2010-06-10T12:42:00.000-07:00</published><updated>2010-06-10T12:42:45.158-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtual System'/><category scheme='http://www.blogger.com/atom/ns#' term='The Thing King'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>The Thing King</title><content type='html'>&lt;b&gt;The Thing King and the Paging Game&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This note is a formal non-working paper of the Project MAC Computer  Systems Research Division. It should be reproduced and distributed  wherever levity is lacking, and may be referenced at your own risk in  other publications.&lt;br /&gt;&lt;h4&gt;Rules&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Each player gets several million things.&lt;/li&gt;&lt;li&gt;Things are kept in crates that hold 4096 things each. Things in the  same crate are called crate-mates.&lt;/li&gt;&lt;li&gt;Crates are stored either in the workshop or the warehouses. The  workshop is almost always too small to hold all the crates.&lt;/li&gt;&lt;li&gt;There is only one workshop but there may be several warehouses.  Everybody shares them.&lt;/li&gt;&lt;li&gt;Each thing has its own thing number.&lt;/li&gt;&lt;li&gt;What you do with a thing is to zark it. Everybody takes turns  zarking.&lt;/li&gt;&lt;li&gt;You can only zark your things, not anybody else’s.&lt;/li&gt;&lt;li&gt;Things can only be zarked when they are in the workshop.&lt;/li&gt;&lt;li&gt;Only the Thing King knows whether a thing is in the workshop or in a  warehouse.&lt;/li&gt;&lt;li&gt;The longer a thing goes without being zarked, the grubbier it is  said to become.&lt;/li&gt;&lt;li&gt;The way you get things is to ask the Thing King. He only gives out  things by the crateful. This is to keep the royal overhead down.&lt;/li&gt;&lt;li&gt;The way you zark a thing is to give its thing number. If you give  the number of a thing that happens to be in a workshop it gets zarked  right away. If it is in a warehouse, the Thing King packs the crate  containing your thing back into the workshop. If there is no room in the  workshop, he first finds the grubbiest crate in the workshop, whether  it be yours or somebody else’s, and packs it off with all its  crate-mates to a warehouse. In its place he puts the crate containing  your thing. Your thing then gets zarked and you never know that it  wasn’t in the workshop all along.&lt;/li&gt;&lt;li&gt;Each player’s stock of things have the same numbers as everybody  else’s. The Thing King always knows who owns what thing and whose turn  it is, so you can’t ever accidentally zark somebody else’s thing even if  it has the same thing number as one of yours.&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Notes&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Traditionally, the Thing King sits at a large, segmented table and  is attended to by pages (the so-called “table pages”) whose job it is to  help the king remember where all the things are and who they belong to.&lt;/li&gt;&lt;li&gt;One consequence of Rule 13 is that everybody’s thing numbers will be  similar from game to game, regardless of the number of players.&lt;/li&gt;&lt;li&gt;The Thing King has a few things of his own, some of which move back  and forth between workshop and warehouse just like anybody else’s, but  some of which are just too heavy to move out of the workshop.&lt;/li&gt;&lt;li&gt;With the given set of rules, oft-zarked things tend to get kept  mostly in the workshop while little-zarked things stay mostly in a  warehouse. This is efficient stock control.&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;Long Live the Thing King!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8323022560088344226?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8323022560088344226/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8323022560088344226' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8323022560088344226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8323022560088344226'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/06/thing-king.html' title='The Thing King'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-6820537140065842557</id><published>2010-06-08T07:26:00.000-07:00</published><updated>2010-06-08T07:38:15.504-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sync'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='syncronization'/><title type='text'>Ubuntu: luckyBackup a powerful, fast and reliable backup &amp; sync tool</title><content type='html'>&lt;div style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;The main goal of luckyBackup, as its name states, is the creation of backups of your data.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;Somebody once said:&lt;/span&gt;&lt;/div&gt;&lt;div align="CENTER" style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="color: purple;"&gt;“ &lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;b&gt;if you haven't backed up your data is like not having them at all !! ”&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;That is because, based at the laws of probability, some time, for some reason, something will happen and you will lose valuable data. Another guy once said:&lt;/span&gt;&lt;/div&gt;&lt;div align="CENTER" style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="color: purple;"&gt;“ &lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;b&gt;computer users can be divided into 2 categories:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="CENTER" style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="color: purple;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;b&gt;Those that have lost data&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="CENTER" style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="color: purple;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;b&gt;...and those that have not lost data YET ”&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;I really wish you to never come to that situation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;But if you do, then I hope that you backed up your data the very last minute either by using this application or not :-)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.1cm; margin-top: 0.1cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" style="margin-bottom: 0.2cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;luckyBackup&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;is an application for  data &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;back-up&lt;/u&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;synchronization&lt;/u&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; powered by the &lt;a href="http://samba.anu.edu.au/rsync/" target="_blank"&gt;rsync&lt;/a&gt; tool&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="margin-bottom: 0.2cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;It is &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;simple to use&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;fast &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;(transfers over only changes made and not all data), &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;safe&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;(keeps your data safe by checking all declared directories before proceeding in any data manipulation&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;), &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;reliable&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;and fully &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;customizable&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="margin-bottom: 0.2cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;On Ubuntu, line command, type:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin-bottom: 0.2cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;$ sudo apt-get install luckybackup&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="margin-bottom: 0.2cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="margin-bottom: 0.2cm;"&gt;&lt;span style="font-family: FreeSans,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;After that, go on Applications-&amp;gt;System menu...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-6820537140065842557?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/6820537140065842557/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=6820537140065842557' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/6820537140065842557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/6820537140065842557'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/06/ubuntu-luckybackup-powerful-fast-and.html' title='Ubuntu: luckyBackup a powerful, fast and reliable backup &amp; sync tool'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-149393735693353949</id><published>2010-05-25T06:56:00.000-07:00</published><updated>2010-05-25T10:11:01.595-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='nautilus'/><title type='text'>Ubuntu 10.04 - Abrir terminal numa determinada pasta</title><content type='html'>As vezes é necessário abrir o terminal numa determinada pasta, que por  acaso estamos trabalhando nela. Ora, em vez de abrir o terminal e navegar até  essa pasta não seria melhor abrir o terminal logo nessa pasta?&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XpaIpqJqmxo/S_vV4JW6-gI/AAAAAAAAA24/o_i1FpCTm24/s1600/open-terminal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_XpaIpqJqmxo/S_vV4JW6-gI/AAAAAAAAA24/o_i1FpCTm24/s400/open-terminal.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Isso é possível com o pacote &lt;i&gt;nautilus-open-terminal&lt;/i&gt; que faz aparecer  mais uma opção quando é clicada a tecla direita do mouse numa pasta.&lt;span style="font-size: xx-small;"&gt;&lt;i&gt; (screenshot acima)&lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para instalar o &lt;i&gt;nautilus-open-terminal,&lt;/i&gt; veja abaixo:&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install nautilus-open-terminal&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-149393735693353949?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/149393735693353949/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=149393735693353949' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/149393735693353949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/149393735693353949'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/05/ubuntu-1004-abrir-terminal-numa.html' title='Ubuntu 10.04 - Abrir terminal numa determinada pasta'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XpaIpqJqmxo/S_vV4JW6-gI/AAAAAAAAA24/o_i1FpCTm24/s72-c/open-terminal.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-431140012689583909</id><published>2010-05-23T10:16:00.000-07:00</published><updated>2010-05-23T10:16:40.633-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m4a'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><category scheme='http://www.blogger.com/atom/ns#' term='sound converter'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>How to Convert M4A to MP3 in Linux</title><content type='html'>M4A is a popular digital audio format, most prolifically employed as the native format of iTunes. M4As can be either "lossy", meaning they give up some audio quality to shrink the file size, or "lossless", meaning they retain all the quality of, say, a Compact Disc. MP3 is the most famous and widely-used lossy digital audio format. By using the open source Sound Converter software, M4As can easily be converted into MP3 in Linux.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Difficulty&lt;/b&gt;: Moderately Easy&lt;br /&gt;&lt;br /&gt;Instructions&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Use your Linux distribution's package manager to install Sound Converter and the necessary plugin (gstreamer0.10-plugins-ugly-multiverse) that enables MP3 encoding. Each package manager is different, but the following steps explain the process in Synaptic Package Manager, which is used by the very popular Ubuntu, as well as all Debian-based Linux flavors.&lt;br /&gt;&lt;br /&gt;Alternatively, you can visit the Sound Converter website and web page that distributes the plugin and simply download and install the software. (See Resources.)&lt;br /&gt;&lt;br /&gt;If not running Ubuntu or another Debian-based distribution, skip to Step 5.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Click "System-&amp;gt;Administration-&amp;gt;Synaptic Package Manager."&lt;br /&gt;&lt;br /&gt;When the program opens, enter "Sound Converter" in the Quick Search box. Sort the list of search results by clicking the "Package" header, then find "soundconverter" in the list. Click the checkbox to the left of "soundconverter," then click "Mark for Installation." If asked to install other required packages or perform other tasks to properly install the software, click "Mark," "Apply," or equivalent.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Enter "gstreamer" in the Quick Search box. Sort the list of search results by clicking the "Package" header, then find "gstreamer0.10-plugins-ugly-multiverse" in the list. (The number in the file name can be different.) Click the checkbox to the left of "gstreamer0.10-plugins-ugly-multiverse," then click "Mark for Installation." If asked to install other required packages or perform other tasks to properly install the software, click "Mark," "Apply" or equivalent.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Click "Apply" in the program's toolbar. Click "Apply" again in the dialogue box that pops up and Synaptic Package Manager will install the software.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Run Sound Converter. When the program opens, click the "Add File" button if you want to convert a single file or a group of selected, specific files; click the "Add Folder" button if you want to convert an entire folder's worth of files at once.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Browse to and select the file(s) or folder you want to convert, then click "Open." Your file(s) will be added to the conversion list.&lt;br /&gt;&lt;br /&gt;Click "Edit-&amp;gt;Preferences." In the "Type of result?" section, select the MP3 file format; you can also adjust the quality of your MP3s, if you wish. Click "Close."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Click the "Convert" button in the program toolbar and Sound Converter will convert your M4As into MP3, placing them into the same folder as the originals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-431140012689583909?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/431140012689583909/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=431140012689583909' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/431140012689583909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/431140012689583909'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/05/how-to-convert-m4a-to-mp3-in-linux.html' title='How to Convert M4A to MP3 in Linux'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8035775756474811431</id><published>2010-05-18T08:48:00.000-07:00</published><updated>2010-05-18T08:48:09.345-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='nautilus'/><title type='text'>Ubuntu 10.04 / Gnome 2.30 - Barra de localização "editável" do Nautilus</title><content type='html'>Foi lançada a nova versão do Ubuntu, 10.04 LTS - Lucid Lynx, com o Gnome 2.30.0.&lt;br /&gt;&lt;br /&gt;Gostei que o Nautilus, que agora vem com opção de um painel de navegação extra (F3), mas a barra de localização por onde podemos digitar caminhos (diretórios) a percorrer com recurso de autocompletar não é padrão (default) e nem aparece o ícone para trocar o tipo de navegação: digitando caminhos ou clicando em botões como nomes dos diretórios. Para habilitar isso, temos duas opções:&lt;br /&gt;&lt;br /&gt;a) Basta dar Ctrl + L -- O Ctrl+L funciona, mas, a cada sessão aberta do Nautilus, têm-se que repetir esse comando.&lt;br /&gt;&lt;br /&gt;b) Pode-se fazer isso pelo Gconf-editor. Dê um Alt+F2, digite: gconf-editor. Abra (na "cruzinha") apps, depois nautilus e, por último, preferences. Aí, é só marcar a opção "always_use_location_entry". Pronto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8035775756474811431?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8035775756474811431/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8035775756474811431' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8035775756474811431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8035775756474811431'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/05/ubuntu-1004-gnome-230-barra-de.html' title='Ubuntu 10.04 / Gnome 2.30 - Barra de localização &quot;editável&quot; do Nautilus'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-1597966335652321966</id><published>2010-04-05T07:36:00.000-07:00</published><updated>2010-04-05T08:41:02.245-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='exception'/><title type='text'>Java: Types of Exception</title><content type='html'>Exception come is several flavours: &lt;span class="term"&gt;RuntimeExceptions&lt;/span&gt;, &lt;span class="term"&gt;Errors&lt;/span&gt;, &lt;span class="term"&gt;Checked&lt;/span&gt; and &lt;span class="term"&gt;Unchecked&lt;/span&gt;. &lt;br /&gt;&lt;table border="1px" class="standard" summary="Types of Exceptions"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th colspan="5"&gt;Type codes used in describing Exceptions&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Letter&lt;/th&gt; &lt;th&gt;Type&lt;/th&gt; &lt;th&gt;Parent Class&lt;/th&gt; &lt;th&gt;Checked? &lt;br /&gt;(declare throws?)&lt;/th&gt; &lt;th&gt;Use&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt; &lt;tbody&gt;&lt;tr&gt;&lt;th&gt;R&lt;/th&gt; &lt;td&gt;&lt;span class="ac"&gt;R&lt;/span&gt;untime&lt;/td&gt; &lt;td class="package"&gt;java.lang.RuntimeException&lt;/td&gt; &lt;td class="x" style="text-align: center;"&gt;N&lt;/td&gt; &lt;td&gt;Error that can occur in almost any code e.g. &lt;span class="class"&gt;NullPointerException&lt;/span&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;E&lt;/th&gt; &lt;td&gt;&lt;span class="ac"&gt;E&lt;/span&gt;rror&lt;/td&gt; &lt;td class="package"&gt;java.lang.Error&lt;/td&gt; &lt;td class="x" style="text-align: center;"&gt;N&lt;/td&gt; &lt;td&gt;Serious error you really should not try to catch, e.g. &lt;span class="class"&gt;OutOfMemoryError&lt;/span&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;C&lt;/th&gt; &lt;td&gt;&lt;span class="ac"&gt;C&lt;/span&gt;hecked&lt;/td&gt; &lt;td class="package"&gt;java.lang.Exception&lt;/td&gt; &lt;td class="tick" style="text-align: center;"&gt;Y&lt;/td&gt; &lt;td&gt;Likely exceptional condition that can only occur in specific places in the code e.g. &lt;span class="class"&gt;EOFException&lt;/span&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Collectively, &lt;span class="class"&gt;RuntimeException&lt;/span&gt;, &lt;span class="class"&gt;Error&lt;/span&gt; and &lt;span class="class"&gt;Exception&lt;/span&gt; are derived from &lt;span class="class"&gt;Throwable&lt;/span&gt;. &lt;span class="class"&gt;RuntimeException&lt;/span&gt; is derived from &lt;span class="class"&gt;Exception&lt;/span&gt;, which is derived from &lt;span class="class"&gt;Throwable&lt;/span&gt;. &lt;span class="class"&gt;Error&lt;/span&gt; is derived directly from &lt;span class="class"&gt;Throwable&lt;/span&gt;. If you catch &lt;span class="class"&gt;RuntimeException&lt;/span&gt; you will catch all manner of run time &lt;span class="class"&gt;Exception&lt;/span&gt;s (type R). &lt;br /&gt;If you catch &lt;span class="class"&gt;Error&lt;/span&gt; you will catch all manner of errors (type E). &lt;br /&gt;If you catch &lt;span class="class"&gt;Exception&lt;/span&gt; you will catch all manner of checked &lt;span class="class"&gt;Exception&lt;/span&gt;s and run time &lt;span class="class"&gt;Exception&lt;/span&gt;s (type R+C). &lt;br /&gt;If you catch &lt;span class="class"&gt;Throwable&lt;/span&gt;, you will catch everything, (Type R+E+C );&lt;br /&gt;If the &lt;span class="class"&gt;Exception&lt;/span&gt; is checked, you must either fob it off on the caller, with the &lt;span class="keyword"&gt;throws&lt;/span&gt; clause or &lt;span class="keyword"&gt;catch&lt;/span&gt; it yourself. Unchecked &lt;span class="class"&gt;Exception&lt;/span&gt;s are ones like running out of RAM that, in general you can’t do much about, or that are not associated with specific problematic code, or that are very common such as &lt;span class="class"&gt;IllegalArgumentException&lt;/span&gt; or &lt;span class="class"&gt;NullPointerException&lt;/span&gt;. You don’t have to &lt;span class="keyword"&gt;catch&lt;/span&gt; unchecked &lt;span class="class"&gt;Exception&lt;/span&gt;s or explicitly fob them off on the caller with &lt;span class="keyword"&gt;throws&lt;/span&gt;. The classification of an &lt;span class="class"&gt;Exception&lt;/span&gt; is not an exact science. It is a little bit like the arbitrary assignment of gender in French or German to objects. You just have to look it up. There is a major clue, &lt;span class="class"&gt;Error&lt;/span&gt; &lt;span class="class"&gt;Exception&lt;/span&gt;s end in the string &lt;span class="string"&gt;“Error”&lt;/span&gt; while checked &lt;span class="class"&gt;Exception&lt;/span&gt;s and &lt;span class="class"&gt;RuntimeException&lt;/span&gt;s end in the string &lt;span class="string"&gt;“Exception”&lt;/span&gt;.&lt;br /&gt;&lt;table class="standard" summary="Specific Exceptions"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th colspan="4"&gt;Specific Exceptions&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Exception Name&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;Package&lt;/th&gt;&lt;th&gt;Notes&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="class"&gt;AbstractMethodError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AccessControlException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;This is an exception that is thrown whenever a reference is made to a non-existent ACL (Access Control&lt;br /&gt;List). &lt;a class="jgloss" href="runerrormessages.html#ACCESSCONTROLEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AccessException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;Thrown by certain methods of the java.rmi.Naming class.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AclNotFoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.acl&lt;/td&gt;&lt;td&gt;Thrown whenever a reference is made to a non-existent ACL (Access Control List).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ActivateFailedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.activation&lt;/td&gt;&lt;td&gt;thrown by the RMI runtime when activation fails during a remote call to an activatable object.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ActivationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.activation&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AlreadyBoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ApplicationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA.portable&lt;/td&gt;&lt;td&gt;Used for reporting application level exceptions between ORBs and stubs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ArithmeticException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Most commonly a divide by zero. &lt;a class="jgloss" href="runerrormessages.html#ARITHMETICEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ArrayIndexOutOfBoundsException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Can be handled more generically with IndexOutOfBoundsException. &lt;a class="jgloss" href="runerrormessages.html#ARRAYINDEXOUTOFBOUNDS"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ArrayStoreException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Thrown to indicate that an attempt has been made to store the wrong type of object into an array of&lt;br /&gt;objects. &lt;a class="jgloss" href="runerrormessages.html#ARRAYSTOREEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AttributeInUseException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AttributeModificationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AuthenticationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AuthenticationNotSupportedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AWTError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.awt&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AWTError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java/awt&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;AWTException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;BadLocationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.swing.text&lt;/td&gt;&lt;td&gt;This exception is to report bad locations within a document model.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;BatchUpdateException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.sql&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;BindException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.net&lt;/td&gt;&lt;td&gt;Signals that an error occurred while attempting to bind a socket to a local address and port&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CannotProceedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CannotRedoException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;javax.swing.undo&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CannotUndoException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;javax.swing.undo&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CertificateEncodingException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.cert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CertificateException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.cert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CertificateExpiredException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.cert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CertificateNotYetValidException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.cert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CertificateParsingException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.cert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ChangedCharSetException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.swing.text&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CharConversionException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ClassCastException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#CLASSCASTEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ClassCircularityError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ClassFormatError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#CLASSFORMATERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ClassNotFoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#CLASSNOTFOUNDEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CloneNotSupportedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CMMException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.awt.color&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CommunicationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ConcurrentModificationException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.util&lt;/td&gt;&lt;td&gt;This exception may be thrown by methods that have detected concurrent modification of a backing object&lt;br /&gt;when such modification is not permissible, e. g. two threads modifying a &lt;span class="class"&gt;HashMap&lt;/span&gt;&lt;br /&gt;simultaneously. &lt;a class="jgloss" href="runerrormessages.html#CONCURRENTMOD"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ConfigurationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ConnectException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ConnectIOException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ContextNotEmptyException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;CRLException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.cert&lt;/td&gt;&lt;td&gt;CRL (Certificate Revocation List) Exception.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;DataFormatException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.util.zip&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;DigestException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;EmptyStackException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.util&lt;/td&gt;&lt;td&gt;Thrown by methods in the Stack class to indicate that the stack is empty. Does not refer to the system&lt;br /&gt;stack.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;EOFException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#EOFEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;Error&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Catches any serious error such as &lt;span class="class"&gt;OutOfMemoryError&lt;/span&gt; that you unlikely can&lt;br /&gt;recover from.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;Exception&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;generic. Catches any specify Exception plus general Runtime exceptions, but not Errors.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ExceptionInInitializerError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#EXCEPTIONINITALIZERERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ExceptionInInitializerError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ExpandVetoException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.swing.tree&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ExportException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.server&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;FileNotFoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;FontFormatException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;GeneralSecurityException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IllegalAccessError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#ILLEGALACCESSERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IllegalAccessException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Thrown when an application tries to load in a class, but the currently executing method does not have&lt;br /&gt;access to the definition of the specified class, because the class is not public and in another&lt;br /&gt;package.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;&lt;b&gt;IllegalArgumentException&lt;/b&gt;&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Most common exception to reject a bad parameter to a method.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IllegalComponentStateException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.awt&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IllegalMonitorStateException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IllegalPathStateException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.awt.geom&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;&lt;b&gt;IllegalStateException&lt;/b&gt;&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Signals that a method has been invoked at an illegal or inappropriate time.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IllegalThreadStateException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ImagingOpException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.awt.image&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IncompatibleClassChangeError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#INCOMPATIBLECLASSCHANGEERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IndexOutOfBoundsException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Similar to &lt;span class="class"&gt;ArrayIndexOutOfBoundsException&lt;/span&gt; for &lt;span class="class"&gt;ArrayList&lt;/span&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IndirectionException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA.portable&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InstantiationError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InstantiationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InsufficientResourcesException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InternalError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InterruptedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Thrown when a thread is waiting, sleeping, or otherwise paused for a long time and another thread&lt;br /&gt;interrupts it using the interrupt method in class Thread.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InterruptedIOException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InterruptedNamingException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IntrospectionException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.beans&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidAlgorithmParameterException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;This is a GeneralSecurityException. See IllegalArgumentException.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidAttributeIdentifierException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidAttributesException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidAttributeValueException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidClassException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#INVALIDCLASS"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidDnDOperationException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.awt.dnd&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidKeyException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidKeySpecException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.spec&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidMidiDataException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.sound.midi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidNameException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidObjectException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidParameterException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidParameterSpecException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.spec&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidSearchControlsException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidSearchFilterException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvalidTransactionException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.transaction&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;InvocationTargetException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang.reflect&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;IOException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;JarException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.util.jar&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;KeyException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;KeyManagementException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;KeyStoreException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;LastOwnerException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.acl&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;LdapReferralException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.ldap&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;LimitExceededException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;LineUnavailableException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.sound.sampled&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;LinkageError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;LinkException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;LinkLoopException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;MalformedLinkException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;MalformedURLException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.net&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;MarshalException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;MidiUnavailableException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.sound.midi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;MimeTypeParseException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt.datatransfer&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;MissingResourceException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.util&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NameAlreadyBoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NameNotFoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NamingException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NamingSecurityException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NegativeArraySizeException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoClassDefFoundError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#NOCLASSDEFFOUNDERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoInitialContextException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoninvertibleTransformException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt.geom&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoPermissionException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoRouteToHostException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.net&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchAlgorithmException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchAttributeException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchElementException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.util&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchFieldError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchFieldException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchMethodError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#NOSUCHMETHODERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchMethodException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchObjectException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NoSuchProviderException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#NOSUCHPROVIDEREXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NotActiveException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;Thrown when serialization or deserialization is not active&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NotBoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NotContextException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NotOwnerException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security.acl&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NotSerializableException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#NOTSERIALIAZABLEEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NullPointerException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Actually a null reference exception. &lt;a class="jgloss" href="runerrormessages.html#NULLPOINTEREXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;NumberFormatException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Commonly thrown when a String is converted to internal binary numeric format. &lt;a class="jgloss" href="runerrormessages.html#NUMBERFORMATEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ObjectStreamException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;OperationNotSupportedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;OptionalDataException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;Unexpected data appeared in an ObjectInputStream trying to read an Object. Occurs when the stream&lt;br /&gt;contains primitive data instead of the object that is expected by readObject. The EOF flag in the exception&lt;br /&gt;is true indicating that no more primitive data is available. The count field contains the number of bytes&lt;br /&gt;available to read.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;OutOfMemoryError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;By the time this happens it is almost too late. gc has already done what it could. Possibly some&lt;br /&gt;process has just started gobbling RAM, or perhaps the problem you are trying to solve is just too big for&lt;br /&gt;the size of the allotted virtual ram. You can control that with the &lt;span class="executable"&gt;java.exe&lt;/span&gt; command line switches.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ParseException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.text&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;PartialResultException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;PolicyError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;PrinterAbortException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt.print&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;PrinterException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt.print&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;PrinterIOException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt.print&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;PrivilegedActionException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ProfileDataException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.awt.color&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;PropertyVetoException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.beans&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ProtocolException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.net&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ProviderException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;RasterFormatException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.awt.image&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ReferralException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;RemarshalException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA.portable&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;RemoteException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;RMISecurityException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;RuntimeException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Error that can occur in almost any code e.g. &lt;span class="method"&gt;NullPointerException&lt;/span&gt;. Use this&lt;br /&gt;when to catch general errors when no specific exception is being thrown.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SchemaViolationException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming.directory&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SecurityException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ServerCloneException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.server&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ServerError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ServerException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ServerNotActiveException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.server&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ServerRuntimeException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ServiceUnavailableException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SignatureException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SizeLimitExceededException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SkeletonMismatchException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.server&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SkeletonNotFoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.server&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SocketException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.net&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SocketSecurityException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.server&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SQLException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.sql&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;StackOverflowError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#STACKOVERFLOWERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;StreamCorruptedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;ObjectStream data are scrambled. &lt;a class="jgloss" href="runerrormessages.html#STREAMCORRUPTEDEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;StringIndexOutOfBoundsException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Can be handled more generically with IndexOutOfBoundsException. &lt;a class="jgloss" href="runerrormessages.html#STRINGINDEXOUTOFBOUNDSEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;StubNotFoundException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SyncFailedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;SystemException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;TimeLimitExceededException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.naming&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;TooManyListenersException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.util&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;TransactionRequiredException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.transaction&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;TransactionRolledbackException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.transaction&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UndeclaredThrowableException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang.reflect&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnexpectedException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownException&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA.portable&lt;/td&gt;&lt;td class="class"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownGroupException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.activation&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownHostException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownHostException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.net&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownObjectException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi.activation&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownServiceException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.net&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnknownUserException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnmarshalException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.rmi&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#UNMARSHALEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnrecoverableKeyException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.security&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnsatisfiedLinkError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#UNSATISFIEDLINKERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnsupportedAudioFileException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.sound.sampled&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnsupportedClassVersionError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#UNSUPPORTEDCLASSVERSIONERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnsupportedDataTypeException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;undocumented. &lt;a class="jgloss" href="runerrormessages.html#UNSUPPORTEDDATATYPEEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnsupportedEncodingException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnsupportedFlavorException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.awt.datatransfer&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UnsupportedLookAndFeelException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;javax.swing&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;&lt;b&gt;UnsupportedOperationException&lt;/b&gt;&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;Use for code not yet implemented, or that you deliberately did not implement.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UserException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;org.omg.CORBA&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;UTFDataFormatException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;VerifyError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#VERIFYERROR"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;VirtualMachineError&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td class="package"&gt;java.lang&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;WriteAbortedException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.io&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="class"&gt;ZipException&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td class="package"&gt;java.util.zip&lt;/td&gt;&lt;td&gt;&lt;a class="jgloss" href="runerrormessages.html#ZIPEXCEPTION"&gt;notes&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-1597966335652321966?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/1597966335652321966/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=1597966335652321966' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1597966335652321966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1597966335652321966'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/04/java-types-of-exception.html' title='Java: Types of Exception'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-4183928881090257964</id><published>2010-04-05T07:16:00.000-07:00</published><updated>2010-04-05T07:33:13.582-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='exception'/><category scheme='http://www.blogger.com/atom/ns#' term='StackOverflowError'/><title type='text'>Java Exception: StackOverflowError</title><content type='html'>&lt;span class="class"&gt;StackOverflowError&lt;/span&gt; Stack size too small. Use java -Xss to increase default stacksize.&lt;br /&gt;&lt;br /&gt;These usually happen when you have recursion, a method that calls itself, perhaps indirectly via a second method. You have simply nested to deeply. Another source of the problem is calling method &lt;span class="method"&gt;x&lt;/span&gt;() or &lt;span class="keyword"&gt;this&lt;/span&gt;.&lt;span class="method"&gt;x&lt;/span&gt;() when you meant to call &lt;span class="keyword"&gt;super&lt;/span&gt;. &lt;span class="method"&gt;x&lt;/span&gt;(), usually when inside method &lt;span class="method"&gt;x&lt;/span&gt;. If you legitimately overflowed the stack, you may rescue yourself by getting the runtime to allocate more memory for the stack for each thread with &lt;span class="bat"&gt;java.exe -Xss128&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-4183928881090257964?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/4183928881090257964/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=4183928881090257964' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4183928881090257964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4183928881090257964'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/04/java-exception-stackoverflowerror.html' title='Java Exception: StackOverflowError'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-4596271272307042602</id><published>2010-03-02T06:57:00.000-08:00</published><updated>2010-03-02T06:57:02.219-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='splash'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='x-splash'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>Ubuntu: Revert to traditional boot splash in 9.10</title><content type='html'>I don’t know about you, but I don’t like the boot splash that comes with the new Ubuntu 9.10.&amp;nbsp; It feels unfinished and sort of random.&amp;nbsp; First there’s the black screen with white logo, then a black screen, then a glowing white Ubuntu logo and throbber on a turdy-brown background, fading into the desktop.&amp;nbsp; There’s no progress bar any more.&amp;nbsp; I liked the old way better.&amp;nbsp; Here’s how to change it back.&lt;br /&gt;First we’ll disable xsplash, which is responsible for the glowing white-on-poo logo screen.&amp;nbsp; We will need to edit two files, &lt;i&gt;/etc/gdm/Init/Default and /etc/gdm/PreSession/Default&lt;/i&gt;.&amp;nbsp; Open the first one for editing, as root:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gksu gedit /etc/gdm/Init/Default&lt;/blockquote&gt;In that file, look for these lines:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;if [ -x '/usr/bin/xsplash' ];&lt;br /&gt;then&lt;br /&gt;/usr/bin/xsplash –daemon&lt;br /&gt;fi&lt;/blockquote&gt;…and comment them out like so:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#if [ -x '/usr/bin/xsplash' ];&lt;br /&gt;#then&lt;br /&gt;#/usr/bin/xsplash –daemon&lt;br /&gt;#fi&lt;/blockquote&gt;Save the file, then do the same to &lt;i&gt;/etc/gdm/PreSession/Default&lt;/i&gt;.&lt;br /&gt;Now we need to install and activate the old-style usplash theme.&amp;nbsp; In terminal:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install startupmanager usplash-theme-ubuntu-color&lt;/blockquote&gt;Then run Startup Manager (&lt;i&gt;System&amp;gt;Administration&amp;gt;StartUp-Manager&lt;/i&gt;).&amp;nbsp; In the Boot Options tab, make sure Show Boot Splash is selected; in the Appearance tab, select the usplash-theme-ubuntu-color theme.&amp;nbsp; Close Startup Manager, wait for it to finish its post-config tasks, and reboot.&amp;nbsp; You should see the familiar Ubuntu boot splash and startup behavior as it was in Jaunty.&lt;br /&gt;If you get no boot splash at all, run Startup Manager again and check to be sure Show Boot Splash is selected; then note the Display Resolution selected in the Boot Options tab.&amp;nbsp; In a text editor, open &lt;i&gt;/etc/usplash.conf&lt;/i&gt; and verify that the resolution specified in that file is the same.&amp;nbsp; If it isn’t, change the file, save it, and reboot again to check for proper boot splash display.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;a href="http://www.dwasifar.com/?p=846"&gt;original post&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-4596271272307042602?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/4596271272307042602/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=4596271272307042602' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4596271272307042602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4596271272307042602'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/03/ubuntu-revert-to-traditional-boot.html' title='Ubuntu: Revert to traditional boot splash in 9.10'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8639187585924303721</id><published>2010-01-27T13:05:00.000-08:00</published><updated>2010-01-27T13:38:08.750-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Lucid Lynx'/><title type='text'>15 novidades do Ubuntu 10.04 Lucid Lynx</title><content type='html'>&lt;span style="color: #4e4e4e; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XpaIpqJqmxo/S2Cnqn-TpjI/AAAAAAAAAd4/tEZ8etdfjJs/s1600-h/lucidlynx.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_XpaIpqJqmxo/S2Cnqn-TpjI/AAAAAAAAAd4/tEZ8etdfjJs/s320/lucidlynx.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;A nova versão do Ubuntu, a 10.04, "apelidado" Lucid Lynx,&amp;nbsp; está sob intenso desenvolvimento, tendo em vista o lançamento final em 29 de Abril de 2010. Esta versão será um LTS&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;(Long Term Support)&lt;/em&gt;, ou seja, versão que terá suporte oficial durante 3 anos na versão Desktop e durante 5 anos na versão Server. Por isso o maior objetivo para esta versão é a estabilidade e&amp;nbsp; a correção de eventuais bugs e problemas decorrentes das inovações introduzidas em&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;releases&lt;/em&gt;&amp;nbsp;anteriores. Mas nem por isso deixa de conter algumas novidades que valem a pena, e os detalhes começam a surgir…&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span id="more-28837" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/span&gt;Por isso, aqui ficam 15 novidades que virão com o Ubuntu 10.04 Lucid Lynx (Lince Lúcido?!):&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Ubuntu Music Store:&lt;/strong&gt;&amp;nbsp;Quem usa Linux e Windows, certamente sente falta no Linux de uma aplicação que lhe permita comprar música online, a partir do seu ambiente de trabalho, ao estilo iTunes, por exemplo. A Ubuntu Music Store pretende preencher essa lacuna, integrada no Rhythmbox (que será provavelmente o reprodutor de música pré-instalado), permitirá comprar e guardar no seu computador música, a partir do seu ambiente de trabalho, e através do serviço&amp;nbsp;&lt;a href="http://one.ubuntu.com/" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;UbuntuOne&lt;/span&gt;&lt;/a&gt;&amp;nbsp;poderá sincronizar essas músicas com todos os seus computadores e ainda com amigos. O Ubuntu servirá apenas como plataforma de interação entre o utilizador e o vendedor do conteúdo digital. Rumores na blogosfera afirmam que a Cannonical tem como parceira neste projeto a loja online&lt;a href="http://www.7digital.com/" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&amp;nbsp;7Digital&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;span style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://tec.tools.com.br/musicshop.png" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="musicshop" class="aligncenter size-large wp-image-28869" height="400" src="http://www.kerodicas.com/wp-content/uploads/2009/12/musicshop-785x1024.png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="musicshop" width="305" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Gimp será substituído pelo Pitivi:&lt;/strong&gt;&amp;nbsp;Também o leque de aplicações que acompanham o CD será alvo de mudanças. O Gimp, considerado uma aplicação apenas para usuários profissionais e avançados, e devido à sua interface demasiado complexa, não virá instalado por omissão, sendo substituído pela aplicação de edição de vídeo&amp;nbsp;&lt;a href="http://www.pitivi.org/wiki/Main_Page" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Pitivi&lt;/span&gt;&lt;/a&gt;&amp;nbsp;(apesar do Gimp continuar instalável a partir do Centro de Software), que atualmente tem em falta algumas funcionalidades chave de um bom editor de vídeo, em comparação com projetos como por exemplo o&amp;nbsp;&lt;a href="http://www.openshotvideo.com/" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;OpenShot&lt;/span&gt;&lt;/a&gt;. A decisão está ainda envolta em polêmica e esperam-se novidades nos próximos meses…&lt;/li&gt;&lt;/ul&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://tec.tools.com.br/400px-Capture-PiTiVi_v0.13.0.1.jpg" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="400px-Capture-PiTiVi_v0.13.0.1" class="aligncenter size-full wp-image-28870" height="294" src="http://www.kerodicas.com/wp-content/uploads/2009/12/400px-Capture-PiTiVi_v0.13.0.1.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="400px-Capture-PiTiVi_v0.13.0.1" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Melhoramentos no F-Spot para edição simples de imagem:&lt;/strong&gt;&amp;nbsp;Existem também ideias ou de melhorar o F-Spot e adicionar-lhe funcionalidades básicas de corte, edição e retoque de imagem, ou substituir esta aplicação por uma outra já com essas funcionalidades como o&amp;nbsp;&lt;a href="http://gthumb.sourceforge.net/" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" target="_blank"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;gThumb&lt;/span&gt;&lt;/a&gt;&amp;nbsp;ou o&amp;nbsp;&lt;a href="http://www.yorba.org/shotwell/" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Shotwell&lt;/span&gt;&lt;/a&gt;. O usuário comum quer apenas editar algumas fotos com retoques básicos, remoção de olhos vermelhos, cortar, um efeito de luz aqui e outro ali, e o GIMP revelava-se complexo demais para essa tarefa. Portanto, esperam-se novidades nesta área.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Melhor seleção de jogos:&amp;nbsp;&lt;/strong&gt;Também os jogos pré-instalados vão ser repensados. A escolha vai recair em menos mas melhores jogos. Atualmente o Ubuntu conta com variados jogos "inúteis", e não atualizados há muito tempo, além de terem um aspecto e um sentido demasiado&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;retrô.&amp;nbsp;&lt;/em&gt;Esta mudança era merecida.&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&amp;nbsp;&lt;/em&gt;Um dos jogos a ser incluído é o&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&amp;nbsp;&lt;a href="http://live.gnome.org/gbrainy" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;gbrainy&lt;/a&gt;,&amp;nbsp;&lt;span style="color: black; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;um desafiador e viciante jogo de &lt;i&gt;brainstorming&lt;/i&gt; e estimulação mental. Existem vários jogos de qualidade&amp;nbsp;&lt;/span&gt;&lt;/span&gt;nos repositórios da Ubuntu e esperemos que sejam esses mesmo a serem incluídos.&lt;/li&gt;&lt;/ul&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://tec.tools.com.br/screenshot_043.png" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="screenshot_043" class="aligncenter size-full wp-image-28871" height="400" src="http://www.kerodicas.com/wp-content/uploads/2009/12/screenshot_043.png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="screenshot_043" width="302" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Experiência de boot mais rápido e mais fluída:&amp;nbsp;&lt;/strong&gt;Também o boot no Lucid Lynx vai ser alvo de melhorias; já mencionei isso &lt;a href="http://cazo-tec.blogspot.com/2009/12/ubuntu-1004-starts-for-10-seconds.html"&gt;aqui&lt;/a&gt;. Sempre com o objetivo dos 10 segundos de boot no dispositivo-alvo Dell Mini v10, este vai ser melhorado e usará novas tecnologias de modo a permitir uma experiência ao ligar o seu sistema totalmente fluída, atrativa e acima de tudo, rápida, para usuários de placas gráficas Intel, Nvidia e ATi. A má notícia é que para observar todo este processo de boot do seu computador, não poderá tirar os olhos do computador. Simplesmente acontece muito depressa&amp;nbsp;&lt;img alt=":-D" class="wp-smiley" src="http://www.kerodicas.com/wp-includes/images/smilies/icon_biggrin.gif" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: -15%;" /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://tec.tools.com.br/xsplash-3_thumb1.png" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="xsplash-3_thumb[1]" class="aligncenter size-full wp-image-28873" height="306" src="http://www.kerodicas.com/wp-content/uploads/2009/12/xsplash-3_thumb1.png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="xsplash-3_thumb[1]" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Projeto “100 Papercuts”:&lt;/strong&gt;&amp;nbsp;O projeto “100 Papercuts” é um projeto que pretende identificar e corrigir bugs mínimos e facilmente corrigíveis de usabilidade no Ubuntu e nas suas aplicações. Este projeto já se refletiu no Karmic Koala, e continuará nesta nova versão do Ubuntu. Bugs do ciclo Karmic, integração e acesso fácil ao Compiz (Compiz é o decorador de responsável pelos tão falados efeitos), Rhytmbox, Pitivi (ou a aplicação de vídeo que possa eventualmente substituí-la), Gwibber e Empathy serão alguns dos alvos deste projeto, e serão assim corrigidos alguns dos problemas mais proeminentes que afetam estas aplicações.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Nova ferramenta de Digitalização “Simple Scan”:&lt;/strong&gt;&amp;nbsp;O Ubuntu, embora muitos nunca tenham reparado, sempre trouxe instalado uma ferramenta de Digitalização, neste caso o XSane. O XSane é uma ferramenta poderosa e com elevado grau de compatibilidade, mas a sua integração no restante ambiente de trabalho e a sua interface em geral era tudo, menos amigável e de fácil uso. Por isso será desenvolvida uma nova aplicação para substitui-lo, de nome "Simple Scan", uma interface simples de utilizar para facilmente digitalizar todo e qualquer tipo de documento em todo e qualquer tipo de impressora, e iniciando esse processo através de todo e qualquer tipo de aplicação. "Simple Scan" pode ser atualmente testado adicionando&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&amp;nbsp;&lt;a href="https://launchpad.net/~robert-ancell/+archive/ppa" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;este repositório&lt;/a&gt;&lt;/span&gt;&amp;nbsp;e instalando em seguida pelo gerenciador de pacotes.&lt;/li&gt;&lt;/ul&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://tec.tools.com.br/DocumentScanning4.png" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="DocumentScanning[4]" class="aligncenter size-full wp-image-28872" height="215" src="http://www.kerodicas.com/wp-content/uploads/2009/12/DocumentScanning4.png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="DocumentScanning[4]" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Possibilidade de inclusão de uma ferramenta de backup:&amp;nbsp;&lt;/strong&gt;Esta é outra das aplicações que cada vez mais é essencial para o usuário. As propostas para a ferramenta de cópia de segurança são o&amp;nbsp;&lt;a href="https://launchpad.net/deja-dup" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" target="_blank"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Déjà-Dup&amp;nbsp;&lt;/span&gt;&lt;/a&gt;e o&amp;nbsp;&lt;a href="http://backintime.le-web.org/" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Back in Time&lt;/span&gt;&lt;/a&gt;, ambos com suporte a backups automáticos regulares, backups seletivos para pasta/dispositivo externo/rede/Servidor online, e a restauração do sistema baseado num determinado backup. Estas são provavelmente as funcionalidades mais úteis e essenciais para a grande maioria dos usuários, e uma ferramenta como esta é sempre bem-vinda.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Melhoramentos no Centro de Software:&amp;nbsp;&lt;/strong&gt;O Centro de Software Ubuntu caminha rapidamente para se tornar uma das soluções mais simples para instalação/remoção de programas, em qualquer dos 3 Sistemas Operacionais principais – Windows, outras variantes Linux e Mac OS. No Ubuntu 10.04, vai se tornar um centro onde se pode instalar programas através de pacotes .deb de sites externos (substituindo o GDebi), adicionar/remover repositórios (Substituindo a aplicação Fontes de Aplicação) e poderá também atualizar o seu sistema. Confesso que estou curioso sobre as novidades do Centro de Software, a se tornar um verdadeiro centro de pesquisa e gerenciamento de aplicações, como poderão ver neste&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;mockup&lt;/em&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://tec.tools.com.br/future-lobby.jpg" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="future-lobby" class="aligncenter size-full wp-image-28874" height="280" src="http://www.kerodicas.com/wp-content/uploads/2009/12/future-lobby.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="future-lobby" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Melhorias no visual:&lt;/strong&gt;&amp;nbsp;Não irá haver um novo tema. Ponto. Mas irão haver melhorias e correções de bugs no tema atual, e possível&amp;nbsp;&lt;a href="https://wiki.ubuntu.com/Artwork/Incoming/Lucid/" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;adição de temas propostos&amp;nbsp;&lt;/span&gt;&lt;/a&gt;no CD. O pacote de fantásticos ícones Humanity será melhorado (especialmente para se tentar obter um painel apenas com ícones no estilo Humanity acinzentado). Além disso, haverão ainda algumas modificações na janela de login, para se tentar obter uma total harmonia estética em todos os componentes que formam o Sistema Operacional.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Indicadores de sistema:&amp;nbsp;&lt;/strong&gt;No painel superior do Ubuntu, existem vários ícones que fornecem informações sobre o sistema, e até um que condensa informações e ações das aplicações de comunicação. A ideia para o Lucid Lynx é unificar e criar uma interface comum e consistente que permite agregar informações inteligentemente. Bem, uma imagem, mesmo que um mero rascunho, permite mostrar muito melhor o conceito:&lt;/li&gt;&lt;/ul&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;"&gt;&lt;a href="http://www.kerodicas.com/wp-content/uploads/2009/12/me.jpg" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="me" class="size-full wp-image-28875 alignleft" height="347" src="http://www.kerodicas.com/wp-content/uploads/2009/12/me.jpg" style="border-bottom-left-radius: 4px 4px; border-bottom-right-radius: 4px 4px; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-left-radius: 4px 4px; border-top-right-radius: 4px 4px; border-top-width: 0px; float: left; margin-bottom: 4px; margin-left: 0px; margin-right: 8px; margin-top: 4px; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px;" title="me" width="197" /&gt;&lt;/a&gt;&lt;a href="http://tec.tools.com.br/session.jpg" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="session" class="size-full wp-image-28876 aligncenter" height="344" src="http://www.kerodicas.com/wp-content/uploads/2009/12/session.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="session" width="235" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;"&gt;&lt;a href="http://www.kerodicas.com/wp-content/uploads/2009/12/power-menu.jpg" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="power-menu" class="size-full wp-image-28877 aligncenter" height="124" src="http://www.kerodicas.com/wp-content/uploads/2009/12/power-menu.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="power-menu" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;(Ainda) Mais melhoras nas notificações:&lt;/strong&gt;&amp;nbsp;As notificações do Ubuntu são cada vez mais um dos melhores sistemas de notificação atuais (quer visualmente quer em termos de facilidade de integração nas aplicações). Para o Lucid, as notificações estarão presentes com um novo modo, o modo “ocupado”. Por exemplo, se estiver vendo um filme em tela cheia, não será notificado de coisas triviais como email, mensagens de chat. Já avisos de bateria fraca ou de carga da bateria, esses sim, considerados "críticos" serão mostrados. Resta também esperar pela disponibilização de uma janela de configurações. Vamos esperar...&lt;/li&gt;&lt;/ul&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://tec.tools.com.brt/screenshot_045.png" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="screenshot_045" class="aligncenter size-full wp-image-28879" height="122" src="http://www.kerodicas.com/wp-content/uploads/2009/12/screenshot_045.png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;" title="screenshot_045" width="330" /&gt;&lt;/a&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Projeto B-Sides&lt;/strong&gt;: O projeto&lt;a href="https://launchpad.net/b-sides" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" target="_blank"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&amp;nbsp;B-Sides&lt;/span&gt;&lt;/a&gt;&amp;nbsp;é um projeto da comunidade que pretende facilitar a instalação de um leque de pacotes (codecs, utilitários, fontes, temas, Flash, aplicações multimédia, comunicação e de produtividade), que não estão incluídos no CD do Ubuntu, mas que são igualmente úteis e essenciais, complementando assim o sistema. Bastará instalar o pacote ‘b-sides’&amp;nbsp; e todas essas aplicações serão instaladas. Para mim que instalo várias vezes o Ubuntu, esta é uma fantástica novidade, que me permitirá poupar ainda mais tempo na instalação e substituir aquela enorme linha de comandos e colar no console.&amp;nbsp;A lista completa de aplicações encontra-se&amp;nbsp;&lt;a href="http://bazaar.launchpad.net/~b-sides/b-sides/trunk/annotate/head:/minimal-all" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;aqui&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Gnome 2.30&lt;/strong&gt;: A versão 2.30 do ambiente gráfico Gnome trará melhoramentos gerais em todas as aplicações, incluindo o cliente de mensagens instantâneas Empathy, o gravador de disco Brasero, o leitor de documentos Evince (suporte a OCR, converter imagem em texto) e melhorias no visual dos ícones e no painel. A lista completa de objetivos,&amp;nbsp;&lt;a href="http://live.gnome.org/RoadMap" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;aqui&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="list-style-position: outside; margin-bottom: 0px; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Linux Kernel 2.6.32:&lt;/strong&gt;&amp;nbsp;O Ubuntu 10.04 virá com a versão 2.6.32 do Linux Kernel, o que assegura maior estabilidade, maior rapidez e maior compatibilidade de hardware. Melhorias no gerenciamento de energia e na virtualização são também esperadas.&lt;/li&gt;&lt;/ul&gt;&lt;div style="line-height: 19px; margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;E são estas as grandes novidades do Ubuntu Lucid Lynx. Mais virão mais com o passar dos meses, e aqui no blog é certo que as mencionaremos. Se já quiser baixar o Ubuntu 10.04, vai ter que esperar até 29 de Abril, ou tentar o &lt;a href="http://cdimage.ubuntu.com/daily/current/"&gt;Beta&lt;/a&gt; (somente para os apressados!). Mas se nunca experimentou o Ubuntu, faça já o&amp;nbsp;&lt;a href="http://www.kerodownload.com/s-fx_info-id-32919.html" style="color: #0071bb; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="color: #ff6600; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;download do Ubuntu 9.10 Karmic Koala&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;img alt=";-)" class="wp-smiley" src="http://www.kerodicas.com/wp-includes/images/smilies/icon_wink.gif" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: -15%;" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8639187585924303721?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8639187585924303721/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8639187585924303721' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8639187585924303721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8639187585924303721'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2010/01/15-novidades-do-ubuntu-1004-lucid-lynx.html' title='15 novidades do Ubuntu 10.04 Lucid Lynx'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XpaIpqJqmxo/S2Cnqn-TpjI/AAAAAAAAAd4/tEZ8etdfjJs/s72-c/lucidlynx.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-860527393797534509</id><published>2009-12-22T12:05:00.000-08:00</published><updated>2009-12-22T12:12:09.023-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TTF'/><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='truetype'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Installing TTF FONTS in Ubuntu 9.10</title><content type='html'>After spending a few hours looking and trying out suggestions from various places on the Internet. An All User Install of TTF Fonts goes&lt;br /&gt;like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo su&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;password&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd /usr/share/fonts/truetype&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkdir 500fonts&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd /home/user/Desktop/500fonts&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cp -r *.TTF /usr/share/fonts/truetype/500fonts&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;exit&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo fc-cache -fv&amp;nbsp; (* note the space after the word cache)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;password&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;after a few moments...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;exit&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It looks at all the fonts in the Font Cache and re-installs them. So if you have a Windows Font CD of TTF Fonts, you can now use it in LINUX.&lt;br /&gt;You can add the ones out of the list to the open office folder, in /usr/share/fonts/truetype/openoffice, and they should appear in&lt;br /&gt;OpenOffice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-860527393797534509?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/860527393797534509/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=860527393797534509' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/860527393797534509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/860527393797534509'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/12/installing-ttf-fonts-in-ubuntu-910.html' title='Installing TTF FONTS in Ubuntu 9.10'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8177130283796146079</id><published>2009-12-03T06:04:00.000-08:00</published><updated>2009-12-22T12:07:47.740-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 10.04 Starts for 10 Seconds</title><content type='html'>The growing adoption of the Linux operating system on netbook devices has compelled Linux distributors to focus on improving startup performance. Ubuntu 9.10, recently released, is one distribution where these improvements are particularly noticeable.&lt;br /&gt;&lt;br /&gt;In a presentation at the Ubuntu Developer Summit in Barcelona, developer Scott James Remnant noted that boot time decreased from 65 seconds in version 8.10 to only 20 seconds in 9.10, codenamed Karmic Koala. This is already a substantial improvement, but he believes that there is still room for more aggressive optimization. Canonical, the company behind Ubuntu, will continue pushing the limits of boot performance. According to Remnant, the company aims to achieve a ten-second boot time next year for Ubuntu 10.04, the release that will follow after Karmic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8177130283796146079?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8177130283796146079/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8177130283796146079' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8177130283796146079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8177130283796146079'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/12/ubuntu-1004-starts-for-10-seconds.html' title='Ubuntu 10.04 Starts for 10 Seconds'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3726333157594975978</id><published>2009-11-27T08:26:00.000-08:00</published><updated>2009-11-27T08:29:10.015-08:00</updated><title type='text'>Carro mais rápido do mundo será meio foguete, meio caça</title><content type='html'>Assista ao video abaixo:&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;object width="512" height="400"&gt;&lt;param name="movie" value="http://www.bbc.co.uk/emp/external/player.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;param name="FlashVars" value="config_settings_language=pt&amp;config_settings_showPopoutButton=true&amp;playlist=http%3A%2F%2Fwww%2Ebbc%2Eco%2Euk%2Fportuguese%2Fmeta%2Fdps%2F2009%2F11%2Femp%2F091124%5Fcarrorapido%5Fvideo%2Eemp%2Exml&amp;config_settings_showFooter=true&amp;"&gt;&lt;/param&gt;&lt;embed src="http://www.bbc.co.uk/emp/external/player.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="512" height="400" FlashVars="config_settings_language=pt&amp;config_settings_showPopoutButton=true&amp;playlist=http%3A%2F%2Fwww%2Ebbc%2Eco%2Euk%2Fportuguese%2Fmeta%2Fdps%2F2009%2F11%2Femp%2F091124%5Fcarrorapido%5Fvideo%2Eemp%2Exml&amp;config_settings_showFooter=true&amp;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3726333157594975978?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3726333157594975978/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3726333157594975978' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3726333157594975978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3726333157594975978'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/11/carro-mais-rapido-do-mundo-sera-meio.html' title='Carro mais rápido do mundo será meio foguete, meio caça'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-5026301656217938526</id><published>2009-11-19T05:57:00.001-08:00</published><updated>2009-11-19T05:57:23.504-08:00</updated><title type='text'>HTML 5</title><content type='html'>No início de 2009 o &lt;a href="http://pt.wikipedia.org/wiki/W3C" title="W3C"&gt;W3C&lt;/a&gt; – consórcio de empresas de tecnologia para levar a Web ao seu máximo potencial – anunciou a primeira especificação do &lt;b&gt;HTML 5&lt;/b&gt;. O &lt;a href="http://pt.wikipedia.org/wiki/HTML" title="HTML"&gt;HTML&lt;/a&gt; (Hypertext Markup Language), que é responsável por organizar e formatar as páginas que visitamos na internet, está em sua versão 4.0.1 e continua evoluindo. Após cinco anos de trabalho, esta, ainda, é apenas uma versão de testes do HTML 5 e a versão final está prometida para 2012. Foram feitas grandes alterações, que incluem: novas &lt;a href="http://pt.wikipedia.org/wiki/API" title="API"&gt;API&lt;/a&gt;’s, entre elas uma para desenvolvimento de gráficos bidimensionais, controle embutido de conteúdo multimídia, aprimoramento do uso off-line, melhoria na depuração de erros, entre outros avanços.&lt;br /&gt;Esta evolução da linguagem padrão para web pode eliminar a necessidade de &lt;a class="mw-redirect" href="http://pt.wikipedia.org/wiki/Plug-ins" title="Plug-ins"&gt;plug-ins&lt;/a&gt; para aplicações multimídia em navegadores. Diversos críticos consideram a tecnologia como um forte concorrente ao &lt;a href="http://pt.wikipedia.org/wiki/Flash" title="Flash"&gt;Flash&lt;/a&gt; do Adobe, &lt;a href="http://pt.wikipedia.org/wiki/Silverlight" title="Silverlight"&gt;Silverlight&lt;/a&gt;, da Microsoft, e o recente &lt;a href="http://pt.wikipedia.org/wiki/JavaFX" title="JavaFX"&gt;JavaFX&lt;/a&gt;, da Sun. Recentemente, Shantanu Narayen, diretor executivo do Adobe, disse que o Flash não irá perder mercado, porem a versão 5 do HTML já está sendo chamado de “Flash-killer”. Estas tecnologias precisarão se adaptar rapidamente para conseguir manter-se no mercado, tão popular quanto hoje. Na avaliação do co-diretor de ferramentas da &lt;a href="http://pt.wikipedia.org/wiki/Mozilla_Foundation" title="Mozilla Foundation"&gt;Mozilla&lt;/a&gt;, Ben Galbraith, as tecnologias viabilizadas pelo HTML 5 como o &lt;a href="http://pt.wikipedia.org/wiki/Canvas_%28Inform%C3%A1tica%29" title="Canvas (Informática)"&gt;Canvas&lt;/a&gt; para desenhos 2D e o armazenamento de conteúdos no desktop, permitirão que “usemos mais o browser do que nunca”.&lt;br /&gt;Após dez anos sem atualizações, a forma como se escreve páginas na Internet passa por uma boa transformação. O HTML 5 oferece uma experiência web totalmente diferente para usuários e embora exista um longo caminho para ser finalizado, os navegadores mais importantes, como o &lt;a class="mw-redirect" href="http://pt.wikipedia.org/wiki/Opera_%28web_browser%29" title="Opera (web browser)"&gt;Opera&lt;/a&gt;, &lt;a href="http://pt.wikipedia.org/wiki/Google_Chrome" title="Google Chrome"&gt;Google Chrome&lt;/a&gt;, &lt;a class="mw-redirect" href="http://pt.wikipedia.org/wiki/Safari_%28web_browser%29" title="Safari (web browser)"&gt;Safari&lt;/a&gt; 4, o novo &lt;a class="mw-redirect" href="http://pt.wikipedia.org/wiki/Firefox" title="Firefox"&gt;Firefox&lt;/a&gt; 3.5 e o &lt;a href="http://pt.wikipedia.org/wiki/Internet_Explorer" title="Internet Explorer"&gt;Internet Explorer&lt;/a&gt; 8 já implementaram partes da linguagem, incluindo tags de vídeo e suporte à tecnologia Canvas.&lt;br /&gt;Com a evolução da linguagem, os navegadores passam da categoria “mostradores de páginas”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-5026301656217938526?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/5026301656217938526/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=5026301656217938526' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5026301656217938526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5026301656217938526'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/11/html-5.html' title='HTML 5'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-1737005914292385592</id><published>2009-11-18T12:01:00.000-08:00</published><updated>2009-11-19T04:23:17.206-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='SPDY'/><category scheme='http://www.blogger.com/atom/ns#' term='sockets'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>SPDY: An experimental protocol for a faster web</title><content type='html'>&lt;h2 style="font-size: 14pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: xx-small; font-weight: normal;"&gt;original post &lt;a href="http://sites.google.com/a/chromium.org/dev/spdy/spdy-whitepaper"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-weight: normal;"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; font-size: small;"&gt;Executive summary&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;As part of the&amp;nbsp;&lt;a href="http://code.google.com/speed/" title="&amp;quot;Let's make the web faster&amp;quot;"&gt;"Let's make the web faster"&lt;/a&gt;&amp;nbsp;initiative, we are experimenting with alternative protocols to help reduce the latency of web pages. One of these experiments is SPDY (pronounced "SPeeDY"), an application-layer protocol for transporting content over the web, designed specifically for minimal latency. &amp;nbsp;In addition to a specification of the protocol, we have developed a SPDY-enabled Google Chrome browser and open-source web server. In lab tests, we have compared the performance of these applications over HTTP and SPDY, and have observed up to 64% reductions in page load times in SPDY. We hope to engage the open source community to contribute ideas, feedback, code, and test results, to make SPDY the next-generation application protocol for a faster web.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;h2 style="font-size: 14pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-Background:-web-protocols-and-web-l"&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;Background: web protocols and web latency&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-size: x-small;"&gt;Today, HTTP and TCP are the protocols of the web. &amp;nbsp;TCP is the generic, reliable transport protocol, providing guaranteed delivery, duplicate suppression, in-order delivery, flow control, congestion avoidance and other transport features. &amp;nbsp;HTTP is the application level protocol providing basic request/response semantics. While we believe that there may be opportunities to improve latency at the transport layer, our initial investigations have focussed on the application layer, HTTP.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-size: x-small;"&gt;Unfortunately, HTTP was not particularly designed for latency. &amp;nbsp;Furthermore, the web pages transmitted today are significantly different from web pages 10 years ago such and demand improvements to HTTP that could not have been anticipated when HTTP was developed. The following are some of the features of HTTP that inhibit optimal performance:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Single request per connection. Because HTTP can only fetch one resource at a time (HTTP pipelining helps, but still enforces only a FIFO queue), a server delay of 500 ms prevents reuse of the TCP channel for additional requests. &amp;nbsp;Browsers work around this problem by using multiple connections. &amp;nbsp;Since 2008, most browsers have finally moved from 2 connections per domain to 6&lt;/span&gt;.&amp;nbsp;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Exclusively client-initiated requests. In HTTP, only the client can initiate a request. Even if the server knows the client needs a resource, it has no mechanism to inform the client and must instead wait to receive a request for the resource from the client.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Uncompressed request and response headers. Request headers today vary in size from ~200 bytes to over 2KB. &amp;nbsp;As applications use more cookies and user agents expand features, typical header sizes of 700-800 bytes is common.&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;span style="font-size: x-small;"&gt;For modems or ADSL connections, in which the uplink bandwidth is fairly low, this latency can be significant.&amp;nbsp;&lt;/span&gt;Reducing the data in headers could directly improve the serialization latency to send requests. &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Redundant headers. In addition, several headers are repeatedly sent across requests on the same channel. However, headers such as the User-Agent, Host, and Accept* are generally static and do not need to be resent.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Optional data compression. HTTP uses optional compression encodings for data. Content should always be sent in a compressed format.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;h3 style="font-size: 12pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-Previous-approaches"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style="font-size: 12pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;Previous approaches&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="font-family: Verdana;"&gt;SPDY is not the only research to make HTTP faster. &lt;span style="font-family: Verdana;"&gt;There have been other proposed solutions to web latency, mostly at the level of the transport or session layer:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li&gt;&lt;a href="http://www.sctp.org/" rel="nofollow" style="color: #551a8b;" target="_blank" title="Stream Control Transmission Protocol"&gt;&lt;span style="font-size: x-small;"&gt;Stream Control Transmission Protocol&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;(SCTP) -- a transport-layer protocol to replace TCP, which provides multiplexed streams and stream-aware congestion control.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://tools.ietf.org/html/draft-natarajan-http-over-sctp-00" rel="nofollow" target="_blank"&gt;HTTP over SCTP&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; -- a proposal for running HTTP over SCTP. &lt;a href="http://www.cis.udel.edu/%7Eleighton/" rel="nofollow" target="_blank"&gt;Comparison of HTTP Over SCTP and TCP in High Delay Networks&lt;/a&gt; describes a research study comparing the performance over both transport protocols. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="javascript:void(0);" target="_blank" title="Structured Stream Transport"&gt;Structured Stream Transport&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;(SST) -- &lt;/span&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="font-family: Verdana;"&gt;a protocol which invents "structured streams": lightweight, independent streams to be carried over a common transport. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;It replaces TCP or runs on top of UDP.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.w3.org/Protocols/MUX/" rel="nofollow" target="_blank" title="Simon Spero's MUX"&gt;&lt;span style="font-size: x-small;"&gt;MUX&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.w3.org/TR/WD-mux" rel="nofollow" target="_blank" title="Jim Getty's SMUX"&gt;&lt;span style="font-size: x-small;"&gt;SMUX&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;-- intermediate-layer protocols (in between the transport and application layers) that provide multiplexing of streams. They were proposed years ago at the same time as HTTP/1.1.&amp;nbsp;&lt;/span&gt; &lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;These proposals offer solutions to some of the web's latency problems, but not all. The problems inherent in HTTP (compression, prioritization, etc.) should still be fixed, regardless of the underlying transport protocol. In any case, in practical terms, changing the transport is very difficult to deploy. Instead, we believe that there is much low-hanging fruit to be gotten by addressing the shortcomings at the application layer. Such an approach requires minimal changes to existing infrastructure, and (we think) can yield significant performance gains. &lt;/span&gt;&lt;br /&gt;&lt;h2 style="font-size: 14pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-Goals-for-SPDY"&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;Goals for SPDY&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-size: x-small;"&gt;The SPDY project defines and implements an application-layer protocol for the web which greatly reduces latency. The high-level goals for SPDY are:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To target a 50% reduction in page load time. Our preliminary results have come close to this target (see below).&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To minimize deployment complexity. SPDY uses TCP as the underlying transport layer, so requires no changes to existing networking infrastructure. &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To avoid the need for any changes to content by website authors. The only changes required to support SPDY are in the client user agent and web server applications.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;To bring together like-minded parties interested in exploring protocols as a way of solving the latency problem. We hope to develop this new protocol in partnership with the open-source community and industry specialists.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;Some specific technical goals are:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;   &lt;br /&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To allow many concurrent HTTP requests to run across a single TCP session.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;   &lt;br /&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To reduce the bandwidth currently used by HTTP by compressing headers and eliminating unnecessary headers&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;   &lt;br /&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To define a protocol that is easy to implement and server-efficient. We hope to reduce the complexity of HTTP by cutting down on edge cases and defining easily parsed message formats.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To make SSL the underlying transport protocol, for better security and compatibility with existing network infrastructure. Although SSL does introduce a latency penalty, we believe that the long-term future of the web depends on a secure network connection. In addition, the use of SSL is necessary to ensure that communication across existing proxies is not broken. &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;To enable the server to initiate communications with the client and push data to the client whenever possible.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: small;"&gt;SPDY design and features&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;SPDY adds a session layer atop of SSL that allows for multiple concurrent, interleaved streams over a single TCP connection.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;The usual HTTP GET and POST message formats remain the same; however, SPDY specifies a new framing format for encoding and transmitting the data over the wire.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;div style="display: block; text-align: left;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://sites.google.com/a/chromium.org/dev/spdy/spdy-whitepaper/soarjOjSeS5hoFYvjtAnxCg.png?attredirects=0" imageanchor="1"&gt;&lt;img border="0" src="http://sites.google.com/a/chromium.org/dev/_/rsrc/1258490355439/spdy/spdy-whitepaper/soarjOjSeS5hoFYvjtAnxCg.png" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;Streams are bi-directional, i.e. can be initiated by the client and server.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;SPDY aims to achieve lower latency through basic (always enabled) and advanced (optionally enabled) features.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span style="font-family: Verdana; font-size: small;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-Basic-features"&gt;&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;Basic features&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: #3399ff; font-family: Arial,sans-serif;"&gt;&lt;span style="color: black; font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: #3399ff; font-family: Arial,sans-serif;"&gt;&lt;span style="color: black; font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;i&gt;&lt;b&gt;Multiplexed streams&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;blockquote style="border-style: none; border-width: medium; margin: 0pt 0pt 0pt 40px; padding: 10px;"&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: #3399ff; font-family: Arial,sans-serif;"&gt;&lt;span style="color: black; font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;SPDY allows for unlimited concurrent streams over a single TCP connection. Because requests are interleaved on a single channel, the efficiency of TCP is much higher: fewer network connections need to be made, and fewer, but more densely packed, packets are issued.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: #3399ff; font-family: Arial,sans-serif;"&gt;&lt;span style="color: black; font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;   &lt;br /&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;i&gt;&lt;b&gt;Request prioritization&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;Although unlimited parallel streams solve the serialization problem, they introduce another one: if bandwidth on the channel is constrained,&lt;span style="font-size: x-small;"&gt;&amp;nbsp;the client may block requests for fear of clogging the channel. To overcome this problem, SPDY implements request priorities&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;: the client can request as many items as it wants from the server, and assign a priority to each request. This prevents the network channel from being&amp;nbsp;&lt;span style="font-size: x-small;"&gt;congested with non-critical resources when a high priority request is pending&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;i&gt;&lt;b&gt;HTTP header compression&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;blockquote style="border-style: none; border-width: medium; margin: 0pt 0pt 0pt 40px; padding: 10px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: #3399ff; font-family: Arial,sans-serif;"&gt;&lt;span style="color: black; font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;SPDY compresses request and response HTTP headers, resulting in fewer packets and fewer bytes transmitted.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;h3 style="font-size: 12pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: #3399ff; font-family: Arial,sans-serif;"&gt;&lt;span style="color: black; font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-Advanced-features"&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;Advanced features&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: #3399ff; font-family: Arial,sans-serif;"&gt;&lt;span style="color: black; font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;In addition, SPDY provides an advanced feature,&amp;nbsp;&lt;i&gt;server-initiated streams&lt;/i&gt;. Server-initiated streams can be used to deliver content to the client without the client needing to ask for it. This option is configurable by the web developer in two ways:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;b&gt;Server push&lt;/b&gt;&lt;/i&gt;&lt;b&gt;.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;blockquote style="border-style: none; border-width: medium; margin: 0pt 0pt 0pt 40px; padding: 10px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;SPDY experiments with an option for servers to push data to clients via the X-Associated-Content header. This header informs the client that the server is pushing a resource to the client before the client has asked for it. &amp;nbsp;For initial-page downloads (e.g. the first time a user visits a site), this can vastly enhance the user experience.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;b&gt;Server hint&lt;/b&gt;&lt;/i&gt;.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;blockquote style="border-style: none; border-width: medium; margin: 0pt 0pt 0pt 40px; padding: 10px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;Rather than automatically pushing resources to the client, the server uses the&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;X-Subresources header to&amp;nbsp;&lt;i&gt;suggest&lt;/i&gt;&amp;nbsp;to the client that it should ask for specific resources, in cases where the server knows in advance of the client that those resources will be needed. However, the server will still wait for the client request before sending the content.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;Over slow links, this option can reduce the time it takes for a client to discover it needs a resource by hundreds of milliseconds, and may be better for non-initial page loads.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;For technical details, see the &lt;a href="http://sites.google.com/a/chromium.org/dev/spdy/spdy-protocol" target="_blank"&gt;SPDY draft protocol specification&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2 style="font-size: 14pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-SPDY-implementation:-what-we-ve-bui"&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;SPDY implementation: what we've built&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;This is what we have built:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul style="margin: 0px 0pt 0px 1.5em;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin: 0px 0pt;"&gt;   &lt;br /&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;A high-speed, in-memory server which can serve both HTTP and SPDY responses efficiently, over TCP and SSL. We will be releasing this code as open source in the near future.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px 0pt; text-align: left;"&gt;   &lt;br /&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;A modified Google Chrome client which can use HTTP or SPDY, over TCP and SSL. The source code is at&amp;nbsp;&lt;a href="http://src.chromium.org/viewvc/chrome/trunk/src/net/flip/" title="http://src.chromium.org/viewvc/chrome/trunk/src/net/flip/"&gt;http://src.chromium.org/viewvc/chrome/trunk/src/net/flip/&lt;/a&gt;. (Note that code currently uses the internal code name of "flip"; this will change in the near future.)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px 0pt; text-align: left;"&gt;   &lt;br /&gt;&lt;div style="direction: inherit; margin: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;A testing and benchmarking infrastructure that verifies pages are replicated with high fidelity. In particular, we ensure that SPDY preserves origin server headers, content encodings, URLs, etc. We will be releasing our testing tools, and instructions for reproducing our results, in the near future.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style="font-size: 12pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-Preliminary-results"&gt;&lt;/a&gt;&lt;span style="font-size: small; font-weight: normal;"&gt;Preliminary results&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;With the prototype Google Chrome client and web server that we developed, we ran a number of lab tests to benchmark SPDY performance against that of HTTP.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;We downloaded 25 of the "top 100" websites over simulated home network connections, with 1% packet loss. We ran the downloads 10 times for each site, and calculated the average page load time for each site, and across all sites. The results show a speedup over HTTP of 27% - 60% in page load time over plain TCP (without SSL), and 39% - 55% over SSL.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;i&gt;Table 1: Average page load times for top 25 websites&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;table border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" height="147" style="border-collapse: collapse; font-size: 1em; line-height: inherit; width: 850px;"&gt;&lt;tbody&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td colspan="2" style="direction: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;DSL 2 Mbps downlink, 375 kbps uplink&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td colspan="2" style="direction: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;Cable 4 Mbps downlink, 1 Mbps uplink&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;A&lt;/b&gt;&lt;b&gt;verage ms&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Speedup&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Average ms&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Speedup&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;HTTP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;3111.916&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;2348.188&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;SPDY basic multi-domain* connection / TCP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;2242.756&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;27.93%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1325.46&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;43.55%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;SPDY basic single-domain* connection / TCP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1695.72&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;45.51%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;933.836&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;60.23%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;SPDY single-domain + server push / TCP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1671.28&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;46.29%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;950.764&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;59.51%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;SPDY single-domain + server hint / TCP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1608.928&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;48.30%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;856.356&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;63.53%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;SPDY basic single-domain / SSL&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1899.744&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;38.95%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1099.444&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;53.18&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;SPDY single-domain + client prefetch / SSL&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1781.864&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;42.74%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;1047.308&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="20%"&gt;&lt;span style="font-size: x-small;"&gt;55.40%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;* In many cases, SPDY can stream all requests over a single connection, regardless of the number of different domains from which requested resources originate. This allows for full parallelization of all downloads. However, in some cases, it is not possible to collapse all domains into a single domain. In this case, SPDY must still open a connection for each domain, incurring some initial RTT overhead for each new connection setup. We ran the tests in both modes: collapsing all domains into a single domain (i.e. one TCP connection); and respecting the actual partitioning of the resources according to the original multiple domains (= one TCP connection per domain). We include the results for both the strict "single-domain" and "multi-domain" tests; we expect real-world results to lie somewhere in the middle.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style="font-size: 10pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-The-role-of-header-compression"&gt;&lt;/a&gt;The role of header compression&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;Header compression resulted in an ~88% reduction in the size of request headers and an ~85% reduction in the size of response headers. On the lower-bandwidth DSL link, in which the upload link is only 375 Kbps, request header compression in particular, led to significant page load time improvements for certain sites (i.e. those that issued large number of resource requests). We found a reduction of 45 - 1142 ms in page load time simply due to header compression.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style="font-size: 10pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-The-role-of-packet-loss-and-round-t"&gt;&lt;/a&gt;The role of packet loss and round-trip time (RTT)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;We did a second test run to determine if packet loss rates and round-trip times (RTTs) had an effect on the results. For these tests, we measured only the cable link, but simulated variances in packet loss and RTT.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;We discovered that SPDY's latency savings increased proportionally with increases in packet loss rates, up to a 48% speedup at 2%. (The increases tapered off above the 2% loss rate, and completely disappeared above 2.5%. In the real world, packets loss rates are typically 1-2%, and RTTs average 50-100 ms in the U.S.) The reasons that SPDY does better as packet loss rates increase are several:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;SPDY sends ~40% fewer packets than HTTP, which means fewer packets affected by loss.&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;SPDY uses fewer TCP connections, which means few changes to lose the SYN packet. In many TCP implementations, this delay is disproportionately expensive (up to 3 s).&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;SPDY's more efficient use of TCP usually triggers TCP's fast retransmit instead of using retransmit timers.&amp;nbsp;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;We discovered that SPDY's latency savings also increased proportionally with increases in RTTs, up to a 27% speedup at 200 ms. The &amp;nbsp;The reason that SPDY does better as RTT goes up is because SPDY fetches all requests in parallel. If an HTTP client has 4 connections per domain, and 20 resources to fetch, it would take roughly 5 RTs to fetch all 20 items. &amp;nbsp;SPDY fetches all 20 resources in one RT.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;i&gt;Table 2: Average page load times for top 25 websites by packet loss rate&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;table border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" height="194" style="border-collapse: collapse; font-size: 1em; line-height: inherit; width: 581px;"&gt;&lt;tbody&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td colspan="2" style="direction: inherit; font-family: arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Average ms&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;Speedup&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;Packet loss rate&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;HTTP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;SPDY basic (TCP)&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;0%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1152&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1016&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;11.81%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;0.5%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1638&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1105&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;32.54%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2060&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1200&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;41.75%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1.5%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2372&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1394&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;41.23%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2904&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1537&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;47.7%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2.5%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;3028&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1707&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit; font-family: arial,sans-serif;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;43.63%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: black; font-family: Arial,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: black; font-family: Arial,sans-serif;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Table 3: Average page load times for top 25 websites by RTT&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;table border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" height="220" style="border-collapse: collapse; font-size: 1em; line-height: inherit; width: 582px;"&gt;&lt;tbody&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td colspan="2" style="direction: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Average ms&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Speedup&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;RTT in ms&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;HTTP&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;SPDY basic (TCP)&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;20&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1240&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1087&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;12.34%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;40&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1571&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1279&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;18.59%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;60&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1909&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1526&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;20.06%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;80&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2268&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;1727&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;23.85%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;120&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2927&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2240&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;23.47%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;160&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;3650&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;2772&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;24.05%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr style="text-align: left;"&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;200&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;4498&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;3293&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="direction: inherit;" width="25%"&gt;&lt;span style="font-size: x-small;"&gt;26.79%&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: black; font-family: Arial,sans-serif;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="color: black; font-family: Arial,sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2 style="font-size: 14pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-SPDY-next-steps:-how-you-can-help"&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;SPDY next steps: how you can help&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;Our initial results are promising, but we don't know how well they represent the real world. In addition, there are still areas in which SPDY could improve. In particular:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Bandwidth efficiency is still low. Although dialup bandwidth efficiency rate is close to 90%, for high-speed connections efficiency is only about ~32%.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;SSL poses other latency and deployment challenges. Among these are: the additional RTTs for the SSL handshake; encryption; difficulty of caching for some proxies. We need to do more SSL tuning.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Our packet loss results are not conclusive. Although much research on packet-loss has been done, we don't have enough data to build a realistic model model for packet loss on the Web. We need to gather this data to be able to provide more accurate packet loss simulations.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;SPDY single connection loss recovery sometimes underperforms multiple connections. That is, opening multiple connections is still faster than losing a single connection when the RTT is very high. We need to figure out when it is appropriate for the SPDY client to make a new connection or close an old connection and what effect this may have on servers.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;The server can implement more intelligence than we have built in so far. We need more research in the areas of server-initiated streams, obtaining client network information for prefetching suggestions, and so on.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;To help with these challenges, we encourage you to get involved:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Send feedback, comments, suggestions, ideas to the&amp;nbsp;&lt;a href="http://groups.google.com/group/chromium-discuss?pli=1" title="chromium-discuss discussion group"&gt;chromium-discuss discussion group&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Download, build, run, and test the&amp;nbsp;&lt;a href="http://src.chromium.org/viewvc/chrome/trunk/src/net/flip/" title="Google Chrome client code"&gt;Google Chrome client code&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Contribute improvements to the code base.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style="font-size: 14pt;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7624476069480039405&amp;amp;postID=1737005914292385592" name="TOC-SPDY-frequently-asked-questions"&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;SPDY frequently asked questions&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Q: Doesn't HTTP pipelining already solve the latency problem?&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;A: No. While pipelining does allow for multiple requests to be sent in parallel over a single TCP stream, it is still but a single stream. &amp;nbsp;Any delays in the processing of anything in the stream (either a long request at the head-of-line or packet loss) will delay the entire stream. &amp;nbsp;Pipelining has proven difficult to deploy, and because of this remains disabled by default in all of the major browsers.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: verdana,sans-serif;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Q: Is SPDY a replacement for HTTP?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;A: No. SPDY replaces some parts of HTTP, but mostly augments it. At the highest level of the application layer, the request-response protocol remains the same. SPDY still uses HTTP methods, headers, and other semantics. But SPDY overrides other parts of the protocol, such as connection management and data transfer formats.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="border-collapse: collapse; font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="border-collapse: collapse; font-size: 13px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="background-color: white;"&gt;Q: Why did you choose this name?&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="border-collapse: collapse; font-size: 13px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="background-color: white;"&gt;A: We wanted a name that captures speed. SPDY, pronounced "SPeeDY", captures this and also shows how compression can help improve speed.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="border-collapse: collapse; font-size: 13px;"&gt;&lt;/span&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Q: Should SPDY change the transport layer?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;A: More research should be done to determine if an alternate transport could reduce latency. &amp;nbsp;However, replacing the transport is a complicated endeavor, and if we can overcome the inefficiencies of TCP and HTTP at the application layer, it is simpler to deploy.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Q: TCP has been time-tested to avoid congestion and network collapse.&amp;nbsp; Will SPDY break the Internet?&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;A: No.&amp;nbsp; SPDY runs atop TCP, and benefits from all of TCP's congestion control algorithms. &amp;nbsp;Further, HTTP has already changed the way congestion control works on the Internet. &amp;nbsp;For example, HTTP clients today open up to 6 concurrent connections to a single server; at the same time, some HTTP servers have increased the initial congestion window to 4 packets. Because TCP independently throttles each connection, servers are effectively sending up to 24 packets in an initial burst. &amp;nbsp;The multiple connections side-step TCP's slow-start. SPDY, by contrast, implements multiple streams over a single connection.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Q: What about SCTP?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;A: SCTP is an interesting potential alternate transport, which offers multiple streams over a single connection. However, again, it requires changing the transport stack, which will make it very difficult to deploy across existing home routers.&amp;nbsp;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;Also, SCTP alone isn't the silver bullet; application-layer changes still need to be made to efficiently use the channel between the server and client.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Q: What about BEEP?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: inherit; margin-bottom: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;A: While BEEP is an interesting protocol which offers a similar grab-bag of features, it doesn't focus on reducing the page load time. It is missing a few features that make this possible. Additionally, it uses text-based framing for parts of the protocol instead of binary framing. This is wonderful for a protocol which strives to be as extensible as possible, but offers some interesting security problems as it is more difficult to parse correctly.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: verdana,sans-serif; font-size: medium;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-1737005914292385592?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/1737005914292385592/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=1737005914292385592' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1737005914292385592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1737005914292385592'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/11/spdy-experimental-protocol-for-faster.html' title='SPDY: An experimental protocol for a faster web'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-1192105478139201474</id><published>2009-11-11T03:43:00.000-08:00</published><updated>2009-11-11T03:44:42.732-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Go language'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Google's Go: A New Programming Language That's Python Meets C++</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Big news for developers out there: &lt;i&gt;Go&lt;/i&gt;ogle has just announced the release of a new, open sourced programming language called Go. The company says that Go is experimental, and that it combines the performance and security benefits associated with using a compiled language like C++ with the speed of a dynamic language like Python. Go's official mascot is Gordon the gopher, seen here. &lt;/span&gt;&lt;br /&gt;&lt;div id="body_after_content_column"&gt;&lt;span style="font-size: small;"&gt; Here's how Google describes Go in its blog post: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Go attempts to combine the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++. In our experiments with Go to date, typical builds feel instantaneous; even large binaries compile in just a few seconds. And the compiled code runs close to the speed of C. Go is designed to let you move fast.We're hoping Go turns out to be a great language for systems programming with support for multi-processing and a fresh and lightweight take on object-oriented design, with some cool features like true closures and reflection.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; For more details check out &lt;a href="http://golang.org/" target=""&gt;Golang.org&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; To get things started the right way, here's Go's rendition of Hello World!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;package main&lt;br /&gt;&lt;br /&gt;import "fmt"&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt;  fmt.Printf("Hello, World\n")&lt;/pre&gt;&lt;pre class="code"&gt;}&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-1192105478139201474?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/1192105478139201474/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=1192105478139201474' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1192105478139201474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1192105478139201474'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/11/googles-go-new-programming-language.html' title='Google&apos;s Go: A New Programming Language That&apos;s Python Meets C++'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-2543497755159099511</id><published>2009-10-19T07:14:00.000-07:00</published><updated>2009-10-19T07:20:52.980-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anti-IF campaign'/><title type='text'>Anti-IF campaign</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.antiifcampaign.com"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 120px; height: 60px;" src="http://www.antiifcampaign.com/_export/anti-if-campaign-ive-joined.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;span style="font-size:100%;"&gt;What Is the Anti-IF Campaign?&lt;/span&gt;&lt;/h2&gt;             &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;The objective of the Anti-IF Campaign is to raise awareness of effective use of the Object-Oriented paradigm.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;             &lt;p&gt;&lt;span style="font-size:85%;"&gt;The primary purpose of our campaign is to become aware of the design consequences of using IFs and of control structures in general, applied by following the path of the procedural paradigm in Object Oriented contexts. &lt;b&gt;This greater awareness will enable you to understand how to achieve more effective results&lt;/b&gt; in terms of flexibility, comprehensibility, testability, and ability to evolve.&lt;/span&gt;&lt;/p&gt;             &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Why Was It Started?&lt;/span&gt;&lt;/h2&gt;             &lt;p&gt;&lt;span style="font-size:85%;"&gt;The campaign was Francesco Cirillo’s idea: &lt;b&gt;“Lots of teams want to be agile, but they don’t know the basics for cutting down on code complexity.”&lt;/b&gt; Knowing how to use objects lets developers eliminate IFs based on type, those that most often compromise software's flexibility and ability to evolve. Let’s start with these!” &lt;/span&gt;&lt;/p&gt;             &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Who Is It For?&lt;/span&gt;&lt;/h2&gt;             &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Developers (Junior and Senior)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Business Analysts&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Project Leaders&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Software Quality Assurance Team Members&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-2543497755159099511?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/2543497755159099511/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=2543497755159099511' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/2543497755159099511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/2543497755159099511'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/10/anti-if-campaign.html' title='Anti-IF campaign'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3237072985211433974</id><published>2009-10-16T05:40:00.000-07:00</published><updated>2009-10-16T05:44:44.770-07:00</updated><title type='text'>Sugestão no Washington Post: Use Linux para evitar fraude bancária</title><content type='html'>&lt;span style="font-size:85%;"&gt;O colunista de segurança Brian Krebs do Washington Post, &lt;a href="http://voices.washingtonpost.com/securityfix/2009/10/avoid_windows_malware_bank_on.html"&gt;recomendou que os clientes bancários considerem o uso de um LiveCD do Linux no lugar do Windows para acesso ao banco online&lt;/a&gt;. Ele conta a história de duas empresas que perderam respectivamente U$100.000 e U$447.000, quando o ladrões armados com malwares no PC de um funcionário das empresas foram capazes de interceptar um log do responsável pelo acesso às contas. Krebs ainda observa que ele não está sozinho em recomendar o uso de máquinas não-Windows para uso do &lt;span style="font-weight: bold;"&gt;home banking&lt;/span&gt;; O Centro de Informações e Análises Financeiras, um grupo da indústria apoiada por alguns dos maiores bancos do mundo, publicou recentemente diretrizes instruindo as empresas a realizar todas as atividades bancárias on-line a partir de uma máquina dedicada a isso rodando Linux. Krebs conclui seu artigo com um link para uma coluna anterior em que ele ensina leitores a usar um LiveCD Linux para acessar suas contas com segurança.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3237072985211433974?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3237072985211433974/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3237072985211433974' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3237072985211433974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3237072985211433974'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/10/sugestao-no-washington-post-use-linux.html' title='Sugestão no Washington Post: Use Linux para evitar fraude bancária'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-7728264068998008868</id><published>2009-10-13T09:41:00.000-07:00</published><updated>2009-10-13T09:52:47.980-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netscape'/><category scheme='http://www.blogger.com/atom/ns#' term='w3c'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='mosaic'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Browsers: uma breve história - Parte III</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Macintosh e Windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como as especificações de design para páginas web, tornou-se mais preciso e as expectativas dos usuários cresceram, uma outra batalha na guerra dos navegadores web começou. Quanto mais detalhada era uma página web e mais rica a sua funcionalidade, maior era o fosso entre os navegadores. Como se isso não bastasse, existia também diferenças entre as plataformas. Como o Netscape trabalhava no Macintosh, era significativamente diferente de como ele funcionava no Windows. Houve diferenças entre si nos navegadores, mas também nos sistemas. Por exemplo, fontes tendiam a exibir menores em Macs, e maior no Windows (mesmo usando o mesmo browser). Cor tendiam a mostrar mais escura em um PC do que em um Mac. Determinados recursos disponíveis no IE 4.0 no PC talvez não estivesse disponível para usuários de Mac (Ainda que sempre o caminho).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Como podemos enfrentar essa guerra?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A guerra dos navegadores tem sido intensa e frustrante. Todo desenvolvedor web tem histórias de horror sobre a tentativa de tornar nos seus locais de trabalho, os principais navegadores. Nos primeiros dias as linhas de batalha foram divididas e bastante equilibradas. Isso tornou as coisas muito difíceis. O resultado foi que muitas vezes tivemos que desenvolver a um nível inferior, para manter os problemas do navegador para um mínimo. Hoje somos capazes de fazer mais.&lt;br /&gt;&lt;br /&gt;O primeiro passo para lidar com questões de compatibilidade de navegadores, é definir claramente qual o navegador que um determinado site irá apoiar. Para nós, quando a utilização de um navegador cair abaixo de 3% já não se deve apoiá-lo ativamente. Isso não significa que um site não funciona em um navegador mais antigo. Significa apenas que não mais será feito testes com esse navegador e, se surgem problemas de exibição, não serão prontamente corrigidos.&lt;br /&gt;&lt;br /&gt;Quando formamos nossos padrões baseados nos navegadores mais utilizados, e em 95-97% dos casos os nossos sites ficarão muito bem, isso não ajuda muito quando o nosso cliente ainda está usando um navegador obsoleto. Enquanto nós sempre incluiremos os nossos padrões de compatibilidade do navegador nas nossas propostas, também é uma idéia muito boa fazer uma prospecção de navegadores que eles usam (e talvez mais importante, que navegador usa seu chefe) antes de iniciar um projeto. Caso contrário, você estará enfrentando um problema real para o fim de um projeto quando o cliente chama dizendo que o site parece terrível em seu computador (não o tempo para começar a educá-los sobre questões de compatibilidade do navegador).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Apoio a navegadores mais antigos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Apoiar os navegadores mais utilizados e utilizando os meios mais eficientes de codificação faz sentido para projetos web. No entanto, a decisão de limitar o apoio ao navegador pode não fazer sentido para aquelas pessoas que ainda usam navegadores mais antigos (isto é particularmente problemático se o presidente possa ser uma dessas pessoas). É por isso que é extremamente importante comunicar e discutir as normas de compatibilidade do navegador com o seu cliente antes de iniciar um projeto. Também é uma boa idéia incluir normas de compatibilidade do navegador em qualquer proposta ou no contrato do projeto. E por favor, sempre fazer a pergunta "qual o browser que o presidente da empresa usa?", e talvez qual o navegador que a mãe dele usa também; vai que ele queira mostrar o que os "meninos" da empresa fizeram.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Manuseio com navegadores do futuro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uma nota a respeito de navegadores do futuro. Podemos incluir o seguinte texto em nossos padrões técnicos "A Xpto não garante a compatibilidade com versões futuras dos vários navegadores. Se novos navegadores não exibem informações com precisão, correções podem ser feitas e, será cobrado homem-hora." Enquanto isto pode parecer óbvio (como você não pode apoiar um navegador que ainda não existe), é uma boa idéia deixar o cliente saber que as futuras versões do navegador pode agir de maneira diferente e teoricamente "quebrar" o site existente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;O que nos reserva o futuro?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Embora as questões de compatibilidade do navegador são de longe a parte mais frustrante no desenvolvimento web, as coisas melhoraram. A boa notícia é que a cada mês que passa, há menos navegadores mais antigos sendo usados. Para nosso grande alívio, a atual tendência dos navegadores é para a compatibilidade cross-browser e aderência aos padrões web já existentes. Esperemos que com menos pressão por novas versões de navegadores para oferecerem recursos novos e originais, os navegadores mais recentes se mantenham em conformidade com as normas existentes. Podemos sonhar, não podemos?&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://cazo-tec.blogspot.com/2009/09/borwsers-uma-breve-historia-parte-ii.html"&gt;&lt;span style="font-size:85%;"&gt;Parte II&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-7728264068998008868?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/7728264068998008868/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=7728264068998008868' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/7728264068998008868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/7728264068998008868'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/10/browsers-uma-breve-historia-parte-iii.html' title='Browsers: uma breve história - Parte III'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8406994194126926567</id><published>2009-10-02T10:30:00.000-07:00</published><updated>2009-10-02T10:36:11.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='celestia'/><category scheme='http://www.blogger.com/atom/ns#' term='ESA'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Celestia 3D Space Simulation Software For Linux / Windows / OS X</title><content type='html'>&lt;p&gt;&lt;img src="http://files.cyberciti.biz/uploads/tips/2009/09/celestia-europe-Io-jupiter.jpg" alt="celestia-europe-Io-jupiter" title="celestia-europe-Io-jupiter" class="aligncenter size-full wp-image-5753" height="372" width="595" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Celestia&lt;/strong&gt; is a real-time visual space simulation astronomy program. It is a cross platform, open source software and released under the GNU General Public License. NASA and ESA have used Celestia in their educational and for interfacing to trajectory analysis software. It allows users to travel through an extensive universe, modeled after reality, at any speed, in any direction and at any time in history. Celestia displays and interacts with objects ranging in scale from artificial satellites to entire galaxies in three dimensions using OpenGL. It is a perfect software for astronomer, educator, student, and teacher for astronomy purpose.&lt;/span&gt;&lt;br /&gt;&lt;span id="more-5745"&gt;&lt;/span&gt;&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Features&lt;/span&gt;&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Celestia displays the Hipparcos Catalogue (HIP) of almost 120,000 stars. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Solar and lunar eclipse finder.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Display the orbital paths of planets (including extrasolar planets), dwarf planets, moons, asteroids, comets, artificial satellites, and spacecraft.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Celestia users can travel/fly through the Celestia universe using simple keyboard controls, at any speed from 0.001m/s to millions of light years/s&lt;br /&gt;Controls allow users to orbit stars, planets, moons and other space objects, track space objects such as spacecraft, asteroids and comets as they fly by, or travel to and/or fly through nebula and irregular, elliptical and spiral galaxies (over 10,000 galaxies included).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Celestia displays such features as detailed atmospheres on planets and moons, planet shine on orbiting satellites, sunsets and sunrises, moving clouds, planetary rings, eclipse and ring shadows etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Graphic screen-shots and movies can be captured in classic or HD resolutions (up to 1920x1080) on Windows and Linux platforms.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Packages&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;You need to install the following packages:&lt;/span&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;celestia - A real-time visual space simulation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;celestia-common - Datafiles for Celestia, a real-time visual space simulation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;celestia-glut - A real-time visual space simulation (GLUT frontend)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;celestia-gnome - A real-time visual space simulation (GNOME frontend)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;celestia-kde - A real-time visual space simulation (KDE frontend)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;Install Celestia Under Debian / Ubuntu Linux&lt;/h3&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Type the following commands:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install celestia-gnome  celestia&lt;/code&gt;&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;How do I start Celestia?&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Type the following command at a console (terminal):&lt;br /&gt;&lt;code&gt;$ celestia-gnome &amp;amp; &lt;/code&gt;&lt;br /&gt;Alternatively, you can start Celestia in the following ways:&lt;/span&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Applications menu&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Choose &lt;strong&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Education&lt;/span&gt;&lt;/strong&gt; &gt; &lt;strong&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Celestia&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div id="attachment_5748" class="wp-caption aligncenter" style="width: 600px;"&gt;&lt;a href="http://www.cyberciti.biz/tips/celestia-astronomy-linux-program.html/celestia" rel="attachment wp-att-5748"&gt;&lt;img src="http://files.cyberciti.biz/uploads/tips/2009/09/celestia.png" alt="Fig.01: Celestia displaying earth" title="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;&lt;span style="font-size:85%;"&gt;Fig.01: Celestia displaying earth&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Celestia Mouse, Keyboard and Joystick Control&lt;/span&gt;s&lt;/h2&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Celestia allows you to zoom in / out and rotate various objects from star to spacecraft using a mouse. It has "point and goto" interface which allows you to navigate through our universe.&lt;/span&gt;&lt;/p&gt; &lt;table border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th&gt;&lt;span style="font-size:85%;"&gt;Mouse Controls&lt;/span&gt;&lt;/th&gt; &lt;th&gt;&lt;span style="font-size:85%;"&gt;Description&lt;/span&gt;&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Left Drag&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Camera orientation--Up/Down/Left/Right (also Up &amp;amp; Down arrow key)&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Shift+Left Dbl Click on an object&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Deselect and Center selected object&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Left Click on no object&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Deselect currently selected object&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Right Click on an object&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Display object context menu if it has one&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;span style="font-size:85%;"&gt;Scroll Wheel or Ctrl+Left Drag or Ctrl+Left Drag Left+Right Drag up/down&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;Distance to selection adjust. (Home/End)&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;To see complet list press CTRL+H.&lt;/span&gt;&lt;/p&gt; &lt;h3&gt;&lt;span style="font-size:100%;"&gt;How do I view demo?&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;To view the demo click on Help menu &gt; &lt;strong&gt;Demo&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UUlLvGsRywU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/UUlLvGsRywU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;h4&gt;&lt;span style="font-size:85%;"&gt;Further readings:&lt;/span&gt;&lt;/h4&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.shatters.net/celestia/" target="_blank"&gt;Official project&lt;/a&gt; website&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a target="_blank" href="http://www.celestiamotherlode.net/"&gt;Celestia motherlode collection&lt;/a&gt; of add-ons made by various people&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Celestia"&gt;Celestia&lt;/a&gt; from Wikipedia, the free encyclopedia.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;(Image credit: Wikipedia)&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8406994194126926567?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8406994194126926567/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8406994194126926567' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8406994194126926567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8406994194126926567'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/10/celestia-3d-space-simulation-software.html' title='Celestia 3D Space Simulation Software For Linux / Windows / OS X'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-9181655097463957523</id><published>2009-09-21T09:51:00.000-07:00</published><updated>2009-09-21T10:10:09.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Lucid Lynx'/><title type='text'>[video] Mark Shuttleworth Anuncia o Ubuntu 10.04: Lucid Lynx</title><content type='html'>&lt;div style="font-style: italic;" id="result_box" dir="ltr"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/l02bhwofEqw&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/l02bhwofEqw&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;"Para o Atlanta Linux Fest 2009 e UbuCon Atlanta 2009, Mark foi gentil o bastante para sentar-se connosco e anunciar o Ubuntu 10.04: Lucid Lynx."&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;font-style: normal;"&gt;Se vc nao pode vê-lo, clique &lt;a href="http://boredandblogging.com/2009/09/20/video-mark-shuttleworth-announces-ubuntu-10-04-lucid-lynx/"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;font-style: normal;"&gt;&lt;a href="http://www.youtube.com/watch?v=l02bhwofEqw"&gt;Assista ao vídeo no YouTube&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;font-style: normal;"&gt;Post Original &lt;a href="http://boredandblogging.com/2009/09/20/video-mark-shuttleworth-announces-ubuntu-10-04-lucid-lynx/"&gt;aqui&lt;/a&gt;&lt;/span&gt;&lt;a href="http://boredandblogging.com/2009/09/20/video-mark-shuttleworth-announces-ubuntu-10-04-lucid-lynx/"&gt;.&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-9181655097463957523?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/9181655097463957523/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=9181655097463957523' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/9181655097463957523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/9181655097463957523'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/09/video-mark-shuttleworth-anuncia-o.html' title='[video] Mark Shuttleworth Anuncia o Ubuntu 10.04: Lucid Lynx'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3422972526890611944</id><published>2009-09-15T12:07:00.000-07:00</published><updated>2009-09-15T12:14:14.903-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fast flip'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Nova ferramenta Google Fast Flip facilita visualização de notícias online</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Serviço permite que internauta visualize e navegue rapidamente entre diversas páginas de notícias, como se estivesse folheando uma revista.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Google começou a testar um novo formato para leitura de sites de notícias chamado Fast Flip. O serviço lançado pelo Google Labs, em fase de testes, na segunda-feira (14/9), permite que o internauta pré-visualize diversas páginas de sites de notícias de só vez e navegue rapidamente entre elas. Com isso, não há necessidade de esperar que a página seja carregada, especialmente quando há conteúdos multimídia mais pesados.&lt;br /&gt;&lt;br /&gt;A ideia, segundo o Google, é reproduzir na internet a prática de folhear páginas de jornais e revistas, motivando a leitura de conteúdos online. Ao clicar na página visualizada, entretanto, o internauta é direcionado ao respectivo site, onde o conteúdo é exibido sem a ferramenta.&lt;br /&gt;&lt;br /&gt;&lt;img class="image-inline" src="http://idgnow.uol.com.br/idgimages/ilustras_reutilizaveis_idgnow/internet/fastflip2.jpg" alt="fastflip2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Inicialmente, o Fast Flip reúne artigos de 36 sites de conteúdo, incluindo The New York Times, Washington Post, Salon e Newsweek, exibindo anúncios de acordo com o contexto.&lt;br /&gt;&lt;br /&gt;O Fast Flip também vai contar com ferramentas de buscas e compartilhamento de conteúdo. Por enquanto, o serviço não conta com aplicações para terceiros.&lt;br /&gt;&lt;br /&gt;&lt;img class="image-inline" src="http://idgnow.uol.com.br/idgimages/ilustras_reutilizaveis_idgnow/internet/fastflip.jpg" alt="fastflip.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;"Lançar o Google Fast Flip no Labs permite que possamos aprender com nossos usuários e nossos parceiros de conteúdo para que continuemos explorando novas formas de ajudar as editoras a gerar mais receita com seus conteúdos", disse uma porta-voz do Google.&lt;br /&gt;&lt;br /&gt;Além de funcionar em navegadores para desktops, o site do Fast Flip se adapta às plataformas do iPhone, da Apple, e de celulares com o sistema operacional Android, do Google.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3422972526890611944?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3422972526890611944/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3422972526890611944' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3422972526890611944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3422972526890611944'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/09/nova-ferramenta-google-fast-flip.html' title='Nova ferramenta Google Fast Flip facilita visualização de notícias online'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-5341070456920382953</id><published>2009-09-15T11:50:00.000-07:00</published><updated>2009-09-15T11:52:14.253-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel modules'/><title type='text'>Kernel Modules in Haskell</title><content type='html'>&lt;p&gt;&lt;span style="font-size:85%;"&gt;If you love Haskell and Linux then today is your day – today we reconcile the two and allow you to write Linux Kernel modules in Haskell. By making GHC and the Linux build system meet in the middle we can have modules that are type safe and garbage collected. Using the copy of GHC modified for the House operating system as a base, it turns out to be relatively simple to make the modifications necessary to generate object files for the Kernel environment. Additionally, a new calling convention (regparm3) was added to make it easier to import (and export) functions from the Kernel.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;I haven’t made a dry run through all these instructions, but have done each part at separate times and believe them correct – feel free to comment with bug reports!&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;br /&gt;Building GHC to Make Object files for Linux Modules&lt;/strong&gt;&lt;br /&gt;Start by downloading the House 0.8.93 [1]. Use the build system to acquire ghc-6.8.2 and apply the House patches. The House patches allow GHC to compile Haskell binaries that will run on bare metal (x86) without an underlying operating system, so this makes a good starting point.&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; wget http://web.cecs.pdx.edu/~kennyg/house/House-0.8.93.tar.bz2&lt;br /&gt; &gt; tar xjf House-0.8.93.tar.bz2&lt;br /&gt; &gt; cd House-0.8.93&lt;br /&gt; &gt; make boot&lt;br /&gt; &gt; make stamp-patch&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Now acquire the extra patch which changes the RTS to use the proper Kernel calls, instead of allocating its own memory, and to respect the current interrupt level. This patch also changes the build options to avoid common area blocks for uninitilized data (-fno-common) and use frame pointers (-fno-omit-frame-pointers).&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; wget https://projects.cecs.pdx.edu/~dubuisst/hghc.patch&lt;br /&gt; &gt; patch -d ghc-6.8.2 -p1 &lt; hghc.patch&lt;br /&gt;       &gt; make stamp-configure&lt;br /&gt; &gt; make stamp-ghc       # makes ghc stage 1&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Next, build a custom libgmp with the -fno-common flag set.  This library is needed for the Integer support in Haskell.&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; wget ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.1.tar.bz2&lt;br /&gt; &gt; tar xjf gmp-4.3.1.tar.bz2&lt;br /&gt; &gt; cd gmp-4.3.1&lt;br /&gt; &gt; ./configure&lt;br /&gt; # edit 'Makefile' and add '-fno-common' to the end of the 'CFLAGS = ' line.&lt;br /&gt; &gt; make&lt;br /&gt; &gt; cp .libs/libgmp.a $HOUSE_DIR/support&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Apply ’support.patch’ to alter the  build systems of the libtiny_{c,gcc,gmp}.a and build the libraries.&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; wget https://projects.cecs.pdx.edu/~dubuisst/support.patch&lt;br /&gt; &gt; patch -d $HOUSE_DIR &lt; support.patch&lt;br /&gt; &gt; make -C $HOUSE_DIR/support&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Build the cbits object files:&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; make -C $HOUSE_DIR/kernel cobjs&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;In preparation for the final linking, which is done manually, pick a working directory ($WDIR) that will serve to hold the needed libraries. Make some last minute modifications to the archives and copy libHSrts.a, libcbits.a, libtiny_gmp.a, libtiny_c.a, and libtiny_gcc.a&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; mkdir $WDIR&lt;br /&gt; &gt; ar d support/libtiny_c.a dlmalloc.o  # dlmalloc assumes it manages all memory&lt;br /&gt; &gt; ar q $WDIR/libcbits.a kernel/cbits/*.o&lt;br /&gt; &gt; cp ghc-6.8.2/rts/libHSrts.a support/libtiny_{c,gcc,gmp}.a $WDIR&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;br /&gt;Build a Kernel Module&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;First, write the C shim that will be read by the Linux build system. While it might be possible to avoid C entirely its easier to use the build system, and its plethora of macros, than fight it. The basic components of the shim are a license declaration, function prototypes for the imported (Haskell) functions, initialization, and exit functions. All these can be seen in the example hello.c [2]. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Notice that many of the standard C functions in the GHC RTS were not changed by our patches. To allow the RTS to perform key actions, such as malloc and free, the hello.c file includes shim functions such as ‘malloc’ which simply calls ‘kmalloc’. Any derivative module you make should include these functions either in the main C file or a supporting one.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Second, write a Haskell module and export the initialization and exit function so the C module may call them. Feel free to import kernel functions, just be sure to use the ‘regparm3′ key word in place of ‘ccall’ or ’stdcall’. For example:&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; foreign import regparm3 unsafe foo :: CString -&gt; IO CInt&lt;br /&gt; foreign export regparm3 hello :: IO CInt&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Continuing the example started by hello.c, ‘hsHello.hs’ is online [3].&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Now start building the object files.  Starting with building hsHello.o, you must execute:   &lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt;        &gt; $HOUSE_DIR/ghc-6.8.2/compiler/stage1/ghc-inplace -B$HOUSE_DIR/ghc-6.8.2  hsHello.hs -c&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;* note that this step will generate or overwrite any hsHello_stub.c file.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;When GHC generates C code for exported functions there is an implicit assumption that the program will be compiled by GHC. As a result the nursery and most the RTS systems are not initialized so the proper function calls must be added to hsHello_stub.c.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Add the funcion call “startupHaskell(0, NULL, NULL);” before rts_lock() in the initializing Haskell function. Similarly, add a call to “hs_exit_nowait()” after rts_unlock().&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;The stub may now be compiled, producing hsHello_stub.o. This is done below via hghc, which is an alias for our version of ghc with many flags [4].&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; hghc hsHello_stub.c -c&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;The remaining object files, hello.o and module_name.mod.o, can be created by the Linux build system. The necessary make file should contain the following:&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; obj-m := module.o  # Obviously you should name the module as you see fit&lt;br /&gt; module-objs := hello.o&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;And the make command (assuming the kernel source is in /usr/src/kernels/):&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; make -C /usr/src/kernels/2.6.29.6-217.2.16.fc11.i586 M=`pwd` modules&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;This should make “hello.o” and “module.mod.o”.  Everything can now be linked together with a single ld command.&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; ld -r -m elf_i386 -o module.ko hsHello_stub.o hsHello.o module.mod.o hello.o *.a libcbits.a&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;A successful build should not have any common block variables and the only undefined symbols should be provided by the kernel, meaning you should recognize said functions. As a result, the first command below should not result in output while the second should be minimal.&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span style="font-size:85%;"&gt; &gt; nm module.ko | egrep “^ +C ”&lt;br /&gt; &gt; nm module.ko | egrep “^ +U ”&lt;br /&gt;         U __kmalloc&lt;br /&gt;         U kfree&lt;br /&gt;         U krealloc&lt;br /&gt;         U mcount&lt;br /&gt;         U printk&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;br /&gt;Known Issue&lt;/strong&gt;&lt;br /&gt;The House-GHC 6.8.2 run-time system (RTS) does not clean up the allocated memory on shutdown, so adding and removing kernel modules results in large memory leaks which can eventually crash the system. This should be relatively easy to fix, but little investigation was done.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;A good estimate of the memory leak is the number of megabytes in the heap (probably 1MB, unless your module needs lots of memory) plus 14 bytes of randomly leaked memory from two unidentified (6 and 8 byte) allocations.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;[1] http://web.cecs.pdx.edu/~kennyg/house/&lt;br /&gt;[2] https://projects.cecs.pdx.edu/~dubuisst/hello.c&lt;br /&gt;[3] https://projects.cecs.pdx.edu/~dubuisst/hsHello.hs&lt;br /&gt;[4] $HOUSE_DIR/ghc-6.8.2/compiler/stage1/ghc-inplace -B$HOUSE_DIR/ghc-6.8.2 -optc-fno-common -optc-Wa,symbolic -optc-static-libgcc -optc-nostdlib -optc-I/usr/src/kernels/2.6.29.6-213.fc11.i586/arch/x86/include/ -optc-MD -optc-mno-sse -optc-mno-mmx -optc-mno-sse2 -optc-mno-3dnow -optc-Wframe-larger-than=1024 -optc-fno-stack-protector -optc-fno-optimize-sibling-calls -optc-g -optc-fno-dwarf2-cfi-asm -optc-Wno-pointer-sign -optc-fwrapv -optc-fno-strict-aliasing -I/usr/src/kernels/2.6.29.6-213.fc11.i586/include/ -optc-mpreferred-stack-boundary=2 -optc-march=i586 -optc-Wa,-mtune=generic32 -optc-ffreestanding -optc-mtune=generic -optc-fno-asynchronous-unwind-tables -optc-pg -optc-fno-omit-frame-pointer -fvia-c&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-5341070456920382953?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/5341070456920382953/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=5341070456920382953' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5341070456920382953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5341070456920382953'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/09/kernel-modules-in-haskell.html' title='Kernel Modules in Haskell'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-5762995101368324508</id><published>2009-09-10T11:48:00.000-07:00</published><updated>2009-09-10T11:49:46.889-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netbook'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kuki'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Kuki: distribuição Linux sob medida para netbooks Acer Aspire One, baseada no Ubuntu</title><content type='html'>&lt;p&gt;&lt;span style="font-size:85%;"&gt;Trecho da notícia do iG Tecnologia:&lt;/span&gt;&lt;/p&gt; &lt;div class="brquote"&gt;&lt;span style="font-size:85%;"&gt;(…) Baseado no Ubuntu, o Kuki Linux 2.8 é um sistema leve, com uma seleção otimizada de aplicativos peso-pena. Entre eles, o navegador web Midori, o mensageiro instantâneo Pidgin, o cliente de e-mail Claws, o Deluge, para baixar arquivos por BitTorrent, e o calendário/organizador pessoal Orage. O ambiente de usuário escolhido, pelo seu baixo consumo de memória, foi o XFCE 4.6.1, com um tema personalizado. O XFCE é bastante modificável para ficar semelhante tanto ao Windows como ao Mac OS X. A idéia dos desenvolvedores é dar ao usuário o máximo de recursos, com o menor consumo possível de memória e poder de processamento.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;center&gt;&lt;img title="kuki settings.png - fonte: Picture 22 « Official Screenshots | Kuki Linux (http://www.kuki.me/tour/official screenshots/?pid=22) " src="http://img.efetividade.net/img/xtra/kuki-settings.png" /&gt;&lt;/center&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;O suporte ao hardware específico do Aspire One também recebeu atenção: itens como controle do ventilador para dissipação de calor, gerenciamento de energia, drivers de vídeo, do modem 3G e leitores de cartões de memória vem pré-configurados.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;O Kuki Linux 2.8 pode ser baixado gratuitamente &lt;a href="http://www.kuki.me/"&gt;no site oficial&lt;/a&gt;, na forma de um arquivo ISO de 399 MB. O arquivo pode ser gravado em CD ou em um pendrive, e usado para instalação ou para uma sessão “Live CD”, que permite experimentar o sistema sem instalá-lo na máquina. Segundo os desenvolvedores, usuários novatos poderão encontrar suporte na forma de salas de bate-papo, fóruns de discussão e tutoriais em vídeo no site oficial. (&lt;i&gt;via &lt;a href="http://tecnologia.ig.com.br/noticia/2009/09/09/netbook+da+acer+ganha+linux+sob+medida+8341938.html"&gt;tecnologia.ig.com.br&lt;/a&gt;&lt;/i&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-5762995101368324508?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/5762995101368324508/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=5762995101368324508' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5762995101368324508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/5762995101368324508'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/09/kuki-distribuicao-linux-sob-medida-para.html' title='Kuki: distribuição Linux sob medida para netbooks Acer Aspire One, baseada no Ubuntu'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-4638010981832446362</id><published>2009-09-09T12:31:00.000-07:00</published><updated>2009-10-13T09:51:36.265-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netscape'/><category scheme='http://www.blogger.com/atom/ns#' term='w3c'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='mosaic'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Browsers: uma breve história - Parte II</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Entra o Netscape&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Marc Andreessen, vendo o potencial para a web se tornando muito maior do que era até então, viu uma oportunidade de construir um navegador muito melhor do que o Mosaic, e assim o fez. Netscape, também conhecido como Mozilla, foi lançado em outubro de 1994. Foi legal. Isso permitiu-lhe alterar as cores de links e links visitados. Foi possível adicionar cores de fundo e gráficos. Não mais páginas cinzas com links em azul e vermelho! Claro, se você ainda estava usando Mosaic, você ficaria de fora disso na medida em que esses novos recursos apareciam. A maioria dos autores de páginas web (ainda a serem referidos como web designers) simplesmente adicionariam um texto ou um gráfico dizendo que "melhor visualizado em Netscape" para suas páginas (no futuro mudariam o texto para Internet Explorer!).&lt;br /&gt;&lt;br /&gt;Entretanto, houve um problema. A World Wide Web Consortium, que é uma organização que determina e aprova as normas de codificação de HTML. Apesar do W3C pretender adicionar a maioria dos recursos que o Netscape incluiu no seu navegador, eles ainda não tinham decidido, ou lançado o novo padrão HTML, que incluiu alguns desses novos elementos. O Netscape tinha sacado a arma. Apesar das objeções técnicas dos puristas, todo mundo estava empolgado com os novos recursos, e realmente não importava se estava ou não aprovados pelo W3C, o Netscape fazia. Não demorou muito tempo e o Netscape 2.0 foi lançado com outro conjunto de novos recursos de formatação, tais como "tables", "frames" e o temido tag "blink". As coisas estavam avançando rapidamente, e não se pensava muito como alguns desses novos recursos afetariam os navegadores mais antigos, que muitas pessoas ainda utilizavam. Esta tendência iria crescer mais e mais problemática no futuro com a inclusão do JavaScript, Java applets, e muitos outros elementos de página web mais complexos.&lt;br /&gt;&lt;br /&gt;Agora que a aparência de uma página web poderia ser (um pouco) controlada, os designers começaram a ter um interesse real pela web. Muitos designers não tinham conhecimento de questões de compatibilidade de navegadores, mas este não era um grande problema, desde que havia apenas um browser dominante. Além disso, o usuário típico da web não tinha grandes expectativas de como uma página da Web poderia ser exibida no seu navegador. Se um site não fosse cinza genérico era considerado bem desenhado (pode?).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;A guerra fria começa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Que coisa está acontecendo no mundo dos computadores, e não é nele próprio?", gritou Bill Gates, e logo o Microsoft Internet Explorer 1.0 nasceu. Anti-trust de lado, a world wide web estava agora engajada em uma guerra civil entre duas facções entrincheiradas, com facões e foices à mão: os Rebeldes Netscape e o Império do IE. De repente, havia dois grandes jogadores cada um tentando superar o outro em capacidades. Dois caminhos muito divergentes surgiram. O padrão HTML controlado pelo World Wide Web Consortium foi deixado na poeira; apenas sobre cada aspecto de como uma página da web trabalhava diferente entre o Netscape e o IE interessava. Por exemplo, alguns dos mais avançados recursos de programação introduzida pela Netscape usava JavaScript. I.E. decidiu que iria usar VB Script em vez de JavaScript. Agora o que tinham os desenvolvedores a fazer? Se quisessem um pop-up de uma janela, usariam código em JavaScript ou VB Script? Durante algum tempo, eles foram obrigados a escolher qual o navegador era o melhor para um determinado site, ou outro código de duas versões de cada página para satisfazer ambos os navegadores.&lt;br /&gt;&lt;br /&gt;Como se esses caminhos divergentes não fossem difíceis o suficiente para lidar com as forças do mercado causada pelo Netscape e IE as "novas" versões betas de seus softwares eram quase mensais. Tradicionalmente, quando uma empresa lança um "beta" do produto, é geralmente para um pequeno grupo de desenvolvedores, de "testers" com o propósito de encontrar e erradicar bugs e problemas antes que ele seja liberado para o público. No caso do Netscape e I.E. eles usaram o público como um grupo de "beta testers", liberando o software "bugado", software instável mesmo, para os usuários em geral. Portanto, agora os desenvolvedores não só teriam de determinar como é que iriam apoiar os vários navegadores, mas também como evitar a colisão das versões beta "bugadas" que estavam em circulação constante. Muitas vezes, eles teriam código de uma página web com um "hack" para contornar um problema específico em um browser. Claro que na próxima versão, o bug poderia ser corrigido (ou não), fazendo o "hack" no site existente ser quebrado e, "fixo" na próxima versão do navegador. Uma balbúrdia.&lt;br /&gt;&lt;br /&gt;Antes de jogar toda a culpa no Netscape e no IE, precisamos perceber que eles estavam apenas respondendo a um mercado que estava exigindo novos recursos mais rapidamente do que razoavelmente poderiam ser produzidos. Eles queriam layouts "cool", melhores gráficos, rollovers, animação e todos os sinos e assobios que Netscape e IE podiam fazer possível. Uma das características mais importantes exigidas nas página pelos web designers (ops!) e usuários foi a capacidade de controlar o tipo e layout de sites. Netscape e I.E. ambos responderam através de várias maneiras para controlar estes elementos. Evidentemente, cada navegador implementou as características com pequenas diferenças, e onde um pedaço de HTML podia funcionar bem no Netscape, ele podia não funcionar no IE, e vice-versa.&lt;br /&gt;&lt;br /&gt;A capacidade teórica de controle de design foi aumentando, e assim usuários de sites na Internet começaram a se acostumar (e finalmente esperando) com "cool layouts" e com maravilhosos recursos interativos. Designers estavam sob constante pressão para os "uau" dos clientes e visitantes do site com os seus desenhos. Quanto mais eles tentaram impressionar com elementos de design complexo e original, mais difícil se tornou para implementar os projetos, especialmente em ambos os navegadores.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://cazo-tec.blogspot.com/2009/09/browsers-uma-breve-historia-parte-i.html"&gt;Parte I &lt;/a&gt;       &lt;a href="http://cazo-tec.blogspot.com/2009/10/browsers-uma-breve-historia-parte-iii.html"&gt;    Parte III&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-4638010981832446362?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/4638010981832446362/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=4638010981832446362' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4638010981832446362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4638010981832446362'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/09/borwsers-uma-breve-historia-parte-ii.html' title='Browsers: uma breve história - Parte II'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-2567482504929455351</id><published>2009-09-04T11:41:00.000-07:00</published><updated>2009-10-13T08:48:44.715-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netscape'/><category scheme='http://www.blogger.com/atom/ns#' term='mosaic'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Browsers: uma breve história - Parte I</title><content type='html'>&lt;span style="font-size:85%;"&gt;Hoje quando cheguei ao trabalho, começamos algumas conversas sobre buscadores, e, falei que usei bastante o HotBot, que pra minha admiração, ainda existe (www.hotbot.com), e logo em seguida, lembramos do Altavista... e a conversa descambou pro browsers, ou navegadores. Lembro de ter participado do segundo ponto de internet no Pará, no Museu Emilio Goeldi, usando uma linha discada de 9600bps num US Robotics courrier... mas voltemos aos browsers, pois juntei algumas "escrivinhações", que vão abaixo. E vou contar essa história toda em partes.&lt;br /&gt;&lt;br /&gt;Em 1989, &lt;span style="font-style: italic;"&gt;Tim Berners-Lee&lt;/span&gt;, do CERN (o laboratório europeu para física de partículas) começou a desenvolver uma tecnologia para compartilhamento de informações usando documentos em texto &lt;span style="font-style: italic;"&gt;hyperlink&lt;/span&gt;. Ele baseou sua nova linguagem na já bem estabelecida &lt;span style="font-style: italic;"&gt;Standard Generalized Markup Language&lt;/span&gt; (SGML) - um padrão de intercâmbio de dados comerciais - e batizou-a de &lt;span style="font-style: italic;"&gt;HyperText Markup Language&lt;/span&gt; (HTML). Ele também escreveu protocolos de comunicações para formar a espinha dorsal do seu novo sistema de informações em hipertexto, o qual denominou &lt;span style="font-style: italic;"&gt;World Wide Web&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A Internet e a World Wide Web seguramente constarão em qualquer lista das mais importantes e profundas criações da humanidade. No passado, a maioria dos aplicativos de computador era executada em aplicaões &lt;span style="font-style: italic;"&gt;stand-alone&lt;/span&gt;, ou seja, computadores que não estavam conectados uns aos outros. Hoje em dia, podem-se escrever aplicativos para se comunicar com as centenas de milhões de comutadores do mundo. A Internet mistura as tecnologias de computação e de comunicações. Isso facilita nosso trabalho. Torna acessível a informação instantaneamente e de modo coveniente, possibilitando que os indivíduos e as pequenas empresas sejam conhecidos em todo o mundo. A Internet está mudando a maneira de se fazer negócios. As pessoas podem pesquisar os melhores preços sobre qualquer produto e serviço. Comunidades com interesses em comum podem se manter em contato umas com as outras. Os pesquisadores podem conhecer instataneamente os últimos avanços ocorridos no mundo, podem ver fotos e imagens de Marte quase em tempo real.&lt;br /&gt;&lt;br /&gt;O desenvolvimento Web nada seria se não fossem os navegadores. Claro que sem eles ainda estaríamos de volta aos dias do Lynx - alguém se lembra do antigo navegador somente modo texto? Navegadores têm feito da web o que ela é hoje, mas eles também têm feito o desenvolvimento de sites para a web um negócio extremamente complicado.&lt;br /&gt;&lt;br /&gt;Voltemos, voltemos,... em 1993, Marc Andreessen (criador do Netscape) estava trabalhando no antecessor do Netscape "Mosaic". A Web já existia, mas a linguagem da web, HTML, ainda estava em sua infância. Durante esse tempo, o navegador Mosaic adicionou um novo recurso que levou à corrida dos sites de 1995-96: as imagens. O navegador Mosaic podia apresentar gráficos em uma página web. De repente, não-geeks começaram a se interessar pela web, o que começou tudo. Também deu o primeiro tiro em uma guerra de navegadores que tem continuado até hoje. De repente, os autores de páginas web tinham um problema. Agora que eles poderiam usar elementos gráficos como botões de navegação, como é que todos os usuários da web somente com o navegador de texto Lynx poderiam visualizar a página? Ou sobre aqueles usuários que usavam um modem 9600kbps para transmissão de imagens com o recurso de imagens desligado? Felizmente houve um elemento simples de resolver este problema: a tag "ALT". Se um autor da página web acrescentasse o texto "ALT" a uma imagem, o navegador de texto só iria mostrar o texto no lugar do gráfico. Claro que nem todos os autores de páginas web sabiam disso, ou mesmo se soubessem, se preocuparam em adicionar a tag "ALT".&lt;br /&gt;&lt;br /&gt;Problemas de compatibilidade do navegador como este estava destinado a se tornar a maldição da existência de um desenvolvedor web.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://cazo-tec.blogspot.com/2009/09/borwsers-uma-breve-historia-parte-ii.html"&gt;&lt;span style="font-size:85%;"&gt;Parte II&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-2567482504929455351?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/2567482504929455351/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=2567482504929455351' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/2567482504929455351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/2567482504929455351'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/09/browsers-uma-breve-historia-parte-i.html' title='Browsers: uma breve história - Parte I'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3636952269196284607</id><published>2009-08-05T06:03:00.000-07:00</published><updated>2009-08-05T06:06:09.872-07:00</updated><title type='text'>Kent Beck diz: "No Tests?"</title><content type='html'>&lt;span style="font-size:85%;"&gt;Ok, melhor explicar isso:&lt;br /&gt;    &lt;a href="http://twitter.com/KentBeck"&gt;Kent Beck&lt;/a&gt; sugere a abolição de testes para pequenos projetos.&lt;br /&gt;&lt;br /&gt;Discussão sobre isso por &lt;a href="http://twitter.com/mlevison"&gt;Mark Levison&lt;/a&gt;, &lt;a href="http://www.infoq.com/news/2009/06/test-or-not"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Testes são como muitas coisas em software, uma questão de julgamento ("sensibilidade"?).&lt;br /&gt;&lt;br /&gt;Nesse quesito, concordo com número, gênero e grau com Kent.&lt;br /&gt;&lt;br /&gt;Se você está numa fase exploratória... simplesmente tentando novas ideias para ver se pode se comprometer com&lt;br /&gt;essa ou aquela abordagem, por que usar TDD, por exemplo?&lt;br /&gt;&lt;br /&gt;Agora, se você é muito apegado ao design e fazendo um trabalho exploratório, e você prefere TDD - então use-o! Use o melhor de seu julgamento para fazer a decisão baseada na sua situação atual.&lt;br /&gt;&lt;br /&gt;Em tempo: não sou um "expert" em TDD, até comprei o livro que achei certo, mas tenho feito poucas coisas.&lt;br /&gt;&lt;br /&gt;Para mim, prefiro ser pragmático, NÃO dogmático. Eu prefiro usar meu cérebro para fazer o que faz mais sentido em todas as circunstâncias, não é uma cega fidelidade a um modelo de processo para processo. Se fazendo "concepção e codificação" funciona melhor para você e sua equipe para dar consistência às ideias, vá em frente. Só não se esqueça de voltar atrás e "fazer as coisas certas", uma vez que você vai se comprometer a uma abordagem que vai ficar no código.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3636952269196284607?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3636952269196284607/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3636952269196284607' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3636952269196284607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3636952269196284607'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/08/kent-beck-diz-no-tests.html' title='Kent Beck diz: &quot;No Tests?&quot;'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3938766816450585553</id><published>2009-08-04T13:51:00.001-07:00</published><updated>2009-08-26T07:58:42.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jkd7'/><title type='text'>Diversity of opinions on JDK 7</title><content type='html'>&lt;span style="font-size:85%;"&gt;JDK 7 is the next major Java release. In this post over at the editor's blog at java.net, a recent poll reveals the perception among some in the Java community with respect to this release. The voting on the question 'What's your view of the emerging JDK 7?' revealed the following:&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;* 10.4% (51 votes) - It's a major step forward&lt;br /&gt;     * 30.3% (148 votes) - It includes some important features&lt;br /&gt;     * 16.3% (80 votes) - It's a typical JDK release&lt;br /&gt;     * 41.5% (203 votes) - The most significant problems are not addressed&lt;br /&gt;     * 1.2% (6 votes) - Other&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="font-size:85%;"&gt;Beside this vote, the poll also gathered more open ended responses in regards to JDK 7 which also show a wide diversity of opinions on this release.&lt;br /&gt;&lt;br /&gt;Read the entire post entitled 'Poll Reveals Diversity of Opinions on JDK 7', &lt;a href="http://weblogs.java.net/blog/editors/archives/2009/07/poll_reveals_di.html"&gt;here&lt;/a&gt;.&lt;a href="http://weblogs.java.net/blog/editors/archives/2009/07/poll_reveals_di.html" target="_blank"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3938766816450585553?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3938766816450585553/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3938766816450585553' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3938766816450585553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3938766816450585553'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/08/diversity-of-opinions-on-jdk-7.html' title='Diversity of opinions on JDK 7'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3499757475032451718</id><published>2009-08-04T06:45:00.001-07:00</published><updated>2009-08-04T06:45:39.740-07:00</updated><title type='text'>Métricas</title><content type='html'>&lt;span style="font-size:85%;"&gt;E eu tenho esses pensamentos sobre métricas...&lt;br /&gt;&lt;br /&gt;O desafio que eu vejo não é tanto sobre como recolher métricas no desenvolvimento de software. Vários anos usei métricas (quem lembra do famoso ciclomático?) quando trabalhava em sistemas de missão crítica e sempre tentei deixar o meu código e modelos de implementação tão bom quanto possível, sem ser muito louco por tudo.&lt;br /&gt;&lt;br /&gt;O que é um bom nível de métrica? Sim, isso todos nós sabemos, "Você não pode melhorar o que você não mede."&lt;br /&gt;&lt;br /&gt;Mas o que estamos tentando melhorar? Qualidade? Confiabilidade? Agilidade para fazer alterações? Lucro?&lt;br /&gt;&lt;br /&gt;O que fazer para correlacionar uma medição a um resultado desejado? Podemos vincular um conjunto de métricas e o seu impacto sobre as metas comerciais para o software? Menos complexidade igual a mais lucro e mais (felizes) clientes?&lt;br /&gt;&lt;br /&gt;Ou vamos parar logo para que "sensibilidade" (métricas) atinjam "qualidade" e, presumo que se medirmos uma determinada aplicação para satisfazer o "direito" no nível de qualidade, o valor comercial irá naturalmente seguir?&lt;br /&gt;&lt;br /&gt;Este é um dilema difícil para a nossa indústria. Mas temos que começar por algum lado.&lt;br /&gt;&lt;br /&gt;No mundo da engenharia, existem medidas que podem ser vinculados ao desempenho desejado e custo. Precisamos de algo semelhante que queremos ver maduro, e não apenas saias-justas, desculpas e "sensibilidade" técnicas; muito menos aves de mau agouro (embora acho essas aves úteis).&lt;br /&gt;&lt;br /&gt;Estou certo que algumas pessoas têm isso como uma ciência ... e para eles, deve ser uma bela vantagem competitiva que é provavelmente difícil para partilhar publicamente.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3499757475032451718?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3499757475032451718/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3499757475032451718' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3499757475032451718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3499757475032451718'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/08/metricas.html' title='Métricas'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8788257476499655269</id><published>2009-07-22T07:25:00.000-07:00</published><updated>2009-08-26T07:59:41.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome os'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>O Google Chrome OS e a comunidade</title><content type='html'>&lt;span style="font-size:85%;"&gt;Tradução do artigo original da LWN, de Jonathan Cobert: &lt;i&gt;&lt;br /&gt;&lt;br /&gt;“No dia 7 de julho, o Google contou ao mundo sobre um projeto chamado “Google Chrome OS”. É um novo sistema operacional, feito para rodar (a princípio) em netbooks. Como era de se esperar do Google, vai haver uma forte ênfase em aplicativos web; parece que o Google vem trabalhando bastante em uma inicialização rápida, na segurança e em uma interface de usuário simplificada. O Google promete abrir o código lá para o fim do ano; espera-se a comercialização do produto para o segundo semestre de 2010. A maior parte da imprensa vê o Chrome OS como um ataque direto à Microsoft, e é provável que seja mesmo.&lt;br /&gt;Por Jonathan Corbet”&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;em&gt;Publicado originalmente no: &lt;/em&gt;&lt;a href="http://lwn.net/Articles/340555/"&gt;&lt;em&gt;lwn.net&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8788257476499655269?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8788257476499655269/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8788257476499655269' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8788257476499655269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8788257476499655269'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/07/o-google-chrome-os-e-comunidade.html' title='O Google Chrome OS e a comunidade'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3397800565904095265</id><published>2009-07-14T08:36:00.000-07:00</published><updated>2009-07-14T10:19:38.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='criptografia'/><category scheme='http://www.blogger.com/atom/ns#' term='keytool'/><category scheme='http://www.blogger.com/atom/ns#' term='jks'/><category scheme='http://www.blogger.com/atom/ns#' term='keystore'/><title type='text'>Instalando um certificado SSL</title><content type='html'>&lt;span style="font-size:85%;"&gt;      As vezes, procuramos por coisas simples, executamos, testamos, produzimos e, "largamos" o recém-adquirido conhecimento em algum canto obscuro de nossa mente, que pelo pouco uso, é abandonado de vez pelo cérebro... e aqui estava eu a procurar novamente como importar um Certificado, colocar uma &lt;span style="font-style: italic;"&gt;keypass&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;password&lt;/span&gt;) para abrir, fazer o handshaking e estabelecer a confiança entre as partes; bom, agora postei aqui pro meu consumo e de outros que tenham a mesma necessidade. Primeiro, alguém fornece um P7B, de onde você teria que extrair os *.cer, ou simplesmente já recebemos o certificado, ou ainda baixamos diretamente, clicando no tal cadeado que aparece nos navegadores, quando acessamos uma URI via HTTPS. Você também pode adquirir um Certificado SSL de uma certificadora como Verisign ou Thawte ou ACRB, Serasa, etc. Essas empresas oferecem excelentes documentações e instruções sobre como instalar o certificado em seu website... mas, as vezes acontece algo diferente, e nesse quesito, taí uma coisa chata pra se lidar: JCE.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Podemos ter uma importação pura e simples de um certificado, onde somente a chave pública é enviada ao servidor; no exemplo abaixo, procedimento para a importação de um certificado emitido pelo SERASA:&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;keytool &lt;span class="re5"&gt;-import&lt;/span&gt; &lt;span class="re5"&gt;-alias&lt;/span&gt; serasa &lt;span class="re5"&gt;-file&lt;/span&gt; serasa.cer&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Será requisitado que você entre com uma &lt;i&gt;password&lt;/i&gt;... essa password será a chave privada da &lt;i&gt;keystore&lt;/i&gt;; ele só servirá para abrir o certificado do SERASA, onde contém a chave pública. &lt;/span&gt;&lt;/p&gt; &lt;div dir="ltr" style="text-align: left;"&gt;&lt;div class="source-bash"  style="font-family:monospace;"&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;Enter keystore password:&lt;br /&gt;Re-enter new password:&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Quando aparecer "&lt;span style="font-weight: bold;"&gt;Trust this certificate? [no]:&lt;/span&gt;", escreva yes&lt;enter&gt;; após a &lt;span style="font-style: italic;"&gt;password&lt;/span&gt; e o &lt;span style="font-style: italic;"&gt;yes&lt;/span&gt;, ele mostrará qual &lt;span style="font-style: italic;"&gt;chain root&lt;/span&gt; foi importada... &lt;/enter&gt;&lt;/span&gt;&lt;/p&gt; &lt;div dir="ltr" style="text-align: left;"&gt;&lt;div class="source-bash"  style="font-family:monospace;"&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;Owner: &lt;span class="re2"&gt;CN=&lt;/span&gt;Autoridade Certificadora Raiz Brasileira, &lt;span class="re2"&gt;ST=&lt;/span&gt;DF, &lt;span class="re2"&gt;L=&lt;/span&gt;Brasilia, &lt;span class="re2"&gt;OU=&lt;/span&gt;Instituto Nacional de Tecnologia da Informacao - ITI, &lt;span class="re2"&gt;O=&lt;/span&gt;ICP-Brasil, &lt;span class="re2"&gt;C=&lt;/span&gt;BR&lt;br /&gt;Issuer: &lt;span class="re2"&gt;CN=&lt;/span&gt;Autoridade Certificadora Raiz Brasileira, &lt;span class="re2"&gt;ST=&lt;/span&gt;DF, &lt;span class="re2"&gt;L=&lt;/span&gt;Brasilia, &lt;span class="re2"&gt;OU=&lt;/span&gt;Instituto Nacional de Tecnologia da Informacao - ITI, &lt;span class="re2"&gt;O=&lt;/span&gt;ICP-Brasil, &lt;span class="re2"&gt;C=&lt;/span&gt;BR&lt;br /&gt;Serial number: &lt;span class="nu0"&gt;4&lt;/span&gt;&lt;br /&gt;Valid from: Fri Nov &lt;span class="nu0"&gt;30&lt;/span&gt; &lt;span class="nu0"&gt;10&lt;/span&gt;:&lt;span class="nu0"&gt;58&lt;/span&gt;:&lt;span class="nu0"&gt;00&lt;/span&gt; BRST &lt;span class="nu0"&gt;2001&lt;/span&gt; &lt;span class="kw1"&gt;until&lt;/span&gt;: Wed Nov &lt;span class="nu0"&gt;30&lt;/span&gt; &lt;span class="nu0"&gt;21&lt;/span&gt;:&lt;span class="nu0"&gt;59&lt;/span&gt;:&lt;span class="nu0"&gt;00&lt;/span&gt; BRST &lt;span class="nu0"&gt;2011&lt;/span&gt;&lt;br /&gt;Certificate fingerprints:&lt;br /&gt;MD5:  &lt;span class="nu0"&gt;96&lt;/span&gt;:&lt;span class="nu0"&gt;89&lt;/span&gt;:7D:&lt;span class="nu0"&gt;61&lt;/span&gt;:D1:&lt;span class="nu0"&gt;55&lt;/span&gt;:2B:&lt;span class="nu0"&gt;27&lt;/span&gt;:E2:5A:&lt;span class="nu0"&gt;39&lt;/span&gt;:B4:2A:6C:&lt;span class="nu0"&gt;44&lt;/span&gt;:6F&lt;br /&gt;SHA1: 8E:FD:CA:BC:&lt;span class="nu0"&gt;93&lt;/span&gt;:E6:1E:&lt;span class="nu0"&gt;92&lt;/span&gt;:5D:4D:1D:ED:&lt;span class="nu0"&gt;18&lt;/span&gt;:1A:&lt;span class="nu0"&gt;43&lt;/span&gt;:&lt;span class="nu0"&gt;20&lt;/span&gt;:A4:&lt;span class="nu0"&gt;67&lt;/span&gt;:A1:&lt;span class="nu0"&gt;39&lt;/span&gt;&lt;br /&gt;Signature algorithm name: SHA1withRSA&lt;br /&gt;Version: &lt;span class="nu0"&gt;3&lt;/span&gt;&lt;br /&gt;Extensions:&lt;br /&gt;&lt;span class="co0"&gt;#1: ObjectId: 2.5.29.15 Criticality=true&lt;/span&gt;&lt;br /&gt;KeyUsage &lt;span class="br0"&gt;[&lt;/span&gt;&lt;br /&gt;Key_CertSign&lt;br /&gt;Crl_Sign&lt;br /&gt;&lt;span class="co0"&gt;#2: ObjectId: 2.5.29.19 Criticality=true&lt;/span&gt;&lt;br /&gt;BasicConstraints:&lt;span class="br0"&gt;[&lt;/span&gt;&lt;br /&gt;CA:&lt;span class="kw2"&gt;true&lt;/span&gt;&lt;br /&gt;PathLen:&lt;span class="nu0"&gt;2147483647&lt;/span&gt;&lt;br /&gt;&lt;span class="co0"&gt;#3: ObjectId: 2.5.29.14 Criticality=false&lt;/span&gt;&lt;br /&gt;SubjectKeyIdentifier &lt;span class="br0"&gt;[&lt;/span&gt;&lt;br /&gt;KeyIdentifier &lt;span class="br0"&gt;[&lt;/span&gt;&lt;br /&gt;&lt;span class="nu0"&gt;0000&lt;/span&gt;: 8A FA F1 &lt;span class="nu0"&gt;57&lt;/span&gt; &lt;span class="nu0"&gt;84&lt;/span&gt; &lt;span class="nu0"&gt;11&lt;/span&gt; &lt;span class="nu0"&gt;13&lt;/span&gt; &lt;span class="nu0"&gt;35&lt;/span&gt;   &lt;span class="nu0"&gt;90&lt;/span&gt; &lt;span class="nu0"&gt;42&lt;/span&gt; FA &lt;span class="nu0"&gt;57&lt;/span&gt; &lt;span class="nu0"&gt;49&lt;/span&gt; &lt;span class="nu0"&gt;54&lt;/span&gt; &lt;span class="nu0"&gt;69&lt;/span&gt; 0D  ...W...5.B.WITi.&lt;br /&gt;&lt;span class="nu0"&gt;0010&lt;/span&gt;: A4 C4 F0 &lt;span class="nu0"&gt;37&lt;/span&gt;                                        ...7&lt;br /&gt;&lt;span class="co0"&gt;#4: ObjectId: 2.5.29.31 Criticality=false&lt;/span&gt;&lt;br /&gt;CRLDistributionPoints &lt;span class="br0"&gt;[&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;[&lt;/span&gt;DistributionPoint:&lt;br /&gt;&lt;span class="br0"&gt;[&lt;/span&gt;URIName: http:&lt;span class="sy0"&gt;//&lt;/span&gt;acraiz.icpbrasil.gov.br&lt;span class="sy0"&gt;/&lt;/span&gt;LCRacraiz.crl&lt;span class="br0"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class="co0"&gt;#5: ObjectId: 2.5.29.32 Criticality=false&lt;/span&gt;&lt;br /&gt;CertificatePolicies &lt;span class="br0"&gt;[&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;[&lt;/span&gt;CertificatePolicyId: &lt;span class="br0"&gt;[&lt;/span&gt;2.16.76.1.1.0&lt;span class="br0"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;[&lt;/span&gt;PolicyQualifierInfo: &lt;span class="br0"&gt;[&lt;/span&gt;&lt;br /&gt;qualifierID: 1.3.6.1.5.5.7.2.1&lt;br /&gt;qualifier: &lt;span class="nu0"&gt;0000&lt;/span&gt;: &lt;span class="nu0"&gt;16&lt;/span&gt; 2C &lt;span class="nu0"&gt;68&lt;/span&gt; &lt;span class="nu0"&gt;74&lt;/span&gt; &lt;span class="nu0"&gt;74&lt;/span&gt; &lt;span class="nu0"&gt;70&lt;/span&gt; 3A 2F   2F &lt;span class="nu0"&gt;61&lt;/span&gt; &lt;span class="nu0"&gt;63&lt;/span&gt; &lt;span class="nu0"&gt;72&lt;/span&gt; &lt;span class="nu0"&gt;61&lt;/span&gt; &lt;span class="nu0"&gt;69&lt;/span&gt; 7A 2E  .,http:&lt;span class="sy0"&gt;//&lt;/span&gt;acraiz.&lt;br /&gt;&lt;span class="nu0"&gt;0010&lt;/span&gt;: &lt;span class="nu0"&gt;69&lt;/span&gt; &lt;span class="nu0"&gt;63&lt;/span&gt; &lt;span class="nu0"&gt;70&lt;/span&gt; &lt;span class="nu0"&gt;62&lt;/span&gt; &lt;span class="nu0"&gt;72&lt;/span&gt; &lt;span class="nu0"&gt;61&lt;/span&gt; &lt;span class="nu0"&gt;73&lt;/span&gt; &lt;span class="nu0"&gt;69&lt;/span&gt;   6C 2E &lt;span class="nu0"&gt;67&lt;/span&gt; 6F &lt;span class="nu0"&gt;76&lt;/span&gt; 2E &lt;span class="nu0"&gt;62&lt;/span&gt; &lt;span class="nu0"&gt;72&lt;/span&gt;  icpbrasil.gov.br&lt;br /&gt;&lt;span class="nu0"&gt;0020&lt;/span&gt;: 2F &lt;span class="nu0"&gt;44&lt;/span&gt; &lt;span class="nu0"&gt;50&lt;/span&gt; &lt;span class="nu0"&gt;43&lt;/span&gt; &lt;span class="nu0"&gt;61&lt;/span&gt; &lt;span class="nu0"&gt;63&lt;/span&gt; &lt;span class="nu0"&gt;72&lt;/span&gt; &lt;span class="nu0"&gt;61&lt;/span&gt;   &lt;span class="nu0"&gt;69&lt;/span&gt; 7A 2E &lt;span class="nu0"&gt;70&lt;/span&gt; &lt;span class="nu0"&gt;64&lt;/span&gt; &lt;span class="nu0"&gt;66&lt;/span&gt;        &lt;span class="sy0"&gt;/&lt;/span&gt;DPCacraiz.pdf&lt;br /&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;  &lt;span class="br0"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Trust this certificate? &lt;span class="br0"&gt;[&lt;/span&gt;no&lt;span class="br0"&gt;]&lt;/span&gt;:  &lt;span class="kw2"&gt;yes&lt;/span&gt;&lt;br /&gt;Certificate was added to keystore&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Para listar a chave importada... &lt;/span&gt;&lt;/p&gt; &lt;div dir="ltr" style="text-align: left;"&gt;&lt;div class="source-bash"  style="font-family:monospace;"&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;keytool &lt;span class="re5"&gt;-list&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Será requisitada a password e posterior listagem... neste ponto, a &lt;span style="font-style: italic;"&gt;keystore&lt;/span&gt; se encontra em $HOME/.keystore &lt;/span&gt;&lt;/p&gt; &lt;div dir="ltr" style="text-align: left;"&gt;&lt;div class="source-bash"  style="font-family:monospace;"&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;Enter keystore password:&lt;br /&gt;Keystore &lt;span class="kw3"&gt;type&lt;/span&gt;: JKS&lt;br /&gt;Keystore provider: SUN&lt;br /&gt;Your keystore contains &lt;span class="nu0"&gt;1&lt;/span&gt; entry&lt;br /&gt;serasa, &lt;span class="nu0"&gt;18&lt;/span&gt;&lt;span class="sy0"&gt;/&lt;/span&gt;&lt;span class="nu0"&gt;02&lt;/span&gt;&lt;span class="sy0"&gt;/&lt;/span&gt;&lt;span class="nu0"&gt;2008&lt;/span&gt;, trustedCertEntry,&lt;br /&gt;Certificate fingerprint &lt;span class="br0"&gt;(&lt;/span&gt;MD5&lt;span class="br0"&gt;)&lt;/span&gt;: &lt;span class="nu0"&gt;96&lt;/span&gt;:&lt;span class="nu0"&gt;89&lt;/span&gt;:7D:&lt;span class="nu0"&gt;61&lt;/span&gt;:D1:&lt;span class="nu0"&gt;55&lt;/span&gt;:2B:&lt;span class="nu0"&gt;27&lt;/span&gt;:E2:5A:&lt;span class="nu0"&gt;39&lt;/span&gt;:B4:2A:6C:&lt;span class="nu0"&gt;44&lt;/span&gt;:6F&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Melhor renomear o arquivo &lt;span style="font-style: italic;"&gt;.keystore&lt;/span&gt; para um nome que se entenda... como: &lt;/span&gt;&lt;/p&gt; &lt;div dir="ltr" style="text-align: left;"&gt;&lt;div class="source-bash"  style="font-family:monospace;"&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kw2"&gt;mv&lt;/span&gt; ..&lt;span class="sy0"&gt;/&lt;/span&gt;..&lt;span class="sy0"&gt;/&lt;/span&gt;.keystore serasa.jks&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Usaremos então como &lt;span style="font-style: italic;"&gt;keystore,&lt;/span&gt; &lt;b&gt;serasa.jks&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Dica&lt;/b&gt;: No Windows a &lt;i&gt;keystore&lt;/i&gt; fica armazena no &lt;i&gt;userdir&lt;/i&gt;, e.g., C:\Documents and Settings\ccsilva. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span class="mw-headline"&gt;Mais tem um detalhe...&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Obviamente você já deve ter percebido que precisará da senha da keystore, criptografada, para depois abrir o certificado e retirar a assinatura; ela não pode aparecer em &lt;b&gt;plain-text&lt;/b&gt; e normalmente vai numa tag de &lt;b&gt;properties&lt;/b&gt;, como abaixo: &lt;/span&gt;&lt;/p&gt; &lt;div dir="ltr" style="text-align: left;"&gt;&lt;div class="source-bash"  style="font-family:monospace;"&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;user.&lt;span class="re2"&gt;jks=&lt;/span&gt;gHUrtR3FCQbigUmFOY&lt;span class="sy0"&gt;/&lt;/span&gt;eXKxOtcajYEhp+&lt;span class="re2"&gt;g=&lt;/span&gt;=&lt;span class="re2"&gt;RO6SyDLaAQ=&lt;/span&gt;=&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Então, se procurar no Google, vai ser uma tristeza, pois se deparará com um monte de códigos, e outras tantas coisas "jogado ao céu" e, tudo fica complicado... e era para criptografar uma senha somente, não se preocupe, você somente vai precisar de um pequeno aplicativo, disponível &lt;a href="http://tec.tools.com.br/Criptografia.zip" class="external text" title="http://wiki.tools.com.br/index.php/Imagem:Criptografia.jar" rel="nofollow"&gt;aqui&lt;/a&gt; &lt;span style="font-style: italic;"&gt;(cortesia do Marcelo Torres)&lt;/span&gt;. Depois descompacte e execute:&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;$ java &lt;/span&gt;&lt;span class="re5"  style="font-size:85%;"&gt;-jar&lt;/span&gt;&lt;span style="font-size:85%;"&gt; criptografia.jar&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;Agora use copy/paste e faça bom uso da senha criptografada...&lt;br /&gt;Obviamente, quem leu até aqui, irá perceber que precisa de algum&lt;br /&gt;conhecimento adquirido, para enfim, fazer bom uso do post, práticoe sintético.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3397800565904095265?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3397800565904095265/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3397800565904095265' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3397800565904095265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3397800565904095265'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/07/instalando-um-certificado-ssl.html' title='Instalando um certificado SSL'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-668331918759712420</id><published>2009-07-10T04:35:00.000-07:00</published><updated>2009-07-10T15:59:01.433-07:00</updated><title type='text'>Instalando o Pronto! Gerenciador de Projetos Ágeis</title><content type='html'>Depois que um amigo me falou do &lt;a href="http://pronto.bluesoft.com.br/Home"&gt;Pronto!&lt;/a&gt; para ajudar na infraestrutura do workflow do SCRUM, fui imediatamente baixá-lo, mas o projeto ainda se encontra num "estado" inicial, sendo disponibilizado para download um "modelo" para desenvolvedores, baseado num repositório git; as instruções para fazer um download a partir do Git, encontram-se &lt;a href="http://github.com/luizfaias/pronto-agile/tree/master"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Pronto! é um sistema para controle de tarefas baseado no método ágil &lt;/em&gt;&lt;a href="http://pronto.bluesoft.com.br/Scrum" target="_blank"&gt;&lt;em&gt;Scrum&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. É um projeto de código livre que conta com a &lt;/em&gt;&lt;a href="http://pronto.bluesoft.com.br/Como-Colaborar"&gt;&lt;em&gt;sua colaboração&lt;/em&gt;&lt;/a&gt;!"&lt;br /&gt;&lt;br /&gt;Fiquei imediatamente interessado, pois "browseando" o git, descobri que ele usa o &lt;a href="http://www.zkoss.org/"&gt;ZK&lt;/a&gt;, um framework RIA que estou também interessado em conhecer. Fui em frente:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;para os pacientes&lt;/span&gt;, comece lendo aqui...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;a) baixei o plugin do git pro &lt;a href="http://www.eclipse.org/downloads/"&gt;Eclipse&lt;/a&gt;, apontei pra lá e baixei o projeto, já todo prontinho... antes tive que instalar o maven2 e também um plugin do Maven2 para Eclipse;&lt;br /&gt;&lt;br /&gt;b) depois fiz toda a configuração do maven2 para ele criar um repositório local (M2_HOME); já havia mexido com o maven, então foi tranquilo.&lt;br /&gt;&lt;br /&gt;c) gerei o &lt;strong&gt;pronto-xxx.war&lt;/strong&gt;, joguei dentro do &lt;a href="http://sourceforge.net/projects/jboss/files"&gt;jboss 4.2.3.GA&lt;/a&gt;, usando &lt;a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u14-oth-JPR@CDS-CDS_Developer"&gt;jdk 1.6.0_u14&lt;/a&gt;, criei a base de dados usando um &lt;em&gt;script&lt;/em&gt; fornecido pelo pacote, seguindo a &lt;a href="http://pronto.bluesoft.com.br/Instalacao"&gt;sugestão&lt;/a&gt; do site do Pronto!;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;os impacientes&lt;/span&gt;, começam lendo aqui...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;d) coloquei o &lt;a href="http://luizfaias.github.com/pronto/postgresql-8.3-604.jdbc3.jar"&gt;jdbc&lt;/a&gt; (baixe a "8.3-605 JDBC 3") do &lt;a href="http://www.postgresql.org/download/"&gt;Postgres&lt;/a&gt;, que é o banco de dados recomendado e tenho boa familiaridade com ele, dentro do &lt;em&gt;JBOSS_HOME/server/pronto/lib&lt;/em&gt; (veja que sempre trabalho com uma cópia do &lt;em&gt;default&lt;/em&gt; - &lt;em&gt;JBOSS_HOME/server/default&lt;/em&gt; - e mantenho ela sempre íntegra);&lt;br /&gt;&lt;br /&gt;e) alterei o IP para o Postgress no DataSource, alterei o nome para &lt;a href="http://tec.tools.com.br/pronto-ds.xml"&gt;pronto-ds.xml&lt;/a&gt; e copiei para &lt;em&gt;JBOSS_HOME/server/pronto/deploy&lt;/em&gt; (pode ser qualquer nome, desde que tenha o sufixo *-ds.xml);&lt;br /&gt;&lt;br /&gt;f) criei um pequeno &lt;span style="font-style: italic;"&gt;bootstrap&lt;/span&gt; para o &lt;span style="font-style: italic;"&gt;startup&lt;/span&gt; do JBoss, já que não costumo alterar os arquivos e nem a infraestrutura, chamado &lt;a href="http://luizfaias.github.com/pronto/run-pronto.sh"&gt;run-pronto.sh&lt;/a&gt;, que deve ser colocado em JBOSS_HOME/bin; verifique esse arquivo e veja se precisa alteração, como IP por ex.;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;#!/bin/bash&lt;br /&gt;&lt;/em&gt;&lt;em&gt;# alguns snippets para o bootstrap do Pronto&lt;/em&gt;&lt;br /&gt;&lt;em&gt;JAVA_OPTS="-Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k"&lt;br /&gt;# exportar a variavel JBOSS_HOME (por garantia)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;export JBOSS_HOME=/opt/jboss-4.2.3.GA&lt;br /&gt;# inicia o JBoss numa instancia e num IP especificos&lt;/em&gt;&lt;br /&gt;&lt;em&gt;#./run.sh -c pronto --host 192.168.0.185&lt;/em&gt;&lt;br /&gt;&lt;em&gt;# IP padrao localhost&lt;/em&gt;&lt;br /&gt;&lt;em&gt;./run.sh -c pronto --host localhost&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;g) &lt;a href="http://luizfaias.github.com/pronto/pronto-agile-1.0.0.war"&gt;baixar&lt;/a&gt; e renomear o arquivo &lt;span style="font-style: italic;"&gt;web archive&lt;/span&gt; para &lt;strong&gt;pronto.war&lt;/strong&gt; e copiar em &lt;em&gt;JBOSS_HOME/server/pronto/deploy&lt;/em&gt;;&lt;br /&gt;&lt;br /&gt;h) para testar, siga abaixo:&lt;br /&gt;&lt;em&gt;cd JBOSS_HOME/bin&lt;/em&gt;&lt;br /&gt;&lt;em&gt;./run-pronto.sh&lt;/em&gt;&lt;br /&gt;&lt;em&gt;pelo browser: &lt;/em&gt;&lt;a href="http://localhost:8080/pronto"&gt;&lt;/a&gt;&lt;a href="http://localhost:8080/pronto-agile"&gt;&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt;&lt;a href="http://localhost:8080/pronto"&gt;http://localhost:8080/pronto&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;usuário: &lt;strong&gt;admin&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;senha: &lt;strong&gt;admin&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;para aqueles que tempo = ouro&lt;/span&gt;!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;i) baixe um &lt;em&gt;bundle&lt;/em&gt; &lt;strong&gt;pronto+jboss&lt;/strong&gt; &lt;a href="http://luizfaias.github.com/pronto/jboss423-pronto.zip"&gt;aqui&lt;/a&gt;; descompacte em qualquer lugar, verifique o &lt;em&gt;pronto-ds.xml&lt;/em&gt; e o &lt;em&gt;run-pronto.sh&lt;/em&gt;, para coisas de IP,... startup, aponte o browser para &lt;a href="http://localhost:8080/pronto-agile"&gt;http://localhost:8080/pronto-agile&lt;/a&gt; e enjoy it!&lt;br /&gt;&lt;br /&gt;Pronto!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-668331918759712420?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/668331918759712420/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=668331918759712420' title='10 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/668331918759712420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/668331918759712420'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/07/instalando-o-pronto-gerenciador-de.html' title='Instalando o Pronto! Gerenciador de Projetos Ágeis'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8126094924869084253</id><published>2009-07-08T10:58:00.000-07:00</published><updated>2009-07-08T11:06:14.351-07:00</updated><title type='text'>Guides: Providing your SSH Key - Linux</title><content type='html'>&lt;h2 id="linux"&gt;&lt;span style="font-size:85%;"&gt;Linux&lt;/span&gt;&lt;/h2&gt;    &lt;h3&gt;&lt;span style="font-size:85%;"&gt;Step 1: Check to see if you already have a public/private key pair for your user.&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-size:85%;"&gt;   If you do, it will be in your &lt;code&gt;~/.ssh&lt;/code&gt; directory. &lt;/span&gt;&lt;pre class="console"&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;&lt;br /&gt;&lt;span&gt;[~]&lt;/span&gt;$ &lt;span class="command"&gt;cd .ssh&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[~/.ssh]&lt;/span&gt;$ &lt;span class="command"&gt;ls&lt;/span&gt;&lt;br /&gt;config                id_dsa.pub&lt;br /&gt;id_dsa                known_hosts&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt; Key pairs are always named like &lt;code&gt;something&lt;/code&gt; and &lt;code&gt;something.pub&lt;/code&gt;. The &lt;code&gt;something&lt;/code&gt; file is your private key and must be kept secret. The &lt;code&gt;something.pub&lt;/code&gt; file is your public key, and this is what you’ll belong public domain.&lt;br /&gt;&lt;/span&gt;&lt;h3&gt;&lt;span style="font-size:85%;"&gt;Step 2: Generate a public/private dsa key pair if you don’t already have one.&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-size:85%;"&gt;   This is done with the &lt;code&gt;ssh-keygen&lt;/code&gt; program:  &lt;/span&gt;&lt;pre class="console"&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;&lt;br /&gt;&lt;span&gt;[~/.ssh]&lt;/span&gt;$ &lt;span class="command"&gt;ssh-keygen -t dsa&lt;/span&gt;&lt;br /&gt;Generating public/private dsa key pair.&lt;br /&gt;Enter file in which to save the key (/home/tom/.ssh/id_dsa): &lt;span class="command"&gt;&lt;enter&gt;&lt;/span&gt;&lt;br /&gt;Enter passphrase (empty for no passphrase): &lt;span class="command"&gt;&lt;enter&gt;&lt;/span&gt;&lt;br /&gt;Enter same passphrase again: &lt;span class="command"&gt;&lt;enter&gt;&lt;/span&gt;&lt;br /&gt;Your identification has been saved in /home/tom/.ssh/id_dsa.&lt;br /&gt;Your public key has been saved in /home/tom/.ssh/id_dsa.pub.&lt;br /&gt;The key fingerprint is: &lt;hex&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;        &lt;h3 id="linux-3"&gt;&lt;span style="font-size:85%;"&gt;Step 3: Upload your public key to Someone.&lt;/span&gt;&lt;/h3&gt;    &lt;p&gt;&lt;span style="font-size:85%;"&gt;Copy your public key to the clipboard so you can easily paste it into your web browser. If you have xclip installed then:&lt;/span&gt;&lt;/p&gt;   &lt;pre class="console"&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;&lt;span&gt;[~/.ssh]&lt;/span&gt;$ &lt;span class="command"&gt;cat id_dsa.pub | xclip&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;The &lt;code&gt;xclip&lt;/code&gt; command copies whatever is sent to it via &lt;span class="caps"&gt;STDIN&lt;/span&gt; to the clipboard (you may have to use &lt;i&gt;xclip -selection clipboard&lt;/i&gt;), ensuring that you won’t have any extraneous newlines or other problems. If you don’t have xclip then either install it using your OS’s package manager or print out the public key to a terminal so that you can manually copy the key data.&lt;/span&gt;&lt;/p&gt;   &lt;pre class="console"&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;&lt;span&gt;[~/.ssh]&lt;/span&gt;$ &lt;span class="command"&gt;cat id_dsa.pub&lt;/span&gt;&lt;br /&gt;ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1FlHRbbxXIv/hLDTeJczlEqGNt0oFcoPEEENHThzP5ku&lt;br /&gt;PDsitSSUH2MATP014G/3BzaI9pdnhf02MSEcmtmIKXrm05/dzxEmp9yOY32YHyk6/rLUGGTJuWOpGt3J&lt;br /&gt;6H5LWxq9yeRUuFG/pCRH3+KxOyzasSHXfXJaC5v7wPxUdAeg9k0jwsUjnqUcYvzo5+GwCXV9dIwY3Sr/&lt;br /&gt;OrL2l8SCdSWyd3PLufJXKQHlouHB0NI/+G/QjWmkB8c1PJh/VuIe36mqv82V9XXKvYNaVWwz5Sg6aY9u&lt;br /&gt;p2lgDEme+AFdPPjOnkdF6OHCr7ymKg6c/B2YCbOW7QN/L4uAdVOhTNnJMQ== tom@volcano&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;Copy the entirety of the public key to the clipboard. It is important that there are no newlines in the key (copying from the &lt;code&gt;cat&lt;/code&gt; output in your console should work properly. Now you can simply select the place box  and paste in your public key!&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8126094924869084253?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8126094924869084253/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8126094924869084253' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8126094924869084253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8126094924869084253'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/07/guides-providing-your-ssh-key-linux.html' title='Guides: Providing your SSH Key - Linux'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-4133230977415106845</id><published>2009-07-01T15:45:00.000-07:00</published><updated>2009-07-01T16:00:13.340-07:00</updated><title type='text'>Sistemas Operacionais (Tanenbaum/Woodhull)</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;A quem possa interessar...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;» Dados do Ebook&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;&lt;br /&gt;Nome do Livro: Sistemas Operacionais - Projeto e Implementação - 2ª Edição&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Nome do Autor: Andrews Tanenbaum e Albert Woodhull&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Gênero: Sistemas Operacionais&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Ano de Lançamento: 2008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Editora: Artmed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;» Sinopse&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;&lt;br /&gt;Sistemas Operacionais: Projeto e Implementação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Texto introdutório sobre sistemas operacionais mais vendidos do mundo foi atualizado para refletir os avanços do MINIX 3, agora mais simples, mais confiável e mais completo. Nesta edição, foram adicionados e aprofundados aspectos relacionados a segurança e confiabilidade em sistemas de computação.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Oferecendo um ótimo equilíbrio entre teoria e prática, este livro continua sendo a melhor fonte para todos que buscam entender como os sistemas operacionais funcionam. Diferencia-se dos outros livros da área por apresentar de forma clara, objetiva e concisa os conceitos essenciais de sistemas operacionais.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;»Informações&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;&lt;br /&gt;Nº de páginas: 340&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Tamanho: 25.5MB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;Formato: pdf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana,sans-serif;"&gt;&lt;b&gt;Download&lt;/b&gt;: &lt;a href="http://rapidshare.com/files/238393646/SistemasOperacionais.erivanildo.thegenius.us.rar" target="_blank"&gt;AQUI&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(136, 136, 136);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-4133230977415106845?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/4133230977415106845/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=4133230977415106845' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4133230977415106845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4133230977415106845'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/07/sistemas-operacionais-tanenbaumwoodhull.html' title='Sistemas Operacionais (Tanenbaum/Woodhull)'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8819097471540024894</id><published>2009-06-25T11:23:00.001-07:00</published><updated>2009-06-25T11:24:01.724-07:00</updated><title type='text'>Apt-Proxy alivia a conexão com a internet</title><content type='html'>&lt;span style="font-family:Arial;font-size:85%;"&gt;Se a conexão de internet da sua empresa vive caindo com as atualizações constantes das distribuições Ubuntu, lançadas de 6 em 6 meses, o apt-proxy é a solução ideal para montar um servidor capaz de baixar os arquivos e disponibilizá-los via rede local para vários clientes.  Se um arquivo não estiver nesse cache local, o aplicativo apt-proxy baixa-o automaticamente. Ele mantém os arquivos por um tempo definido e depois apaga-os para liberar espaço.&lt;br /&gt;&lt;br /&gt;O primeiro passo da instalação é baixar o apt-proxy.  Execute o comando como root:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102);"&gt;# apt-get install apt-proxy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O próximo passo é especificar algumas informações no arquivo de configuração. Abra o  arquivo de configuração &lt;span style="font-weight: bold;"&gt;/etc/apt-proxy/apt-proxy-v2.conf &lt;/span&gt;com seu editor preferido. Os parâmetros mais importantes são:&lt;br /&gt;&lt;br /&gt;1)    IP e porta que serão utilizados na rede local&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102);"&gt;;; IP da rede local do servidor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102);"&gt;address = 192.168.1.10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102);"&gt;;; Porta &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102);"&gt;port = 9999&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2)    Diretório onde os arquivos serão armazenados&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;;; Diretório de cache&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;cache_dir = /var/cache/apt-proxy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3)    Por quanto tempo ele manterá os arquivos baixados&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;;; Frequência de verificação&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;cleanup_freq = 1d&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;;;Tempo máximo de permanência dos arquivos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt; max_age = 120d&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;;; Número máximo de versões de um mesmo pacote armazenadas&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;max_versions = 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4)    Quais repositórios serão utilizados&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;;; Servidores de backend, em ordem de procedência&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;[ubuntu]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;;; Ubuntu archive&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;backends = http://archive.ubuntu.com/ubuntu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;                     http://br.archive.ubuntu.com/ubuntu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;min_refresh_delay = 15m&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;[ubuntu-security]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;;; Ubuntu security updates&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;backends = http://security.ubuntu.com/ubuntu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;min_refresh_delay = 1m&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Nos clientes, adicione o repositório:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;deb http://192.168.1.10:9999/ubuntu jaunty main restricted &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;deb-src http://192.168.1.10:9999/ubuntu jaunty-security main &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora é só fazer as atualizações normalmente, em todas as máquinas. Para acompanhar os arquivos do servidor, veja o diretório &lt;span style="font-weight: bold;"&gt;/var/cache/apt-proxy/ubuntu/pool/&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8819097471540024894?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8819097471540024894/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8819097471540024894' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8819097471540024894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8819097471540024894'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/06/apt-proxy-alivia-conexao-com-internet.html' title='Apt-Proxy alivia a conexão com a internet'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-6219519758729950667</id><published>2009-06-02T04:21:00.000-07:00</published><updated>2009-06-02T05:09:06.798-07:00</updated><title type='text'>Como se Tornar um Hacker</title><content type='html'>&lt;span style="font-size:85%;"&gt;This is the Portuguese translation of &lt;a href="http://www.ccil.org/%7Eesr/faqs/hacker-howto.html"&gt;Hacker Howto&lt;/a&gt;, originally writen by Eric S. Raymond.&lt;br /&gt;Esta é a tradução de &lt;a href="http://www.ccil.org/%7Eesr/faqs/hacker-howto.html"&gt;Hacker Howto&lt;/a&gt;, que foi escrito por Eric S. Raymond.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Vai para &lt;a href="http://www.ccil.org/%7Eesr/faqs"&gt;Eric's FAQs Page&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;-----&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Nota: infelizmente, agora que resolvi publicar essa tradução, todos os links estão quebrados, exceto o do Jargon File; não descobri o motivo, mas decidi manter os links, caso eles retornem (duvido!)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;-----&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Por que esse documento?&lt;/span&gt;&lt;br /&gt;Como editor do &lt;a href="http://www.ccil.org/jargon"&gt;Jargon File&lt;/a&gt;, freqüentemente recebo pedidos por email de entusiasmados iniciantes, perguntando (de fato) "como eu posso aprender a ser um grande hacker?". Estranhamente, parece que não existem FAQs ou documentos na Web que se refiram a essa importante questão, então aqui está o meu.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;O que é um hacker?&lt;/span&gt;&lt;br /&gt;O Jargon File contém um monte de definições do termo "hacker", a maioria deles tendo a ver com aptidão técnica e um prazer em resolver problemas e superar limites. Se você quer saber como se tornar um hacker, entretanto, apenas duas são realmente relevantes.&lt;br /&gt;&lt;br /&gt;Existe uma comunidade, uma cultura compartilhada, de programadores experts e gurus de rede cuja história remonta a decadas atrás, desde os primeiros minicomputadores de tempo compartilhado e os primeiros experimentos na ARPAnet. Os membros dessa cultura deram origem ao termo "hacker". Hackers construíram a Internet. Hackers fizeram do sistema operacional Unix o que ele é hoje. Hackers mantém a Usenet. Hackers fazem a World Wide Web funcionar. Se você é parte desta cultura, se você contribuiu a ela e outras pessoas o chamam de hacker, você é um hacker.&lt;br /&gt;&lt;br /&gt;A mentalidade hacker não é confinada a esta cultura do hacker-de-software. Há pessoas que aplicam a atitude hacker em outras coisas, como eletrônica ou música -- na verdade, você pode encontrá-la nos níveis mais altos de qualquer ciência ou arte. Hackers de software reconhecem esses espíritos aparentados de outros lugares e podem chamá-los de "hackers" também -- e alguns alegam que a natureza hacker é realmente independente da mídia particular em que o hacker trabalha. Mas no restante deste documento, nos concentraremos nas habilidades e dos hackers de software, e nas tradições da cultura compartilhada que deu origem ao termo `hacker'.&lt;br /&gt;&lt;br /&gt;Existe outro grupo de pessoas que se dizem hackers, mas não são. São pessoas (adolescentes do sexo masculino, na maioria) que se divertem invadindo computadores e fraudando o sistema telefônico. Hackers de verdade chamam essas pessoas de "crackers", e não tem nada a ver com eles. Hackers de verdade consideram os crackers preguiçosos, irresponsáveis, e não muito espertos, e alegam que ser capaz de quebrar sistemas de segurança torna alguém hacker tanto quanto fazer ligação direta em carros torna alguém um engenheiro automobilístico. Infelizmente, muitos jornalistas e escritores foram levados a usar, erroneamente, a palavra "hacker" para descrever crackers; isso é muito irritante para os hackers de verdade.&lt;br /&gt;&lt;br /&gt;A diferença básica é esta: hackers constroem coisas, crackes as destroem.&lt;br /&gt;&lt;br /&gt;Se você quer ser um hacker, continue lendo. Se você quer ser um cracker, vá ler o newsgroup alt.2600 e se prepare para se dar mal depois de descobrir que você não é tão esperto quanto pensa. E isso é tudo que eu digo sobre crackers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A Atitude Hacker&lt;/span&gt;&lt;br /&gt;Hackers resolvem problemas e constróem coisas, e acreditam na liberdade e na ajuda mútua voluntária. Para ser aceito como um hacker, você tem que se comportar de acordo com essa atitude. E para se comportar de acordo com essa atitude, você tem que realmente acreditar nessa atitude.&lt;br /&gt;&lt;br /&gt;Mas se você acha que cultivar a atitude hacker é somente um meio para ganhar aceitação na cultura, está enganado. Tornar-se o tipo de pessoa que acredita nessas coisas é importante para você -- para ajudá-lo a aprender e manter-se motivado. Assim como em todas as artes criativas, o modo mais efetivo para se tornar um mestre é imitar a mentalidade dos mestres -- não só intelectualmente como emocionalmente também.&lt;br /&gt;&lt;br /&gt;Então, se você quer ser um hacker, repita as seguinte coisas até que você acredite nelas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. O mundo está repleto de problemas fascinantes esperando para serem resolvidos.&lt;/span&gt;&lt;br /&gt;Ser hacker é muito divertido, mas é um tipo de diversão que necessita de muito esforço. Para haver esforço é necessário motivação. Atletas de sucesso retiram sua motivação de uma espécie de prazer físico em trabalhar seus corpos, em tentar ultrapassar seus próprios limites físicos. Analogamente, para ser um hacker você precisa ter uma emoção básica em resolver problemas, afiar suas habilidades e exercitar sua inteligência. Se você não é o tipo de pessoa que se sente assim naturalmente, você precisará se tornar uma para ser um hacker. Senão, você verá sua energia para "hackear" sendo esvaída por distrações como sexo, dinheiro e aprovação social.&lt;br /&gt;&lt;br /&gt;(Você também tem que desenvolver uma espécie de fé na sua própria capacidade de aprendizado -- crer que, mesmo que você não saiba tudo o que precisa para resolver um problema, se souber uma parte e aprender a partir disso, conseguirá aprender o suficiente para resolver a próxima parte -- e assim por diante, até que você termine.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Não se deve resolver o mesmo problema duas vezes.&lt;/span&gt;&lt;br /&gt;Mentes criativas são um recurso valioso e limitado. Não devem ser desperdiçadas reinventando a roda quando há tantos problemas novos e fascinantes por aí.&lt;br /&gt;&lt;br /&gt;Para se comportar como um hacker, você tem que acreditar que o tempo de pensamento dos outros hackers é precioso -- tanto que é quase um dever moral compartilhar informação, resolver problemas e depois dar as soluções, para que outros hackers possam resolver novos problemas ao invés de ter que se preocupar com os antigos indefinidamente. (Você não tem que acreditar que é obrigado a dar toda a sua produção criativa, ainda que hackers que o fazem sejam os mais respeitados pelos outros hackers. Não é inconsistente com os valores do hacker vender o suficiente da sua produção para mantê-lo alimentado e pagar o aluguel e computadores. Não é inconsistente usar suas habilidades de hacker para sustentar a família ou mesmo ficar rico, contanto que você não esqueça que é um hacker.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Tédio e trabalho repetitivo são nocivos.&lt;/span&gt;&lt;br /&gt;Hackers (e pessoas criativas em geral) não podem ficar entediadas ou ter que fazer trabalho repetitivo, porque quando isso acontece significa que eles não estão fazendo o que apenas eles podem fazer -- resolver novos problemas. Esse desperdício prejudica a todos. Portanto, tédio e trabalho repetitivo não são apenas desagradáveis, mas nocivos também.&lt;br /&gt;&lt;br /&gt;Para se comportar como um hacker, você tem que acreditar nisso de modo a automatizar as partes chatas tanto quanto possível, não apenas para você como para as outras pessoas (principalmente outros hackers).&lt;br /&gt;&lt;br /&gt;(Há uma exceção aparente a isso. Às vezes, hackers fazem coisas que podem parecer repetitivas ou tediosas para um observador, como um exercício de "limpeza mental", ou para adquirir uma habilidade ou ter uma espécie particular de experiência que não seria possível de outro modo. Mas isso é por opção -- ninguém que consiga pensar deve ser forçado ao tédio.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Liberdade é uma coisa boa.&lt;/span&gt;&lt;br /&gt;Hacker são naturalmente anti-autoritários. Qualquer pessoa que lhe dê ordens pode impedi-lo de resolver qualquer que seja o problema pelo qual você está fascinado -- e, dado o modo em que a mente autoritária funciona, geralmente arranjará alguma desculpa espantosamente idiota isso. Então, a atitude autoritária deve ser combatida onde quer que você a encontre, para que não sufoque a você e a outros hackers.&lt;br /&gt;&lt;br /&gt;(Isso não é a mesma coisa que combater toda e qualquer autoridade. Crianças precisam ser orientadas, e criminosos, detidos. Um hacker pode aceitar alguns tipos de autoridade a fim de obter algo que ele quer mais que o tempo que ele gasta seguindo ordens. Mas isso é uma barganha restrita e consciente; não é o tipo de sujeição pessoal que os autoritários querem.)&lt;br /&gt;&lt;br /&gt;Pessoas autoritárias prosperam na censura e no segredo. E desconfiam de cooperação voluntária e compartilhamento de informação -- só gostam de "cooperação" que eles possam controlar. Então, para se comportar como um hacker, você tem que desenvolver uma hostilidade instintiva à censura, ao segredo, e ao uso da força ou mentira para compelir adultos responsáveis. E você tem que estar disposto a agir de acordo com esta crença.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Atitude não substitui competência.&lt;/span&gt;&lt;br /&gt;Para ser um hacker, você tem que desenvolver algumas dessas atitudes. Mas apenas ter uma atitude não fará de você um hacker, assim como não o fará um atleta campeão ou uma estrela de rock. Para se tornar um hacker é necessário inteligência, prática, dedicação, e trabalho duro.&lt;br /&gt;&lt;br /&gt;Portanto, você tem que aprender a desconfiar de atitude e respeitar todo tipo de competência. Hackers não deixam posers gastar seu tempo, mas eles idolatram competência -- especialmente competência em "hackear", mas competência em qualquer coisa é boa. A competência em habilidades que poucos conseguem dominar é especialmente boa, e competência em habilidades que involvem agudeza mental, perícia e concentração é a melhor.&lt;br /&gt;&lt;br /&gt;Se você reverenciar competência, gostará de desenvolvê-la em si mesmo -- o trabalho duro e dedicação se tornará uma espécie de um intenso jogo, ao invés de trabalho repetitivo. E isso é vital para se tornar um hacker.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Habilidades básicas do hacker&lt;/span&gt;&lt;br /&gt;A atitude hacker é vital, mas habilidades são ainda mais vitais. Atitude não substitui competência, e há uma certo conjunto de habilidades que você precisa ter antes que um hacker sonhe em lhe chamar de um.&lt;br /&gt;&lt;br /&gt;Esse conjunto muda lentamente com o tempo, de acordo com a criação de novas habilidades. Por exemplo, costumava incluir programação em linguagem de máquina, e até recentemente não incluía HTML. Mas agora é certo que inclui o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Aprenda a programar.&lt;/span&gt;&lt;br /&gt;Essa é, claro, a habilidade básica do hacker. Em 1997, a linguagem que você absolutamente precisa aprender é C (apesar de não ser a que você deve aprender primeiro). Mas você não é um hacker e nem mesmo um programador se você souber apenas uma linguagem -- você tem que aprender a pensar sobre problemas de programação de um modo geral, independentemente de qualquer linguagem. Para ser um hacker de verdade, você precisa ter chegado ao ponto de conseguir aprender uma nova linguagem em questão de dias, relacionando o que está no manual ao que você já sabe. Isso significa que você deve aprender várias linguagens bem diferentes.&lt;br /&gt;&lt;br /&gt;Além de C, você também deve aprender pelo menos LISP e Perl (e Java está tentando pegar um lugar nessa lista). Além de serem as linguagens mais importantes para hackear, cada uma delas representa abordagens à programaçaão bem diferentes, e todas o educarão em pontos importantes.&lt;br /&gt;&lt;br /&gt;Eu nao posso lhe dar instruções completas sobre como aprender a programar aqui -- é uma habilidade complexa. Mas eu posso lhe dizer que livros e cursos também não servirão (muitos, talvez a maioria dos melhores hacker são auto-didatas). O que servirá é (a) ler código e (b) escrever código.&lt;br /&gt;&lt;br /&gt;Aprender a programar é como aprender a escrever bem em linguagem natural. A melhor maneira é ler um pouco dos mestres da forma, escrever algumas coisas, ler mais um monte, escrever mais um monte, ler mais um monte, escrever... e repetir até que seu estilo comece a desenvolver o tipo de força e economia que você vê em seus modelos.&lt;br /&gt;&lt;br /&gt;Achar bom código para ler costumava ser difícil, porque havia poucos programas grandes disponíveis em código-fonte para que hackers novatos pudessem ler e mexer. Essa situação mudou dramaticamente; open-source software (software com código-fonte aberto), ferramentas de programação, e sistemas operacionais (todos feitos por hackers) estão amplamente disponíveis atualmente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Pegue um dos Unixes livres e aprenda a mexer.&lt;/span&gt;&lt;br /&gt;Estou assumindo que você tem um computador pessoal ou tem acesso a um (essas crianças de hoje em dia tem tão facilmente :-)). O passo mais importante que um novato deve dar para adquirir habilidades de hacker é pegar uma cópia do Linux ou de um dos BSD-Unixes, o instalar em um PC, e rodá-lo.&lt;br /&gt;&lt;br /&gt;Sim, há outros sistemas operacionais no mundo além do Unix. Porém, eles são distribuídos em forma binária -- você não consegue ler o código, e você não consegue modificá-lo. Tentar aprender a "hackear" em DOS, Windows ou MacOS é como tentar aprender a dançar com o corpo engessado.&lt;br /&gt;&lt;br /&gt;Além disso, Unix é o sistema operacional da Internet. Embora você possa aprender a usar a Internet sem conhecer Unix, você não pode ser um hacker sem entendê-lo. Por isso, a cultura hacker, atualmente, é fortemente centralizada no Unix. (Não foi sempre assim, e alguns hackers da velha guarda não gostam da situação atual, mas a simbiose entre o Unix e a Internet se tornou tão forte que até mesmo o músculo da Microsoft não parece ser capaz de ameacá-la seriamente.)&lt;br /&gt;&lt;br /&gt;Então, pegue um Unix -- eu gosto do Linux, mas existem outros caminhos. Aprenda. Rode. Mexa. Acesse a Internet através dele. Leia o código. Modifique o código. Você terá ferramentas de programação (incluindo C, Lisp e Perl) melhores do qualquer sistema operacional da Microsoft pode sonhar em ter, você se divertirá, e irá absorver mais conhecimento do que perceber, até que você olhará para trás como um mestre hacker.&lt;br /&gt;&lt;br /&gt;Para aprender mais sobre Unix, veja &lt;a href="http://www.ccil.org/%7Eesr/faqs/loginataka.html"&gt;The Loginataka&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para pegar o Linux, veja &lt;a href="http://www.ssc.com/linux/resources/ftp.html"&gt;Where To Get Linux&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Aprenda a usar a World Wide Web e escrever em HTML.&lt;/span&gt;&lt;br /&gt;A maioria das coisas que a cultura hacker tem construído funciona "invisivelmente", ajudando no funcionamento de fábricas, escritórios e universidades sem nenhum óbvio na vida dos não-hackers. A Web é a grande exceção, o enorme e brilhante brinquedo dos hackers que até mesmo políticos admitem que está mudando o mundo. Por esse motivo (e vários outros também) você precisa a aprender como trabalhar na Web.&lt;br /&gt;&lt;br /&gt;Isso não significa apenas aprender a mexer em um browser (qualquer um faz isso), mas aprender a programar em HTML, a linguagem de markup da Web. Se você não sabe programar, escrever em HTML lhe ensinará alguns hábitos mentais que o ajudarão. Então faça uma home page.&lt;br /&gt;&lt;br /&gt;Mas apenas ter uma home page não chega nem perto de torná-lo um hacker. A Web está repleta de home pages. A maioria delas é inútil, porcaria sem conteúdo -- porcaria muito bem apresentada, note bem, mas porcaria mesmo assim (mais sobre esse assunto em The HTML Hell Page).&lt;br /&gt;&lt;br /&gt;Para valer a pena, sua página deve ter conteúdo -- deve ser interessante e/ou útil para outros hackers. E isso nos leva ao próximo assunto...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Status na Cultura Hacker&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como a maioria das culturas sem economia monetária, a do hacker se baseia em reputação. Você está tentando resolver problemas interessantes, mas quão interessantes eles são, e se suas soluções são realmente boas, é algo que somente seus iguais ou superiores tecnicamente são normalmente capazes de julgar.&lt;br /&gt;&lt;br /&gt;Conseqüentemente, quando você joga o jogo do hacker, você aprende a marcar pontos principalmente pelo que outros hackers pensam da sua habilidade (por isso você não é hacker até que outros hackers lhe chamem assim). Esse fato é obscurecido pela imagem solitária que se faz do trabalho do hacker; e também por um tabu hacker-cultural que é contra admitir que o ego ou a aprovação externa estão envolvidas na motivação de alguém.&lt;br /&gt;&lt;br /&gt;Especificamente, a cultura hacker é o que os antropologistas chamam de cultura de doação. Você ganha status e reputação não por dominar outras pessoas, nem por ser bonito, nem por ter coisas que as pessoas querem, mas sim por doar coisas. Especificamente, por doar seu tempo, sua criatividade, e os resultados de sua habilidade.&lt;br /&gt;&lt;br /&gt;Há basicamente cinco tipos de coisas que você pode fazer para ser respeitado por hackers:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Escrever open-source software.&lt;/span&gt;&lt;br /&gt;O primeiro (o mais central e mais tradicional) é escrever programas que outros hackers achem divertidos ou úteis, e dar o código-fonte para que toda a cultura hacker use.&lt;br /&gt;&lt;br /&gt;(Nós costumávamos chamar isto de "free software", mas isso confundia muitas pessoas que não sabiam ao certo o significado de "free". Agora, muitos de nós preferem o termo "open-source" software).&lt;br /&gt;&lt;br /&gt;[nota do tradutor: "free" significa tanto "livre" como "gratuito", daí a confusão. O significado que se pretende é "livre".] Os "semi-deuses" mais venerados da cultura hacker são pessoas que escreveram programas grandes, competentes, que encontraram uma grande demanda e os distribuíram para que todos pudessem usar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Ajude a testar e depurar open-source software&lt;/span&gt;&lt;br /&gt;Também estão servindo os que depuram open-source software. Neste mundo imperfeito, inevitavelmente passamos a maior parte do tempo de desenvolvimento na fase de depuração. Por isso, qualquer autor de open-source software que pense lhe dirá que bons beta-testers (que saibam descrever sintomas claramente, localizar problemas, tolerar bugs em um lançamento apressado, e estejam dispostos a aplicar algumas rotinas de diagnóstico) valem seu peso em ouro. Até mesmo um desses beta-testers pode fazer a diferença entre uma fase de depuração virar um longo e cansativo pesadelo, ou ser apenas um aborrecimento saudável. Se você é um novato, tente achar um programa sob desenvolvimento em que você esteja interessado e seja um bom beta-tester. Há um progressão natural de ajudar a testar programas para ajudar a depurar e depois ajudar a modificá-los. Você aprenderá muito assim, e criará um bom karma com pessoas que lhe ajudarão depois.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Publique informação útil.&lt;/span&gt;&lt;br /&gt;Outra boa coisa a se fazer é coletar e filtrar informações úteis e interessantes em páginas da Web ou documentos como FAQs ("Frequently Asked Questions lists", ou listas de perguntas freqüentes), e torne-os disponíveis ao público.&lt;br /&gt;&lt;br /&gt;Mantenedores de grandes FAQs técnicos são quase tão respeitados quanto autores de open-source software.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Ajude a manter a infra-estrutura funcionando.&lt;/span&gt;&lt;br /&gt;A cultura hacker (e o desenvolvimento da Internet, quanto a isso) é mantida por voluntários. Existe muito trabalho sem glamour que precisa ser feito para mantê-la viva -- administrar listas de email, moderar grupos de discussão, manter grandes sites que armazenam software, desenvolver RFCs e outros padrões técnicos.&lt;br /&gt;&lt;br /&gt;Pessoas que fazem bem esse tipo de coisa são muito respeitadas, porque todo mundo sabe que esses serviços tomam muito tempo e não são tão divertidos como mexer em código. Fazê-los mostra dedicação.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Sirva a cultura hacker em si.&lt;/span&gt;&lt;br /&gt;Finalmente, você pode servir e propagar a cultura em si (por exemplo, escrevendo um apurado manual sobre como se tornar um hacker :-)). Você só terá condição de fazer isso depois de ter estado por aí por um certo tempo, e ter se tornado conhecido por uma das primeiras quatro coisas.&lt;br /&gt;&lt;br /&gt;A cultura hacker não têm líderes, mas têm seus heróis culturais, "chefes tribais", historiadores e porta-vozes. Depois de ter passado tempo suficiente nas trincheiras, você pode ser tornar um desses. Cuidado: hackers desconfiam de egos espalhafatosos em seus "chefes tribais", então procurar visivelmente por esse tipo de fama é perigoso. Ao invés de se esforçar pela fama, você tem que de certo modo se posicionar de modo que ela "caia" em você, e então ser modesto e cortês sobre seu status.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A Conexão Hacker/Nerd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Contrariamente ao mito popular, você não tem que ser um nerd para ser um hacker. Ajuda, entretanto, e muitos hackers são de fato nerds. Ser um proscrito social o ajuda a se manter concentrado nas coisas realmente importantes, como pensar e "hackear".&lt;br /&gt;&lt;br /&gt;Por isso, muitos hackers adotaram o rótulo "nerd", e até mesmo usam o termo (mais duro) "geek" como um símbolo de orgulho -- é um modo de declarar sua independência de expectativas sociais normais. Veja The Geek Page para discussão extensiva.&lt;br /&gt;&lt;br /&gt;Se você consegue se concentrar o suficiente em hackear para ser bom nisso, e ainda ter uma vida, está ótimo. Isso é bem mais fácil hoje do que quando era um novato nos anos 70; atualmente a cultura mainstream é muito mais receptiva a tecno-nerds. Há até mesmo um número crescente de pessoas que percebem que hackers são, freqüentemente, amantes e cônjuges de alta qualidade. Girl's Guide to Geek Guys.&lt;br /&gt;&lt;br /&gt;Se hackear o atrai porque você não vive, tudo bem -- pelo menos você não terá problemas para se concentrar. Talvez você consiga uma vida normal depois.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pontos Sobre Estilo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para ser um hacker, você tem que entrar na mentalidade hacker. Há algumas coisas que você pode fazer quando não estiver na frente de um computador e que podem ajudar. Não substituem o ato de hackear (nada substitui isso), mas muitos hackers as fazem, e sentem que elas estão ligadas de uma maneira básica com a essência do hacking.&lt;br /&gt;&lt;br /&gt;   * Leia ficção científica, romance, história, etc.&lt;br /&gt;   * Stude o Zen, e/ou faça artes marciais. (A disciplina mental parece similar em pontos importantes).&lt;br /&gt;   * Desenvolva um ouvido analítico para música. Aprenda a apreciar tipos peculiares de música. Aprenda a tocar bem algum instrumento musical, ou a cantar.&lt;br /&gt;   * Desenvolva sua apreciação de trocadilhos e jogo de palavras.&lt;br /&gt;   * Aprenda a escrever bem em sua língua nativa. (Um número surpreendente de hackers, incluindo todos os melhores que eu conheço, são bons escritores.)&lt;br /&gt;&lt;br /&gt;Quanto mais dessas coisas você já fizer, mais provável que você tenha naturalmente um material hacker. Por que essas coisas em particular não é completamente claro, mas elas são ligadas com uma mistura de habilidades dos lados esquerdo e direito do cérebro que parece ser muito importante (hackers precisam ser capazes de tanto raciocinar logicamente quanto pôr de lado, de uma hora para outra, a lógica aparente do problema).&lt;br /&gt;&lt;br /&gt;Finalmente, algumas coisas a não serem feitas.&lt;br /&gt;&lt;br /&gt;   * Não use um nome de usuário ou pseudônimo bobo e grandioso.&lt;br /&gt;   * Não entre em flame wars ("guerrinhas") na Usenet (ou em qualquer outro lugar).&lt;br /&gt;   * Não se auto-intitule um "cyberpunk", e não perca seu tempo com alguém que o faça.&lt;br /&gt;   * Não poste ou escreve email cheio de erros de ortografia e gramática.&lt;br /&gt;&lt;br /&gt;A única reputação que você conseguirá fazendo alguma dessas coisas é a de um twit [um chato, geralmente filtrado nos grupos de discussão]. Hackers tem boa memória -- pode levar anos antes que você se reabilite o suficiente para ser aceito.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Outros Recursos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Loginataka tem algumas coisas a dizer sobre o treinamento e a atitude adequados a um hacker de Unix.&lt;br /&gt;&lt;br /&gt;Eu também escrevi A Brief History Of Hackerdom.&lt;br /&gt;&lt;br /&gt;Eu escrevi um documento, &lt;a href="http://www.ccill.org/%7Eesr/writings/cathedral-bazaar/index.html"&gt;The Cathedral and the Bazaar&lt;/a&gt; ("A Catedral e o Bazar"), que explica muito sobre como o Linux e as culturas de open-source software funcionam (NT. esse livro é um ícone!).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Perguntas Freqüentes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Você me ensina como "hackear"?&lt;/span&gt;&lt;br /&gt;Desde que publiquei essa página, recebi vários pedidos por semana de pessoas querendo que eu "ensinasse tudo sobre hacking". Infelizmente, eu não tenho tempo nem energia para isso; meus próprios projetos hackers tomam 110% do meu tempo.&lt;br /&gt;&lt;br /&gt;Mesmo se eu fizesse, hacking é uma atitude e uma habilidade na qual você tem que basicamente ser auto-didata. Você verá que, embora hackers de verdade queiram lhe ajudar, eles não o respeitarão se você pedir "mastigado" tudo que eles sabem.&lt;br /&gt;&lt;br /&gt;Aprenda algumas coisas primeiro. Mostre que você está tentando, que você é capaz de aprender sozinho. Depois faça perguntas aos hackers que encontrar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Onde eu posso encontrar hackers de verdade para conversar?&lt;/span&gt;&lt;br /&gt;Bem, não no IRC, com certeza -- lá só existem flamers e crackers. A melhor maneira é encontrar um grupo de usuários local de Unix ou Linux, e freqüentar as reuniões (você pode encontrar links para várias listas de grupos de usuários na página da LDP em Sunsite).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Que linguagem devo aprender primeiro?&lt;/span&gt;&lt;br /&gt;HTML, se você ainda não souber. Existe um monte de livros sobre HTML lustrosos, modistas e ruins por aí e, infelizmente, pouquíssimos bons. O livro de que mais gosto é HTML: The Definitive Guide.&lt;br /&gt;&lt;br /&gt;Quando você estiver pronto pra começar a programar, eu recomendaria começar com Perl ou Python. C é realmente importante, mas muito mais difícil.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Mas o open-source software não deixará os programadores incapazes de ganhar a vida?&lt;/span&gt;&lt;br /&gt;Parece improvável -- até agora, a indústria de open-source software parece estar criando empregos ao invés de tirá-los. Se ter escrito um programa é ganho econômico em relação a não tê-lo escrito, um programador será pago independentemente de o programa ser livre depois de feito. E, independentemente de quanto open-source software é feito, sempre parece haver mais demanda por aplicações novas e personalizadas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Como eu começo? Onde posso pegar um Unix livre?&lt;/span&gt;&lt;br /&gt;Em outro lugar da página eu incluí ponteiros onde pegar o Linux. Para ser um hacker você precisa de motivação, iniciativa e capacidade de se educar. Comece agora...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-6219519758729950667?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/6219519758729950667/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=6219519758729950667' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/6219519758729950667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/6219519758729950667'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/06/como-se-tornar-um-hacker.html' title='Como se Tornar um Hacker'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3721372169686629418</id><published>2009-05-19T08:06:00.000-07:00</published><updated>2009-05-19T08:08:23.443-07:00</updated><title type='text'>A Computação nas "Nuvem"</title><content type='html'>&lt;span style="font-size:85%;"&gt;É fácil se perder numa conversa sobre computação em nuvem. Todos parecem ter uma nuvem, estar conectados à nuvem, estar preparados para a nuvem ou, pelo menos, estar prontos para a nuvem.&lt;br /&gt;&lt;br /&gt;Há vários jargões, mas nem tudo é papo furado. Por trás do jargão estão alguns negócios muito reais e benefícios tecnológicos, não menos que minimizar custos e maximizar o ROI (não sei porque ROI me lembra rato...).&lt;br /&gt;&lt;br /&gt;A ideia da Nuvem, é juntar todos os recursos de hardware disponivel e colocar numa sacola, sacolejar e, depois, tem-se incrementado massivamente sua capacidade em um instante... parece coisa de Mandrake! E sem gasto nenhum, apenas a energia gasta para sacolejar a sacola. Ah, mas também cria novas oportunidades, mesmo porque agora precisamos de gente com a cabeça nas Nuvens. Ele precisa "entender", que depois da socalejada, cada CPU agora processa outras tantas CPU de sistemas virtualizados, que foi a última grande buzzword, ou seja, a virtualização foi uma evaporação necessária para que se formasse a Nuvem. Mas não pense que Nuvem é um monte de imagens Xen, VirtualBox, VmWare, etc., ela é também um ecosistema emergente&lt;br /&gt;&lt;br /&gt;Para quem pensa que Nuvem é brincadeira, podem procurar em todos os "buracos" que ofertam tecnologias, e, vejam: lá estão, oferecendo "Nuvens", e mesmo que não queira, você já está envolvido na neblina, pois duvido que o onipresente Google não seja a "Home Page" da maioria; basta abrir o navegador e lá está... o Google nas Nuvens. Tem Amazon.com; agora quando se fala em web 2.x, implica falar também em Nuvem.&lt;br /&gt;&lt;br /&gt;Agora o melhor para quem pensa que Nuvem é coisa de hardware, coisa nenhuma, ela também é uma revolução na programação. O impacto imediato será uma flexibilidade sem precedentes na criação de serviços e aceleração do ciclo de desenvolvimento. Acontece que, flexibilidade em desenvolvimento pode se tornar "apertado" pelas APIs, se elas não se tornarem verdadeiramente abertas. Essa coisa de Nuvem e desenvolvimento vem-me à mente um projeto do Eclipse, chamado Buckminster, verdadeiramente desenvolvimento em Nuvem, bem antes até desse conceito de Nuvem virar buzzword (procurem sobre Buckminster na Nuvem: www.google.com).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Em resumo, Computação em Nuvem quer dizer que os recursos de TI são disponibilizados como um serviço: escalado massivamente, recursos de sistemas distribuídos horizontalmente, abstraído como serviços de IT virtual e gerenciado e configurado continuamente. Que isso, um Grid? Sim, mas um grid de serviços pra Internet, ou seja, Nuvem é um modelo arquitetural de grid pra Internet; sua tabela agora tem tuplas na China e no Hawai, mas isso não interessa, não me pertence, tá tudo na nuvem. Aliás, Nuvem não tem dono.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"In this architecture, the data is mostly resident on servers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;'somewhere on the Internet' and the application runs on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;both the 'cloud servers' and the user's browser."&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;       —Eric Schmidt in ‘Information Factories’ by G. Gilder&lt;br /&gt;&lt;br /&gt;Computação em Nuvem definido:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;"It's one of the foundations of the next generation of&lt;br /&gt;computing. . .. It's a world where the network is the plat-&lt;br /&gt;form for all computing, where everything we think of as&lt;br /&gt;a computer today is just a device that connects to the big&lt;br /&gt;computer we're building. Cloud computing is a great way&lt;br /&gt;to think about how we'll deliver computing services in the&lt;br /&gt;future."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;               —Tim O’Reilly, CEO, O’Reilly Media&lt;br /&gt;&lt;br /&gt;Agora, nós desenvolvedores, podemos dizer sem medo: Trabalho nas Nuvens! Sem analogias, pois se as fizermos, poderemos colher tempestades, raios e trovoadas, não é não?!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3721372169686629418?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3721372169686629418/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3721372169686629418' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3721372169686629418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3721372169686629418'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/05/computacao-nas-nuvem.html' title='A Computação nas &quot;Nuvem&quot;'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-86838328257824935</id><published>2009-04-24T11:57:00.000-07:00</published><updated>2009-04-24T12:34:57.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu Linux 9.04 - Download CD/DVD</title><content type='html'>&lt;span style="font-size:85%;"&gt;Ubuntu Linux 9.04 has been released and available for download. Ubuntu Linux is a community-based Linux distribution. The latest release of Ubuntu brings the best open source technologies together on one platform, with the benefit of free updates for 18 months. Also announced were the simultaneous releases of Ubuntu 9.04 Server Edition and Ubuntu 9.04 Netbook Remix (UNR).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From the website:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Ubuntu 9.04 Desktop Edition delivers a range of feature enhancements to improve the user experience. Shorter boot speeds, some as short as 25 seconds, ensure faster access to a full computing environment on most desktop, laptop and netbook models. Enhanced suspend-and-resume features also give users more time between charges along with immediate access after hibernation. Intelligent switching between Wi-Fi and 3G environments has been broadened to support more wireless devices and 3G cards, resulting in a smoother experience for most users.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's new in Ubuntu 9.04&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  * Ubuntu 9.04 includes the latest GNOME 2.26 desktop environment.&lt;br /&gt;  * Brasero is now the default disc burning utility in Nautilus.&lt;br /&gt;  * The latest X.Org server, version 1.6, is available in Jaunty. The latest Mesa 3D DRI, version 7.4, is also available.&lt;br /&gt;  * Included in Jaunty is a simple menu which can be used to set preferences for notification icons, such as where they pop up on the taskbar.&lt;br /&gt;  * A number of improvements to the Ubuntu start-up process bring significantly improved boot performance to Ubuntu 9.04.&lt;br /&gt;  * Linux kernel 2.6.28.&lt;br /&gt;  * Ext4 filesystem support.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ubuntu 9.04 Download&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can download Ubuntu Linux 9.04 via the web/ftp server or via BitTorrent (recommended).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;32 bit vs 64 bit version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  * For almost all PCs select 32 bit version. For e.g., most machines with Intel/AMD/etc type processors and almost all computers that run Microsoft Windows, as well as newer Apple Macintosh systems based on Intel processors.&lt;br /&gt;  * Choose 64 bit version to take full advantage of computers based on the AMD64 or EM64T architecture (e.g., Athlon64, Opteron, EM64T Xeon, Core 2). If you have a non-64-bit processor made by AMD, or if you need full support for 32-bit code, use the Intel x86 images instead.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ubuntu 9.04 Desktop DVD ISO download&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  * Visit mirror to &lt;a href="http://cdimage.ubuntu.com/dvd/current/jaunty-dvd-i386.iso"&gt;download Ubuntu ISO image 32 bit i386&lt;/a&gt; DVD ISO (4.2 GB)&lt;br /&gt;  * Visit mirror to&lt;a href="http://cdimage.ubuntu.com/dvd/current/jaunty-dvd-amd64.iso"&gt; download Ubuntu ISO images 64 bit&lt;/a&gt; DVD ISO (4.3 GB)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ubuntu download: Ubuntu 9.04 Desktop CD ISO download&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  * Download &lt;a href="http://mirror.anl.gov/pub/ubuntu-iso/CDs-Ubuntu/9.04/ubuntu-9.04-desktop-i386.iso"&gt;Ubuntu Linux Desktop 9.04 CD 32 bit i386&lt;/a&gt; (697M)&lt;br /&gt;  * Download &lt;a href="http://mirror.anl.gov/pub/ubuntu-iso/CDs-Ubuntu/9.04/ubuntu-9.04-desktop-amd64.iso"&gt;Ubuntu Linux Desktop 9.04 CD 64 bit&lt;/a&gt; (697M)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ubuntu Linux 9.04 DVD ISO BitTorrent download&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ubuntu Desktop 9.04 DVD ISO BitTorrent download&lt;br /&gt;&lt;br /&gt;  * Download from&lt;a href="http://ubuntu.osuosl.org/releases/9.04/ubuntu-9.04-desktop-i386.iso.torrent"&gt; BitTorrent i386 32 bit Desktop&lt;/a&gt; DVD (requires a &lt;a href="http://www.cyberciti.biz/tips/linux-command-line-bittorrent-client.html"&gt;BitTorrent client&lt;/a&gt;)&lt;br /&gt;  * Download from &lt;a href="http://ubuntu.osuosl.org/releases/9.04/ubuntu-9.04-desktop-amd64.iso.torrent"&gt;BitTorrent 64 bit Desktop&lt;/a&gt; DVD (requires a &lt;a href="http://www.cyberciti.biz/tips/linux-command-line-bittorrent-client.html"&gt;BitTorrent client&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ubuntu Server 9.04 DVD ISO BitTorrent download&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  * Download from &lt;a href="http://ubuntu.osuosl.org/releases/9.04/ubuntu-9.04-server-i386.iso.torrent"&gt;BitTorrent i386 32 bit&lt;/a&gt; DVD (requires a &lt;a href="http://www.cyberciti.biz/tips/linux-command-line-bittorrent-client.html"&gt;BitTorrent client&lt;/a&gt;)&lt;br /&gt;  * Download from &lt;a href="http://ubuntu.osuosl.org/releases/9.04/ubuntu-9.04-server-amd64.iso.torrent"&gt;BitTorrent 64 bit&lt;/a&gt; DVD (requires a &lt;a href="http://www.cyberciti.biz/tips/linux-command-line-bittorrent-client.html"&gt;BitTorrent client&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ubuntu download: Ubuntu 9.04 Server CD ISO download&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Download &lt;a href="http://mirror.anl.gov/pub/ubuntu-iso/CDs-Ubuntu/9.04/ubuntu-9.04-server-i386.iso"&gt;server install CD 32 bit ISO&lt;/a&gt; (637M)&lt;br /&gt;* Download &lt;a href="http://mirror.anl.gov/pub/ubuntu-iso/CDs-Ubuntu/9.04/ubuntu-9.04-server-amd64.iso"&gt;server install CD 64 bit ISO&lt;/a&gt; (653M)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Upgrading Ubuntu Linux using the Network ( Internet )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  * Please see step-by-step Ubuntu Linux 9.04&lt;a href="http://www.cyberciti.biz/faq/updating-intrepid-ibex-ubuntu-server/"&gt; server upgrade&lt;/a&gt; and &lt;a href="http://www.cyberciti.biz/faq/upgrade-to-ubuntu-904/"&gt;desktop upgrade&lt;/a&gt; FAQ / tutorial.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-86838328257824935?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/86838328257824935/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=86838328257824935' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/86838328257824935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/86838328257824935'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/04/ubuntu-linux-904-download-cddvd.html' title='Ubuntu Linux 9.04 - Download CD/DVD'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8878464677050966269</id><published>2009-03-27T07:01:00.000-07:00</published><updated>2009-03-27T07:15:50.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java formatter'/><title type='text'>Java - formarting number, dates, datetime, currency, locales and miscelaneous</title><content type='html'>&lt;span style="font-size:85%;"&gt;We always get stuck when formarting number, dates, datetime, currency, locales and miscelaneous; so, a friend of mine, give us some snippets.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import java.text.DateFormat;&lt;br /&gt;import java.text.DecimalFormat;&lt;br /&gt;import java.text.NumberFormat;&lt;br /&gt;import java.util.Date;&lt;br /&gt;import java.util.Locale;&lt;br /&gt;&lt;br /&gt;public class TestFormat {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;&lt;br /&gt;        // The "0" symbol shows a digit or 0 if no digit present &lt;br /&gt;        NumberFormat formatter = new DecimalFormat("000000"); &lt;br /&gt;        String s = formatter.format(-1234.567);  // -001235&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        // notice that the number was rounded up &lt;br /&gt;         &lt;br /&gt;        // The "#" symbol shows a digit or nothing if no digit present &lt;br /&gt;        formatter = new DecimalFormat("##"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -1235&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        s = formatter.format(0);                 // 0&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        formatter = new DecimalFormat("##00"); &lt;br /&gt;        s = formatter.format(0);                 // 00&lt;br /&gt;        System.out.println(s);&lt;br /&gt;         &lt;br /&gt;         &lt;br /&gt;        // The "." symbol indicates the decimal point &lt;br /&gt;        formatter = new DecimalFormat(".00"); &lt;br /&gt;        s = formatter.format(-.567);             // -.57&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        formatter = new DecimalFormat("0.00"); &lt;br /&gt;        s = formatter.format(-.567);             // -0.57&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        formatter = new DecimalFormat("#.#"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -1234.6&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        formatter = new DecimalFormat("#.######"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -1234.567&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        formatter = new DecimalFormat(".######"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -1234.567&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        formatter = new DecimalFormat("#.000000"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -1234.567000&lt;br /&gt;        System.out.println(s);&lt;br /&gt;         &lt;br /&gt;         &lt;br /&gt;        // The "," symbol is used to group numbers &lt;br /&gt;        formatter = new DecimalFormat("#,###,###"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -1,235&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        s = formatter.format(-1234567.890);      // -1,234,568&lt;br /&gt;        System.out.println(s);&lt;br /&gt;         &lt;br /&gt;        // The ";" symbol is used to specify an alternate pattern for negative values &lt;br /&gt;        formatter = new DecimalFormat("#;(#)"); &lt;br /&gt;        s = formatter.format(-1234.567);         // (1235)&lt;br /&gt;        System.out.println(s);&lt;br /&gt;         &lt;br /&gt;        // The ' symbol is used to quote literal symbols &lt;br /&gt;        formatter = new DecimalFormat("'#'#"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -#1235&lt;br /&gt;        System.out.println(s);&lt;br /&gt;        formatter = new DecimalFormat("'abc'#"); &lt;br /&gt;        s = formatter.format(-1234.567);         // -abc1235&lt;br /&gt;        System.out.println(s);&lt;br /&gt;&lt;br /&gt;        System.out.println("-------using LOCALE-------");&lt;br /&gt;        //with locale&lt;br /&gt;        {&lt;br /&gt;            Locale ptBR = new Locale("pt", "BR");&lt;br /&gt;          &lt;br /&gt;            DateFormat dateFormat =&lt;br /&gt;              DateFormat.getDateInstance(DateFormat.FULL, ptBR);&lt;br /&gt;            System.out.println(dateFormat.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            DateFormat dateFormat2 =&lt;br /&gt;                  DateFormat.getDateInstance(DateFormat.MEDIUM, ptBR);&lt;br /&gt;                System.out.println(dateFormat2.format(new Date()));&lt;br /&gt;  &lt;br /&gt;            DateFormat dateFormat3 =&lt;br /&gt;                  DateFormat.getDateInstance(DateFormat.SHORT, ptBR);&lt;br /&gt;                System.out.println(dateFormat3.format(new Date()));          &lt;br /&gt;  &lt;br /&gt;            DateFormat timeFormat =&lt;br /&gt;              DateFormat.getTimeInstance(DateFormat.SHORT, ptBR);&lt;br /&gt;            System.out.println(timeFormat.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            DateFormat timeFormat2 =&lt;br /&gt;                  DateFormat.getTimeInstance(DateFormat.MEDIUM, ptBR);&lt;br /&gt;                System.out.println(timeFormat2.format(new Date()));      &lt;br /&gt;  &lt;br /&gt;            DateFormat timeFormat3 =&lt;br /&gt;                  DateFormat.getTimeInstance(DateFormat.FULL, ptBR);&lt;br /&gt;                System.out.println(timeFormat3.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            NumberFormat numberFormat =&lt;br /&gt;              NumberFormat.getNumberInstance(ptBR); //for numbers&lt;br /&gt;            System.out.println(numberFormat.format(13.23));&lt;br /&gt;                 &lt;br /&gt;            NumberFormat moedaFormat =&lt;br /&gt;              NumberFormat.getCurrencyInstance(ptBR);  //for currencies&lt;br /&gt;            System.out.println(moedaFormat.format(13.23));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;            Locale ptBR = new Locale("es", "AR");&lt;br /&gt;          &lt;br /&gt;            DateFormat dateFormat =&lt;br /&gt;              DateFormat.getDateInstance(DateFormat.FULL, ptBR);&lt;br /&gt;            System.out.println(dateFormat.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            DateFormat dateFormat2 =&lt;br /&gt;                  DateFormat.getDateInstance(DateFormat.MEDIUM, ptBR);&lt;br /&gt;                System.out.println(dateFormat2.format(new Date()));&lt;br /&gt;  &lt;br /&gt;            DateFormat dateFormat3 =&lt;br /&gt;                  DateFormat.getDateInstance(DateFormat.SHORT, ptBR);&lt;br /&gt;                System.out.println(dateFormat3.format(new Date()));          &lt;br /&gt;  &lt;br /&gt;            DateFormat timeFormat =&lt;br /&gt;              DateFormat.getTimeInstance(DateFormat.SHORT, ptBR);&lt;br /&gt;            System.out.println(timeFormat.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            DateFormat timeFormat2 =&lt;br /&gt;                  DateFormat.getTimeInstance(DateFormat.MEDIUM, ptBR);&lt;br /&gt;                System.out.println(timeFormat2.format(new Date()));      &lt;br /&gt;  &lt;br /&gt;            DateFormat timeFormat3 =&lt;br /&gt;                  DateFormat.getTimeInstance(DateFormat.FULL, ptBR);&lt;br /&gt;                System.out.println(timeFormat3.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            NumberFormat numberFormat =&lt;br /&gt;              NumberFormat.getNumberInstance(ptBR); //for numbers&lt;br /&gt;            System.out.println(numberFormat.format(13.23));&lt;br /&gt;                 &lt;br /&gt;            NumberFormat moedaFormat =&lt;br /&gt;              NumberFormat.getCurrencyInstance(ptBR);  //for currencies&lt;br /&gt;            System.out.println(moedaFormat.format(13.23));&lt;br /&gt;        }&lt;br /&gt;      &lt;br /&gt;        {&lt;br /&gt;            Locale ptBR = new Locale("en", "US");&lt;br /&gt;          &lt;br /&gt;            DateFormat dateFormat =&lt;br /&gt;              DateFormat.getDateInstance(DateFormat.FULL, ptBR);&lt;br /&gt;            System.out.println(dateFormat.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            DateFormat dateFormat2 =&lt;br /&gt;                  DateFormat.getDateInstance(DateFormat.MEDIUM, ptBR);&lt;br /&gt;                System.out.println(dateFormat2.format(new Date()));&lt;br /&gt;  &lt;br /&gt;            DateFormat dateFormat3 =&lt;br /&gt;                  DateFormat.getDateInstance(DateFormat.SHORT, ptBR);&lt;br /&gt;                System.out.println(dateFormat3.format(new Date()));          &lt;br /&gt;  &lt;br /&gt;            DateFormat timeFormat =&lt;br /&gt;              DateFormat.getTimeInstance(DateFormat.SHORT, ptBR);&lt;br /&gt;            System.out.println(timeFormat.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            DateFormat timeFormat2 =&lt;br /&gt;                  DateFormat.getTimeInstance(DateFormat.MEDIUM, ptBR);&lt;br /&gt;                System.out.println(timeFormat2.format(new Date()));      &lt;br /&gt;  &lt;br /&gt;            DateFormat timeFormat3 =&lt;br /&gt;                  DateFormat.getTimeInstance(DateFormat.FULL, ptBR);&lt;br /&gt;                System.out.println(timeFormat3.format(new Date()));&lt;br /&gt;          &lt;br /&gt;            NumberFormat numberFormat =&lt;br /&gt;              NumberFormat.getNumberInstance(ptBR); //for numbers&lt;br /&gt;            System.out.println(numberFormat.format(13.23));&lt;br /&gt;                 &lt;br /&gt;            NumberFormat moedaFormat =&lt;br /&gt;              NumberFormat.getCurrencyInstance(ptBR);  //for currencies&lt;br /&gt;            System.out.println(moedaFormat.format(13.23));&lt;br /&gt;        }      &lt;br /&gt;      &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;enjoy it!&lt;/span&gt; (&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;many thanks Marcelo Torres&lt;/span&gt;&lt;/span&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8878464677050966269?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8878464677050966269/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8878464677050966269' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8878464677050966269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8878464677050966269'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/03/java-formarting-number-dates-datetime.html' title='Java - formarting number, dates, datetime, currency, locales and miscelaneous'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-7614857821778142267</id><published>2009-03-05T10:53:00.000-08:00</published><updated>2009-03-05T10:53:00.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAR script JAVA'/><title type='text'>Looking for a package into JAR files</title><content type='html'>&lt;span style="font-size:85%;"&gt;A nice script for using in Linux,  when looking for some package into JAR files.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;# setting where java exists&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;JAVA_HOME=/opt/java&lt;br /&gt;&lt;br /&gt;# what are you looking for?&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; put here the package&lt;br /&gt;LOOK_FOR="org/springframework/context/annotation"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# looping looking for &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;for i in `find . -name "*jar"`&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;do&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;     echo "Looking in $i ..."&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;    $JAVA_HOME/bin/jar tvf $i | grep $LOOK_FOR &gt; /dev/null&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;    if [ $? = 0 ]&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; then&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;      echo "==&gt; Found \"$LOOK_FOR\" in $i"&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;     fi&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-7614857821778142267?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/7614857821778142267/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=7614857821778142267' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/7614857821778142267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/7614857821778142267'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/03/looking-for-package-into-jar-files.html' title='Looking for a package into JAR files'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-1132525933610982264</id><published>2009-01-16T03:27:00.000-08:00</published><updated>2009-01-16T03:31:48.168-08:00</updated><title type='text'>printf format specifications quick reference</title><content type='html'>&lt;span style="font-size:85%;"&gt;The printf man page is more like a specification than a quick reference.&lt;br /&gt;Here is my quick reference for the "conversion specifications format"&lt;br /&gt;aka the "format specification fields". Note this info is based on&lt;br /&gt;the printf man page in man-pages-1.67-7 from the &lt;a href="http://tldp.org/"&gt;LDP&lt;/a&gt; (on Fedora Core 4)&lt;br /&gt;&lt;/span&gt;  &lt;pre class="snippet"&gt;&lt;span style="font-size:85%;"&gt;%[flags][min field width]&lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;[precision]&lt;/span&gt;&lt;span style="font-size:85%;"&gt;[length]conversion specifier&lt;br /&gt; -----  ---------------  ---------  ------ -------------------&lt;br /&gt;  \             #,*        &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;.#, .*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;     /             \&lt;br /&gt;   \                                 /               \&lt;br /&gt;  &lt;b&gt;#,0,-,+, ,',I&lt;/b&gt;                 &lt;b&gt;hh,h,l,ll,j,z,L&lt;/b&gt;    &lt;b&gt;c,d,u,x,X,e,f,g,s,p,%&lt;/b&gt;&lt;br /&gt;  -------------                 ---------------    -----------------------&lt;br /&gt;  &lt;b&gt;#&lt;/b&gt; | Alternate,                 &lt;b&gt;hh&lt;/b&gt; | char,           &lt;b&gt;c&lt;/b&gt; | unsigned char,&lt;br /&gt;  &lt;b&gt;0&lt;/b&gt; | zero pad,                  &lt;b&gt; h&lt;/b&gt; | short,          &lt;b&gt;d&lt;/b&gt; | signed int,&lt;br /&gt;  &lt;b&gt;-&lt;/b&gt; | left align,                &lt;b&gt; l&lt;/b&gt; | long,           &lt;b&gt;u&lt;/b&gt; | unsigned int,&lt;br /&gt;  &lt;b&gt;+&lt;/b&gt; | explicit + - sign,         &lt;b&gt;ll&lt;/b&gt; | long long,      &lt;b&gt;x&lt;/b&gt; | unsigned hex int,&lt;br /&gt;  &lt;b&gt; &lt;/b&gt; | space for + sign,          &lt;b&gt; j&lt;/b&gt; | [u]intmax_t,    &lt;b&gt;X&lt;/b&gt; | unsigned HEX int,&lt;br /&gt;  &lt;b&gt;'&lt;/b&gt; | locale thousands grouping, &lt;b&gt; z&lt;/b&gt; | size_t,         &lt;b&gt;e&lt;/b&gt; | [-]d.ddde±dd double,&lt;br /&gt;  &lt;b&gt;I&lt;/b&gt; | Use locale's alt digits    &lt;b&gt; t&lt;/b&gt; | ptrdiff_t,      &lt;b&gt;E&lt;/b&gt; | [-]d.dddE±dd double,&lt;br /&gt;                                 &lt;b&gt; L&lt;/b&gt; | long double,  &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;---------=====&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;if no precision   =&gt; 6 decimal places            /&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;b&gt;f&lt;/b&gt; | [-]d.ddd double,&lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;if precision = 0  =&gt; 0 decimal places      _____/&lt;/span&gt;&lt;span style="font-size:85%;"&gt;   &lt;b&gt;g&lt;/b&gt; | &lt;b&gt;e&lt;/b&gt;|&lt;b&gt;f&lt;/b&gt; &lt;acronym title="consise representation with most info"&gt;as appropriate&lt;/acronym&gt;,&lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;if precision = #  =&gt; # decimal places&lt;/span&gt;&lt;span style="font-size:85%;"&gt;               &lt;b&gt;G&lt;/b&gt; | &lt;b&gt;E&lt;/b&gt;|&lt;b&gt;F&lt;/b&gt; as appropriate,&lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;if flag = #       =&gt; always show decimal point&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &lt;b&gt;s&lt;/b&gt; | string,&lt;br /&gt;                                            &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;..............------&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;                                         /&lt;/span&gt;&lt;span style="font-size:85%;"&gt;          &lt;b&gt;p&lt;/b&gt; | pointer,&lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size:85%;color:gray;"&gt;if precision      =&gt; max field width    /&lt;/span&gt;&lt;span style="font-size:85%;"&gt;           &lt;b&gt;%&lt;/b&gt; | %&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;span style="font-size:85%;"&gt;&lt;br /&gt;Examples of common combinations:&lt;br /&gt;&lt;/span&gt; &lt;table class="pixelbeat"&gt; &lt;tbody&gt;&lt;tr class="pbtitle"&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;format&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;output&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;printf("%08X",32_bit_var);&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="monospace"&gt;0000ABCD&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;printf("%lu",32_bit_var);&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="monospace"&gt;43981&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;printf("%'d",32_bit_var);&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="monospace"&gt;43,981&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;printf("%10s","string");&lt;/span&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="monospace"&gt;    string&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;printf("%*s",10,"string");&lt;/span&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="monospace"&gt;    string&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;printf("%-10s","string");&lt;/span&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="monospace"&gt;string    &lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;printf("%-10.10s","truncateiftoolong");&lt;/span&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="monospace"&gt;truncateif&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;span style="font-size:85%;"&gt;&lt;br /&gt;Note for the &lt;b&gt;%'d&lt;/b&gt; one to work you must have already &lt;a href="http://www.pixelbeat.org/programming/i18n.html"&gt;set your locale&lt;/a&gt; as in the following example: &lt;/span&gt;&lt;pre class="snippet"&gt;&lt;span style="font-size:85%;"&gt;#include &lt;locale.h&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;   setlocale(LC_ALL,"");&lt;br /&gt;   printf("%'Id\n",1234);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="shell"&gt;&lt;span style="font-size:85%;"&gt;$ ./numtest&lt;br /&gt;1,234&lt;br /&gt;&lt;br /&gt;$ LANG=fa_IR.utf8 ./numtest&lt;br /&gt;۱٬۲۳۴&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;  For details on printing system types like off_t, and time_t and the C99 types like uint32_t etc. portably, please see &lt;a href="http://www.pixelbeat.org/programming/gcc/int_types/"&gt;here&lt;/a&gt;.         &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-1132525933610982264?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/1132525933610982264/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=1132525933610982264' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1132525933610982264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/1132525933610982264'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2009/01/printf-format-specifications-quick.html' title='printf format specifications quick reference'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-3527312755384550025</id><published>2008-12-16T03:43:00.000-08:00</published><updated>2008-12-16T03:47:38.589-08:00</updated><title type='text'>mod_cluster</title><content type='html'>&lt;h3&gt;&lt;span style="font-size:85%;"&gt;Overview&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt; mod_cluster is an httpd-based load balancer. Like mod_jk and mod_proxy, mod_cluster uses a communication channel to forward requests from httpd to one of a set of application server nodes. Unlike mod_jk and mod_proxy, mod_cluster leverages an additional connection between the application server nodes and httpd. The application server nodes use this connection to transmit server-side load balance factors and lifecycle events back to httpd via a custom set of HTTP methods, affectionately called the Mod-Cluster Management Protocol (MCMP). This additional feedback channel allows mod_cluster to offer a level of intelligence and granularity not found in other load balancing solutions. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;   Within httpd, mod_cluster is implemented as a set of modules for httpd with mod_proxy enabled.   Much of the logic comes from mod_proxy, e.g. mod_proxy_ajp provides all the AJP logic needed by mod_cluster.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.jboss.org/mod_cluster"&gt;see more&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-3527312755384550025?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/3527312755384550025/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=3527312755384550025' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3527312755384550025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/3527312755384550025'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2008/12/modcluster.html' title='mod_cluster'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-8980916607431920322</id><published>2008-12-04T04:42:00.000-08:00</published><updated>2008-12-04T04:43:15.722-08:00</updated><title type='text'>In Depth: 50 amazing Ubuntu time-saving tips</title><content type='html'>&lt;p&gt;&lt;span style="font-size:85%;"&gt;The end of October saw the much anticipated release of Ubuntu 8.10 - affectionately called the Intrepid Ibex.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;It's a release that sees Ubuntu going from strength to strength.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;And with its popularity reaching stratospheric proportions, we thought that now was the perfect time to pool together our favourite tips into one place.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt; If you've never tried Ubuntu, there's never been a better time to dive in. If you're already a convert, read on to discover how to get the best from your installation.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;System performance&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;1. Shorten the boot menu timeout&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you're fed up of waiting for the boot menu to timeout before your favourite operating system launches, open '/boot/grub/menu.lst' with a text editor and look for the line starting with 'timeout'. Just lower the number to its the right. This is the number of seconds the menu system will wait before booting the default operating system (0 or 1 is not recommended).&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;2. Monitor boot performance&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;One of the best utilities you can install for checking your system's performance is called 'bootchart'. After installation and a reboot, 'bootchart' will create a complex graph of everything that's running and taking up resources as your system boots, and place an image of the graph in the /var/log/bootgraph folder.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;3. Improve boot speed&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;When the boot menu appears (you might have to press escape) select the default Ubuntu boot option and press 'e'. Cursor down to the line starting with 'kernel' and press 'e' again. You're now editing the boot parameters, and you need to press space and add the word 'profile'. Press return followed by 'b' to boot. Disk access during your boot sequence will now be profiled, which means that subsequent booting should be faster. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;4. Trim unwanted services&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;The default Ubuntu installation takes an over cautious approach to background services. Bluetooth tools may be be running, for example, even if you don't have the hardware. Disable the services you don't need by opening the Services window from the System&gt;Administration menu. Be careful not to disable services you rely on.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;5. Monitor CPU usage&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;You might think that CPU monitors are purely for geeks trying to steal a few extra cycles from their overclocked processors. But this isn't true. A discreet CPU monitor is the best way detecting a wayward process that's slowing down the rest of the system. Right click on the desktop panel, and select 'System Monitor' for our favourite. There's a similar applet for KDE.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;6. Manage your processes&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you do detect a process on your system that's stealing more CPU cycles than it really should, then you need to end that process to get those cycles back. Save all your work, and use the Ubuntu process manager. This is part of the System Monitor tool, and this can be opened from the System&gt;Administration menu.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;7. Be nice to one another&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you use the System Monitor to manage your running tasks, you might have noticed the 'nice' column. 'nice' is basically a task's priority, and ranges between -20 to 19. If you have a CPU heavy task running, such as a 3D calculation for example, increasing the nice will lower its priority, and make your system feel more responsive.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;The default Gnome desktop&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;8. Enable Gnome Auto login&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;A lot of us are the sole users of our computers, and it makes little sense navigating through a login screen before getting to our desktops. You can enable auto-login for a default account on your Ubuntu machine by selecting 'Login Window' from the System&gt; Administration window. Switch to the 'Security' page, enable 'Automatic Login' and select the user.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;9. Prune your menus&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;The more applications you install, the more cumbersome the launch menu becomes. But you can enable the applications you're most likely to use right clicking on Ubuntu icon that hides the menu, and selecting 'Edit Menus'. The application that appears will let you enable or disable menus in the hierarchy. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;10. Remove the menu popup delay&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;HCI gurus insist that there should be a delay between when you click on a menu and when it appears, but if it's speed you're after, you can remove the delay. Open a terminal, and type 'nano ~/.gtkrc-2.0', then add a single line 'gtk-menu-popup-delay = 0'. Save this by pressing escape and typing 'Y', and after a restart you should find your menus are ultra quick. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;11. Add More Workspaces&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Workspaces are one of the best things about Linux. They're a great way of organising your applications onto different virtual screens. By default, Ubuntu sets up only two, but you can adjust this number by right clicking on the workspace switcher in the bottom right corner of the display and opening the Preferences window. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;12. Use Workspaces more effectively&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Use 'Ctrl alt' and either cursor left or right to switch between adjacent workspaces, and if you hold down the shift key, the active window will move to the new desktop too. For better control, right click on any windows top border to open a context menu, and from here you can choose to move the window to another workspace.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;13. Don't start everything&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;As with system services, the average Ubuntu installation runs lots of different programs at startup. You can remove those you don't need by launching the Sessions window from the Preferences menu. If you don't use the desktop search, for instance, disable 'Tracker'. Other likely candidates for removal include Bluetooth, the Evolution Alarm Notifier and the Print Queue Applet.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;14. Remember the running session&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Another neat feature of the setting manager is that you can configure your desktop to remember the applications that were running when you shutdown your machine. This is a great way of quickly launching into your working environment. Just switch to the Session Options page and enable the 'Automatically Remember' option.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;15. Fine tune the Gnome desktop&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Application shortcuts are hidden behind the Gnome equivalent of the Windows registry editor. This can be launched from the command-line by typing 'gconf-editor'. But be careful, settings changed here could mess up your desktop. If you do, then the desktop can be restored to its default state by deleting the '.gconf' and '.gconfd' folders from your home directory.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;16. Launching applications with a key combination&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;One of the settings hidden in Gconf is the ability to launch applications with a key combination. Navigate to 'apps&gt;metacity&gt;key_binding_commands', double click on one of the 'command_' entries and enter the launch command for the application you want to run. To set the key, double click on the same entry in 'apps&gt;metacity&gt; global_keybindings' and press a key. Holding 'Ctrl Shift alt' and that key will now launch the application.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;17. Use pervasive searches&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Ubuntu comes with an excellent utilities for searching through the contents of files and emails, but it's not enabled by default. Open the Search and Indexing window from the Preferences menu, and enable both indexing and watching. After the index has been created, you can search through your files using the 'Tracker Search Tool' in the 'Applications&gt;Accessories' menu.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;18. Switch To A Faster Desktop&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Ubuntu uses the Gnome desktop by default. It's a good choice because Gnome is powerful, capable and popular. But it's not streamlined or particularly efficient. A faster alternative is XFCE, the source of Xubuntu, and this can be installed through the Synaptic package manager by searching for the 'xubuntu-desktop' meta-package.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;The KDE desktop&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;19. Switch to an KDE&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If neither Gnome or XFCE are helping you be more productive, then try KDE. It's the most configurable of the Linux desktops, and often takes a different slant on browsing and file management. Version 4 has vastly improved the environment, and it can be installed by searching for the 'kubuntu-desktop' in Synaptic.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;20. KDE auto-login&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you prefer Kubuntu or the KDE desktop, then you'll need to use a different configuration panel to enable auto-login. Open KDE's System Settings application, and switch to the Advanced page and open the Login Manager. Enter your root password and switch to the convenience page. From here you can choose to enable a user for auto login. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;21. Pre-load Konqueror&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you're always launching KDE's file and web browser, you can pre-load several instances of it to speed up launch time. Open the Settings&gt;Configure Konqueror window, and switch to the Performance page. Increase the number of instances from 1 to something like 4 or 5. Each instance takes extra system memory, but each session of Konqueror will now load almost instantly. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;22. Use Konqueror shortcuts&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Konqueror is a great file and web browser with plenty of shortcuts for the power user. Our favourite is the ability to use shortcuts in the location field to perform online searches. Typing 'wp:linux' will search Wikipedia for Linux, while 'gg:linux' and ggi:linux' will search Google and Google Images. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;System-wide&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;23. Launch OpenOffice.org faster&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;The default OpenOffice.org configuration errs on the side of caution. There are 100 levels of undo, for example, and reducing this number will reduce the amount of memory it uses. This setting can be found from the Options window by switching to the Memory page. Try reducing the undo steps to 30. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;24. Use the quick launch toolbar&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;In both Gnome and KDE, you can drag applications from the launch menu onto the desktop and onto the toolbar. Clicking on these icons is the quickest way of launching your most used applications, short of holding down a certain key combination.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;25. Replace slow applications&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;One of the best things about open source is that there's always an alternative, and switching to one can vastly improve your system's performance. Try Abiword instead of OpenOffice.org's Writer, Thunar instead of Nautilus and Opera instead of Firefox. All are broadly compatible with their alternatives, and perform faster. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;26. Rapid application launch&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you know the name of the application or tool you want to launch, you can quickly start it by pressing Alt and F2. This displays a single command-line prompt in a window, and into this you type your application name. Type 'firefox' and its icon will appear. Pressing enter will launch it.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;27. Take a screenshot&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Pressing the Print key will take a screenshot and bring up the save file window. Being able to take a screenshot at any moment is incredibly useful, and is great for saving online order details, for example, or just your high score in Crack Attack. Pressing Alt and Print will take a screenshot of the currently active window. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;28. Quickly restart the desktop&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Occasionally, you may find that your desktop hangs and you can no longer use the keyboard or mouse. Fortunately, the desktop process is entirely independent of the rest of the operating system, and you can reset the desktop by holding down the Ctrl Alt and backspace keys. But you will still lose any unsaved data, so be careful.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;29. Jump to a console&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Another option if your desktop has crashed is jumping to a command-line console. Pressing Ctrl and alt, followed by F1-F6 will switch the display to one of six different consoles. From here, you can login and try to kill the process causing trouble, before switching back to your desktop by pressing Ctrl Alt and F7.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;30. Create a separate Home partition&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;When you next perform a fresh installation of Ubuntu, choose the manual partition option and create three separate partitions. One needs to be for '/', and should be around 10-20GB, . Another should be for the swap space, and be around the same size as your installed memory. And the final partition is '/home', and will contain all your personal files. When you next install Ubuntu, choose manual again and your Home partition won't be reformatted, keeping all your personal files and configuration options in tact. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;31. Tweak your Nvidia settings&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;After installing the proprietary driver, Nvidia graphics hardware provides exceptional 3D and 2D acceleration for the Linux desktop. You can fine-tune your Nvidia hardware by installing an application called 'nvidia-settings', from which you can edit your monitor settings, enable twin displays and add a drop shadow to the cursor.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;32. Track down large unused files&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Large and scattered files can start to slow your desktop down, as well as any applications that rely on reading the contents of a directory. The best tool we've found for consolidating and deleting unused files is called Filelight. It uses a pie chart to show where the largest files are located, and you can easily delete directories of junk from the right click menu. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;33. Enable vertical sync in Compiz&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Compiz, the 3D whizzy desktop effects application, can be either a resource hog or even an acceleration tool. It depends on the power of your graphics hardware. But we've nearly always had better more responsive results on the desktop by enabling the vertical sync option in the general option page of the Compiz settings manager.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;34. Don't Compiz&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;On the other hand, the wonderful effects that Compiz produces can't really be described as functional, although they do provide some improved usability for some. You can free up plenty of resources by disabling the desktop effects from the Visual Effects page of the Preferences&gt;Appearance window. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;35. Get packages off a CD or DVD&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Even in these times of pervasive internet, you sometimes need to be able to install a package without having an internet connection. Fortunately, the Synaptic package manager can read the contents of an Ubuntu installation CD, and add those packages to the database for installation from the drive. Open the Software Sources window from the Administration menu, switch to the 'Third Party' page and click on the 'Add CD-ROM' button.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;36. Boost load speed with Preload&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Preload is a tool you can install through the Synaptic package manager. It will run silently in the background, from where it will try to guess which libraries you're likely to use before you use them. It will then load these into memory so that your applications load quicker. The effects seem to be minimal with recent releases of Ubuntu, but it's worth a try. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;37. Use a virtual desktop&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you enjoy trying different distributions, but have always been put off by the installation, try Virtual Box from the official Ubuntu repositories. It's easy to use and lets you install a virtual version of almost any Linux installation (and even Windows) right on your desktop, and running at close to native speeds. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;38. Boot into text mode&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Sometimes, a graphical environment is unnecessary, especially if you use your machine as a server. Which is exactly why there's a version of Ubuntu called the Server edition. By default, Server has no graphical desktop. But in all other ways, it's the same Ubuntu. This makes it perfect as a web or media streaming server.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;39. Suspend your system&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;Why wait for your system to boot when you can resume your session from hibernation. This is quicker than booting, and you can continue where you left off. But it's also dependent on your hardware behaving itself. Just give it a go to see if your hardware supports the feature. Click on the logout button, and if hibernate appears as an option, it should work. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;40. Customise your kernel&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you're feeling really brave (and we'd never recommend this for anyone with too little time on their hands), you could build your own kernel. It's not as hard as it sounds and it will enable you to add only the features and hardware you're likely to use. Excellent step by step instructions can be found here: https://help.ubuntu.com/community/Kernel/Compile &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;The command-line&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;41. Try it, it's really not that bad&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;The command-line really is your friend. After opening Terminal from the Applications&gt;Accessories menu (or Konsole in KDE), you can accomplish many common tasks much more effectively than from any desktop GUI. To copy folder, for example, type 'cp -rf source destination', rename a file with 'mv' and edit a text file using a command called 'nano'.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;42. Easy command shortcuts&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;You can press the tab key while using the command-line to automatically complete command names as well as system paths. You can also cursor up through your command history, and use 'Ctrl + r' to search for a command starting with the characters you begin to type.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;43. Replace heavy GUI applications with command-line equivalents&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;There are command-line versions of most desktop applications. You could install and use 'pine' for your email and news, for instance. Or try 'lynx' for web browsing and 'wget' or 'ncftp' for downloading files. 'mc', short for Midnight Commander, is a feature-full file manager, and all of these tools will run on hardly any memory with hardly any CPU requirements.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;44. Create an ISO image from a CD or a DVD&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;You can create an ISO image from optical media, and most attached devices, by using a single command on the terminal. Type 'dd if=/dev/cdrom of=disk.iso bs=1024' to make a raw copy of the data and drop it into the disk.iso file. You may need to unmount the drive first, by typing 'sudo umount /dev/cdrom'.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;45. Read an ISO disc image without burning it&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you've downloaded an ISO disc image, and you want to access the files on it without wasting an optical disk, you can create a virtual drive from the image with a single command. Open the terminal from the Accessories menu. Type 'sudo mkdir /mnt/image', followed by 'sudo mount -o loop disk.iso /mnt/image'. You can now browse the disc by pointing a file browser at the '/mnt/image' folder. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;46. Use the 'screen' command&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;After you've got used to the command-line, one of the best commands to learn is called 'screen'. It's the command equivalent to virtual desktops, and it lets you run several sessions at once, as well as suspend and resume a session. Type 'screen' to start, then press 'Ctrl a' followed by 'c' to create a new session. 'Ctrl a' and 'n' or 'p' will switch through the active sessions. 'Ctrl a' and 'd' will detach from the session, while typing 'screen -r' will resume one.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;47. Access your Ubuntu machine from anywhere&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;The best thing about the command-line is that you can use it to access your machine securely from anywhere on the internet. The key to this is something called 'SSH' - the secure shell. Install 'openssh-server' through Synaptic and use a tool called 'putty' on a Windows machine, or 'ssh' on Linux, to access the command-line through your user accounts on your Ubuntu box. &lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;48. Transfer files between computers files quickly and securely&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;With the open SSH server installed and running, you can quickly and securely transfer files to and from the remote computer using the 'sftp' command. It works just like FTP, and accepts both 'put' and 'get' for file tranfers. If you prefer a GUI, we recommend using Filezilla on Windows, or 'sftp://' as a protocol in KDE.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;49. Avoid typing 'sudo'&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;You might have noticed that for almost every important configuration command you type, you need to precede it with 'sudo' and your password. This can be a real pain if you're typing one sudo command after the other. Avoid this hassle by typing 'sudo bash', this transparently replaces the current shell with a new one, complete with administrator privileges.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;strong&gt;50. Create a root account&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;If you find yourself spending more and more time requiring system administration privileges, you may as well enable the root account. Just type 'sudo passwd root', and enter your password followed by a new one for the root account. You can now type 'su root' to login as root, but you should only use this mode for essential system maintenance.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Now read 25 killer Linux apps and 20 Linux apps you can't live without&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-8980916607431920322?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/8980916607431920322/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=8980916607431920322' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8980916607431920322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/8980916607431920322'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2008/12/in-depth-50-amazing-ubuntu-time-saving.html' title='In Depth: 50 amazing Ubuntu time-saving tips'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-4508680720263514448</id><published>2008-11-30T18:21:00.000-08:00</published><updated>2008-12-01T04:30:23.216-08:00</updated><title type='text'>JavaFX - impressões de um fim de semana</title><content type='html'>&lt;span style="font-size:85%;"&gt;Nessa preview (&lt;/span&gt;&lt;span style="font-size:85%;"&gt;JavaFX Preview SDK), bug pra caramba! impraticável! vamos esperar a release em 04/12! só funfa os exemplos deles, e alguns botões, sliders, bem simples; me pareceu, e pelo que li nos foruns, que a API não foi toda liberada e a integração com netbeans, tá meio loucona... ele se perde pra importar um script, ou scene, etc... tem que colocar na mão! doc da API ainda é draft.&lt;br /&gt;&lt;br /&gt;O bom! simples, simples, simples! os scripts (a linguagem FX) é uma mistura de javascript com java e pedaços da XLib (X11) ; a idéia são conjuntos, grupos, frames, &lt;/span&gt;&lt;span style="font-size:85%;"&gt;scenes, &lt;/span&gt;&lt;span style="font-size:85%;"&gt;gradients, widgets,  eventos de keys e mouse, etc. A integração com java me pareceu tranquila, pelos menos nos Sysout.out da vida... ops, é OO! a idéia de script, nos tira os objetos da cabeça... hehe!&lt;br /&gt;&lt;br /&gt;Muito rápida, muito rápida! o weather ficou show (exemplo deles), lendo do google weather pra infinidade de png que tem, pra os efeitos das nuvens, raios, chuvas, trovoadas, lua, sol, etc, é bem rápida! nos exemplos, muita matemática, circle, vector, area, lightning... o posicionamento dos ponteiros, é uma composição seno/coseno mesmo! isso me lembrou flash! shadows, infinity, texture,... quem conhece o Photoshop, deve lembrar aquela parada de ficar brincando com sombras, angles, opacidade, camadas... é por aih,... toin! mas, tá bem voltado pra desenvolvedor, coisa que não acho no flash... mas, dêem uma olhadinha num estilo de script... (vejam no ImageView um pedaço de Java... oh meu Deus!)&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;Group {&lt;br /&gt;transform: bind Transform.rotate(angle, 50, 50)&lt;br /&gt;translateX: bind x&lt;br /&gt;translateY: bind y&lt;br /&gt;content: [&lt;br /&gt;Circle {&lt;br /&gt; opacity: bind shape.value&lt;br /&gt; centerX: 50   centerY: 50   radius: 50&lt;br /&gt; stroke: Color.YELLOW&lt;br /&gt; fill: RadialGradient {&lt;br /&gt;   centerX: 50   centerY: 50   radius: 50&lt;br /&gt;   focusX: 70   focusY: 30&lt;br /&gt;   proportional: false&lt;br /&gt;   stops: [&lt;br /&gt;     Stop {offset: 0   color: Color.YELLOW},&lt;br /&gt;     Stop {offset: 1   color: Color.WHITE}&lt;br /&gt;   ]&lt;br /&gt; }&lt;br /&gt;},&lt;br /&gt;Text {&lt;br /&gt; transform: bind Transform.rotate(33, 10, 100)&lt;br /&gt; opacity: bind text.value&lt;br /&gt; content: "Duke"&lt;br /&gt;},&lt;br /&gt;ImageView {&lt;br /&gt; transform: bind Transform.translate(31, 27)&lt;br /&gt; opacity: bind image.value&lt;br /&gt; image: Image {url: this.getClass().getResource("duke.png").toString()}&lt;br /&gt;},&lt;br /&gt;]&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;Tem o Project Nile, que são plugins para exportar do Photoshop ou Illustrator para o FX; nada mais que vetorizar as imagens no padrão SVG; só usei png mesmo, pois o bicho capotava quando tratava os vetores... ahh, ele deixou eu criar um projeto com o mesmo nome no workspace (ouch!!) e quando fui apagar, ambos foram pro espaço! depois quando tentei reabrir, o bicho ficou doidão!&lt;br /&gt;&lt;br /&gt;O velho e bom Quicktime, o Fenix, volta a aparecer como a principal ferramenta para exibir vídeos no FX, e, também na API disponibilizada, só tem ele; deve aparecer logo coisas pra Windows Media Player, Winamp,... e o flash player?&lt;br /&gt;&lt;br /&gt;Detalhe, para os desavisados... não rodei nada dentro do browser, fiz tudo no IDE; entretanto, o grande atrativo dessa tecnologia, pra mim, é você "arrastar" (criar um link!) de dentro do browser e colocar no desktop, e rodar como uma aplicação qualquer, e, depois pode-se criar um link no desktop, tipo JNLP (Java web start launcher)... pronto! do browser pro desktop num piscar de olhos... e o link fica lá,... clicou, aplicação rodou... ou roda localmente, ou de um server; não se preocupem, tem como fazer cache também! Nesse ponto ficou uma dúvida... ele usa a cache do browser, usa o engine do browser default? no meu caso, ele usou o xlrunner do firefox? bom, o Dudu elucidou o dilema; o próprio webstart tem todo esse mecanismo de configuração, praticamente o mesmo mecanismo dos browsers, como arquivos temporários, tamanho da cache, JVM disponíveis, certificados, etc...&lt;br /&gt;&lt;br /&gt;Bom, pra ficar bonitinho, tem que ter um trabalho gráfico, mas se quiser uma interface com botões e sliders, fica "fofo!" (nada de boiolices, vlw?! hehe)&lt;br /&gt;&lt;br /&gt;Li bastante coisa do projeto,... agora, vou esperar dia 04/12, baixar e começar a brincar! como eu iria pra flash e tava achando dificil demais, vou agora gastar tempo com o FX!&lt;br /&gt;&lt;br /&gt;Recomendo a galera dar uma olhada e compartilhar a impressão... ainda apanho um pouco com o netbeans... ahh, soh roda no 6.1 segundo a Sun; espero que a release rode no 6.5, mas a Sun não garante... fiz o teste, e rodou... esquisito?! achei naum!&lt;br /&gt;&lt;br /&gt;Por enquanto o SDK JavaFX só tem pra Windows e Mac... pobre pinguim! mas encontrei dicas e "marretas" pra rodar no Linux a partir do pacote Mac (diga-se kernel FreeBSD), mas não tentei.&lt;br /&gt;&lt;br /&gt;nesse link, sabe-se quase tudo sobre o projeto: http://www.javafx.com/&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;fui!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7624476069480039405-4508680720263514448?l=cazo-tec.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cazo-tec.blogspot.com/feeds/4508680720263514448/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7624476069480039405&amp;postID=4508680720263514448' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4508680720263514448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624476069480039405/posts/default/4508680720263514448'/><link rel='alternate' type='text/html' href='http://cazo-tec.blogspot.com/2008/11/javafx-impresses-de-um-fim-de-semana.html' title='JavaFX - impressões de um fim de semana'/><author><name>Tantan</name><uri>http://www.blogger.com/profile/07240922185421210504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_XpaIpqJqmxo/S2CbWiwSNoI/AAAAAAAAAco/nKHABNQdAGc/S220/cazo-teo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7624476069480039405.post-7331960471046236819</id><published>2008-11-26T14:56:00.000-08:00</published><updated>2008-11-26T14:57:05.491-08:00</updated><title type='text'>What is the Apache C++ Standard Library?</title><content type='html'>&lt;div class="section"&gt;       &lt;p&gt;&lt;span style="font-size:85%;"&gt;  The Apache C++ Standard Library project (code name stdcxx, pronounced "standard   C++  library",   &lt;u&gt;not&lt;/u&gt; S-T-D-C-X-X) is a collection of algorithms, containers, iterators, and other fundamental components of every piece of software, implemented as C++ classes, templates, and functions essential for writing C++ programs. &lt;/span&gt;&lt;/p&gt;       &lt;p&gt;&lt;span style="font-size:85%;"&gt; The goal of the Apache C++ Standard Library is to provide a free implementation of the ISO/IEC 14882 international standard for C++ that enables source code portability and consistent behavior of programs across all major hardware implementations, operating systems, and compilers, open source and commercial alike. An additional goal is to achieve maximum implementation efficiency on each platform by taking advantage of platform-specific high-performance facilities and features which are often unique to the type of hardware, the operating system or the compiler. &lt;/span&gt;&lt;/p&gt;         &lt;p&gt;&lt;span style="font-size:85%;"&gt;  As  the  starting  point  for   future  efforts,  in  summer  2005  &lt;a class="external" href="http://www.roguewave.com/"&gt;Rogue      Wave Software&lt;/a&gt; has contributed its commercial implementation of the C++ Standard Library to the Apache stdcxx project, a proven code base that has been shipping for over a decade and is among the most widely used cross-platform implementations of the library. &lt;/span&gt;                 &lt;/p&gt;       &lt;p&gt;&lt;span style="font-size:85%;"&gt;  The  key features  of the  stdcxx project  at the  time  of submission include:          &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Full conformance to the C++ standard            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt; Complete implementation of the localization library independent of the underlying operating system, including a large set of locale definition files, character set description files, and utility programs to process these files and generate locale databases &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  User control over strict or permissive conformance checking            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Thread-safe implementation of strings, iostreams, and locales            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Reference   counted  &lt;code&gt;basic_string&lt;/code&gt;   implementation  using atomic locking with  the ability to switch to  a non-reference counted implementation            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Excellent runtime performance            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Optimized for fast compiles and extremely small executable file sizes            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt; Portable to and fully tested on a large set of operating systems, including AIX, HP-UX, Linux, Solaris, Windows, etc. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Portable to most leading commercial as well as open source compilers            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt; Debugging facilities such as safe iterators, precondition and postcondition checking, and the ability to generate stack traces &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Fully documented configuration and build infrastructure            &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Thorough, well-maintained documentation            &lt;/span&gt;&lt
