<?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-23433937</id><updated>2012-01-24T21:26:43.317-02:00</updated><category term='plsql'/><category term='linux'/><category term='xml'/><category term='java'/><category term='inverter java String reverse StringBuffer'/><category term='oracle'/><title type='text'>GNU Linux Freak</title><subtitle type='html'>"Linux: just do it!"</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23433937.post-4038803443727643845</id><published>2012-01-19T14:29:00.010-02:00</published><updated>2012-01-19T15:27:47.720-02:00</updated><title type='text'>How To Write Bytes To File</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;OutputStream out = new FileOutputStream(file);&lt;br /&gt; InputStream in = new ByteArrayInputStream(bytes);&lt;br /&gt;&lt;br /&gt; byte[] outputByte = new byte[4096];&lt;br /&gt;&lt;br /&gt; try&lt;br /&gt; {&lt;br /&gt;  while (in.read(outputByte, 0, 4096) != -1) {&lt;br /&gt;   out.write(outputByte, 0, 4096);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  in.close();&lt;br /&gt;  out.flush();&lt;br /&gt;  out.close();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; catch (Exception e)&lt;br /&gt; {&lt;br /&gt;  throw e;&lt;br /&gt; }&lt;br /&gt; finally&lt;br /&gt; {&lt;br /&gt;  if (in != null) {&lt;br /&gt;   in.close();&lt;br /&gt;  }&lt;br /&gt;  if (out != null) {&lt;br /&gt;   out.flush();&lt;br /&gt;   out.close();&lt;br /&gt;  }&lt;br /&gt; }&lt;/pre&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/23433937-4038803443727643845?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/4038803443727643845/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=4038803443727643845' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/4038803443727643845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/4038803443727643845'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2012/01/how-to-write-bytes-to-file.html' title='How To Write Bytes To File'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-627215260648593188</id><published>2012-01-19T13:53:00.011-02:00</published><updated>2012-01-19T15:31:27.203-02:00</updated><title type='text'>How To Get Amout Of Time Of A Method Execution</title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Como "pegar" o tempo total de execução de um método.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;pre class="brush: java; ruler: true; first-line: 10; highlight: [2, 4, 6]"&gt;Calendar time = Calendar.getInstance();&lt;br /&gt;// your code...&lt;br /&gt;System.out.println("Time in milliseconds: " + time.getTimeInMillis());&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-627215260648593188?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/627215260648593188/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=627215260648593188' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/627215260648593188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/627215260648593188'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2012/01/how-to-get-amout-of-time-of-method.html' title='How To Get Amout Of Time Of A Method Execution'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-2030870674803381346</id><published>2012-01-19T13:50:00.002-02:00</published><updated>2012-01-19T13:53:34.442-02:00</updated><title type='text'>Postagens "How To..."</title><content type='html'>Eu gostaria de iniciar essa série de postagens uma vez que não poucas vezes me deparo com a seguinte pergunta quando estou com alguma dificuldade: "Como eu faço para..." (How To). &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Peço a liberdade para traduzir não ao literal, então vou tentar fazer postagens mais objetivas com o título de "How To..."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Acredito que esse tipo de postagem em blogs é mais objetiva e ajuda sobremaneira nas consultas a internet (googleadas).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Abraços e espero que aproveitem!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Daniel&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-2030870674803381346?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/2030870674803381346/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=2030870674803381346' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/2030870674803381346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/2030870674803381346'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2012/01/postagens-how-to.html' title='Postagens &quot;How To...&quot;'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-8881420993565663864</id><published>2011-06-20T11:23:00.002-03:00</published><updated>2011-06-20T11:25:54.169-03:00</updated><title type='text'>Problemas de encoding ao receber parametros de URL</title><content type='html'>Você já deve ter se deparado com problemas de encoding ao receber requisições de cujo conteúdo há caracteres latinos tais como "ç".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bom, um ajuste eficiente disso é fazer o seguinte:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;request.setCharacterEncoding("UTF-8");&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;String paramValue = URLDecoder.decode(request.getParameter("param"), "UTF-8");&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bom, segue aí a dica!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Abraços!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-8881420993565663864?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/8881420993565663864/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=8881420993565663864' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/8881420993565663864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/8881420993565663864'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/06/problemas-de-encoding-ao-receber.html' title='Problemas de encoding ao receber parametros de URL'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-5975869877712731680</id><published>2011-05-31T22:42:00.004-03:00</published><updated>2011-05-31T22:44:02.316-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inverter java String reverse StringBuffer'/><title type='text'>Inverter String numa única linha</title><content type='html'>Se você quiser inverter uma String usando uma única linha.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;System.out.println(new StringBuffer("http://www.youtube.com/watch?v=6dGEadbbxyw").reverse());&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Abraços!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-5975869877712731680?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/5975869877712731680/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=5975869877712731680' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5975869877712731680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5975869877712731680'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/05/inverter-string-numa-unica-linha.html' title='Inverter String numa única linha'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-8459753824132882164</id><published>2011-05-19T10:50:00.009-03:00</published><updated>2011-05-19T15:15:57.740-03:00</updated><title type='text'>Instalando o Tortoise SVN Client</title><content type='html'>Neste post, eu mostro como instalar o Tortoise SVN Client. O ambiente no qual estou me baseando é o Ruindows 7, mas serve para qualquer sistema operacional baseado em Ruindows.&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div&gt;Primeiro, baixe o &lt;a href="http://tortoisesvn.net/downloads.html"&gt;Tortoise SVN Client&lt;/a&gt; . Escolha a versão mais adequada para o seu sistema operacional: 32bits ou 64bits.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pra instalar é fácil: next, next, next, Finish.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reinicie no final para as configurações terem efeito.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Crie na raiz do C:\ um diretório chamado svn:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;c:\svn&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Acesso o diretório recém criado e clique com o botão direito do mouse sobre ele e, em seguida, no menu de atalho, clique em "SVN Checkout...".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/-b5JLWfxzDOE/TdVdjLbaHuI/AAAAAAAAAC0/IqVm-TUGpvA/s400/menu-atalho.png" style="cursor:pointer; cursor:hand;width: 308px; height: 366px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5608491769904373474" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Na janela de dialogo, informe o URL do repositório e clique em ok.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Informe o usuario e senha e baixo o conteúdo do repositório.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/23433937-8459753824132882164?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/8459753824132882164/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=8459753824132882164' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/8459753824132882164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/8459753824132882164'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/05/instalando-o-tortoise-svn-client.html' title='Instalando o Tortoise SVN Client'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-b5JLWfxzDOE/TdVdjLbaHuI/AAAAAAAAAC0/IqVm-TUGpvA/s72-c/menu-atalho.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-7461904973705455144</id><published>2011-04-28T10:40:00.007-03:00</published><updated>2011-04-28T10:56:41.289-03:00</updated><title type='text'>Java Applet - Redirecionando URL's via applet</title><content type='html'>Essa postagem quero compartilhar a forma de como é possível fazer um redirecionamento de URL de "dentro" de um applet.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Cenário!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Imagine que você tem um applet que possui um botão chamado "Redirecionar" e que ao clicá-lo você é redirecionado para outra URL. Não vou me atentar a códigos desnecessários.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ao que interessa!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O código basicamente um JPanel que possui um botão conforme mencionado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;img src="http://3.bp.blogspot.com/-49yvlP6qt0A/TblxqHtTIfI/AAAAAAAAACs/3A86HqjOs4A/s400/applet-example.png" style="cursor:pointer; cursor:hand;width: 500px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5600632580049412594" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/23433937-7461904973705455144?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/7461904973705455144/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=7461904973705455144' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/7461904973705455144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/7461904973705455144'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/04/java-applet-redirecionando-urls-via.html' title='Java Applet - Redirecionando URL&apos;s via applet'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-49yvlP6qt0A/TblxqHtTIfI/AAAAAAAAACs/3A86HqjOs4A/s72-c/applet-example.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-3813675358052589048</id><published>2011-04-19T10:03:00.002-03:00</published><updated>2011-04-19T10:03:51.598-03:00</updated><title type='text'>Aula 1 - Preparando o ambiente - JDK</title><content type='html'>A preparação de um ambiente de desenvolvimento básico em sistemas operacionais Microsoft Windows é bastante simples e vamos seguir os passos abaixo:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PASSO 1: baixando a JDK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;É muito importante que se baixe a JDK de última versão. Para isso vá até o site da Oracle Sun http://www.sun.com procure pela sessão de downloads em seguida a sessão Java for Developers. Os sites da Oracle podem ser bastante "trick" ou "complicados" e não poucas vezes não muito intuitivos. Paciência para localizar o download correto é fundamental. Ou se preferir acessar o site abaixo&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html"&gt;http://www.oracle.com/technetwork/java/javase/downloads/index.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://4.bp.blogspot.com/-gJwMITBA_UE/Ta2FpNqYQ7I/AAAAAAAAACM/EKcMGfbd8uU/s320/jdk.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5597276854979937202" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 141px; " /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A versão corrente do JDK até o momento em que escrevo este post é a 6 update 24.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Selecione a plataforma Windows, marque a opção "&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, FreeSans, Luxi-sans, 'Nimbus Sans L', sans-serif; font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;I agree to the &lt;a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewLicense-Start?LicenseUUID=7HeJ_hCwhb4AAAEtmC8ADqmR&amp;amp;ProductUUID=pGqJ_hCwj_AAAAEtB8oADqmS&amp;amp;cnum=&amp;amp;evsref=&amp;amp;sln=" style="color: rgb(0, 0, 0); "&gt;Java SE Development Kit 6u24 License Agreement&lt;/a&gt; .&lt;/span&gt;" e clique em "Continue".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/-3ri6Hjr9FPo/Ta2GUnx8RRI/AAAAAAAAACU/skON3bIYwF8/s320/jdk2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5597277600725353746" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 38px; " /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Clique no link conforme é mostrado ao lado para proceder com o download.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PASSO 2: instalando a JDK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Após o término do download do arquivo, execute o instalador. Este é um wizard bastante prático e simples. A única dica que eu dou neste passo, é ao invés de instalar o JDK na pasta padrão, instale-o na raiz C:\&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A estrutura deverá ficar assim após a instalação:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C:\Java\jdk1.6.0_24&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bom, espero que eu tenha contemplado todos os passos para instalação do Kit de Desenvolvimento de Aplicações Java.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bom proveito e boa sorte!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-3813675358052589048?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/3813675358052589048/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=3813675358052589048' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/3813675358052589048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/3813675358052589048'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/04/preparacao-de-um-ambiente-de.html' title='Aula 1 - Preparando o ambiente - JDK'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-gJwMITBA_UE/Ta2FpNqYQ7I/AAAAAAAAACM/EKcMGfbd8uU/s72-c/jdk.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-7080131515962973556</id><published>2011-04-18T21:07:00.002-03:00</published><updated>2011-04-18T21:09:32.172-03:00</updated><title type='text'>Aulas Java - Cronograma</title><content type='html'>Abaixo segue o cronograma das aulas de programacao:&lt;br /&gt;&lt;br /&gt;Aula 1    O que é Java?&lt;br /&gt;Aula 2    Variáveis primitivas e Controle de fluxo&lt;br /&gt;Aula 3    Orientação a Objetos básica&lt;br /&gt;Aula 4    Arrays&lt;br /&gt;Aula 5    Modificadores de acesso e atributos de classe&lt;br /&gt;Aula 6    Orientação a Objetos – herança, reescrita e polimorfismo&lt;br /&gt;Aula 7    Eclipse IDE&lt;br /&gt;Aula 8    Orientação a Objetos – classes abstratas&lt;br /&gt;Aula 9    Orientação a Objetos – interfaces&lt;br /&gt;Aula 10    Exceptions&lt;br /&gt;Aula 11    Pacotes&lt;br /&gt;Aula 12    Ferramentas: jar e javadoc&lt;br /&gt;Aula 13    O pacote java.lang&lt;br /&gt;Aula 14    O pacote java.io&lt;br /&gt;Aula 15    Collections framework&lt;br /&gt;Aula 16    Programação concorrentes e Threads&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Boa sorte,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-7080131515962973556?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/7080131515962973556/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=7080131515962973556' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/7080131515962973556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/7080131515962973556'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/04/aulas-java-cronograma.html' title='Aulas Java - Cronograma'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-5407788110375998813</id><published>2011-03-04T11:11:00.002-03:00</published><updated>2011-03-04T11:41:26.590-03:00</updated><title type='text'>Spring template: queryForObject() method. Retorno de queries vazias.</title><content type='html'>A post visa basicamente esclarecer a abordagem dada pelo spring framework, mais precisamente, sua implementação do JDBC, spring-jdbc.&lt;br /&gt;&lt;br /&gt;Sem entrar em maiores detalhes sobre a implementação e utilização do módulo spring-jdbc, eu gostaria de compartilhar com todos uma experiência que me pareceu inusitada enquanto montava um DAO usando como base este módulo do spring framework.&lt;br /&gt;&lt;br /&gt;Sem mais, às formalidades:&lt;br /&gt;&lt;br /&gt;Meu DAO de exemplo, é o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class MeuBeanDao extends JdbcDaoSupport {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  public MeuBean selectByDescription(String description){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    return (MeuBean) getJdbcTemplate().queryForObject(SQL, new Object[]{description}, new MeuBeanRowMapper());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É uma implementação básica do método queryForObject() usando um array de Object para passar os argumentos e uma implementação do RowMapper, que visa mapear o resultado obtido de cada linha para o objeto a ser retornado.&lt;br /&gt;&lt;br /&gt;Até aí tudo bem. Está tudo certo. Meu teste de unidade se saiu perfeito. Porém, num cenário onde não há resultados, exceções podem acontecer.&lt;br /&gt;&lt;br /&gt;Por quê?&lt;br /&gt;&lt;br /&gt;Porque sim.&lt;br /&gt;&lt;br /&gt;O spring framework tem a abordagem de levantar exceções para ambos casos: resultado vazio e non-unique error (quando mais de uma linha é obtida da consulta). No meu caso, eu obtive um EmptyResultDataAccessException. O Spring opta por escolher representar os dois casos como exceções. Todavia, nos parece mais intuitivo se este, ao não encontrar nenhum registro, retornasse um simples java null.&lt;br /&gt;&lt;br /&gt;A solução!&lt;br /&gt;&lt;br /&gt;A solução encontrada é circundá-lo com um bloco try/catch. Veja abaixo como ficou.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public MeuBean selectByDescription(String description) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MeuBean result = null;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        try{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            result = (MeuBean) getJdbcTemplate().queryForObject(SQL, new Object[]{description}, new MeuBeanRowMapper());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }catch(EmptyResultDataAccessException e){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            // do nothing... thanks Spring framework...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        return result;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bom, mais uma postagem colaborativa. Maiores detalhes sobre spring-jdbc, visite o site: &lt;a href="http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html"&gt;http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Abraços!&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:'Times New Roman';font-size:medium;"  &gt;&lt;span class="Apple-style-span" style=";font-family:verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif;font-size:13px;"  &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/23433937-5407788110375998813?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/5407788110375998813/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=5407788110375998813' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5407788110375998813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5407788110375998813'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/03/spring-template-queryforobject-method.html' title='Spring template: queryForObject() method. Retorno de queries vazias.'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-889086814339378947</id><published>2011-03-03T21:32:00.001-03:00</published><updated>2011-03-03T21:34:49.037-03:00</updated><title type='text'>Programação orientada a aspectos: AOP.</title><content type='html'>What the fuck is that?&lt;br /&gt;&lt;br /&gt;Pelo menos, diminui o número de linhas de código...&lt;br /&gt;&lt;br /&gt;Continua...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-889086814339378947?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/889086814339378947/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=889086814339378947' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/889086814339378947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/889086814339378947'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/03/programacao-orientada-aspectos-aop.html' title='Programação orientada a aspectos: AOP.'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-9084702083335341797</id><published>2011-02-25T17:42:00.008-03:00</published><updated>2011-02-25T18:22:25.918-03:00</updated><title type='text'>Enviando arquivo PDF a um Java Servlet</title><content type='html'>Bom, faz algum tempo que não posto nada e portanto não vou ficar escrevendo desnecessariamente. Basicamente tive a necessidade de enviar de uma aplicação Java (JSE) um arquivo .PDF a outra aplicação Java Web (JEE) usando protocolo HTTP pelo intercurso de um Java Servlet. Tal solução pode ser utilizado num Java Applet.&lt;br /&gt;&lt;br /&gt;Segue abaixo o que foi feito.&lt;br /&gt;&lt;br /&gt;Aplicação Java (JSE) é bastante simples.  Para este exemplo, eu criei uma classe principal chamada Main e toda a lógica está dentro do método main da classe.&lt;br /&gt;&lt;br /&gt;Coloque todo o conteúdo baixo dentro de um bloco try/catch. Cuide para captar o Exception e faça o tratamento de acordo com a sua imaginação e necessidade.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;// URL da minha aplicação web.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;URL url = new URL("http://localhost:8080/TestAppletServletConnServer/StudentServlet");&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;// Abro a conexão com a minha aplicação web.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;URLConnection servletConnection = url.openConnection();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;// Seto alguns flags importantes para nossa aplicação. O mais importante de todos é o setOutput igual a true!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;servletConnection.setDoOutput(true);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;servletConnection.setAllowUserInteraction(false);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;servletConnection.setUseCaches(false);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;servletConnection.setDefaultUseCaches(false);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;// Seto o parametro MIME para que minha requisicao seja entendida que é um arquivo pdf.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;servletConnection.setRequestProperty("Content-Type", "application/pdf");&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Pego a referencia ao OutputStream da propria conexao.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;BufferedOutputStream outputToServlet = new BufferedOutputStream(servletConnection.getOutputStream());&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Abro o stream de entrada vindo do arquivo pdf fonte.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;FileInputStream input = new FileInputStream(new File("C:\\Temp\\pdf\\testToServer.pdf"));&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Passo a referencia ao objeto BufferedInputStream&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BufferedInputStream buf = new BufferedInputStream(input);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Aqui inicia o loop para escrever no output do servlet aberto anteriormente.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;int readBytes = 0;&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;while ((readBytes = buf.read()) != -1) {&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;  &lt;br /&gt;  outputToServlet.write(readBytes);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;outputToServlet.flush();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;outputToServlet.close();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;// Aqui eu pego uma referencia a um objeto InputStream. Isso eu percebi que é necessário porque somente assim é feito a requisição a classe servlet&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;BufferedInputStream ois = new BufferedInputStream(servletConnection.getInputStream());&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;ois.close();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vamos agora criar o Servlet utilizado no exemplo. Eu ponho tudo dentro de um método processRequest e este processará tando POST quanto GET.  Novamente, coloque tudo dentro de um bloco try/catch.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;// Pego a referencia ou objeto OuputStream que ha dentro do objeto response&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;ServletOutputStream out = response.getOutputStream();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Algumas coisas são necessárias e só há dentro do objeto ServletContext.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;ServletContext context = this.getServletConfig().getServletContext();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Seto o tipo de conteúdo&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            response.setContentType(request.getParameter("contentType"));&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Aqui eu leio do stream de entrada o arquivo pdf.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;InputStream istream = request.getInputStream();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Passo a referencia ao objeto BufferedInputStream.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BufferedInputStream bis = new BufferedInputStream(istream);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Crio um objeto BufferedOutputStream para escrever a saída numa referencia ao OutputStream do Servlet. Isso é necessário para finalizar com o response.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;BufferedOutputStream bos = new BufferedOutputStream(out);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Crio um objet BufferedOutputStream passando uma referencia ao arquivo que vou criar.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;BufferedOutputStream bos2file = new BufferedOutputStream(new FileOutputStream("C:\\Temp\\pdf\\testFromServer.pdf"));&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;// Stream the file back to the client&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;byte[] buffer = new byte[4096];&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;int size;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;size = bis.read(buffer);&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;while (size != -1) {&lt;/span&gt;&lt;br /&gt;     &lt;span style="font-family:courier new;"&gt;bos.write(buffer, 0, size);&lt;/span&gt;&lt;br /&gt;     &lt;span style="font-family:courier new;"&gt;bos2file.write(buffer, 0, size);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;   &lt;br /&gt;  size = bis.read(buffer);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;bis.close();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;bos.flush();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;bos.close();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;bos2file.flush();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;bos2file.close();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bom, existem outra maneiras de conseguir isso. A minha é uma das muitas possíveis soluções. Notem que não utilizo biblioteca de terceiros.&lt;br /&gt;&lt;br /&gt;Sem mais,&lt;br /&gt;&lt;br /&gt;Daniel Barcellos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-9084702083335341797?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/9084702083335341797/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=9084702083335341797' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/9084702083335341797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/9084702083335341797'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2011/02/enviando-arquivo-pdf-um-java-servlet.html' title='Enviando arquivo PDF a um Java Servlet'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-7861342691485623314</id><published>2009-06-24T11:21:00.003-03:00</published><updated>2009-06-24T11:24:03.254-03:00</updated><title type='text'>Projeto "startado"</title><content type='html'>Finalmente inciamos o projeto que visará a criação de um sistema, ou melhor, o "improvement" de um sistema de formulários eletrônicos e workflow. Nas próxima postagens estarei disponibilizando os dados das equipes envolvidas, isso caso eles deixarem. Mas é para um boa causa.&lt;br /&gt;&lt;br /&gt;Abraços!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-7861342691485623314?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/7861342691485623314/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=7861342691485623314' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/7861342691485623314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/7861342691485623314'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/06/projeto-startado.html' title='Projeto &quot;startado&quot;'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-1877232075325164371</id><published>2009-05-17T16:09:00.003-03:00</published><updated>2009-05-17T16:13:49.177-03:00</updated><title type='text'>Projeto desafiador</title><content type='html'>Desde um tempo venho prevendo a possibilidade de inciar um projeto que acredito que será muito desafiador para os meus conhecimentos na plataforma Java.&lt;br /&gt;Basicamente, sem mais delongas, o proj. consiste em desenvolver um produto o qual servirá não só para a gerência de documentos como também para workflow. O nome o qual estão sendo previstos eu não curto muito. Acho que não vende... Não vou dizer ainda, pois vai que o chefe utiliza alguma ferramenta de busca pela internet e localiza o meu blog dizendo que o produto que ele quer vender não é, segundo a minha visão, bom o nome. heHEhEHA&lt;br /&gt;&lt;br /&gt;Vou tentar postar constantemente para deixa-los informados... se é que alguém vai estar ligando para isso!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-1877232075325164371?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/1877232075325164371/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=1877232075325164371' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/1877232075325164371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/1877232075325164371'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/05/projeto-desafiador.html' title='Projeto desafiador'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-5659255662519490357</id><published>2009-03-14T17:22:00.000-03:00</published><updated>2009-03-14T17:25:00.286-03:00</updated><title type='text'>Ruby I</title><content type='html'>...e parece ser simples!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-5659255662519490357?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/5659255662519490357/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=5659255662519490357' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5659255662519490357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5659255662519490357'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/03/ruby-i.html' title='Ruby I'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-4517080249826282315</id><published>2009-03-14T10:34:00.000-03:00</published><updated>2009-03-14T10:37:48.960-03:00</updated><title type='text'>Ruby</title><content type='html'>Ruby, tem nome de jóia e com um futuro muito promissor!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-4517080249826282315?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/4517080249826282315/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=4517080249826282315' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/4517080249826282315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/4517080249826282315'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/03/ruby.html' title='Ruby'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-5239681992407491513</id><published>2009-03-13T18:42:00.002-03:00</published><updated>2009-03-13T18:46:50.038-03:00</updated><title type='text'>GWT</title><content type='html'>&lt;div style="text-align: left;"&gt;Eu não me considero um desenvolvedor muito atualizado. Não estou sempre antenado às novidade da tecnologia de desenvolvimento de software, sobretudo quando se trata do desenvolvimento de aplicações web que é o que mais gosto. Mas recentemente tive contato, quase que por acaso, com a Google Web Toolkit (GWT). Basicamente, é uma toolkit de desenvolvimento de aplicações web 2.0 usando praticamente java. Ela, digamos, abstrai toda a parte de desenvolvimento de scripts javascript, html, css usando para isso apenas a robusta linguagem de programação java. Bom, ainda me sinto muito verde para discorrer precisamente sobre GWT e, portanto, não vou correr o risco de dizer alguma bobagem, etc. Por hora é isso. Só informo que acho que terei uma experiência muito interessante com GWT.&lt;br /&gt;Estarei postando outras novidades a respeito.&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/23433937-5239681992407491513?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/5239681992407491513/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=5239681992407491513' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5239681992407491513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5239681992407491513'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/03/gwt.html' title='GWT'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-1875975053386186552</id><published>2009-02-20T14:45:00.001-03:00</published><updated>2009-02-20T14:48:14.149-03:00</updated><title type='text'>Antileis Já Estabelecidas Na Risofísica - Considerações</title><content type='html'>&lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Quem me conhece sabe que, volta e meia, eu chamo na, não pouco conhecida, sobretudo, dos profissionais de TI, lei de Murphy. Abaixo, segue uma dissertação acerca das Antileis na Risofísica. Eu não vou me preocupar em explicar os seus significados, até porque é só continuar lendo o e-mail. Mas uma coisa interessante é o que trata uma das Antileis de Murphy e que diz o seguinte: &lt;i&gt;"&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Arial;"&gt;Deixadas a si mesmas as coisa irão de mal a pior. A natureza está  sempre do lado da falha. Estabelecendo que a natureza é canalha, sempre que  alguma coisa não dá certo é porque você deixou de fazer alguma  coisa.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;"&lt;/i&gt; O interessante, no meu ponto de vista, não é o pessimismo da antilei em si, mas o simples fato de que ela, digamos, corrobora a existência de um ser superior dotado de inteligência a nos guiar. Veja o argumento de Murphy: "deixadas por si mesmas as coisas irão de mal a pior". A história humana conta com mais ou menos uns 4000 anos de existência e de incansável evolução. Tal processo evolutivo nos leva a crer que, caso estivéssemos em nossa jornada totalmente sozinhos, haja visto que somos fruto da natureza, muito provavelmente eu não estaria aqui para compartilhar convosco de minhas divagações sobre a trajetória bem sucedida da humanidade, isso porque muito provavelmente algo &lt;i&gt;não teria dado certo&lt;/i&gt;. Portanto, me leva a crer que somente guiados por algo acima de nós (não olhe para o teto) conseguimos alcançar o patamar atual de sociedade moderna. Murphy e todas as seitas estão certas e ambos os argumentos se convergem no seguinte: "não há efeito semcausa" (vide o Livro dos Espíritos) e "deixadas por si mesmas as coisas irão de mal a pior". &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;PS: Este e-mail está postado também nos Blogs: &lt;span style="font-size:130%;"&gt;universu.blogspot.com&lt;/span&gt; e &lt;span style="font-size:130%;"&gt;gnulinuxfreak.blogspot.com&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Abraços a todos!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Em 1974, foi dado início à publicação de  algumas&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;i&gt;Antileis  Risofísicas&lt;/i&gt;&lt;span class="apple-converted-space"&gt; &lt;/span&gt;em páginas semanais da  revista&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;i&gt;Veja&lt;/i&gt;. Essas leis foram  denominadas&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;i&gt;antileis&lt;/i&gt;, por serem  contra determinadas leis vigentes em todas as atividades humanas,  e&lt;i&gt;risofísicas&lt;/i&gt;&lt;span class="apple-converted-space"&gt; &lt;/span&gt;para nos  aparentarmos protetoramente com a metafísica. Na verdade essas antileis  continuam e contam mais verdades do que as leis estabelecidas e devem ser  encaradas com mais seriedade do que elas. Lembrem-se de que a primeira vez em  que Proudhon declarou: "Toda propriedade é um roubo" o pessoal da festa caíu na  gargalhada diante dessa - na época -&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;i&gt;antilei&lt;/i&gt;. O mesmo aconteceu quando,  mais tarde, Lênine indagou: "Afinal o que é o roubo de um banco diante da  fundação de um banco?".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Diante disso resolvi mostrar para vocês caros  internautas, algumas&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;i&gt;Antileis  Risofísicas&lt;/i&gt;.&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 13.5pt;"&gt;ANTILEIS JÁ ESTABELECIDAS NA  RISOFÍSICA&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de Lowry&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "O momento exato em que você se torna excelente em determinada  coisa coincide com o momento em que você não precisa mais  dela."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de Milton&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "O parente mais próximo e mais violento do jogador de futebol que  você xinga está sempre sentado exatamente à sua frente, na arquibancada do  Maracanã."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de  Pondiczery&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "A vida é a causa da  morte."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de Young&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "T1 é o tempo necessário pruma pessoa que discou o telefone chegar  à conclusão de que não vão atender do outro lado. T2 é o tempo necessário para a  pessoa do outro lado - que está no banheiro - chegar ao telefone que toca. Logo  T1 = T2."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de Cox&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "Pra onde quer que você mude é sempre do mesmo lado da  rua."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de Etorre&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "A outra fila sempre anda mais rápido. Isso se aplica a qualquer  fila, banco, alfândega, supermercado, tráfego. Não mude de fila pois a antilei  não muda - a outra fila sempre anda mais rápido."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de Murphy&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "1.Se houver possibilidade de alguma coisa dar errado, dará. 2. Das  coisas que não tem a menor possibilidade de dar errado, algumas  darão."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de Murphy&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: Deixadas a si mesmas as coisa irão de mal a pior. A natureza está  sempre do lado da falha. Estabelecendo que a natureza é canalha, sempre que  alguma coisa não dá certo é porque você deixou de fazer alguma  coisa."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de  Parkinson&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "O trabalho se expande até preencher o tempo  disponível."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: Arial;"&gt;Antilei de da mulher de  Parkinson&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;: "As despesas se expandem até o consumo total  da renda."&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/23433937-1875975053386186552?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/1875975053386186552/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=1875975053386186552' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/1875975053386186552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/1875975053386186552'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/02/antileis-ja-estabelecidas-na-risofisica.html' title='Antileis Já Estabelecidas Na Risofísica - Considerações'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-5600822640744849255</id><published>2009-02-16T08:56:00.002-03:00</published><updated>2009-02-16T09:03:29.046-03:00</updated><title type='text'>Certificação Oracle</title><content type='html'>Estou dando início ao meu processo de certificação Oracle. Vou buscar, a princípio, a certificação Oracle OCA. São dois exames: 1Z0-001 (Introduction to Oracle: SQL and PL/SQL) e 1Z0-147 (Program with PL/SQL). Essa certificação é basicamente para desenvolvedores. Existem outras certificações. Caso estejas interessado, consulte o site http://education.oracle.com&lt;br /&gt;&lt;br /&gt;Abraços!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-5600822640744849255?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/5600822640744849255/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=5600822640744849255' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5600822640744849255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5600822640744849255'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/02/certificacao-oracle.html' title='Certificação Oracle'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-4789699684720672009</id><published>2009-01-13T09:36:00.010-02:00</published><updated>2009-02-05T11:24:46.096-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plsql'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Extendendo PL/SQL com JAVA</title><content type='html'>Este artivo visa explanar uma experiência que tive recentemente na qual tive a necessidade de aperfeiçoar rotinas em Oracle PL/SQL com classes JAVA. Aparentemente o que pode parecer complicado não é! É necessário também informar que este artigo baseia-se em capítulo do livro Expert Oracle PL/SQL escrito por Ron Hardman e Michael McLaughlin (McGraw-Hill/Osborne, 2005; ISBN: 0072261943). Válido também é fazer nota ao artigo de autoria por mim desconhecida mas que foi muito importante também http://docstore.mik.ua/orelly/oracle/guide8i/ch09_08.htm&lt;br /&gt;&lt;br /&gt;O problema.&lt;br /&gt;&lt;br /&gt;Quando inciei um projeto de desenvolvimento de um sistema de informação, um pouco Work Flow, um pouco ERP (guardado as devidas proporções para este último), tive a necessidade de processar documentos no formato XML. Então criei um modelo de documento XML e iniciei o desenvolvimento de uma rotina em Oracle PL/SQL que fizesse, entre outras palavras, a leitura desse xml. Foi um processo de criação de um algoritmo vencedor que lesse o xml em questão. Contudo, após alguns testes bem sucedidos, me debati com um problema enorme de performance da leitura do xml. Isso porque o PLSQL não é uma linguagem otimizada para esses tipos de tarefas.&lt;br /&gt;Bom, procurando algo por aí na internet, mais precisamente no Google.com, achei umas funcionalidades bastante úteis onde é possível integrar a poderosa ferramenta de programação JAVA com Oracle PL/SQL. Basicamente, desde a versão 9i da Oracle é possível usar componentes OO Java, ou seja, classes javas, POJOS, etc diretamente em banco através de PL's.&lt;br /&gt;&lt;br /&gt;Os prérequisitos.&lt;br /&gt;&lt;br /&gt;Vamos precisar para concretização desse artigo do seguinte:&lt;br /&gt;i. um sistema operacional LINUX (qualquer um);&lt;br /&gt;ii. um sistema de banco de dados relacional Oracle (10g preferencialmente, pois foi a versão que uso)&lt;br /&gt;iii. um ambiente de desenvolvimento JAVA (Netbeans ou Eclipse);&lt;br /&gt;iv. JDK 1.4.2*&lt;br /&gt;&lt;br /&gt;* o uso da JDK 1.4.2 dá-se em função da VM embarcada no Oracle ser a 1.4. Não quero entrar nesse mérito. Não agora...&lt;br /&gt;&lt;br /&gt;O desenvolvimento.&lt;br /&gt;&lt;br /&gt;Como dito, precisei fazer o parsing de um documento xml. Para isso recorri à API JDOM que manipula muito bem os elementos de documentos xml.  Em nosso exemplo simples vou usar um POJO para demonstrar como implementar classes java em stored procedures Oracle.&lt;br /&gt;&lt;br /&gt;Eis a classe:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; * GnuLinuxFreak.java&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; * Created on 5 de Fevereiro de 2009, 10:21&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; * To change this template, choose Tools | Template Manager&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; * and open the template in the editor.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;package &lt;/span&gt;jplsql;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; * @author Daniel Barcellos&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;public class&lt;/span&gt; GnuLinuxFreak {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;private static&lt;/span&gt; String freak;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    /** Creates a new instance of GnuLinuxFreak */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;GnuLinuxFreak&lt;/span&gt;() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;public static void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;setFreak&lt;/span&gt;(String frk) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        freak = frk;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;public static&lt;/span&gt; String &lt;span style="font-weight: bold;"&gt;getFreak&lt;/span&gt;() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;return &lt;/span&gt;freak;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tanto os atributos quanto os metodos tem de utilizar o modificador static porque será necessário envocá-los diretamente sem a necessidade de instanciar objetos da classe.&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;GnuLinuxFreak.getFreak();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora, vamos aos objetos de banco.&lt;br /&gt;&lt;br /&gt;Eis a procedure. Note a utilização do operador AS LANGUAGE JAVA o qual informa ao compilador de que se trata de uma implementação com JAVA.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 153, 0); font-weight: bold;"&gt;CREATE OR REPLACE PROCEDURE PRC_GNU_LINUX_FREAK( P_FREAK VARCHAR )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 153, 0); font-weight: bold;"&gt;AS LANGUAGE JAVA &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;NAME&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;'GnuLinuxFreak.setFreak(java.lang.String)'&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A function.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 153, 0); font-weight: bold;"&gt;CREATE OR REPLACE FUNCTION FNC_GNU_LINUX_FREAK RETURN VARCHAR2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 153, 0); font-weight: bold;"&gt;AS LANGUAGE JAVA &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;NAME &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'GnuLinuxFreak.getFreak(java.lang.String) return java.lang.String'&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A diferença, entre outras, é o fato que, na implementação da chamada à classe tanto no argumento (parâmetro), quanto no retorno deve-se utilizar o full qualified name da classe correspondente.&lt;br /&gt;&lt;br /&gt;Agora, vamos fazer o load da classe em nossa base. Para tanto, utilizaremos o utilitario loadjava. Este é um utilitário de linha de comando, o que obriga decorar uma quase que infinidade de comandos adicionais. É possível também fazê-lo utilizando a chamada DBMS_JAVA.LOADJAVA&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;&lt;span style="font-size: 11pt; color: rgb(68, 68, 221); font-weight: bold;"&gt;call&lt;/span&gt;&lt;span style="font-size: 11pt; color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-size: 11pt; color: rgb(0, 0, 0);"&gt;dbms_java&lt;/span&gt;&lt;span style="font-size: 11pt; color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="font-size: 11pt; color: rgb(0, 0, 0);"&gt;loadjava&lt;/span&gt;&lt;span style="font-size: 11pt; color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="font-size: 11pt; color: rgb(204, 0, 0);"&gt;' -schema "&lt;esquema&gt;" C:\Temp\JPlsql.jar'&lt;/span&gt;&lt;span style="font-size: 11pt; color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Em nosso exemplo utilizaremos o utilitario de linha de comando. A sintaxe usada segue abaixo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;loadjava -v -user USER/SENHA -resolve c:\Temp\JPlsql.jar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;br /&gt;Uma listagem explanatória sobre os demais parâmetros pode ser encontrada em http://docstore.mik.ua/orelly/oracle/guide8i/ch09_04.htm.&lt;br /&gt;O argumento &lt;span style="font-family: courier new;"&gt;-v&lt;/span&gt; significa verbose mode, ou seja, mostrará na tela tudo que for de informações do processo de carga.&lt;br /&gt;O &lt;span style="font-family: courier new;"&gt;-user&lt;/span&gt; indicará para o utilitario para qual esquema utilizar na carga.&lt;br /&gt;O &lt;span style="font-family: courier new;"&gt;-resolve&lt;/span&gt; é o cerne do comando propriamente dito. Ele resolverá as dependecias.&lt;br /&gt;&lt;br /&gt;Se tu der certo durante o processo todo de carga de nossa classe de exemplo. Podemos passar para os testes. Se você tiver alguma dúvida em algo que deu errado, não deixe de postar comentários, críticas, etc.&lt;br /&gt;&lt;br /&gt;Os testes.&lt;br /&gt;&lt;br /&gt;Para testar, primeiro vamos fazer a chamada à procedure PRC_GNU_LINUX_FREAK.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;EXEC PRC_GNU_LINUX_FREAK('Im Crazy For LINUX!!!');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Em seguida podemos ver se o método getFreak conseguirá buscar a string informada pela procedure acima.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SET SERVEROUTPUT ON&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;EXEC DBMS_OUTPUT.PUT_LINE(FNC_GNU_LINUX_FREAK);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tudo certo?!&lt;br /&gt;&lt;br /&gt;A conclusão.&lt;br /&gt;&lt;br /&gt;Bom, imagine a quantidade de possibilidades que podemos com essas duas ferramentas. Eu sei que muitos fundamentalistas do mundo java dirão porque extender plsql de oracle se hoje em dias podemos contar com as mais diversas API'S e Frameworks disponíveis de acesso a banco de dados e persitência. Eu concordo em partes. Porém quando se trata de sistemas legados onde todas a estrutura foi e está sendo desenvolvida em PLSQL as possibilidade desse casamento podem ser infinitas até o limite de ambas as linguagens.&lt;br /&gt;Sou um grande fã das duas tecnologias e percebo um futuru muito interessante não só para o PLSQL como também para o Java. Agora, image juntá-los.&lt;br /&gt;&lt;br /&gt;Até a próxima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-4789699684720672009?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/4789699684720672009/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=4789699684720672009' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/4789699684720672009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/4789699684720672009'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2009/01/extendendo-plsql-com-java.html' title='Extendendo PL/SQL com JAVA'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-5958001365457788490</id><published>2008-05-14T13:05:00.003-03:00</published><updated>2008-05-14T13:10:34.529-03:00</updated><title type='text'>Ruby On Rails</title><content type='html'>Faz tempo que não posto absolutamente nda!&lt;br /&gt;&lt;br /&gt;Recentemente comprei um livro sobre Ruby porque, além de ter ouvido uma palestra no FILS 6 sobre o quanto Ruby é simples e robusto, percebo que há tempos Ruby sobre o fmwk Rails vem crescendo significativamente.&lt;br /&gt;Hoje, programo usando algumas tecnologias JEE tais como JavaServer Pages, Servelet's, Java Standard Tag Libs (JSTL).&lt;br /&gt;Acredito que o Ruby ainda vai dar muito o que falar devido a sua robustez e simplicidade aliado à OO em perfeito sincronismo c/ o frame.&lt;br /&gt;&lt;br /&gt;Vamos ver no que dá...&lt;br /&gt;&lt;br /&gt;Abraços!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-5958001365457788490?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/5958001365457788490/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=5958001365457788490' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5958001365457788490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/5958001365457788490'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2008/05/ruby-on-rails.html' title='Ruby On Rails'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-115626471553354756</id><published>2006-08-22T13:37:00.000-03:00</published><updated>2006-08-22T13:38:35.550-03:00</updated><title type='text'>Liberada a versão Slackware 11.0 Release Candidate 2</title><content type='html'>Lançada oficialmente a versão do Slackware 11.0 Release Candidate 2. Esta é última release antes do lançamento oficial do Slackware 11.0.Muitos bugs foram corrigidos e muitas atualizações foram feitas nesta na nova versão. Mudanças recentes incluem atualização para o kernel 2.4.33 (em vez do kernel 2.4.31), atualização para o recente kernel 2.6.19, atualizações de muitos binários no instalador e correções de alguns bugs e falhas de segurança.Slackware Linux é o nome de uma das mais antigas e conhecidas distribuições (sistema operacional e conjunto de aplicativos) do Linux. Criada em 1993 e mantida por Patrick Volkerding, a Slackware (ou simplesmente "Slack") tem como objetivo manter-se fiel aos padrões UNIX, rejeitando também ferramentas de configuração que escondam do usuário o real funcionamento do sistema.&lt;br /&gt;&lt;br /&gt;Download &lt;a href="ftp://ftp.slackware.no/pub/linux/ISO-images/Slackware/Current-ISO-build/"&gt;aqui&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-115626471553354756?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/115626471553354756/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=115626471553354756' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115626471553354756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115626471553354756'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/08/liberada-verso-slackware-110-release.html' title='Liberada a versão Slackware 11.0 Release Candidate 2'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-115409514445812488</id><published>2006-07-28T10:57:00.000-03:00</published><updated>2006-07-28T10:59:04.460-03:00</updated><title type='text'>Slackware 11" esta perto</title><content type='html'>Estamos chegando perto do 11.0 amigos. Espero ter um changeset maior logo, mas por enquanto isto deve ser legal para &amp;#39;brincar&amp;#39;, enquanto trabalho na lista de afazeres; atualizando, compilando e com testes iniciais.", diz Patrick Volkerding no changelog do &amp;#39;current&amp;#39;. O Slackware 11.0 considerará a série 2.6.16.x do kernel como suportada, mas Patrick informa que deverá manter o bare.i do kernel 2.4.32 como default (ou talvez sata.i) pela ótima performance e provavelmente melhor segurança devido ao design mais simples e mais testado.&lt;br /&gt;Patrick finaliza agradecendo à esposa por ter compilado os pacotes desta última atualização.&lt;br /&gt;&lt;br /&gt;Maiores informações em:&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.noticiaslinux.com.br/nl1153107394.html" target="_blank"&gt;http://www.noticiaslinux.com&lt;wbr&gt;.br/nl1153107394.html&lt;/a&gt;&lt;br /&gt;Fonte Original (inglês): &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.slackware.org/changelog/current.php?cpu=i386" target="_blank"&gt;http://www.slackware.org&lt;wbr&gt;/changelog/current.php?cpu&lt;wbr&gt;=i386&lt;/a&gt;&lt;br /&gt;Leia mais em &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.underlinux.com.br/content/view/6135/59/" target="_blank"&gt;http://www.underlinux.com.br&lt;wbr&gt;/content/view/6135/59/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-115409514445812488?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/115409514445812488/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=115409514445812488' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115409514445812488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115409514445812488'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/07/slackware-11-esta-perto.html' title='Slackware 11&quot; esta perto'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-115280184427685009</id><published>2006-07-13T11:43:00.000-03:00</published><updated>2006-07-13T11:44:04.296-03:00</updated><title type='text'>Instalando e Configurando Modem Motorola SM56 - Adaptado</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;      Instalando e Configurando Modem Motorola SM56         &lt;/td&gt;         &lt;td align="right" width="100%"&gt;&lt;a href="http://www.underlinux.com.br/index2.php?option=com_content&amp;task=view&amp;amp;id=4403&amp;pop=1&amp;amp;page=0&amp;Itemid=58#" title="Imprimir" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; &lt;img alt="Imprimir" name="Imprimir" align="middle" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;             &lt;table&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;td colspan="2" valign="top"&gt;      24 de março de 2005    &lt;/td&gt;    &lt;/tr&gt;      &lt;tr&gt;    &lt;td colspan="2" valign="top"&gt;     Este documento tem como objetivo, auxiliar os usuarios do Modem sm56 da Motorola a instalarem esse modem no Linux.   &lt;br /&gt;1.0 - SOBRE ESTE DOCUMENTO&lt;br /&gt;2.0 - INTRODUÇÃO&lt;br /&gt;3.0 - O QUE É NECESSÁRIO?&lt;br /&gt;4.0 - INSTALANDO.&lt;br /&gt;5.0 - SE SEU KERNEL É MAIOR QUE 2.4.5&lt;br /&gt;6.0 - POSSÍVEIS PROBLEMAS&lt;br /&gt;7.0 - CONCLUSÃO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.0 - SOBRE ESTE DOCUMENTO&lt;br /&gt; Este documento é distribuí­do gratuitamente, seguindo&lt;br /&gt;o FDL, e pode&lt;br /&gt;ser distribuí­do e alterado, desde que você cite a&lt;br /&gt;fonte. Você é bem vindo se quiser colaborar.&lt;br /&gt;&lt;br /&gt;2.0 - INTRODUÇÃO&lt;br /&gt;&lt;br /&gt; A mais ou menos um ano e meio atrás, foi criado um&lt;br /&gt;artigo, e divulgado amplamente, sobre como&lt;br /&gt;instalar e configurar o Modem sm56 da Motorola.&lt;br /&gt; Na época, o kernel 2.4.0 havia acabado de ser&lt;br /&gt;lançado, e a Motorola lancou o driver para tal modem,&lt;br /&gt;sendo que foi unica e exclusivamente testado com o Red&lt;br /&gt;Hat Linux 7.1.&lt;br /&gt; Acontece que, como é costume no mundo do Software&lt;br /&gt;Livre,  as coisas andam depressa, e a cada semana e&lt;br /&gt;a cada mês, surgem atualizações e correções.&lt;br /&gt; Infelizmente, a Motorola nao conseguiu seguir o mesmo&lt;br /&gt;ritmo, seja por falta de interesse ou por&lt;br /&gt;qualquer outro motivo.&lt;br /&gt; O que importa realmente, é que vários usuários&lt;br /&gt;ficaram sem suporte,quando viram que o driver não&lt;br /&gt;funcionava nas versões de kernel mais novas e acima do&lt;br /&gt;2.4.5.&lt;br /&gt; Na época, recebi vários e-mail's e continuo a&lt;br /&gt;recebê-los, pedindo maiores detalhes sobre como&lt;br /&gt;instalar e fazer funcionar tal modem.&lt;br /&gt; Agora, com a ajuda de alguns amigos, finalmente é&lt;br /&gt;possível configurar o modem para que ele funcione&lt;br /&gt;em um kernel diferente do 2.4.5.&lt;br /&gt; Agradecimentos a todos aqueles que me enviaram e-mail&lt;br /&gt;e ao meu amigo Massimiliano Mirra.&lt;br /&gt; Agradecimento especial a minha esposa Brenna. Ela é&lt;br /&gt;minha revisora oficial ;^).&lt;br /&gt;&lt;br /&gt;3.0 - O QUE É NECESSÁRIO?&lt;br /&gt;&lt;br /&gt; Inicialmente, a primeira coisa a fazer, é ver sob&lt;br /&gt;qual kernel seu sistema estatrabalhando.&lt;br /&gt; Use o comando uname -r. Se este comando retornar um&lt;br /&gt;kernel menor ou igual ao 2.4.5, vai até&lt;br /&gt;a página  da Motorola (&lt;a href="http://www.motorola.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;www.Motorola.com&lt;/a&gt;) e pegue o&lt;br /&gt;driver para o modem.&lt;br /&gt;   Caso o kernel seja maior do que o mencionado acima,&lt;br /&gt;vá para seção&lt;br /&gt;"5.0 - SE SEU KERNEL É MAIOR QUE 2.4.5".&lt;br /&gt; Outra coisa que você deverá observar, é ter um&lt;br /&gt;ambiente de desenvolvimento GNU instalado em seu&lt;br /&gt;sistema, já que precisaremos dele para compilar o&lt;br /&gt;driver corretamente.&lt;br /&gt; Verifique, com o comando rpm -qa | grep gcc, se o&lt;br /&gt;compilador GNU C está instalado.&lt;br /&gt; Faça o mesmo para o cpp: rpm -qa | grep cpp.&lt;br /&gt; Se você possuir um kernel acima do 2.4.5, você deverá&lt;br /&gt;ter as fontesdo kernel do seu sistema insta-&lt;br /&gt;lado, bem como o make, o automake, o autoconf, o tcl,&lt;br /&gt;e o ncurses, pois teremos que recompilar o kernel.&lt;br /&gt;&lt;br /&gt;4.0 - INSTALANDO&lt;br /&gt;&lt;br /&gt; Esta parte diz respeito aqueles que tem um kernel&lt;br /&gt;menor ou igual ao 2.4.5.&lt;br /&gt; Uma vez efetuado o download e, como root, instale-o&lt;br /&gt;com rpm -ivh sm56xxxx-i386.rpm.&lt;br /&gt; Após, digite man sm56 e procure por qual código o seu&lt;br /&gt;País se encaixa.&lt;br /&gt; A lista é um pouco extensa:&lt;br /&gt;&lt;br /&gt;      1 = USA&lt;br /&gt;                  2 = Canada&lt;br /&gt;                  27 = South Africa&lt;br /&gt;                  30 = Greece&lt;br /&gt;                  31 = Netherlands&lt;br /&gt;                  32 = Belgium&lt;br /&gt;                  33 = France&lt;br /&gt;                  34 = Spain&lt;br /&gt;                  39 = Italy&lt;br /&gt;                  41 = Switzerland&lt;br /&gt;                  42 = Czech Republic&lt;br /&gt;                  43 = Austria&lt;br /&gt;                  44 = United Kingdom&lt;br /&gt;                  45 = Denmark&lt;br /&gt;                  46 = Sweden&lt;br /&gt;                  47 = Norway&lt;br /&gt;                  49 = Germany&lt;br /&gt;                  52 = Mexico&lt;br /&gt;                  54 = Argentina&lt;br /&gt;                  55 = Brazil&lt;br /&gt;                  57 = Columbia&lt;br /&gt;                  58 = Venezuela&lt;br /&gt;                  60 = Malaysia&lt;br /&gt;                  61 = Australia&lt;br /&gt;                  64 = New Zealand&lt;br /&gt;                  65 = Singapore&lt;br /&gt;                  66 = Thailand&lt;br /&gt;                  81 = Japan&lt;br /&gt;                  82 = Korea&lt;br /&gt;                  84 = Vietnam&lt;br /&gt;                  86 = China&lt;br /&gt;                  90 = Turkey&lt;br /&gt;                  351 = Portugal&lt;br /&gt;                  352 = Luxembourg&lt;br /&gt;                  353 = Ireland&lt;br /&gt;                  354 = Iceland&lt;br /&gt;                  358 = Finland&lt;br /&gt;                  852 = Hong Kong&lt;br /&gt;                  886 = Taiwan&lt;br /&gt;                  962 = Jordan&lt;br /&gt;                  972 = Israel&lt;br /&gt;&lt;br /&gt; Depois que você instalar o driver, digite sm56setup,&lt;br /&gt;seguido do&lt;br /&gt;código do seu País.&lt;br /&gt; Naturalmente para nós que moramos no Brasil, o código&lt;br /&gt;escolhido será o 55.&lt;br /&gt; Se este código for omitido será atribuí­do o código&lt;br /&gt;padrão: 1 (USA).&lt;br /&gt; O comando sm56setup compila o módulo que controla o&lt;br /&gt;modem, adequado para seu kernel, que será&lt;br /&gt;instalado em /lib/modules/[seu&lt;br /&gt;kernel]/kernel/drivers/char.&lt;br /&gt; O comando também adequa o seu /etc/modules.conf, que&lt;br /&gt;ficará assim:&lt;br /&gt;&lt;br /&gt;.......&lt;br /&gt;.......&lt;br /&gt;alias char-major-24 sm56&lt;br /&gt;options sm56 country=1 ---&gt; aqui poderá ser colocado o&lt;br /&gt;código apropriado.&lt;br /&gt;&lt;br /&gt; Ele também cria um dispositivo em /dev, chamando&lt;br /&gt;sm56, criando um link para o /dev/modem, que aponta&lt;br /&gt;para este dispositivo, bem como seta as permissões&lt;br /&gt;adequadas.&lt;br /&gt; Digite modprone sm56 e pronto, seu modem está&lt;br /&gt;instalado!&lt;br /&gt; Se seu kernel é superior ao 2.4.5, passe ao próximo&lt;br /&gt;tópico.&lt;br /&gt;&lt;br /&gt;5.0 - SE O KERNEL É MAIOR DE 2.4.5.&lt;br /&gt; &lt;br /&gt; Primeiramente, quero agradecer ao meu amigo&lt;br /&gt;Massimiliano Mirra, que me enviou esta dica.&lt;br /&gt; Se você está usando uma distribuição moderna, como&lt;br /&gt;Conectiva Linux8.0, Red Hat Linux 8.0,&lt;br /&gt;Mandrake Linux 9.0 ou Slackware Linux 8.1, saiba que o&lt;br /&gt;modem sm56 pode funcionar sob um kernel mais recente.&lt;br /&gt; Estas distribuições citadas, a exceção do Mandrake&lt;br /&gt;Linux 9.0, trazem um kernel 2.4.18.&lt;br /&gt; Para este documento, eu utilizei o Mandrake 9.0, com&lt;br /&gt;kernel 2.4.19.&lt;br /&gt; Como comentado acima, será necessário fazer algumas&lt;br /&gt;alteraçõesnas fontes do kernel e recompilá-lo&lt;br /&gt;para que o modem funcione corretamente.&lt;br /&gt; Vá até onde as fontes do kernel estão instaladas&lt;br /&gt;(geralmente /usr/src/linux-2.4.X).&lt;br /&gt; Entre no diretório mm.&lt;br /&gt; Neste diretório estão as fontes para o tratamento da&lt;br /&gt;memória.&lt;br /&gt; Procure por um arquivo chamado slab.c.&lt;br /&gt; Este arquivo deve ser alterado.&lt;br /&gt; Abra-o com seu editor de texto.&lt;br /&gt; Não darei explicações  do por que ele deverá ser&lt;br /&gt;alterado, pois nãosou um craque em programação C,&lt;br /&gt;mas acho que deve ter algo com relação com a alocação&lt;br /&gt;da memória pelo driver do Motorola.&lt;br /&gt;     Se alguém tiver alguma explicação e quiser&lt;br /&gt;enviar, será prontamenteincluí­da nesta&lt;br /&gt;documentação.&lt;br /&gt; Vá até a linha 1116, e comente-a:&lt;br /&gt;&lt;br /&gt;Ela está assim:&lt;br /&gt; if (flags &amp; ~(SLAB_DAM|SLAB_LEVEL_MASK&lt;wbr&gt;|SLAB_NO_GROW))&lt;br /&gt;  BUG();&lt;br /&gt;E deve ficar assim:&lt;br /&gt; /* if (flags &amp;&lt;br /&gt;~(SLAB_DAM|SLAB_LEVEL_MASK&lt;wbr&gt;|SLAB_NO_GROW))&lt;br /&gt;  BUG(); */&lt;br /&gt;&lt;br /&gt; Depois disso, grave o arquivo e vamos compilar o&lt;br /&gt;kernel. &lt;br /&gt; Digite make menuconfig.&lt;br /&gt; Perceba que se você não tiver o ncurses instalado,&lt;br /&gt;este comando irá falhar.&lt;br /&gt; Irá aparecer, depois de alguns momentos, um menu&lt;br /&gt;baseado em ncurses,com botões, caixas e diálogos,&lt;br /&gt;para que possamos escolher as opçÕes do kernel.&lt;br /&gt; Recomendo fortemente que você deixe o seu kernel o&lt;br /&gt;mais enxuto possí­vel.&lt;br /&gt; Por exemplo, escolha um processador de acordo com a&lt;br /&gt;sua máquina:se você tem um AMD, não faz&lt;br /&gt;sentido escolher um Pentium MMX, pois alguns&lt;br /&gt;parâmetros do processador poderá fazer diferença.&lt;br /&gt; Tire tudo o que não for necessário para sua máquina:&lt;br /&gt;bluetooth, PCMCIA, USB, entre outros, anão ser&lt;br /&gt;que tais suportes sejam requeridos pelo seu sistema.&lt;br /&gt; Outra idéia: se você não tem nenhuma placa de rádio e&lt;br /&gt;não planeja adquirir uma, não há&lt;br /&gt;necessidade de compilar um módulo para suportar tal&lt;br /&gt;placa.&lt;br /&gt; Outro suporte desnecessário em máquinas caseiras, é&lt;br /&gt;suporte a ATM, a FDDI (fibra óptica), WAN,&lt;br /&gt;APPLETALK, IPX, DECNET, etc., quando não é um&lt;br /&gt;requisito essencial.&lt;br /&gt; Retire tudo o que não seja estritamente necessário.&lt;br /&gt; Depois de escolhidas as opções, tecle TAB, até cair&lt;br /&gt;na opção Exit.&lt;br /&gt; Tecle ENTER e será perguntado se você quer salvar as&lt;br /&gt;alteraçÕes. Escolha SIM.&lt;br /&gt; Agora digite make dep para criar as dependências&lt;br /&gt;necessárias para compilar o kernel.&lt;br /&gt; Depois que o comando se completar, digite make&lt;br /&gt;bzImage, para construir a imagem do kernel.&lt;br /&gt; Depois, digite make modules e make modules_install,&lt;br /&gt;para construir e instalar os módulos&lt;br /&gt;do novo kernel.&lt;br /&gt;    Pode sair para um cafezinho agora, pois este&lt;br /&gt;comando poderá demorar, dependendo do porte de sua&lt;br /&gt;máquina.&lt;br /&gt; Terminado o comando anterior, o seu kernel estará em&lt;br /&gt;/usr/src/linux-2.4.X/arch/i386/boot, com o nome&lt;br /&gt;de bzImage.&lt;br /&gt; Copie-o para o diretório /boot, dando-lhe outro nome,&lt;br /&gt;como vmlinuz-custom.&lt;br /&gt; Copie também o System.map, que está em&lt;br /&gt;/usr/src/linux-2.4.X/System.map, para o diretório&lt;br /&gt;/boot,&lt;br /&gt;com um nome diferente, como System.map-custom.&lt;br /&gt; No mesmo diretório, há um arquivo oculto chamando&lt;br /&gt;.config.&lt;br /&gt; Digite ls -a, para visualizá-lo.&lt;br /&gt; Copie-o também para o diretório /boot, com um nome&lt;br /&gt;diferente, como config-custom.&lt;br /&gt; Entre no diretório&lt;br /&gt;/usr/src/linux-2.4.X/include/linux.&lt;br /&gt; Copie o arquivo kernel.h, para o diretório /boot, com&lt;br /&gt;um nome diferente, algo como kernel.h-custom.&lt;br /&gt; Agora, vá para o diretório /boot, e faça as&lt;br /&gt;alterações necessárias.&lt;br /&gt; Apague os links seguintes:&lt;br /&gt; rm -rf config, rm -rf System.map, rm -rf vmlinuz e rm&lt;br /&gt;-rf kernel.h&lt;br /&gt; Crie agora os links para os arquivos novos:&lt;br /&gt; ln -s config-custom config&lt;br /&gt; ln -s System.map-custom System.map&lt;br /&gt; ln -s vmlinuz-custom vmlinuz e por último&lt;br /&gt; ln -s kernel.h-custom kernel.h&lt;br /&gt;&lt;br /&gt; Agora, temos que alterar o arquivo /etc/lilo.conf, se&lt;br /&gt;você estiver usando o LILO, como gerenciador&lt;br /&gt;de inicalização.&lt;br /&gt; Ele deve se parecer com isso:&lt;br /&gt;&lt;br /&gt;boot=/dev/hda&lt;br /&gt;map=/boot/map&lt;br /&gt;vga=normal&lt;br /&gt;default=linux&lt;br /&gt;keytable=/boot/us-latin1.klt&lt;br /&gt;prompt&lt;br /&gt;nowarn&lt;br /&gt;#vga = 791&lt;br /&gt;timeout=100&lt;br /&gt;message=/boot/message&lt;br /&gt;menu-scheme=wb:bw:wb:bw&lt;br /&gt;image=/boot/vmlinuz  ---------------------------&lt;br /&gt; label=linux      |&lt;br /&gt; root=/dev/hda1    |&lt;br /&gt;# initrd=/boot/initrd.img   | -&gt; É aqui que devemos&lt;br /&gt;fazer a alteração,&lt;br /&gt; append="devfs=mount"   | colocando o nome do kernel&lt;br /&gt;(vmlinuz).&lt;br /&gt; vga=791     | Comente a linha initrd, pois ela diz   &lt;br /&gt;     &lt;br /&gt; read-only ------------------------------ respeito&lt;br /&gt;somente ao kernel velho.&lt;br /&gt; &lt;br /&gt;image=/boot/vmlinuz-seu-kernel&lt;wbr&gt;-original-------------------&lt;br /&gt; label=linux-nonfb                                 |&lt;br /&gt; root=/dev/hda1       | -&gt; Mantenha esta linha,&lt;br /&gt;alterando&lt;br /&gt; initrd=/boot/initrd.img      | apenas o vmlinuz, para&lt;br /&gt;o nome com-&lt;br /&gt; append="devfs=mount"                    | pleto do&lt;br /&gt;seu kernel velho.&lt;br /&gt; read-only---------------------&lt;wbr&gt;--------------------&lt;br /&gt;other=/dev/hdb2&lt;br /&gt; label=windows&lt;br /&gt; table=/dev/hdb&lt;br /&gt; map-drive=0x80&lt;br /&gt;    to=0x81&lt;br /&gt; map-drive=0x81&lt;br /&gt;    to=0x80&lt;br /&gt;other=/dev/fd0&lt;br /&gt; label=floppy&lt;br /&gt; unsafe&lt;br /&gt;&lt;br /&gt; Se você estiver usando o GRUB, altere as linhas&lt;br /&gt;correspondentes.&lt;br /&gt; Digite lilo, para que as alterações tenham efeitos.&lt;br /&gt; É importante manter uma imagem do seu kernel&lt;br /&gt;anterior, pois se alguma coisa não der certo,&lt;br /&gt;você terá como inicializar seu sistema.&lt;br /&gt; Reinicie a sua máquina, e espere ela inicializar com&lt;br /&gt;o kernel novo.&lt;br /&gt; Se tudo der certo, você deverá estar com seu kernel&lt;br /&gt;recém compilado.&lt;br /&gt; Para ter certeza, digite :&lt;br /&gt; cat /proc/version.&lt;br /&gt; Deve aparecer algo do tipo:&lt;br /&gt;&lt;br /&gt; Linux version 2.4.19-16mdkcustom (  &lt;a href="mailto:root@scoob.doo.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;root@scoob.doo.com&lt;/a&gt;&lt;span&gt;Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo  &lt;/span&gt;)&lt;br /&gt;&lt;br /&gt; (gcc version 2.96 20000731 (Mandrake Linux 9.0&lt;br /&gt;2.96-0.80mdk)) #1 Seg Dez 16 18:02:34 BRST 2002&lt;br /&gt;&lt;br /&gt; Agora proceda da mesma maneira que no item 4.0.&lt;br /&gt; Perceba que após o modprobe sm56, o driver não ficará&lt;br /&gt;mais com aquela mensagem de initializing.&lt;br /&gt; Verifique isto com lsmod.&lt;br /&gt; &lt;br /&gt; Pronto! Seu modem está funcionando.&lt;br /&gt; NOTA: Recebi informaçÕes que no kernel 2.4.20 e&lt;br /&gt;superiores, não é necessário editar o arquivo&lt;br /&gt;/usr/src/linux-2.4.20/mm/slab.c. Eu nãoo testei com&lt;br /&gt;este kernel ainda. Assim que testá-lo, estarei&lt;br /&gt;repassando,&lt;br /&gt;ou alguém pode fazé-lo, certo?&lt;br /&gt;&lt;br /&gt;6.0 - POSSÍVEIS PROBLEMAS.&lt;br /&gt;&lt;br /&gt; I - Ao inicilizar, meu kernel diz "kernel panic .....&lt;br /&gt;". O que é isso?&lt;br /&gt;&lt;br /&gt; Esta mensagem aparece se seu kernel foi compilado sem&lt;br /&gt;suporte ao seu sistema de arquivos do raí­z.&lt;br /&gt; Por exemplo, se sua raí­z é XFS, e no kernel o&lt;br /&gt;suporte ao XFS é via módulo, compile seu&lt;br /&gt;kernel como suporte XFS intrínseco. O padrão do kernel&lt;br /&gt;é assim:&lt;br /&gt;&lt;br /&gt;  SGI XFS filesystem support                      &lt;br /&gt;                         &lt;br /&gt; [*]   Enable XFS Realtime support                   &lt;br /&gt;                         &lt;br /&gt; [*]   Enable XFS Quota                              &lt;br /&gt;                         &lt;br /&gt;    Enable XFS DMAPI                              &lt;br /&gt;             &lt;br /&gt;&lt;br /&gt; Mude para:&lt;br /&gt;  SGI XFS filesystem support                      &lt;br /&gt;                         &lt;br /&gt; [*]   Enable XFS Realtime support                   &lt;br /&gt;                         &lt;br /&gt; [*]   Enable XFS Quota                              &lt;br /&gt;                         &lt;br /&gt;    Enable XFS DMAPI                              &lt;br /&gt;             &lt;br /&gt;&lt;br /&gt; Isto fará que o suporte ao XFS seja parte integrante&lt;br /&gt;do kernel, não precisando de nenhum módulo&lt;br /&gt;ser carregado.&lt;br /&gt;&lt;br /&gt;     II - Minha máquina trava quanto executo o minicom&lt;br /&gt;ou outro aplicativo de dial-up. Por que?&lt;br /&gt;&lt;br /&gt; Por motivos que desconheço, o modem Motorola não&lt;br /&gt;gosta de ter outra porta serial habilitada.&lt;br /&gt; Entre no setup da sua máquina, e deixe somente uma&lt;br /&gt;porta serial habilitada, aquela correspondente&lt;br /&gt;a seu mouse. Isso deverá resolver o problema.&lt;br /&gt;&lt;br /&gt;III - Quando digito minicom ou uso o kppp, ele diz que&lt;br /&gt;o /dev/modem não existe. E agora?&lt;br /&gt;&lt;br /&gt; Se o /dev/modem não existir, pode ter ocorrido alguma&lt;br /&gt;falha com o comando sm56setup.&lt;br /&gt; Para não ter que executá-lo de novo, vá até o&lt;br /&gt;diretório /dev , e crie o links para o dispositivo&lt;br /&gt;/dev/sm56: ln -s sm56 modem.&lt;br /&gt; Caso tal dispositivo não exista, crie com o comando&lt;br /&gt;mknod /dev/sm56 c 24 0, e mude o dono/grupo e&lt;br /&gt;as permissões, com o comando chown uucp.root /dev/sm56&lt;br /&gt;e chmod a+rw /dev/sm56, respectivamente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7.0 - CONCLUSÃO.&lt;br /&gt;&lt;br /&gt; Bom eu acho que é isso.&lt;br /&gt; Eu consegui fazer este modem funcionar em um Mandrake&lt;br /&gt;Linux 9.0, recompilando o kernel 2.4.19.&lt;br /&gt;   Acredito que você também pode  fazê-lo. Obrigado a&lt;br /&gt;todos e continuem me mandando e-mail, pois farei&lt;br /&gt;o possível para ler e responder a todos. Até +.&lt;br /&gt;&lt;br /&gt;Gilberto Nunes&lt;br /&gt;  &lt;a href="mailto:gilbertonunes@yahoo.com.br" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;gilbertonunes@yahoo.com.br&lt;/a&gt;&lt;span&gt;Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo  &lt;/span&gt;&lt;div&gt;Comentarios&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.azrul.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;Powered by Azrul's Jom Comment&lt;/a&gt;&lt;/div&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/23433937-115280184427685009?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/115280184427685009/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=115280184427685009' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115280184427685009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115280184427685009'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/07/instalando-e-configurando-modem.html' title='Instalando e Configurando Modem Motorola SM56 - Adaptado'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-115049947813736763</id><published>2006-06-16T20:09:00.000-03:00</published><updated>2006-06-16T20:11:18.146-03:00</updated><title type='text'>Stelth Linux</title><content type='html'>Stelth Linux -&lt;br /&gt;&lt;br /&gt;http://stelth.no-ip.org&lt;br /&gt;&lt;br /&gt;Muito mais do que apenas um repositório do conhecimento!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-115049947813736763?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/115049947813736763/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=115049947813736763' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115049947813736763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115049947813736763'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/06/stelth-linux.html' title='Stelth Linux'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-115049728827869575</id><published>2006-06-16T19:31:00.000-03:00</published><updated>2006-06-16T19:34:48.306-03:00</updated><title type='text'>Bandwidth Limiting HOWTO - Inglês</title><content type='html'>Pessoal, estou trabalhando num projeto de documentação que trata especificamente sobre Controle de Banda, e encontrei um tutorial, um pouco antigo, sobre o assunto. Portanto vou disponibilizá-lo aqui, em inglês, para todos terem acesso!&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Bandwidth Limiting HOWTO&lt;br /&gt;Tomasz Chmielewski&lt;br /&gt;&lt;br /&gt;tch@writemail.com&lt;br /&gt;Revision History&lt;br /&gt;Revision 0.1    2001-05-02    Revised by: tc&lt;br /&gt;Initial release.&lt;br /&gt;&lt;br /&gt;This document describes how to set up your Linux server to limit download bandwidth or incoming traffic and how to use your internet link more efficiently.&lt;br /&gt;&lt;br /&gt;Table of Contents&lt;br /&gt;1. Introduction&lt;br /&gt;&lt;br /&gt;    1.1. New versions of this document&lt;br /&gt;    1.2. Disclaimer&lt;br /&gt;    1.3. Copyright and License&lt;br /&gt;    1.4. Feedback and corrections&lt;br /&gt;&lt;br /&gt;2. Before We Start&lt;br /&gt;&lt;br /&gt;    2.1. What do we need&lt;br /&gt;    2.2. How does it work?&lt;br /&gt;&lt;br /&gt;3. Installing and Configuring Necessary Software&lt;br /&gt;&lt;br /&gt;    3.1. Installing Squid with the delay pools feature&lt;br /&gt;    3.2. Configuring Squid to use the delay pools feature&lt;br /&gt;    3.3. Solving remaining problems&lt;br /&gt;&lt;br /&gt;        3.3.1. Linux 2.2.x kernels (ipchains)&lt;br /&gt;        3.3.2. Linux 2.4.x kernels (iptables)&lt;br /&gt;&lt;br /&gt;4. Dealing with Other Bandwidth-consuming Protocols Using CBQ&lt;br /&gt;&lt;br /&gt;    4.1. FTP&lt;br /&gt;    4.2. Napster, Realaudio, Windows Media and other issues&lt;br /&gt;&lt;br /&gt;5. Frequently Asked Questions&lt;br /&gt;&lt;br /&gt;    5.1. Is it possible to limit bandwidth on a per-user basis with delay pools?&lt;br /&gt;    5.2. Is it possible to limit bandwidth on a per-user basis with cbq.init script?&lt;br /&gt;    5.3. Delay pools are stupid; why can't I download something at full speed when the network is used only by me?&lt;br /&gt;    5.4. CBQ is stupi; why can't I download something at full speed when the network is used only be me?&lt;br /&gt;&lt;br /&gt;6. Miscellaneous&lt;br /&gt;&lt;br /&gt;    6.1. Useful resources&lt;br /&gt;   &lt;br /&gt;1. Introduction&lt;br /&gt;&lt;br /&gt;The purpose of this guide is to provide an easy solution for limiting incoming traffic, thus preventing our LAN users from consuming all the bandwidth of our internet link.&lt;br /&gt;&lt;br /&gt;This is useful when our internet link is slow or our LAN users download tons of mp3s and the newest Linux distro's *.iso files.&lt;br /&gt;1.1. New versions of this document&lt;br /&gt;&lt;br /&gt;You can always view the latest version of this document on the World Wide Web at the URL http://www.linuxdoc.org.&lt;br /&gt;&lt;br /&gt;New versions of this document will also be uploaded to various Linux WWW and FTP sites, including the LDP home page at http://www.linuxdoc.org.&lt;br /&gt;1.2. Disclaimer&lt;br /&gt;&lt;br /&gt;Neither the author nor the distributors, or any other contributor of this HOWTO are in any way responsible for physical, financial, moral or any other type of damage incurred by following the suggestions in this text.&lt;br /&gt;1.3. Copyright and License&lt;br /&gt;&lt;br /&gt;This document is copyright 2001 by Tomasz Chmielewski, and is released under the terms of the GNU Free Documentation License, which is hereby incorporated by reference.&lt;br /&gt;1.4. Feedback and corrections&lt;br /&gt;&lt;br /&gt;If you have questions or comments about this document, please feel free to mail Tomasz Chmielewski at tch@writemail.com. I welcome any suggestions or criticisms. If you find a mistake or a typo in this document (and you will find a lot of them, as English is not my native language), please let me know so I can correct it in the next version. Thanks.&lt;br /&gt;&lt;br /&gt;2. Before We Start&lt;br /&gt;&lt;br /&gt;Let's imagine the following situation:&lt;br /&gt;&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      We have 115,2 kbits/s ppp (modem) internet link (115,2/10 = 11,5 kbytes/s); yes, there are such types of connection! With eth connections (network card) we divide 115,2 by 8; with ppp we divide by 10, because of start/stop bits (8 + 1 + 1 = 10).&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      We have some LAN stations and their users are doing bulk downloads all the time.&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      We want web pages to open fast, no matter how many dowloads are happening.&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      Our internet interface is ppp0.&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      Our LAN interface is eth0.&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      Our network is 192.168.1.0/24&lt;br /&gt;&lt;br /&gt;2.1. What do we need&lt;br /&gt;&lt;br /&gt;Believe it or not, shaping the incoming traffic is an easy task and you don't have to read tons of books about routing or queuing algorithms.&lt;br /&gt;&lt;br /&gt;To make it work, we need at least Squid proxy; if we want to fine tune it, we will have to get familiar with ipchains or iptables and CBQ.&lt;br /&gt;&lt;br /&gt;To test our efforts, we can install IPTraf.&lt;br /&gt;2.2. How does it work?&lt;br /&gt;&lt;br /&gt;Squid is probably the most advanced HTTP proxy server available for Linux. It can help us save bandwidth in two ways:&lt;br /&gt;&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      The first is a main characteristic of proxy servers -- they keep downloaded web pages, pictures, and other objects in memory or on a disk. So, if two people are requesting the same web page, it isn't downloaded from the internet, but from the local proxy.&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      Apart from normal caching, Squid has a special feature called delay pools. Thanks to delay pools, it is possible to limit internet traffic in a reasonable way, depending on so-called 'magic words', existing in any given URL. For example, a magic word could be '.mp3', '.exe' or '.avi', etc. Any distinct part of a URL (such as .avi) can be defined as a magic word.&lt;br /&gt;&lt;br /&gt;With that, we can tell the Squid to download these kinds of files at a specified speed (in our example, it will be about 5 kbytes/s). If our LAN users download files at the same time, they will be downloaded at about 5 kbytes/s altogether, leaving remaining bandwidth for web pages, e-mail, news, irc, etc.&lt;br /&gt;&lt;br /&gt;Of course, the Internet is not only used for downloading files via web pages (http or ftp). Later on, we will deal with limiting bandwidth for Napster, Realaudio, and other possibilities.&lt;br /&gt;&lt;br /&gt;3. Installing and Configuring Necessary Software&lt;br /&gt;&lt;br /&gt;Here, I will explain how to install the necessary software so that we can limit and test the bandwidth usage.&lt;br /&gt;3.1. Installing Squid with the delay pools feature&lt;br /&gt;&lt;br /&gt;As I mentioned before, Squid has a feature called delay pools, which allows us to control download bandwidth. Unfortunately, in most distributions, Squid is shipped without that feature.&lt;br /&gt;&lt;br /&gt;So if you have Squid already installed, I must disappoint you -- you need to uninstall it and do it once again with delay pools enabled in the way I explain below.&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      To get maximum performance from our Squid proxy, it's best to create a separate partition for its cache, called /cache/. Its size should be about 300 megabytes, depending on our needs.&lt;br /&gt;&lt;br /&gt;      If you don't know how to make a separate partition, you can create the /cache/ directory on a main partition, but Squid performance can suffer a bit.&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      We add a safe 'squid' user:&lt;br /&gt;&lt;br /&gt;      # useradd -d /cache/ -r -s /dev/null squid &gt;/dev/null 2&gt;&amp;1&lt;br /&gt;&lt;br /&gt;      No one can log in as squid, including root.&lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      We download Squid sources from http://www.squid-cache.org&lt;br /&gt;&lt;br /&gt;      When I was writing this HOWTO, the latest version was Squid 2.4 stable 1:&lt;br /&gt;&lt;br /&gt;      http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE1-src.tar.gz&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      We unpack everything to /var/tmp:&lt;br /&gt;   5.&lt;br /&gt;&lt;br /&gt;      # tar xzpf squid-2.4.STABLE1-src.tar.gz&lt;br /&gt;   6.&lt;br /&gt;&lt;br /&gt;      We compile and install Squid (everthing is in one line):&lt;br /&gt;&lt;br /&gt;      # ./configure --prefix=/opt/squid --exec-prefix=/opt/squid --enable-delay-pools --enable-cache-digests --enable-poll --disable-ident-lookups --enable-truncate --enable-removal-policies&lt;br /&gt;&lt;br /&gt;      # make all&lt;br /&gt;&lt;br /&gt;      # make install&lt;br /&gt;&lt;br /&gt;3.2. Configuring Squid to use the delay pools feature&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      Configure our squid.conf file (located under /opt/squid/etc/squid.conf):&lt;br /&gt;&lt;br /&gt;#squid.conf&lt;br /&gt;#Every option in this file is very well documented in the original squid.conf file&lt;br /&gt;#and on http://www.visolve.com/squidman/Configuration%20Guide.html&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#The ports our Squid will listen on&lt;br /&gt;http_port 8080&lt;br /&gt;icp_port 3130&lt;br /&gt;#cgi-bins will not be cached&lt;br /&gt;acl QUERY urlpath_regex cgi-bin \?&lt;br /&gt;no_cache deny QUERY&lt;br /&gt;#Memory the Squid will use. Well, Squid will use far more than that.&lt;br /&gt;cache_mem 16 MB&lt;br /&gt;#250 means that Squid will use 250 megabytes of disk space&lt;br /&gt;cache_dir ufs /proxy 250 16 256&lt;br /&gt;redirect_rewrites_host_header off&lt;br /&gt;cache_replacement_policy GDSF&lt;br /&gt;acl localnet src 192.168.1.0/255.255.255.0&lt;br /&gt;acl localhost src 127.0.0.1/255.255.255.255&lt;br /&gt;acl Safe_ports port 80 443 210 119 70 21 1025-65535&lt;br /&gt;acl CONNECT method CONNECT&lt;br /&gt;acl all src 0.0.0.0/0.0.0.0&lt;br /&gt;http_access allow localnet&lt;br /&gt;http_access allow localhost&lt;br /&gt;http_access deny !Safe_ports&lt;br /&gt;http_access deny CONNECT&lt;br /&gt;http_access deny all&lt;br /&gt;maximum_object_size 3000 KB&lt;br /&gt;store_avg_object_size 50 KB&lt;br /&gt;&lt;br /&gt;#all our LAN users will be seen by external servers&lt;br /&gt;#as if they all use Mozilla on Linux :)&lt;br /&gt;anonymize_headers deny User-Agent&lt;br /&gt;fake_user_agent Mozilla/5.0 (X11; U; Linux 2.4.4 i686)&lt;br /&gt;&lt;br /&gt;#To make our connection even faster, we put a line similar&lt;br /&gt;#to the one below. Don't forget to change the server to your closest!&lt;br /&gt;#Measure pings, traceroutes and so on.&lt;br /&gt;#Make sure that http and icp ports are correct&lt;br /&gt;#cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default&lt;br /&gt;&lt;br /&gt;#This is useful when we want to use the Cache Manager&lt;br /&gt;#copy cachemgr.cgi to cgi-bin of your www server&lt;br /&gt;cache_mgr your@email&lt;br /&gt;cachemgr_passwd secret_password all&lt;br /&gt;&lt;br /&gt;#This is a name of a user our Squid will work as&lt;br /&gt;cache_effective_user squid&lt;br /&gt;cache_effective_group squid&lt;br /&gt;&lt;br /&gt;log_icp_queries off&lt;br /&gt;buffered_logs on&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#####DELAY POOLS&lt;br /&gt;#This is the most important part for shaping incoming traffic with Squid&lt;br /&gt;#For detailed description see squid.conf file or docs at http://www.squid-cache.org&lt;br /&gt;&lt;br /&gt;#We don't want to limit downloads on our local network&lt;br /&gt;acl magic_words1 url_regex -i 192.168&lt;br /&gt;&lt;br /&gt;#We want to limit downloads of these type of files&lt;br /&gt;#Put this all in one line&lt;br /&gt;acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt&lt;br /&gt;.ram .rm .iso .raw .wav&lt;br /&gt;#We don't block .html, .gif, .jpg and similar files, because they&lt;br /&gt;#generally don't consume much bandwidth&lt;br /&gt;&lt;br /&gt;#We have two different delay_pools&lt;br /&gt;delay_pools 2&lt;br /&gt;&lt;br /&gt;#First delay pool&lt;br /&gt;#W don't want to delay our local traffic&lt;br /&gt;#There are three pool classes; here we will deal only with the second&lt;br /&gt;delay_class 1 2&lt;br /&gt;&lt;br /&gt;#-1/-1 mean that there are no limits&lt;br /&gt;delay_parameters 1 -1/-1 -1/-1&lt;br /&gt;&lt;br /&gt;#magic_words1: 192.168&lt;br /&gt;delay_access 1 allow magic_words1&lt;br /&gt;&lt;br /&gt;#Second delay pool&lt;br /&gt;#we want to delay downloading files mentioned in magic_words2&lt;br /&gt;delay_class 2 2&lt;br /&gt;&lt;br /&gt;#The numbers here are values in bytes;&lt;br /&gt;#we must remember that Squid doesn't consider start/stop bits&lt;br /&gt;#6000/150000 are values for the whole network&lt;br /&gt;#5000/150000 are values for the single IP&lt;br /&gt;#after downloaded files exceed about 150000 bytes,&lt;br /&gt;#they will continue to download at about 5000 bytes/s&lt;br /&gt;&lt;br /&gt;delay_parameters 2 6000/150000 5000/150000&lt;br /&gt;delay_access 2 allow magic_words2&lt;br /&gt;&lt;br /&gt;#EOF&lt;br /&gt;&lt;br /&gt;      OK, when we have configured everything, we must make sure everything under /opt/squid and /cache directories belongs to user 'squid'.&lt;br /&gt;&lt;br /&gt;      # chown -R squid:squid /opt/squid/&lt;br /&gt;&lt;br /&gt;      # chown -R squid:squid /cache/&lt;br /&gt;&lt;br /&gt;      or&lt;br /&gt;&lt;br /&gt;      # chown -R squid.squid /opt/squid/&lt;br /&gt;&lt;br /&gt;      # chown -R squid.squid /cache/&lt;br /&gt;&lt;br /&gt;      Now everything is ready to run Squid. When we do it for the first time, we have to create its cache directories:&lt;br /&gt;&lt;br /&gt;      # /opt/squid/usr/bin/squid -z&lt;br /&gt;&lt;br /&gt;      We run Squid and check if everything is working. A good tool to do that is IPTraf; you can find it on http://freshmeat.net. Make sure you have set the appropriate proxy in your web browsers (192.168.1.1, port 8080 in our example):&lt;br /&gt;&lt;br /&gt;      # /opt/squid/usr/bin/squid&lt;br /&gt;&lt;br /&gt;      If everything is working, we add /opt/squid/usr/bin/squid line to the end of our initializing scripts. Usually, it can be /etc/rc.d/rc.local.&lt;br /&gt;&lt;br /&gt;      Other helpful options in Squid may be:&lt;br /&gt;&lt;br /&gt;      # /opt/squid/usr/bin/squid -k reconfigure (it reconfigures Squid if we made any changes in its squid.conf file)&lt;br /&gt;&lt;br /&gt;      # /opt/squid/usr/bin/squid -help :) self-explanatory&lt;br /&gt;&lt;br /&gt;      You can also copy cachemgr.cgi to the cgi-bin directory of your WWW server.&lt;br /&gt;&lt;br /&gt;3.3. Solving remaining problems&lt;br /&gt;&lt;br /&gt;OK, we have installed Squid and configured it to use delay pools. I bet nobody wants to be restricted, especially our clever LAN users. They will likely try to avoid our limitations, just to download their favourite mp3s a little faster (and thus causing your headache).&lt;br /&gt;&lt;br /&gt;I assume that you use IP-masquerade on your LAN so that your users can use IRC, ICQ, e-mail, etc. That's OK, but we must make sure that our LAN users will use our delay pooled Squid to access web pages and use ftp.&lt;br /&gt;&lt;br /&gt;We can solve most of these problems by using ipchains (Linux 2.2.x kernels) or iptables (Linux 2.4.x kernels).&lt;br /&gt;3.3.1. Linux 2.2.x kernels (ipchains)&lt;br /&gt;&lt;br /&gt;We must make sure that nobody will try to cheat and use a proxy server other than ours. Public proxies usually run on 3128 and 8080 ports:&lt;br /&gt;&lt;br /&gt;/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 3128 -p TCP -j REJECT&lt;br /&gt;&lt;br /&gt;/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 8080 -p TCP -j REJECT&lt;br /&gt;&lt;br /&gt;We must also make sure that nobody will try to cheat and connect to the internet directly (IP-masquerade) to download web pages:&lt;br /&gt;&lt;br /&gt;/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 http -p TCP -j REDIRECT 8080&lt;br /&gt;&lt;br /&gt;/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 https -p TCP -j REDIRECT 8080&lt;br /&gt;&lt;br /&gt;If everything is working, we add these lines to the end of our initializing scripts. Usually, it can be /etc/rc.d/rc.local.&lt;br /&gt;&lt;br /&gt;We might think to block ftp traffic (ports 20 and 21) to force our LAN users to use Squid, but it's not a good idea for at least two reasons:&lt;br /&gt;&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      Squid is a http proxy with ftp support, not a real ftp proxy. It can download from ftp, it can also upload to some ftp, but it can't delete/change name of files on remote ftp servers.&lt;br /&gt;&lt;br /&gt;      When we block ports 20 and 21, we won't be able to delete/change name of files on remote ftp servers.&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      IE5.5 has a bug (at least mine has) -- it doesn't use a proxy to retrieve the ftp directory. Instead it connects directly via IP-masquerade.&lt;br /&gt;&lt;br /&gt;      When we block ports 20 and 21, we won't be able to browse through ftp directories, using IE5.5.&lt;br /&gt;&lt;br /&gt;So, we will block excessive ftp downloads using other methods. We will deal with it in chapter 4.&lt;br /&gt;3.3.2. Linux 2.4.x kernels (iptables)&lt;br /&gt;&lt;br /&gt;FIXME: Unfortunately, I don't know much about IP-tables, please help :(((&lt;br /&gt;&lt;br /&gt;4. Dealing with Other Bandwidth-consuming Protocols Using CBQ&lt;br /&gt;&lt;br /&gt;We must remember that our LAN users can spoil our efforts from chapter 3, if they use Napster or Realaudio. We must also remember that we didn't block ftp traffic in section 3.3.&lt;br /&gt;&lt;br /&gt;We will achieve it in a different way -- not by limiting downloading directly, but rather, indirectly. If our internet device is ppp0 and LAN device is eth0, we will limit outgoing traffic on interface eth0, and thus, limit incoming traffic to ppp0.&lt;br /&gt;&lt;br /&gt;To do it, we will get familiar with CBQ and cbq.init script. You can obtain it from ftp://ftp.equinox.gu.net/pub/linux/cbq/. Download cbq.init-v0.6.2 and put it in /etc/rc.d/.&lt;br /&gt;&lt;br /&gt;You will also need iproute2 installed. It comes with every Linux distribution.&lt;br /&gt;&lt;br /&gt;Now look in your /etc/sysconfig/cbq/ directory. There, you should have an example file, which should work with cbq.init. If it isn't there, you probably don't have it compiled in your kernel.&lt;br /&gt;4.1. FTP&lt;br /&gt;&lt;br /&gt;In chapter 3, we didn't block ftp for two reasons -- so that we could do uploads, and so that users with buggy IE5.5 could browse through ftp directories. In all, our web browsers and ftp programs should make downloads via our Squid proxy and ftp uploads/renaming/deleting should be made via IP-masquerade.&lt;br /&gt;&lt;br /&gt;We create a file called cbq-10.ftp-network in the /etc/sysconfig/cbq/ directory:&lt;br /&gt;&lt;br /&gt;# touch /etc/sysconfig/cbq/cbq-10.ftp-network&lt;br /&gt;&lt;br /&gt;We insert the following lines into it:&lt;br /&gt;&lt;br /&gt;DEVICE=eth0,10Mbit,1Mbit&lt;br /&gt;RATE=10Kbit&lt;br /&gt;WEIGHT=1Kbit&lt;br /&gt;PRIO=5&lt;br /&gt;RULE=:20,192.168.1.0/24&lt;br /&gt;RULE=:21,192.168.1.0/24&lt;br /&gt;&lt;br /&gt;You will find the description of thses lines in cbq.init-v0.6.2 file.&lt;br /&gt;&lt;br /&gt;When you start /etc/rc.d/cbq.init-v.0.6.2 script, it will read your configuration, which is in /etc/sysconfig/cbq/:&lt;br /&gt;&lt;br /&gt;# /etc/rc.d/cbq.init-v.0.6.2 start&lt;br /&gt;&lt;br /&gt;If everything is working, we add /etc/rc.d/cbq.init-v.0.6.2 start to the end of your initializing scripts. Usually, it can be /etc/rc.d/rc.local.&lt;br /&gt;&lt;br /&gt;Thanks to this command, your server will not send ftp data through eth0 faster than 10kbits/s, and thus will not download ftp data faster than 10kbits/s. Your LAN users will see that it's more efficient to use Squid proxy for doing ftp downloads. They will be also able to browse ftp directories using their buggy IE5.5.&lt;br /&gt;&lt;br /&gt;There is also another bug in IE5.5 - when you right click on a file in a ftp directory then select 'Copy To Folder', the file is downloaded not through proxy, but directly through IP-masquerade, thus omitting Squid with delay pools.&lt;br /&gt;4.2. Napster, Realaudio, Windows Media and other issues&lt;br /&gt;&lt;br /&gt;Here, the idea is the same as with ftp; we just add another port and set a different speed.&lt;br /&gt;&lt;br /&gt;We create file called cbq-50.napster-network in the /etc/sysconfig/cbq/ directory:&lt;br /&gt;&lt;br /&gt;# touch /etc/sysconfig/cbq/cbq-50.napsterandlive&lt;br /&gt;&lt;br /&gt;Put these lines into that file:&lt;br /&gt;&lt;br /&gt;DEVICE=eth0,10Mbit,1Mbit&lt;br /&gt;RATE=50Kbit&lt;br /&gt;WEIGHT=5Kbit&lt;br /&gt;PRIO=5&lt;br /&gt;#Windows Media Player&lt;br /&gt;RULE=:1755,192.168.1.0/24&lt;br /&gt;#Real Player uses TCP port 554 or UDP ports near 3369, I don't know exactly&lt;br /&gt;RULE=:554,192.168.1.0/24&lt;br /&gt;RULE=:3360,192.169.1.0/24:3380&lt;br /&gt;#Napster uses ports 6699 and 6700, maybe some other?&lt;br /&gt;RULE=:6699,192.168.1.0/24:6799&lt;br /&gt;#Add any other ports you want; you can easily check&lt;br /&gt;#ports that programs use with IPTraf&lt;br /&gt;#RULE=:from_port,192.168.1.0/24:to_port&lt;br /&gt;&lt;br /&gt;5. Frequently Asked Questions&lt;br /&gt;5.1. Is it possible to limit bandwidth on a per-user basis with delay pools?&lt;br /&gt;&lt;br /&gt;Yes. Look inside the original squid.conf file and check the Squid documentation on http://www.squid-cache.org&lt;br /&gt;5.2. Is it possible to limit bandwidth on a per-user basis with cbq.init script?&lt;br /&gt;&lt;br /&gt;Yes. Look inside this script; there are some examples.&lt;br /&gt;5.3. Delay pools are stupid; why can't I download something at full speed when the network is used only by me?&lt;br /&gt;&lt;br /&gt;Unfortunately, you can't do much about it.&lt;br /&gt;&lt;br /&gt;The only thing you can do is to use cron and reconfigure it, for example, at 1.00 am, so that Squid won't use delay pools, then reconfigure it again, let's say at 7.30 am, to use delay pools.&lt;br /&gt;5.4. CBQ is stupi; why can't I download something at full speed when the network is used only be me?&lt;br /&gt;&lt;br /&gt;Lucky you, it's possible!&lt;br /&gt;&lt;br /&gt;There are to ways to achieve it.&lt;br /&gt;&lt;br /&gt;The first is the easy one, similar to the solution we made with Squid. To do that, just look inside the cbq.init script.&lt;br /&gt;&lt;br /&gt;The second way is harder, but more intelligent. You can read about it in the Linux 2.4 Advanced Routing HOWTO.&lt;br /&gt;&lt;br /&gt;6. Miscellaneous&lt;br /&gt;6.1. Useful resources&lt;br /&gt;&lt;br /&gt;Squid Web Proxy Cache&lt;br /&gt;&lt;br /&gt;http://www.squid-cache.org&lt;br /&gt;&lt;br /&gt;Squid 2.4 Stable 1 Configuration manual&lt;br /&gt;&lt;br /&gt;http://www.visolve.com/squidman/Configuration%20Guide.html&lt;br /&gt;&lt;br /&gt;http://www.visolve.com/squidman/Delaypool%20parameters.htm&lt;br /&gt;&lt;br /&gt;Squid FAQ&lt;br /&gt;&lt;br /&gt;http://www.squid-cache.org/Doc/FAQ/FAQ-19.html#ss19.8&lt;br /&gt;&lt;br /&gt;cbq-init script&lt;br /&gt;&lt;br /&gt;ftp://ftp.equinox.gu.net/pub/linux/cbq/&lt;br /&gt;&lt;br /&gt;Linux 2.4 Advanced Routing HOWTO&lt;br /&gt;&lt;br /&gt;http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html&lt;br /&gt;&lt;br /&gt;Traffic control (in Polish)&lt;br /&gt;&lt;br /&gt;http://ceti.pl/~kravietz/cbq/&lt;br /&gt;&lt;br /&gt;Securing and Optimizing Linux Red Hat Edition - A Hands on Guide&lt;br /&gt;&lt;br /&gt;http://www.linuxdoc.org/guides.html&lt;br /&gt;&lt;br /&gt;IPTraf&lt;br /&gt;&lt;br /&gt;http://cebu.mozcom.com/riker/iptraf/&lt;br /&gt;&lt;br /&gt;IPCHAINS&lt;br /&gt;&lt;br /&gt;http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-115049728827869575?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/115049728827869575/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=115049728827869575' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115049728827869575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/115049728827869575'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/06/bandwidth-limiting-howto-ingls.html' title='Bandwidth Limiting HOWTO - Inglês'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114989028130679700</id><published>2006-06-09T18:45:00.000-03:00</published><updated>2006-06-13T18:25:47.456-03:00</updated><title type='text'>O Linux é o melhor para você - Adaptado</title><content type='html'>Vamos começar politicamente correto. Nesta postagem eu digo 'Linux', mas estou querendo dizer GNU/Linux. Por favor, vá até http://www.gnu.org/gnu/linux-and-gnu.html para ver por quê.&lt;br /&gt;&lt;br /&gt;Você deseja mudar do DOS/Windows para o Linux? Boa idéia: Linux é tecnicamente superiro ao DOS, Windows 9x e até mesmo o Windows NT. Mas cuidado! Ele pode não ser muito útil para você. Estas são as principais diferenças entre DOS/Windows e Linux:&lt;br /&gt;Windows roda Microsoft Office e todos os jogos; é fácil de configurar e instalar; é conhecidamente instável; performance baixa; frequentemente trava.&lt;br /&gt;Linux roda Star Office*; alguns jogos; pode ser complicado de instalar e configurar; é muito estável; performance impecável; travamentos são raros.&lt;br /&gt;&lt;br /&gt;Portanto, se for pensar em estabilidade, escalabilidade, portabilidade, eficiência, segurança, e muito mais, pense no GNU/Linux.&lt;br /&gt;&lt;br /&gt;Acredite nessa idéia!&lt;br /&gt;&lt;br /&gt;Ajude a recriar a Informática que foi obscurecida pelos sistemas operacionais cuja a idéia foi a inclusão em detrimento de todas as qualidades dos verdadeiros Sistemas Operacionais!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114989028130679700?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114989028130679700/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114989028130679700' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114989028130679700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114989028130679700'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/06/o-linux-o-melhor-para-voc-adaptado.html' title='O Linux é o melhor para você - Adaptado'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114919279164668770</id><published>2006-06-01T17:04:00.000-03:00</published><updated>2006-06-09T18:44:49.203-03:00</updated><title type='text'>Artigo Científico</title><content type='html'>Estou escrevendo um artigo científico para faculdade, mas por enquanto estou em dúvida a respeito de qual assunto tratar. Entre as possíveis idéias, o Gnu/Linux é a minha preferida, entretanto me ocorreu a idéia de fazer um artigo sobre Psicotrônica ou Psicotécnica.&lt;br /&gt;Faço parte também de outro Blog cujo o assunto é voltado ao holístico, auto-ajuda, espiritualismo, etc. Visite lá para vocês verem &lt;a href="http://universu.blogspot.com"&gt;EVOLUÇÃO.&lt;/a&gt;&lt;br /&gt;Quanto ao meu artigo, prefiro pensar melhor e assim que tiver idéias, ou se alguém poder me clarificar, agradeço!&lt;br /&gt;&lt;br /&gt;Daniel&lt;a href="http://universu.blogspot.com"&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114919279164668770?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114919279164668770/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114919279164668770' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114919279164668770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114919279164668770'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/06/artigo-cientfico.html' title='Artigo Científico'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114773401467920189</id><published>2006-05-15T19:59:00.000-03:00</published><updated>2006-05-15T20:00:14.693-03:00</updated><title type='text'>USB Sem mistérios...</title><content type='html'>Pessoal, não só de perguntas vive um fórum, mas também das dicas que ele proporciona. Tenho tido tempo ultimamente e, portanto, resolvi fazer umas atualizações tanto no meu &lt;a href="http://gnulinuxfreak.blogspot.com/" target="_blank" class="postlink"&gt;Blog&lt;/a&gt;, quanto no FórumGDH do qual participo desde 2001 (to ficando velho...) e o Portal &lt;a href="http://www.vivaolinux.com.br/" target="_blank" class="postlink"&gt;Viva O LinUx&lt;/a&gt;.&lt;br /&gt;A dica que vou dar é sobre um assunto um tanto quanto rebuscado: USB no LinUx.&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;O USB, como muitos já sabem, foi criado com o objetivo de facilitar a conexão de periféricos existentes para o computador: teclados, mouse, impressoras, etc. Todo os conectores de os dispositivos possuem dois tipos de conectores, sendo assim, não permitindo o encaixe inadequado deles, o que os torna simples de usar. Outra caracterísca marcante é o compartilhamento de banda entre os dispositivos.&lt;br /&gt;-------------------------------------------------------------------------------------&lt;br /&gt;Vamos ao que interessa!&lt;br /&gt;Configurar uma controladora USB é bastante simples no LinUx. Primeiramente você tem de ter em mente basicamente os seguinte comandos: lspci e modprobe*.&lt;br /&gt;*&lt;span style="font-style: italic;"&gt;juntamente com esse comando importante de administração do sistema, você deve ter o conhecimento do rc.modules*(Slackware e BSD Like), ou /etc/modules.conf*(Distros SysVINIT)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Onde está e quem é a sua controladora?&lt;br /&gt;&lt;br /&gt;daniel@stelth:~# lspci -vv |grep -i usb&lt;br /&gt;&lt;br /&gt;A saída desse comando "vareia" de máquina pra máquina... &lt;br /&gt;&lt;br /&gt;Nota::. Basicamente há dois tipos de controladora USB: Universal e Open. As controladoras Universal são identificadas como sendo USB-UHCI e as Open são identificadas como sendo USB-OHCI. Existem as USB-EHCI que usam o padrão 2.0, isto é, USB2.0. Maiores informações, &lt;a href="http://www.google.com/" target="_blank" class="postlink"&gt;Google&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Indentificado o tipo de controladora, passemos para etapa seguinte.&lt;br /&gt;&lt;br /&gt;Agora que eu sei quem é, como configurar?&lt;br /&gt;&lt;br /&gt;Primeiro habilitar o módulo que trabalho com input de dados.&lt;br /&gt;Para teclados e mouses...&lt;br /&gt;daniel@stelth:~# modprobe hid&lt;br /&gt;daniel@stelth:~# modprobe keybdev&lt;br /&gt;daniel@stelth:~# modprobe mousedev&lt;br /&gt;&lt;br /&gt;Dica::. caso não funcione o mouse no modo texto:&lt;br /&gt;daniel@stelth:~# gpm -k ; gpm -t ps2 -m /dev/usbmouse0&lt;br /&gt;&lt;br /&gt;Para WebCam...&lt;br /&gt;Carregar o ov511.o...&lt;br /&gt;daniel@stelth:~# modprobe ov511&lt;br /&gt;&lt;br /&gt;Para impressoras...&lt;br /&gt;daniel@stelth:~# modprobe printer&lt;br /&gt;&lt;br /&gt;Importante::.. "Apontar" a impressora para o device /dev/usb/lp0&lt;br /&gt;&lt;br /&gt;Espero ter contribuído de maneira significante. &lt;br /&gt;Abraços!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114773401467920189?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114773401467920189/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114773401467920189' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114773401467920189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114773401467920189'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/05/usb-sem-mistrios.html' title='USB Sem mistérios...'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114686969196236263</id><published>2006-05-05T19:53:00.000-03:00</published><updated>2006-05-05T19:54:51.976-03:00</updated><title type='text'>Configurando Mysql no Slackware</title><content type='html'>Bem pessoal o grande propósito desse material é como configurar o mysql a distro utilizada foi o Slackware, mas estas configurações se aplicam em qualquer uma das demais distribuições. Não vou entrar em muitos detalhes de como instalar pois o propósito é ensinar como configurá-lo.&lt;br /&gt;&lt;br /&gt;Se acaso você nao selecionou o mysql na hora da instalaçao você pode baixalo em:&lt;br /&gt;&lt;br /&gt;MySQL: http://www.mysql.com/downloads/&lt;br /&gt;&lt;br /&gt;Provavelmente se você selecionou o pacote do mysql na hora da instalação e ativou ele pra iniciar no boot você ira se deparar com a seguinte mensagem:&lt;br /&gt;&lt;br /&gt;Starting mysqld daemon with databases from /var/lib/mysql&lt;br /&gt;Welcome to Linux 2.4.22 (tty1)&lt;br /&gt;postfix login: 040625 09:04:55 mysqld ended&lt;br /&gt;&lt;br /&gt;Welcome to Linux 2.4.22 (tty1)&lt;br /&gt;&lt;br /&gt;slackware login:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Logo que a gente de vê da até um negócio né mas vamos aprender agora como resolver esse pequeno problema !!!&lt;br /&gt;&lt;br /&gt;Isso acontece por que o mysql ta procurando pelas GrantTables que na verdade ainda nao existem, nosso primeiro trabalho será cria-las vamos la então:&lt;br /&gt;&lt;br /&gt;1 - Logue-se com o user mysql e siga os comandos a baixo:&lt;br /&gt;&lt;br /&gt;su mysql&lt;br /&gt;&lt;br /&gt;$ mysql_install_db&lt;br /&gt;Preparing db table&lt;br /&gt;Preparing host table&lt;br /&gt;Preparing user table&lt;br /&gt;Praparing func table&lt;br /&gt;Praparing tables_priv table&lt;br /&gt;Praparing columns_priv table&lt;br /&gt;Installing all prepared tables&lt;br /&gt;040625 12:23:26 /usr/libexec/mysqld: Shutdown Complete . . .&lt;br /&gt;&lt;br /&gt;$ exit&lt;br /&gt;# mysqld_safe --user=mysql&amp;&lt;br /&gt;# mysql_secure_installation&lt;br /&gt;NOTE:  RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL &lt;br /&gt;&lt;br /&gt; MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH&lt;br /&gt;STEP CAREFULLY!&lt;br /&gt;&lt;br /&gt;In order to log into MySQL to secure it, we'll need the current&lt;br /&gt;password for the root user. If you've just installed MySQL, and&lt;br /&gt;you haven't set the root password yet, the password will be blank,&lt;br /&gt;so you should just press enter here.&lt;br /&gt;&lt;br /&gt;Enter current password for root (enter for none): [ENTER]&lt;br /&gt;&lt;br /&gt;OK, successfully used password, moving on...&lt;br /&gt;&lt;br /&gt;Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation.&lt;br /&gt;&lt;br /&gt;Set root password? [Y/n] [Y] Y&lt;br /&gt;New password: ( Digite aqui aquela que sera a sua senha )&lt;br /&gt;Re-enter new password: ( Redigite a senha )&lt;br /&gt;Password updated successfully!&lt;br /&gt;&lt;br /&gt;Remove anonymous users? [Y/n] [Y]&lt;br /&gt;Disallow root login remotely? [Y/n] [Y]&lt;br /&gt;&lt;br /&gt;Remove test database and access to it? [Y/n] [Y]&lt;br /&gt;&lt;br /&gt;Reload privilege tables now? [Y/n] [Y]&lt;br /&gt;... Success!&lt;br /&gt;&lt;br /&gt;Cleaning up...&lt;br /&gt;&lt;br /&gt;O nosso próximo passo será alterar os arquivos de log do mysql aconselho indicar o dir padrão de todos os outros logs, no caso o /var/log/mysql/mysql.log&lt;br /&gt;&lt;br /&gt;Mas pra que isso aconteça precisamos criar um arquivo dentro de /etc digite vi ou joe my.cnf e dentro dele insira o seguinte conteúdo:&lt;br /&gt;&lt;br /&gt;[mysql.server]&lt;br /&gt;datadir=/var/lib/mysql&lt;br /&gt;socket=/var/run/mysql/mysql.sock&lt;br /&gt;&lt;br /&gt;[mysqladmin]&lt;br /&gt;socket=/var/run/mysql/mysql.sock&lt;br /&gt;&lt;br /&gt;[mysqld]&lt;br /&gt;datadir=/var/lib/mysql&lt;br /&gt;socket=/var/run/mysql/mysql.sock&lt;br /&gt;language=/usr/share/mysql/english/&lt;br /&gt;log=/var/log/mysql/mysqld.log&lt;br /&gt;&lt;br /&gt;[mysql]&lt;br /&gt;socket=/var/run/mysql/mysql.sock&lt;br /&gt;&lt;br /&gt;Agora vamos criar o arquivo de log e mudar a permissão:&lt;br /&gt;# mkdir /var/log/mysql&lt;br /&gt;# chown mysql:mysql /var/log/mysql&lt;br /&gt;# chown mysql:mysql /var/lib/mysql&lt;br /&gt;&lt;br /&gt;Feito isso vamos parar, dar um start e verificar os logs no mysql, para isso digite os seguintes comandos:&lt;br /&gt;&lt;br /&gt;# killall mysqld&lt;br /&gt;# /etc/rc.d/rc.mysqld start&lt;br /&gt;# tail /var/log/mysql/mysqld.log&lt;br /&gt;&lt;br /&gt;Prontinho pessoal seu mysql esta configurdo e pronto pra usar, pra acessar o mysql digite:&lt;br /&gt;&lt;br /&gt;mysql -p senha_do_root&lt;br /&gt;&lt;br /&gt;Lembrando que essa senha do root foi aquela que você alterou em um dos passos anteriores :&lt;br /&gt;&lt;br /&gt;# mysql_secure_installation (lembram)&lt;br /&gt;&lt;br /&gt;Valeu pessoal espero ter ajudado !!!!&lt;br /&gt;&lt;br /&gt;Até a próxima !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114686969196236263?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114686969196236263/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114686969196236263' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114686969196236263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114686969196236263'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/05/configurando-mysql-no-slackware.html' title='Configurando Mysql no Slackware'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114659081492354187</id><published>2006-05-02T14:17:00.000-03:00</published><updated>2006-05-02T14:26:54.936-03:00</updated><title type='text'>DICA - Criando vários arquivos...</title><content type='html'>Pessoal, essa dica vai para aqueles que necessitam, seja lá o porque, criarem vários arquivos de uma só vez. Eu postei a mesma dica no &lt;a href="http://www.vivaolinux.com.br"&gt;Viva o Linux&lt;/a&gt; e no &lt;a href="http://forumgdh.net"&gt;Fórum GDH&lt;/a&gt;. Contudo, alguns amigos da comunidade livre postaram outras maneiras de se executar essa dica. Então aqui vai:&lt;br /&gt;Eu escrevi...&lt;br /&gt;Pessoal, aqui vai uma dica que demorei para descobrir como executar. É o seguinte: Volta e meia, preciso criar vários arquivos de uma só vez. Última vez, estava criando uma rotina para fazer o download do FC5 automático e em dado momento do script resolvi criar vários arquivos de uma só vez. Aí surgiu a questão... Como fazer isso?! "Dar" vários 'touch'?! Não... tentar criar de uma só vez usando o 'vi' ou qualquer outro editor?! Também não! Simples! Vou mostrar duas maneiras de efetuar o processo. A primeira, mais "fácil", porém trabalhosa, consiste em criar um .txt qualquer com o nome de todos os arquivos que você deseja criar:&lt;br /&gt; 1) crie o arquivo no 'vi' com seguinte conteúdo:&lt;br /&gt;arquivo-1.txt&lt;br /&gt;arquivo-2.txt&lt;br /&gt;arquivo-3.txt&lt;br /&gt;arquivo-4.txt&lt;br /&gt;arquivo-5.txt&lt;br /&gt;arquivo-6.txt&lt;br /&gt;arquivo-7.txt&lt;br /&gt;arquivo-8.txt&lt;br /&gt;2) define a seguinte variável: VAR=`cat arquivo`&lt;br /&gt;3) "dê" um 'touch' na variável $VAR: touch $VAR&lt;br /&gt;Obs.: há outras possibilidades! Vai depender da sua criatividade! Por ex.: touch `cat arquivo`. Estimule a criatividade! Experimente fazer rotinas com laços usando 'for' ou o 'while'&lt;br /&gt;&lt;br /&gt;Peczenyj escreveu...&lt;br /&gt;&lt;br /&gt;Tem muitas formas de fazer isso&lt;br /&gt;cat arquivo  xargs touch&lt;br /&gt;touch arquivo-{1,2,3,4,5,6,7,8}.txt&lt;br /&gt;for((i=1;i&lt;=8;i++)) ; do touch arquivo-${i}.txt ; done&lt;br /&gt;Basta inventar uma...&lt;br /&gt;&lt;br /&gt;Profeta_Livre escreveu...&lt;br /&gt;&lt;br /&gt; #!/bin/bash       &lt;br /&gt;#       &lt;br /&gt;# bem simples vc da a quantidade de arquivo que quer       &lt;br /&gt;# criar, e ele atribui o nome do arquivo (       &lt;br /&gt;# este nome vc tambe fornece) com uma numeracao       &lt;br /&gt;# como vc mesmo propos       &lt;br /&gt;#       &lt;br /&gt;# as definicoe scomecam com 0,1,2 etc...       &lt;br /&gt;#            &lt;br /&gt;echo -e "Digite o nome da seguencia de arquivos: \n"      &lt;br /&gt;read arquivo      &lt;br /&gt;echo -e "Quantos arquivos devem ser criados? \n"      &lt;br /&gt;read  quantidade            &lt;br /&gt;echo -e "Criando os arquivos...\n";                  &lt;br /&gt;variavel="0"      &lt;br /&gt;while [ $variavel -lt $quantidade ]; do            &lt;br /&gt;arq=$arquivo$variavel      &lt;br /&gt;touch $arq.txt      &lt;br /&gt;echo -e "$arq.txt criado \n"      &lt;br /&gt;let variavel=variavel+1      &lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;Peczenyj escreveu...&lt;br /&gt;&lt;br /&gt;$ set - `cat txt` &amp;&amp;amp; while [ "${1}" ] ; do touch ${1} ; shift ; done&lt;br /&gt;&lt;br /&gt;Meu amigo JQueiroz escreveu...&lt;br /&gt;&lt;br /&gt;for n in 1 2 3 4 5 6 7 8 9 10; do touch arquivo-$n.txt ; done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114659081492354187?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114659081492354187/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114659081492354187' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114659081492354187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114659081492354187'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/05/dica-criando-vrios-arquivos.html' title='DICA - Criando vários arquivos...'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114572001442965112</id><published>2006-04-22T12:13:00.000-03:00</published><updated>2006-04-22T12:33:34.446-03:00</updated><title type='text'>FISL 7.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3521/2403/1600/Daniel-Stalman.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/3521/2403/320/Daniel-Stalman.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Nessa postagem vou me atentar para o Fórum Internacional do Software Livre, que está acontecendo até o dia de hoje, 22 de abril, em Porto Alegre RS. Várias palestras estão acontecendo sobre os mais variados temas: VOIP, Administração do Sistema, Banco de Dados, Desenvolvimento, Redes, Linux, etc. Há também, para aqueles menos técnicos, temas a respeito da atuação do Governo Federal na escalado contínua do SL.&lt;br /&gt;A minha humilde participação no FISL é como ouvinte dos diversos cursos e palestras nos quais tive a oportunidade de conhecer e me ambientar a temas sobre desenvolvimento, banco de dados e administração linux em geral.&lt;br /&gt;A parte mais interessante, que está sendo grande "bum" do momento, foi o VOIP. Houve uma palestra sobre implantação de sistema de telefonia PBX via rede de dados com Asterisk, uma poderosa ferramenta que provê inúmeras formas de interligação telefonica via IP.&lt;br /&gt;Deixo o meu grande abraço aos colegas da UERGS - Universidade Estadual do Rio Grande do Sul -, o Pessoal da UNICAMP, que desenvolveu uma distribuição baseada no Gentoo, Tuttoo, que já está disponível para downloads em seus ftps. Não posso deixar de parabenizer o trabalho de desenvolvimentos e tradução do sistema Debian para o Português brasileiro atravé do pessoal da Debian Brasil, mais precisamente, Guaraldo, ex-colega de trabalho que participou do projeto e expos o trabalho no Fórum.&lt;br /&gt;A foto acima, não muito nítida, é do Mr. Stalman e eu obviamente a esquerda. Mr. Stalman é o grande pensador por trás da licença GPL FSF - Free Software Foundation. Uma pessoa bastante ímpar e que está também ministrando palestras do FISL 7.0.&lt;br /&gt;Bom, por ora é só!&lt;br /&gt;Grande Abraços!&lt;br /&gt;&lt;div style="text-align: right;"&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/23433937-114572001442965112?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114572001442965112/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114572001442965112' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114572001442965112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114572001442965112'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/04/fisl-70.html' title='FISL 7.0'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114290078742866817</id><published>2006-03-20T21:25:00.000-03:00</published><updated>2006-03-20T21:26:27.456-03:00</updated><title type='text'>O que é Software Livre</title><content type='html'>&lt;table border="0" cellpadding="0" cellspacing="0" width="90%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="titsecao"&gt;O Que é?&lt;/td&gt;&lt;/tr&gt;   &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;   &lt;tr&gt;     &lt;td class="textoS" align="left"&gt;Nós mantemos esta definição do Software Livre para mostrar claramente o que deve ser verdadeiro à respeito de um dado programa de software para que ele seja considerado software livre. &lt;p&gt;"&lt;b&gt;Software Livre&lt;/b&gt;" é uma questão de liberdade, não de preço. Para entender o conceito, você deve pensar em "&lt;i&gt;liberdade de expressão&lt;/i&gt;", não em "&lt;i&gt;cerveja grátis&lt;/i&gt;". &lt;/p&gt;&lt;p&gt;"&lt;b&gt;Software livre&lt;/b&gt;" se refere à liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro liberdades, para os usuários do software: &lt;/p&gt;&lt;ul&gt;&lt;li&gt; A liberdade de executar o programa, para qualquer propósito (liberdade no. 0);     &lt;/li&gt;&lt;li&gt; A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade no. 1). Aceso ao código-fonte é um pré-requisito para esta liberdade; &lt;/li&gt;&lt;li&gt; A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade no. 2);     &lt;/li&gt;&lt;li&gt; A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade no. 3). Acesso ao código-fonte é um pré-requisito para esta liberdade. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Um programa é software livre se os usuários tem todas estas liberdades. Portanto, &lt;b&gt;você deve ser livre para redistribuir cópias, seja com ou sem modificações, seja de graça ou cobrando uma taxa pela distribuição, para qualquer um em qualquer lugar.&lt;/b&gt; Ser livre para fazer essas coisas significa (entre outras coisas) que você não tem que pedir ou pagar pela permissão. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Você deve também ter a liberdade de fazer modifcações e usá-las privativamente no seu trabalho ou lazer, sem nem mesmo mencionar que elas existem. Se você publicar as modificações, você não deve ser obrigado a avisar a ninguém em particular, ou de nenhum modo em especial.&lt;/b&gt; &lt;/p&gt;&lt;p&gt;A liberdade de utilizar um programa significa a liberdade para qualquer tipo de pessoa física ou jurídica utilizar o software em qualquer tipo de sistema computacional, para qualquer tipo de trabalho ou atividade, sem que seja necessário comunicar ao desenvolvedor ou a qualquer outra entidade em especial. &lt;/p&gt;&lt;p&gt;A liberdade de redistribuir cópias deve incluir formas binárias ou executáveis do programa, assim como o código-fonte, tanto para as versões originais quanto para as modificadas. Está ok se não for possível produzir uma forma binária ou executável (pois algumas linguagens de programação não suportam este recurso), mas deve ser concedida a liberdade de redistribuir essas formas caso seja desenvolvido um meio de criá-las. &lt;/p&gt;&lt;p&gt;De modo que a liberdade de fazer modificações, e de publicar versões aperfeiçoadas, tenha algum significado, deve-se ter acesso ao código-fonte do programa. Portanto, acesso ao código-fonte é uma condição necessária ao software livre. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Para que essas liberdades sejam reais, elas tem que ser irrevogáveis&lt;/b&gt; desde que você não faça nada errado; caso o desenvolvedor do software tenha o poder de revogar a licença, mesmo que você não tenha dado motivo, o software não é livre. &lt;/p&gt;&lt;p&gt;Entretanto, certos tipos de regras sobre a maneira de distribuir software livre são aceitáveis, quando elas não entram em conflito com as liberdades principais. Por exemplo,&lt;b&gt;copyleft&lt;/b&gt; (apresentado de forma bem simples) é a regra de que, quando redistribuindo um programa, você não pode adicionar restrições para negar para outras pessoas as liberdades principais. Esta regra não entra em conflito com as liberdades; na verdade, ela as protege. &lt;/p&gt;&lt;p&gt;Portanto, você pode ter pago para receber cópias do software GNU, ou você pode ter obtido cópias sem nenhum custo. Mas independente de como você obteve a sua cópia, você sempre tem a liberdade de copiar e modificar o software, ou mesmo de vender cópias. &lt;/p&gt;&lt;p&gt;&lt;b&gt;"Software Livre" Não significa "não-comercial"&lt;/b&gt;. Um programa livre deve estar disponível para uso comercial, desenvolvimento comercial, e distribuição comercial. O desenvolvimento comercial de software livre não é incomum; tais softwares livres comerciais são muito importantes. &lt;/p&gt;&lt;p&gt;Regras sobre como empacotar uma versão modificada são aceitáveis, se elas não acabam bloqueando a sua liberdade de liberar versões modificadas. Regras como "se você tornou o programa disponível deste modo, você também tem que torná-lo disponível deste outro modo" também podem ser aceitas, da mesma forma. (Note que tal regra ainda deixa para você a escolha de tornar o programa disponível ou não.) Também é aceitável uma licença que exija que, caso você tenha distribuído uma versão modificada e um desenvolvedor anterior peça por uma cópia dele, você deva enviar uma. &lt;/p&gt;&lt;p&gt;&lt;b&gt;No projeto GNU, nós usamos "copyleft" para proteger estas liberdades legalmente para todos.&lt;/b&gt; Mas também existe software livre que não é copyleft. Nós acreditamos que hajam razões importantes pelas quais é melhor usar o copyleft, mas se o seu programa é free-software mas não é copyleft, nós ainda podemos utilizá-lo. &lt;/p&gt;&lt;p&gt;Às vezes regras de controle de exportação e sansões de comércio podem limitar a sua liberdade de distribuir cópias de programas internacionalmente. Desenvolvedores de software não tem o poder para eliminar ou sobrepor estas restrições, mas o que eles podem e devem fazer é se recusar a impô-las como condições para o uso dos seus programas. Deste modo, as restrições não afetam as atividades e as pessoas fora da jurisdição destes governos. &lt;/p&gt;&lt;p&gt;Quando falando sobre o software livre, é melhor evitar o uso de termos como "dado" ou "de graça", porque estes termos implicam que a questão é de preço, não de liberdade. &lt;/p&gt;&lt;p&gt;Finalmente, note que critérios como os estabelecidos nesta definição do software livre requerem cuidadosa deliberação quanto à sua interpretação. Para decidir se uma licença se qualifica como de software livre, nós a julgamos baseados nestes critérios para determinar se ela se segue o nosso espírito assim como as palavras exatas. Se uma licença inclui restrições impensadas, nós a rejeitamos, mesmo que nós não tenhamos antecipado a questão nestes critérios. Às vezes um requerimento de alguma licença levanta uma questão que requer excessiva deliberação, incluindo discussões com advogados, antes que nós possamos decidir se o requerimento é aceitável. Quando nós chegamos a uma conclusão sobre uma nova questão, nós frequentemente atualizamos estes critérios para tornar mais fácil determinar porque certas licenças se qualificam ou não. &lt;/p&gt;&lt;p&gt;Para maiores informações, visite o site de &lt;a href="http://www.gnu.org/philosophy"&gt; filosofia do projeto GNU&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;fonte: http://www.softwarelivre.org/whatisit.php&lt;br /&gt;&lt;/p&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/23433937-114290078742866817?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114290078742866817/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114290078742866817' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114290078742866817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114290078742866817'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/o-que-software-livre.html' title='O que é Software Livre'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114264101680186666</id><published>2006-03-17T20:55:00.000-03:00</published><updated>2006-03-17T21:16:56.813-03:00</updated><title type='text'>Instalando SUDO no GNU Linux</title><content type='html'>&lt;span style="color: rgb(255, 0, 0);"&gt;Introdução:&lt;/span&gt;&lt;br /&gt;Sudo (Superuser do) permite administradores de sistemas linux dar, a certos usuários (ou grupo de usuários), a capacidade de "rodar" alguns ou todos os comandos de um console como usuário root ou qualquer outro tipo de usuário.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Instalação:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Não vamos fugir da boa e velha compilação ou instalação usando os fontes. Você pode encontrá-los em http://www.gratisoft.us/sudo/sudo.html. A versão tratada aqui é a &lt;a href="http://www.gratisoft.us/sudo/dist/sudo-1.6.8p12.tar.gz"&gt;sudo 1.6.8p12&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para a maioria dos sistemas...&lt;br /&gt;&lt;br /&gt;Baixe o "source" do sudo:&lt;br /&gt;&lt;br /&gt;wget  ftp://ftp.sudo.ws/pub/sudo/sudo-1.6.8p12.tar.gz&lt;br /&gt;/* se der problemas com esse mirror, consulte outros &lt;a href="http://www.gratisoft.us/sudo/download.html"&gt;aqui&lt;/a&gt; */&lt;br /&gt;&lt;br /&gt;tar xvzf sudo-1.6.8p12.tar.gz -C /usr/local/src&lt;br /&gt;&lt;br /&gt;cd /usr/local/src/sudo-1.6.8p12&lt;br /&gt;&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;Após essas rotinas, edite o arquivo sudousers com o 'visudo'&lt;br /&gt;&lt;br /&gt;Simples né!? Pois bem, pode parecer simples mas só o INSTALL do sudo há várias opções para as mais diversas necessidades. Nunca deixe de olhar o INSTALL e o README antes de compilar.&lt;br /&gt;&lt;br /&gt;Bom, alguns esclarecimentos sobre a postagem:&lt;br /&gt;&lt;br /&gt;Sim, foi rápida e objetiva. Tentei abordar de forma simples a instalação do sudo, o qual pode ser compilado qualquer sistema GNU Llinux. Essa talvez seja o método mais "fácil" de se compilar o programa, mas, como já disse, há várias opções possíveis para concretizar a instalação.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114264101680186666?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114264101680186666/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114264101680186666' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114264101680186666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114264101680186666'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/instalando-sudo-no-gnu-linux.html' title='Instalando SUDO no GNU Linux'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114263122650477897</id><published>2006-03-17T18:31:00.000-03:00</published><updated>2006-03-17T18:33:46.516-03:00</updated><title type='text'>EFI - Em Inglês</title><content type='html'>The EFI specification defines a new model for the interface between operating systems and platform firmware. The interface consists of data tables that contain platform-related information, plus boot and runtime service calls that are available to the operating system and its loader. Together, these provide a standard environment for booting an operating system and running pre-boot applications.&lt;br /&gt;&lt;br /&gt;The EFI specification is primarily intended for the next generation of IA architecture-based computers, and is an outgrowth of the "Intel® Boot Initiative" (IBI) program that began in 1998.&lt;br /&gt;&lt;br /&gt;In 2005 the Unified EFI Forum was formed. Using the EFI 1.10 specification as the staring point, this industry group is responsible for developing, managing and promoting the UEFI specification. Please refer to the &lt;a class="boxlink" href="javascript:popExternal('http://www.uefi.org/')"&gt;UEFI site&lt;/a&gt; for more information on UEFI and for accessing UEFI specifications.&lt;br /&gt;&lt;br /&gt;For more information about EFI, see &lt;a href="http://www.intel.com/technology/efi/efi.htm"&gt;EFI presentations&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114263122650477897?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114263122650477897/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114263122650477897' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114263122650477897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114263122650477897'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/efi-em-ingls.html' title='EFI - Em Inglês'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114256517397355956</id><published>2006-03-17T00:09:00.000-03:00</published><updated>2006-03-17T00:13:58.043-03:00</updated><title type='text'>C Completo e Total - Herbert Schild</title><content type='html'>&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Minha primeira postagem no blog, não sei ao certo qual vai ser o destino dos meus textos... Talvez um blog ou outro site dinamico novo dedicado ao pessoal da UERGS, para que seja possível o compartilhamento de conhecimento e informações com o intuito de que todos os alunos consigamos atingir os níveis necessários para aprovação.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Segue abaixo link para o eBook do livro C Completo e Total, utilizado na cadeira de Algoritmos e programação, tamanho aproximado 31MB.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.badongo.com/file/304598"&gt;&lt;span style="font-family:verdana;"&gt;http://www.badongo.com/file/304598&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114256517397355956?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114256517397355956/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114256517397355956' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114256517397355956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114256517397355956'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/c-completo-e-total-herbert-schild.html' title='C Completo e Total - Herbert Schild'/><author><name>Bruno Pospichil</name><uri>http://www.blogger.com/profile/03556299962315639948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114254451846506027</id><published>2006-03-16T18:27:00.000-03:00</published><updated>2006-03-16T18:28:38.476-03:00</updated><title type='text'>Tempos antigos...</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;b&gt;Internet               Archive:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://web.archive.org/" target="_blank"&gt;web.archive.org&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;Eeste site permite ver como eram os layouts antigos de uma infinidade               de sites. Como exemplo, você pode ver o design de 1997 do               site do UOL e até como era o InfoWester em seu lançamento               como site .com em 2003. Para isso, basta digitar o endereço               do site no campo de busca do Internet Archive e clicar em "Take               me Back". Em seguida, uma lista de versões do site sugerido               será mostrado. Em inglês.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infowester.com/sites.php"&gt;Fonte&lt;/a&gt;&lt;br /&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/23433937-114254451846506027?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114254451846506027/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114254451846506027' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114254451846506027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114254451846506027'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/tempos-antigos.html' title='Tempos antigos...'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114227168856697564</id><published>2006-03-13T14:39:00.000-03:00</published><updated>2006-03-13T14:41:28.580-03:00</updated><title type='text'>Engenharia em Sistemas Digitais</title><content type='html'>Descrição:&lt;br /&gt;&lt;br /&gt;Formação de profissionais capacitados a efetuar diagnósticos, formular soluções e gerir a implantação de inovações em processos e produtos envolvendo tecnologias digitais. A sua sólida formação básica em engenharia permitirá uma permanente atualização profissional e uma compreensão adequada mesmo dos problemas não intrinsecamente digitais, dando a eles soluções avançadas que possam incluir as possibilidades do estado da arte da microeletrônica.&lt;br /&gt;&lt;br /&gt;Perfil do Profissional:&lt;br /&gt;&lt;br /&gt;Um profissional com um sólida base científica e bons conhecimentos dos sistemas produtivos, capaz de assimilar e avaliar inovações bem como ter flexibilidade de atualizar-se e capacitar-se face a problemas novos. Essa capacitação é fundamental para dar suporte ao desenvolvimento de aumento de competitividade da pequena e média empresa de base tecnológica, em atividades que venham a exigir a combinação de tecnologias digitais e sistemas de hardware e software. Em particular, uma forte conexão com o CEITEC proporcionará aos graduados uma adequada capacidade de julgamento sobre a transição de tecnologias convencionais para as de alta integração com a microeletrônica.&lt;br /&gt;&lt;br /&gt;Fonte: site da &lt;a href="http://www.uergs.edu.br/interno/setores/links/interno/cursos/engsisdig.htm"&gt;uergs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114227168856697564?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114227168856697564/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114227168856697564' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114227168856697564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114227168856697564'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/engenharia-em-sistemas-digitais.html' title='Engenharia em Sistemas Digitais'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114217769360770965</id><published>2006-03-12T12:33:00.000-03:00</published><updated>2006-03-12T12:34:53.616-03:00</updated><title type='text'>Compilei o kernel 2.6.15</title><content type='html'>Olha pessoal, esse poste simples, embora não seja nenhuma dica, é para apenas vos informar que estou usando agora, sem maiores problemas, por enquanto, o kernel 2.6.15. Bom, um grande abraço a todos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114217769360770965?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114217769360770965/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114217769360770965' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114217769360770965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114217769360770965'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/compilei-o-kernel-2615.html' title='Compilei o kernel 2.6.15'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114177338688994961</id><published>2006-03-07T20:15:00.000-03:00</published><updated>2006-03-07T20:16:26.893-03:00</updated><title type='text'>Google?!</title><content type='html'>&lt;h2&gt;A escolha do nome&lt;/h2&gt; &lt;p&gt;O nome &lt;b&gt;Google&lt;/b&gt; foi escolhido por causa da expressão &lt;a href="http://pt.wikipedia.org/wiki/Googol" title="Googol"&gt;googol&lt;/a&gt;, que representa o número 1 seguido de 100 zeros, para demonstrar assim a imensidão da &lt;a href="http://pt.wikipedia.org/wiki/Web" title="Web"&gt;Web&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;A expressão &lt;i&gt;googol&lt;/i&gt; surgiu de um fato um tanto curioso, o matemático &lt;b&gt;Edward Kasner&lt;/b&gt; questionou o seu sobrinho de 8 anos sobre a forma como ele descreveria um número grande - um número realmente grande: o maior número que ele imaginasse. O pequeno &lt;b&gt;Milton Sirotta&lt;/b&gt; emitiu um som de resposta que Kasner traduziu por "google". Mais tarde Kasner definiu um número ainda maior: o &lt;a href="http://pt.wikipedia.org/wiki/Googol" title="Googol"&gt;googolplex&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Veja os derivados do nome googol:&lt;/b&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;i&gt;Googolplex&lt;/i&gt;: é o nome do conjunto de construções de trabalho e moradia do Google, em Mountain View - &lt;a href="http://pt.wikipedia.org/wiki/Calif%C3%B3rnia" title="Califórnia"&gt;Califórnia&lt;/a&gt;. Este termo também vem da matemática e é algo como &lt;img class="tex" src="http://upload.wikimedia.org/math/c/d/d/cddab32ac358ead4f4ed3ec82489a8a8.png" alt="10^{10^{100}}" /&gt;, que seria &lt;i&gt;10 elevado a (10 elevado a 100)&lt;/i&gt; ou &lt;i&gt;10 elevado a googol&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;i&gt;Googolduplex&lt;/i&gt;: como quando alguém se refere a um dos complexos de moradia do Google; Este termo, voltando à matemática, se refere a &lt;img class="tex" src="http://upload.wikimedia.org/math/6/6/c/66c7ac6cca46167a5c692e3fb3ce9fec.png" alt="10^{10^{10^{100}}}" /&gt;, ou &lt;i&gt;10 elevado a (10 elevado a (10 elevado 100))&lt;/i&gt;, ou mesmo &lt;i&gt;10 elevado a googolplex&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://pt.wikipedia.org/wiki/Google#A_escolha_do_nome"&gt;fonte:&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114177338688994961?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114177338688994961/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114177338688994961' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114177338688994961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114177338688994961'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/google.html' title='Google?!'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114169769251202690</id><published>2006-03-06T23:12:00.000-03:00</published><updated>2006-03-06T23:14:52.526-03:00</updated><title type='text'>Boot Splash com Slackware - Por Bruno R. da Silva</title><content type='html'>Esse texto escrito por Bruno R. da Silva mostra como usar o Bootsplash no Slackware.&lt;br /&gt;Bootsplash no Slackware&lt;p&gt;  Usando Bootsplash no Slackware por Blood_Brother&lt;/p&gt;&lt;p&gt;  1.0 Pré-requisitos&lt;br /&gt;1.1 Aplicando o patch ao kernel&lt;br /&gt;1.2 Compilando o splash&lt;br /&gt;1.3 Criando o /etc/bootsplash&lt;br /&gt;1.4 Criando o /boot/initrd com a bootsplash&lt;br /&gt;1.5 Editando o /etc/lilo.conf&lt;br /&gt;1.6 Criando o /etc/rc.d/rc.bootsplash&lt;br /&gt;1.7 Editando alguns arquivos no /etc/rc.d/&lt;br /&gt;1.8 Últimos ajustes&lt;br /&gt; 2.0 Contatos e dúvidas&lt;br /&gt;2.1 Créditos&lt;br /&gt;&lt;br /&gt; 3.0 Dados do autor&lt;br /&gt;&lt;br /&gt;  1.0 Pré-requisitos&lt;br /&gt;&lt;br /&gt;A primeira ação a ser feita é o download do patch referente à sua versão de kernel, o mesmo pode ser encontrado em http://www.plumlocosoft.com/kernel/patches/2.4/ Somente precisa ser baixado o patch com bootsplash ou bs no nome, que pode ser encontrado em subpastas split ou components. (Ao entrar no link você perceberá do que estou falando)&lt;br /&gt;&lt;br /&gt;Após a obtenção do patch é necessário o download de um theme (o qual vai ser sua bootsplash), que pode ser obtido em http://www.bootsplash.org (recomendo que use o theme Default Linux, que é o que foi testado neste artigo).&lt;br /&gt;&lt;br /&gt; Faz-se necessário também o pacote de fontes a seguir:&lt;br /&gt;ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/bootsplash-3.0.7.tar.bz2 Este pacote possui os fontes do utilitário splash, que será usado mais adiante.&lt;br /&gt;&lt;br /&gt; Um outro pré-requisito muito importante é saber compilar o kernel. (Sem este pré-requisito não continue)&lt;br /&gt;&lt;br /&gt; 1.1 Aplicando o patch ao kernel&lt;br /&gt;&lt;br /&gt; O patch pode ser aplicado facilmente da seguinte maneira:&lt;br /&gt;&lt;br /&gt; ~# bunzip2 arquivo-do-patch.bz2&lt;br /&gt;~# cd /usr/src/linux (ou onde estiver o fonte do seu kernel)&lt;br /&gt;~# patch -p1 &lt; /onde-está-seu-patch/arquivo-do-patch&lt;br /&gt; Se você receber alguma mensagem de erro o patch é incompatível com sua versão de kernel, então baixe a versão certa.&lt;br /&gt;&lt;br /&gt;Na config do seu kernel assegure-se de ter marcado a opção "Console drivers -&gt; Frame-Buffer support -&gt; VESA VGA graphics console" (ou outro framebuffer apropriado), e a opção "Use splash screen instead of boot logo".&lt;br /&gt;&lt;br /&gt; Feito isto, compile seu kernel e passe para o passo seguinte&lt;br /&gt;&lt;br /&gt;.  1.2 Compilando o splash&lt;br /&gt;&lt;br /&gt;Basta descompactar o bootsplash-3.0.7.tar.bz2, entrar no diretorio criado com o nome de bootsplash-3.0.7, executar os 2 passos seguintes:&lt;br /&gt;&lt;br /&gt;~# make splash&lt;br /&gt;~# cp splash /sbin&lt;br /&gt;&lt;br /&gt; 1.3 Criando o /etc/bootsplash&lt;br /&gt;&lt;br /&gt;Esta parte é importante, pois é a pasta onde serão armazenados seus themes. Então, crie a pasta /etc/bootsplash e dentro dela crie outra chamada themes. Dentro então de /etc/bootsplash/themes descompacte o theme que você obteve no passo 1.0.&lt;br /&gt;&lt;br /&gt; 1.4 Criando o /boot/initrd com a bootsplash&lt;br /&gt;&lt;br /&gt;Este passo é bem simples, basta executar o comando: splash -s -f /etc/bootsplash/themes/Linux/config/bootsplash-1024x768.cfg &gt; /boot/initrd&lt;br /&gt;&lt;br /&gt;Repare que usei /etc/bootsplash/themes/Linux/config/bootsplash-1024x768.cfg porque é referente ao theme Default Linux que foi usado neste artigo, se você baixou outro theme adeque o caminho ao mesmo.&lt;br /&gt;&lt;br /&gt; 1.5 Editando o /etc/lilo.conf&lt;br /&gt;&lt;br /&gt; Existem 2 linhas fundamentais para o funcionamento correto do bootsplash, são as que seguem:&lt;br /&gt;&lt;br /&gt;initrd = /boot/initrd&lt;br /&gt;append = "splash=silent"&lt;br /&gt;&lt;br /&gt; As linhas podem ser colocadas logo abaixo desta:&lt;br /&gt;&lt;br /&gt;root = /dev/hda1&lt;br /&gt;&lt;br /&gt; Ficando então seu lilo.conf mais ou menos desta maneira:&lt;br /&gt;&lt;br /&gt;image = /boot/vmlinuz&lt;br /&gt;root = /dev/hda1&lt;br /&gt;initrd = /boot/initrd&lt;br /&gt;label = Linux&lt;br /&gt;read-only&lt;br /&gt;&lt;br /&gt; 1.6 Criando o /etc/rc.d/rc.bootsplash&lt;br /&gt;&lt;br /&gt; O /etc/rc.d/rc.bootsplash deve ser da seguinte maneira (sem as linhas que começam com --):&lt;br /&gt;&lt;br /&gt; -- INICIO DO ARQUIVO -- #! /bin/sh&lt;br /&gt;#&lt;br /&gt;function progressbar()&lt;br /&gt;{&lt;br /&gt;if [ $# != 1 ]&lt;br /&gt;then&lt;br /&gt;echo "Usage: progressbar {progress}"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;echo "show $(( 65534 * $1 / 100 ))" &gt;&lt;br /&gt;/proc/splash&lt;br /&gt;}&lt;br /&gt;-- FIM DO ARQUIVO --&lt;br /&gt;&lt;br /&gt; Ps.: não se esqueça que o /etc/rc.d/rc.bootsplash precisa ser executável, para isso: chmod +x /etc/rc.d/rc.bootsplash&lt;br /&gt;&lt;br /&gt; 1.7 Editando alguns arquivos no /etc/rc.d/&lt;br /&gt;&lt;br /&gt;Dois arquivos importantes serão editados para que controlem a barra que indica o carregamento do sistema no bootsplash, são eles: rc.M e rc.S&lt;br /&gt;&lt;br /&gt;No início dos respectivos arquivos você precisa inserir esta linha: . /etc/rc.d/rc.bootsplash (a linha precisa estar logo abaixo do #! /bin/sh)&lt;br /&gt;&lt;br /&gt;Após feito isso é você quem vai decidir a porcentagem em que o sistema está carregado em tal ponto, você deve então chamar a função progressbar seguida de um número que vai de 0 (zero) a 100 (cem).&lt;br /&gt;&lt;br /&gt;Uma nota importante é que o rc.S é iniciado primeiro na hora do boot, então é interessante que logo após a primeira função que ele executar você já coloque progressbar 10 (posicionar a barra de carregamento do boot splash em 10%), e por ai vai. É interessante também que ao final do rc.S termine em mais ou menos 50% e a partir do início do rc.M você coloque progressbar 60, e ao final progressbar 100. Segue um exemplo para que você possa entender melhor:&lt;br /&gt;&lt;br /&gt; #!/bin/sh&lt;br /&gt;# rc.S exemplo&lt;br /&gt;. /etc/rc.d/rc.bootsplash&lt;br /&gt; echo "Progress bar em 10%"&lt;br /&gt;progressbar 10&lt;br /&gt;echo "Progress bar em 20%"&lt;br /&gt;progressbar 20&lt;br /&gt;echo "Progress bar em 35%"&lt;br /&gt;progressbar 35&lt;br /&gt;echo "Progress bar em 50%"&lt;br /&gt;progressbar 50&lt;br /&gt;# Fim do rc.S&lt;br /&gt;&lt;br /&gt; #!/bin/sh&lt;br /&gt;# rc.M exemplo&lt;br /&gt;. /etc/rc.d/rc.bootsplash&lt;br /&gt;&lt;br /&gt; echo "Progress bar em 60%"&lt;br /&gt;progressbar 60&lt;br /&gt;echo "Progress bar em 70%"&lt;br /&gt;progressbar 70&lt;br /&gt;echo "Progress bar em 85%"&lt;br /&gt;progressbar 85&lt;br /&gt;echo "Progress bar em 100%"&lt;br /&gt;progressbar 100&lt;br /&gt;# Fim do rc.M&lt;br /&gt;&lt;br /&gt; Penso que assim fica melhor entendido.&lt;br /&gt;&lt;br /&gt; 1.8 Últimos ajustes&lt;br /&gt;&lt;br /&gt;Feito todos os passos anteriores agora só falta você copiar a sua imagem do kernel com o patch aplicado para /boot/vmlinuz ou criar um link para ele. Executar: lilo (para que o lilo seja reinstalado). E finalmente! Reiniciar a máquina e rezar pra que tudo tenha funcionado, hehehe, brincadeira, se você seguiu os passos certinho tudo deve funcionar.&lt;br /&gt;&lt;br /&gt; 2.0 Contatos e dúvidas&lt;br /&gt;&lt;br /&gt; Se alguém quiser manter contato ou tirar alguma dúvida (pequena!) basta me enviar um e-mail.&lt;br /&gt;&lt;br /&gt; Ps.: Se tiver algum erro no texto também ficaria grato que me enviassem um e-mail relatando-o, para que eu possa corrigir.&lt;br /&gt;&lt;br /&gt; 2.1 Créditos&lt;br /&gt;&lt;br /&gt; Gostaria de agradecer àqueles que acreditam em mim, e ao pessoal do #LinuxHelp da rede VirtuaLife que sempre dão uma força!&lt;br /&gt;&lt;br /&gt; Slackware r0x!&lt;br /&gt;&lt;br /&gt; 3.0 Dados do autor&lt;br /&gt;&lt;br /&gt; Nome: Bruno R. da Silva&lt;br /&gt;Nickname: Blood_Brother ou Blutsbruder&lt;br /&gt;Nascido em: 14/04/1985&lt;br /&gt;Cidade: Florianópolis&lt;br /&gt;Site pessoal: http://www.bloodcorp.tk&lt;br /&gt;E-Mail:&lt;br /&gt;Ocupação: Estudante de Ciências da Computação na Universidade Federal de Santa Catarina (UFSC)&lt;br /&gt;Experiencia Profissional: Administração de redes Windows e Linux, implementação de proxys e serviços de ftp, http, sshd e vnc.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114169769251202690?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114169769251202690/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114169769251202690' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114169769251202690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114169769251202690'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/boot-splash-com-slackware-por-bruno-r.html' title='Boot Splash com Slackware - Por Bruno R. da Silva'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114166501838067411</id><published>2006-03-06T14:06:00.000-03:00</published><updated>2006-03-06T14:10:18.390-03:00</updated><title type='text'>FISL 7.0 Em Porto Alegre</title><content type='html'>&lt;h1 id="site-name"&gt;&lt;a href="http://fisl.softwarelivre.org/7.0/www/" title="Index Page"&gt;7º Fórum Internacional Software Livre&lt;/a&gt;              &lt;br /&gt;&lt;span id="site-slogan"&gt;19, 20, 21 e 22 de Abril de 2006&lt;br /&gt;Porto Alegre, RS, Brasil&lt;/span&gt;&lt;/h1&gt;A sétima edição do FISL será mais uma vez em Porto Alegre RS. Nossa "querência" sediará esse evento que vem se tornando cada vez maior em todo Brasil e no mundo. O evento contará com presença do guru Richard Stalman, uma das grandes personalidades mundiais do software livre.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114166501838067411?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114166501838067411/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114166501838067411' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114166501838067411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114166501838067411'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/fisl-70-em-porto-alegre.html' title='FISL 7.0 Em Porto Alegre'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23433937.post-114151952835482283</id><published>2006-03-04T21:37:00.000-03:00</published><updated>2006-03-04T21:45:28.366-03:00</updated><title type='text'>Compilando Kernel 2.4.x</title><content type='html'>Em minha primeira postagem, gostaria de estar colocando algo bastante interessante e que fascina a todos, que é a COMPILAÇÃO do Kernel. Esse texto é uma tradução adaptada de um trecho que trata sobre compilação em sistemas linux de o "&lt;a href="http://slackbook.lizella.net/html/index.html"&gt;The Revised Slackware Book Project&lt;/a&gt;" cuja a autoria é Alan Hicks, Chris Lumens, David Cantrell e Logan Johnson.&lt;br /&gt;Com singelas adaptações minhas...&lt;br /&gt;&lt;br /&gt;A questão "Devo compilar um kernel para meu sistema?" é geralmente a perguntada por usuários novos. A resposta é definitivamente tavez. Há poucos exemplos onde você precisará compilar um kernel específico para o seu sistema. Muitos usuário podem usar um kernel precompilado e seus respectivos módulos para ativar um sistema - no caso do Slackware Linux. Isto é, num sistema com SMP você definitivamente vai querer compilar um kernel com suporte a SMP. Também, muitos usuários acreditam que um kernel customizado "roda" mais rápido em suas máquinas. Você pode achar útil compilar um kernel otimizado para seu processador especificamente falando.&lt;br /&gt;Construiu seu próprio kernel não é uma tarefa difícil. O primeiro passo é se certificar de que os fontes instalados em seu sistema. Certifique-se de que você tem instalado em seu sistema um compilador C, GNU make e o GNU binutils. Geralmente, e para evitar qualquer problema, uma boa idéia ter todo o pacote de desenvolvimento. Você pode fazer o download da última versão do kernel de http://www.kernel.org/mirrors&lt;br /&gt;&lt;br /&gt;Compilação do Kernel versão 2.4.x&lt;br /&gt;&lt;br /&gt;% su -&lt;br /&gt;Password:&lt;br /&gt;# cd /usr/src/linux&lt;br /&gt;&lt;br /&gt;O primeiro passo é trazer a fonte do kernel para dentro de sua base. Emitimos esse comando para fazer isso (Nota, você deve fazer um backup do seu .config atual, pois será removido sem haviso prévio).&lt;br /&gt;&lt;br /&gt;# make mrproper&lt;br /&gt;&lt;br /&gt;Agora você pode configurar o kernel para o seu sistema. As três maneiras de se fazer isso é: a primeira é baseado em texto com perguntas e resposta, muito demorado. Fará várias perguntas e depois criará um arquivo de configuração. O problema, além de ser lento, é que se houver algum erro, tem de começar tudo denovo. O método que a maioria das pessoas preferem é o menu. Por último, há um método baseado numa ferramena de configuração do X. Escolha a que melhor convir:&lt;br /&gt;&lt;br /&gt;# make config           (text-based Q&amp;A version)&lt;br /&gt;# make menuconfig       (menu driven, text-based version)&lt;br /&gt;# make xconfig          (X-based version, make sure you are in X first)&lt;br /&gt;&lt;br /&gt;Usuários novos poderão achar o menuconfig provavelmente o mais fácil de usar. Telas de ajuda provêem explicações sobre as várias partes da compilação do kernel. Depois de configurar seu kernel, saia do programa de configuração. Ele definir os arquivos configuração necessários. Agora nós podemos preparar a árvore de fontes para a construção.&lt;br /&gt;&lt;br /&gt;# make dep&lt;br /&gt;# make clean&lt;br /&gt;&lt;br /&gt;O próximo passo é compilar o kernel.&lt;br /&gt;&lt;br /&gt;# make bzImage&lt;br /&gt;&lt;br /&gt;Isso pode demorar um pouco dependendo da velocidade do seu CPU. Durante o processo, você verá inúmeras mensagens do compilador. Depois de compilar a imagem do kernel, você irá compilar as várias partes do kernel que você definiu como modulares.&lt;br /&gt;# make modules&lt;br /&gt;&lt;br /&gt;Nós agora podemos instalar o kernel e os módulos que foram compilados. Para instalar o kernel num Linux, por exemplo, no Slackware, serão necessários estes comandos:&lt;br /&gt;&lt;br /&gt;# mv /boot/vmlinuz /boot/vmlinuz.old&lt;br /&gt;# cat arch/i386/boot/bzImage &gt; /vmlinuz *(ou /boot/vmlinuz, não importa)&lt;br /&gt;# mv /boot/System.map /boot/System.map.old&lt;br /&gt;# cp System.map /boot/System.map&lt;br /&gt;# make modules_install&lt;br /&gt;&lt;br /&gt;Após você deverá editar o seu Boot Loader favorito para que ele "carregue" o sistema&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23433937-114151952835482283?l=gnulinuxfreak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gnulinuxfreak.blogspot.com/feeds/114151952835482283/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23433937&amp;postID=114151952835482283' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114151952835482283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23433937/posts/default/114151952835482283'/><link rel='alternate' type='text/html' href='http://gnulinuxfreak.blogspot.com/2006/03/compilando-kernel-24x.html' title='Compilando Kernel 2.4.x'/><author><name>Raid Zero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://slackware.it/gfx/logo.jpg'/></author><thr:total>1</thr:total></entry></feed>
