<?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-52367605280780120</id><updated>2012-01-18T10:55:01.385-02:00</updated><category term='Hora do lanche'/><category term='Sqlite'/><category term='Jquery'/><category term='Windows'/><category term='Java'/><category term='Ruby'/><category term='Javascript'/><category term='Geral'/><category term='Rails'/><title type='text'>InfoZap!</title><subtitle type='html'>Desenvolvimento web ágil e sem frescura</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-4777591324337034077</id><published>2011-08-01T20:48:00.001-03:00</published><updated>2011-08-01T20:49:19.913-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Gerar JSON a partir de objeto Ruby</title><content type='html'>Que eu saiba não existe algo pronto no Ruby que, a partir de um objeto, gere um Json com todas as propriedades dele.&lt;br /&gt;&lt;br /&gt;Encontrei na &lt;a href="http://stackoverflow.com/questions/1684588/how-to-do-ruby-object-serialization-using-json#1684979" target="_blank"&gt;web&lt;/a&gt; um exemplo que mostra como criar um módulo que gera o Json de todas as propriedades de algum objeto.&lt;br /&gt;&lt;br /&gt;Porém este exemplo assume apenas que as propriedades sejam simples. Quando a propriedade for um Array (que não inclui o módulo em sua origem), ele chega vazio no Json.&lt;br /&gt;&lt;br /&gt;Fiz duas adaptações no exemplo:&lt;br /&gt;1) Gerar Json de elementos simples de um Array&lt;br /&gt;2) Gerar Json dos elementos (do Array) que têm o módulo incluído&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1117425.js?file=ruby_to_json.rb"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Então, o código abaixo deve funcionar :)&lt;br /&gt;&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;p = Person.new&lt;br /&gt;p.name = "Leandro"&lt;br /&gt;p.age = 24&lt;br /&gt;&lt;br /&gt;n1 = Note.new("first note")&lt;br /&gt;a1 = Address.new("cool!")&lt;br /&gt;n1.addresses = []&lt;br /&gt;n1.addresses &lt;&lt; a1&lt;br /&gt;&lt;br /&gt;n2 = Note.new("last note")&lt;br /&gt;&lt;br /&gt;p.notes = []&lt;br /&gt;p.notes &lt;&lt; n1&lt;br /&gt;p.notes &lt;&lt; n2&lt;br /&gt;&lt;br /&gt;p.simple_notes = []&lt;br /&gt;p.simple_notes &lt;&lt; "abc"&lt;br /&gt;p.simple_notes &lt;&lt; "123"&lt;br /&gt;  &lt;br /&gt;p.to_json&lt;br /&gt;&lt;/pre&gt;Tente imprimir "p.to_json" e verás todas as propriedades em cascata bonitinhas dentro do Json!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-4777591324337034077?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/4777591324337034077/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=4777591324337034077' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4777591324337034077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4777591324337034077'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/08/gerar-json-partir-de-objeto-ruby.html' title='Gerar JSON a partir de objeto Ruby'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-7813229883614011697</id><published>2011-04-18T23:51:00.001-03:00</published><updated>2011-04-18T23:56:56.196-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Enviar email utilizando Java</title><content type='html'>Criei uma estrutura em Java para enviar emails de forma simples. Basta apenas configurar o host do smtp (algum personalizado ou o próprio Gmail).&lt;br /&gt;&lt;br /&gt;Forma de uso (mais detalhes no &lt;a href="https://gist.github.com/926701"&gt;Github&lt;/a&gt;.):&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/926701.js?file=TesteSendEmail.java"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-7813229883614011697?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/7813229883614011697/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=7813229883614011697' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/7813229883614011697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/7813229883614011697'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/04/enviar-email-utilizando-java.html' title='Enviar email utilizando Java'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-1816409481290720707</id><published>2011-04-13T20:17:00.000-03:00</published><updated>2011-04-13T20:17:16.322-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Truncate com Jquery</title><content type='html'>Eu estava precisando truncar (cortar, diminuir) o tamanho de um texto na página e dar a opção para o usuário expandir/esconder, porém as bibliotecas disponibilizadas são muito pesadas.&lt;br /&gt;&lt;br /&gt;Fiz um script, curto, simples, que trunca o texto selecionado recebendo a quantidade máxima de caracteres, e coloca um link para o usuário expandir/esconder o texto.&lt;br /&gt;&lt;br /&gt;Além de ser leve tem a vantagem de manter o conteúdo do elemento original, permitindo assim a visualização do mesmo caso o browser não carregue javascript corretamente.&lt;br /&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;var len = $("#longText").text().length;&lt;br /&gt;if (len &gt; maxCharacters) {&lt;br /&gt;    var truncated = $("#longText").text().&lt;br /&gt;        substring(0, maxCharacters);&lt;br /&gt;    truncated = truncated.replace(/\w+$/, '');&lt;br /&gt;    var spanTruncate = "&lt;span id=\"truncate\" style=\"display:none\"&gt;&lt;/span&gt;";&lt;br /&gt;    $("#longText").after(spanTruncate);&lt;br /&gt;    $("#longText").hide();&lt;br /&gt;    $("#truncate").html(truncated);&lt;br /&gt;    var linkToggle = "&lt;br&gt;&lt;a id=\"toggle\" href=\"#\"&gt;more&lt;/a&gt;" &lt;br /&gt;    $("#truncate").after(liknToggle);&lt;br /&gt;    $("#truncate").show();    &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O evento para quando o usuário clicar no link expandir/esconder:&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;$("#toggle").click(function(event) {&lt;br /&gt;    event.preventDefault();&lt;br /&gt;    if ($(this).html() == "hide") {&lt;br /&gt;        $("#longText").hide();&lt;br /&gt; $("#truncate").show();&lt;br /&gt; $(this).html("more");&lt;br /&gt;    } else {&lt;br /&gt; $("#truncate").hide();&lt;br /&gt;        $("#longText").show();&lt;br /&gt; $(this).html("hide");&lt;br /&gt;    }&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O código completo, com um exemplo de como utilizar, está disponibilizado no meu &lt;a href="https://github.com/leandronsp/truncate-text"&gt;Github&lt;/a&gt;, para que possa ser melhorado sempre por quem estiver interessado em contribuir com o projeto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-1816409481290720707?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/1816409481290720707/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=1816409481290720707' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/1816409481290720707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/1816409481290720707'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/04/truncate-com-jquery.html' title='Truncate com Jquery'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-4838646761626199382</id><published>2011-04-13T12:58:00.001-03:00</published><updated>2011-04-13T20:17:30.300-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Gerador de thumbnails em Java</title><content type='html'>Resolvi compartilhar um gerador de thumbnail de imagens muito útil que sempre utilizo.&lt;br /&gt;Basicamente o código recebe o arquivo de origem, o destino, a largura e a altura máxima do thumbnail a ser gerado. &lt;br /&gt;&lt;br /&gt;É tudo muito simples e requer apenas a biblioteca padrão awt do Java.&lt;br /&gt;&lt;br /&gt;Primeiro vamos ler o arquivo de origem:&lt;br /&gt;&lt;pre class="java" name="code"&gt;FileInputStream input = new FileInputStream(source);&lt;br /&gt;BufferedImage bufImage = ImageIO.read(input);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora precisamos calcular o scale, que será o índice para redimensionar a área da imagem. Se a altura original da imagem for maior, o scale será o resultado da divisão da altura do thumb pela altura original. E vice- versa.&lt;br /&gt;&lt;pre class="java" name="code"&gt;double scale1 = (double) width / (double) bufImg.getWidth();&lt;br /&gt;double scale2 = (double) height / (double) bufImg.getHeight(); &lt;br /&gt;double resultScale = scale1 &gt; scale2 ? scale2 : scale1;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Utilizando o resultado obtido para o cálculo do redimensionamento:&lt;br /&gt;&lt;pre class="java" name="code"&gt;int realWidth = bufImg.getWidth();&lt;br /&gt;int realHeigth = bufImg.getHeight();&lt;br /&gt;BufferedImage imageScaled = new BufferedImage((int) (&lt;br /&gt;    w * resultScale), (int) (h * resultScale), &lt;br /&gt;    BufferedImage.TYPE_INT_RGB);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Só o BufferedImage gerado não basta. É necessário, por fim, desenhar os gráficos da imagem novamente com os novos parâmetros calculados:&lt;br /&gt;&lt;pre class="java" name="code"&gt;Graphics2D g2 = scaled.createGraphics();&lt;br /&gt;g2.setComposite(AlphaComposite.Src);&lt;br /&gt;g2.drawImage(img.getScaledInstance((int) (realWidth * resultScale), &lt;br /&gt;    (int) (realHeigth * resultScale), Image.SCALE_SMOOTH),&lt;br /&gt;    0, 0, (int) (w * resultScale), (int) (h * resultScale), null);&lt;br /&gt;g2.dispose();&lt;br /&gt;&lt;br /&gt;// Escrevendo no arquivo de sáida&lt;br /&gt;ImageIO.write(imageScaled, "JPG", output);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Código completo:&lt;br /&gt;&lt;pre class="java" name="code"&gt;public class ThumbGenerator {&lt;br /&gt;&lt;br /&gt;    public static boolean generate (File source, File dest, &lt;br /&gt;                   int height, int width) throws IOException {&lt;br /&gt;        if (source != null &amp;&amp; dest != null) {&lt;br /&gt;     FileInputStream input = new FileInputStream(source);&lt;br /&gt;     try {&lt;br /&gt;                BufferedImage bufImage = ImageIO.read(input);&lt;br /&gt;  if(bufImage != null) {&lt;br /&gt;      double scale = calcScale(bufImage, width, height);&lt;br /&gt;      BufferedImage imageScaled = scale(bufImage, scale);&lt;br /&gt;      FileOutputStream fos = new FileOutputStream(dest);&lt;br /&gt;      ImageIO.write(imageScaled, "JPG", fos);&lt;br /&gt;      fos.close();&lt;br /&gt;                    input.close();&lt;br /&gt;      return true;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;     } catch (Exception e) {&lt;br /&gt;         e.printStackTrace();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt; return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static double calcScale(BufferedImage img, &lt;br /&gt;                                      int width, int height) {&lt;br /&gt;        double scale1 = (double) width / (double) img.getWidth();&lt;br /&gt;        double scale2 = (double) height / (double) img.getHeight();&lt;br /&gt;        double scale = scale1 &gt; scale2 ? scale2 : scale1;&lt;br /&gt; return scale;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static BufferedImage scale(BufferedImage img, &lt;br /&gt;                                               double scale) {&lt;br /&gt;        int w = img.getWidth();&lt;br /&gt;        int h = img.getHeight();&lt;br /&gt;        BufferedImage scaled = new BufferedImage((int) (w * scale), &lt;br /&gt;                (int) (h * scale), BufferedImage.TYPE_INT_RGB);&lt;br /&gt;        Graphics2D g2 = scaled.createGraphics();&lt;br /&gt;        g2.setComposite(AlphaComposite.Src);&lt;br /&gt;        g2.drawImage(img.getScaledInstance((int) (w * scale), &lt;br /&gt;                (int) (h * scale), Image.SCALE_SMOOTH),&lt;br /&gt;                0, 0, (int) (w * scale), (int) (h * scale), null);&lt;br /&gt;        g2.dispose();&lt;br /&gt;        return scaled;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Daí é só chamar:&lt;br /&gt;&lt;pre class="java" name="code"&gt;ThumbGenerator.generate(imgSource, output, 400, 400); &lt;br /&gt;// Ver resultado no arquivo output&lt;br /&gt;&lt;br /&gt;ThumbGenerator.generate(imgSource, output, 400, 600); &lt;br /&gt;ThumbGenerator.generate(imgSource, output, 600, 400); &lt;br /&gt;ThumbGenerator.generate(imgSource, output, 100, 100); &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-4838646761626199382?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/4838646761626199382/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=4838646761626199382' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4838646761626199382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4838646761626199382'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/04/gerador-de-thumbnails-em-java.html' title='Gerador de thumbnails em Java'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-145800882673879601</id><published>2011-04-04T15:07:00.000-03:00</published><updated>2011-04-04T15:07:15.650-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Parser HTML com Java</title><content type='html'>Fazer parser HTML é uma tarefa extramamente complicada, visto que HTML não é uma linguagem regular, e por isso o uso de expressões regulares em HTML é, na maioria das vezes, inconsistente.&lt;br /&gt;&lt;br /&gt;Para facilitar a manipulação de páginas HTML, o time do &lt;a href="http://maven.apache.org/"&gt;Apache Maven&lt;/a&gt; desenvolveu a biblioteca &lt;a href="http://htmlparser.sourceforge.net/"&gt;HTML Parser&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Esta biblioteca visa a simplicidade e performance em manipular HTML. Basicamente trabalha na extração de objetos DOM, que são armazenados em árvores, permitindo assim uma fácil manipulação.&lt;br /&gt;Encapsulei a tarefa de navegar entre todos os nós da árvore de forma recursiva, permitindo assim a manipulação de uma página HTML completa sem expressão regular:&lt;br /&gt;&lt;pre class="java" name="code"&gt;String marcaCarro = MyHtmlParser.getContent(resourceHtml, "div class\"carroStyle\"");&lt;br /&gt;&lt;/pre&gt;Se existir mais de um elemento com o mesmo atributo na página, basta informar qual a posição passando um terceiro argumento:&lt;br /&gt;&lt;pre class="java" name="code"&gt;String marcaCarro2 = MyHtmlParser.getContent(resourceHtml, "div class\"carroStyle\"", 2);&lt;br /&gt;&lt;/pre&gt;Subi este projeto no &lt;a href="https://github.com/leandronsp/my-html-parser"&gt;meu Github&lt;/a&gt;, livre a todos que quiserem ajudar a melhorá-lo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-145800882673879601?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/145800882673879601/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=145800882673879601' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/145800882673879601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/145800882673879601'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/04/parser-html-com-java.html' title='Parser HTML com Java'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-2628534705138417707</id><published>2011-04-04T14:42:00.002-03:00</published><updated>2011-04-04T15:14:20.725-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Ssh e Ftp com Java utilizando J2SSH</title><content type='html'>Para fazer comunicação Ssh e FTP com Java é um tanto sofrível, visto que uma das bibliotecas mais famosas, o JFTP, não superou as minhas expectativas. &lt;br /&gt;&lt;br /&gt;Uma alternativa é o J2SSH. Embora sua documentação seja péssima, encapsulei uma comunicação completa com SSH e FTP utilizando esta biblioteca e disponibilizei no &lt;a href="https://github.com/leandronsp/ftp-communication"&gt;Github&lt;/a&gt;. Seu uso final seria muito simples e da seguinte forma:&lt;br /&gt;&lt;pre class="java" name="code"&gt;SshConnectionHolder sshConnection = SshConnectionFactory.createSshConnection(server, user, password);&lt;br /&gt;String remoteDirectory = "/path-remote-dir";&lt;br /&gt;File localFile = new File("/path-local-dir", "fileName");&lt;br /&gt;&lt;br /&gt;// Enviando arquivo via SFTP&lt;br /&gt;sshConnection.sendFileViaSFTP(localFile, remoteDirectory);&lt;br /&gt;&lt;br /&gt;// Executando comando remoto via SSH        &lt;br /&gt;String cmd = "ls";&lt;br /&gt;String response = sshConnection.execCommandAndGetResponse(cmd);&lt;br /&gt;&lt;br /&gt;// Download via SFTP        &lt;br /&gt;sshConnection.getFileViaSFTP(remoteDirectory, localFile.getName(), localFile);&lt;br /&gt;&lt;br /&gt;// Removendo arquivo remoto via SFTP&lt;br /&gt;sshConnection.removeFileViaSFTP(localFile.getName(), remoteDirectory);&lt;br /&gt;&lt;br /&gt;sshConnection.disconnect();&lt;br /&gt;&lt;/pre&gt;Mais detalhes sobre o projeto, ele está completamente disponível no &lt;a href="https://github.com/leandronsp/ftp-communication"&gt;meu Github&lt;/a&gt;, para que possa ser constantemente melhorado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-2628534705138417707?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/2628534705138417707/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=2628534705138417707' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/2628534705138417707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/2628534705138417707'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/04/ssh-e-ftp-com-java-utilizando-j2ssh.html' title='Ssh e Ftp com Java utilizando J2SSH'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-3541852281620554681</id><published>2011-04-04T14:01:00.003-03:00</published><updated>2011-04-04T14:24:23.183-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Aplicação web com Ruby - Sinatra</title><content type='html'>Percebo que muitas pessoas começam a aprender Ruby por causa da fama que o Rails trouxe à comunidade de desenvolvimento. Comigo não foi diferente. Mas logo percebi que toda essa maestria com desenvolvimento web não era apenas um "Ruby on Rails". &lt;br /&gt;&lt;br /&gt;Muitos inclusive confundem o tal "Ruby on Rails" com uma linguagem, sendo que é um full- framework. Um poderoso framework para desenvolvimento web, que utiliza a linguagem Ruby como sua engine. Apesar de notar seu poder e simplicidade, fui atrás de focar mais no aprendizado da linguagem Ruby. &lt;br /&gt;&lt;br /&gt;Com Ruby me aventurei em desenvolver diversos aplicativos para facilitar algumas rotinas, automação, enfim. Lá estava eu com uma aplicação pronta mas queria colocá-la em um web server. Já tinha desenvolvido com Rails, mas minha aplicação era tão simples que encaixá-la ao Rails seria de fato "muito copo para pouca água". Foi aí que conheci o Sinatra...&lt;br /&gt;&lt;br /&gt;Sinatra é uma DSL que permite desenvolver aplicações web em Ruby com o mínimo de esforço. É flexível e permite ao desenvolvedor, de uma forma muito simples e rápida, aplicar os conceitos de REST e MVC na aplicação. O Sinatra utiliza diversas bibliotecas para renderizar as views/templates da aplicação. Neste artigo iremos utilizar o famoso "erb".&lt;br /&gt;&lt;br /&gt;Quem já tem familiaridade com frameworks MVC terá pouca ou nenhuma dificuldade em entender o Sinatra.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Instalando as gems:&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;gem install sinatra&lt;br /&gt;gem install erb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Vamos criar uma aplicação web que recebe uma palavra ou frase em letras minúsculas, e transforma em letras maiúsculas (as explicações estão em forma de comentário no código):&lt;br /&gt;&lt;br /&gt;upcase_web.rb&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;require 'sinatra'&lt;br /&gt;require 'erb'&lt;br /&gt;&lt;br /&gt;# Por padrão, o Sinatra assume que as views estão no diretório "/views" da aplicação.&lt;br /&gt;# Para mudar, utilize o comando "set" do Sinatra informando em qual diretório estarão as views&lt;br /&gt;set :views, File.dirname(__FILE__) + '/pages'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Aqui estou dizendo ao Sinatra: para uma requisição em "/", com método "get" (REST), você deve redirecionar para a página "index.erb"&lt;br /&gt;get '/' do&lt;br /&gt;  erb :index&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# O código por si só já diz tudo...&lt;br /&gt;get '/transforma' do&lt;br /&gt;  erb :form_transforma&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Toda requisição a "/transforma" com método "post" deve redirecionar o resultado para a página "result_transforma.erb"&lt;br /&gt;post '/transforma' do&lt;br /&gt;  # Em params[:simbolo] o Sinatra guarda todos os parâmetros passados na requisição&lt;br /&gt;  result = params[:letras_minusculas] &lt;br /&gt;&lt;br /&gt;  # O Sinatra utiliza variáveis de instância que serão mostradas no resultado a ser redirecionado&lt;br /&gt;  @letras_maiusculas = result.upcase&lt;br /&gt;&lt;br /&gt;  # Redireciona para a página "result_transforma.erb", que terá a variável de instância de retorno&lt;br /&gt;  erb :result_transforma&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;index.erb:&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;html...&lt;br /&gt;&lt;a href="/transforma"&gt;Transformar palavra&lt;/a&gt;&lt;br /&gt;html...&lt;br /&gt;&lt;/pre&gt;form_transforma.erb (o paramêtro a ser enviado no form chegará para o Sinatra dentro do hash "params[ ]" supracitado):&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;html...&lt;br /&gt;&lt;form action="/transforma" method="post"&gt;Insira uma palavra: &lt;br /&gt;  &lt;input type="text" value="" name="letras_minusculas"/&gt;&lt;br /&gt;&lt;input type="submit" value="Enviar" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/form&gt;html...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;result_transforma.erb (para quem ainda não conhece o erb do Ruby, isto é similiar ao "scriptlet" do JSP no Java, e a variável mostrada é a mesma que foi redirecionada pela action no controller):&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;html...&lt;br /&gt;Palavra transformada: &lt;%= @letras_maiusculas %&gt;&lt;br /&gt;html...&lt;br /&gt;&lt;/pre&gt;Rodando (o Ruby vai olhar para o "require 'sinatra' " no arquivo, onde o Sinatra irá iniciar o WebServer, que por padrão é o WEBrick na porta 4567):&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;ruby upcase_web.rb&lt;br /&gt;&lt;/pre&gt;Simples, não?&lt;br /&gt;O objetivo deste artigo foi mostrar uma introdução ao Sinatra e uma alternativa ao Rails para desenvolver aplicações web. Com Sinatra é permitido ainda fazer coisas muito mais avançadas. &lt;br /&gt;Para quem quiser se aprofundar mais no uso desta poderosa DSL, acesse o site do &lt;a href="http://www.sinatrarb.com/intro"&gt;SinatraRB&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-3541852281620554681?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/3541852281620554681/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=3541852281620554681' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/3541852281620554681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/3541852281620554681'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/04/aplicacao-web-com-ruby-sinatra.html' title='Aplicação web com Ruby - Sinatra'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-8430409951003621455</id><published>2011-01-20T19:03:00.002-02:00</published><updated>2011-03-13T14:58:20.840-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hora do lanche'/><title type='text'>Off-Topic: Educação Financeira</title><content type='html'>Sei que neste blog não é lugar de falar disso, mas quero compartilhar convosco meu novo trabalho em blogs.&lt;br /&gt;&lt;br /&gt;Estou contribuindo para o &lt;a href="http://gerecaixa.com.br" target="_blank"&gt;Gere Caixa&lt;/a&gt;, que é um site voltado à educação financeira. A ideia do site é muito boa, onde estamos promovendo uma nova forma de pensar sobre o dinheiro, fato que muitas pessoas ainda não conhecem.&lt;br /&gt;&lt;br /&gt;Minhas primeiras contribuições foram até o momento:&lt;br /&gt;&lt;a href="http://gerecaixa.com.br/artigos/o-dinheiro-parte-i/" target="_blank"&gt;O dinheiro - Parte I&lt;/a&gt;&lt;br /&gt;e &lt;a href="http://gerecaixa.com.br/artigos/o-dinheiro-parte-ii/" target="_blank"&gt;O dinheiro - Parte II&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Recomendadíssimo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-8430409951003621455?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/8430409951003621455/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=8430409951003621455' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8430409951003621455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8430409951003621455'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/01/off-topic-educacao-financeira.html' title='Off-Topic: Educação Financeira'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-8134204201982152877</id><published>2011-01-20T18:52:00.002-02:00</published><updated>2011-01-20T19:04:58.837-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hora do lanche'/><title type='text'>Reduzir tamanho do post no Blogger</title><content type='html'>Esses dias eu ensinei minha mãe (que agora também está ficando "blogueira") a reduzir o tamanho do post no Blogger, colocando o link "ver mais", ou "continue vendo", ou como preferir.&lt;br /&gt;&lt;br /&gt;Não vou repetir tudo o que ela escreveu, então vou linkar o post dela &lt;a href="http://humanidadeereciclagem.blogspot.com/2010/09/reduzir-tamanho-do-post-no-blogger.html"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Nesse post acima mencionado ela linka a &lt;a href="http://www.bloggersphera.com.br/2009/09/leia-mais-como-recurso-do-blogger.html"&gt;Bloggersphera&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Eu linko ela. Ela linka ele. E assim vamos linkando.&lt;br /&gt;Feliz 2011 a todos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-8134204201982152877?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/8134204201982152877/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=8134204201982152877' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8134204201982152877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8134204201982152877'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2011/01/reduzir-tamanho-do-post-no-blogger.html' title='Reduzir tamanho do post no Blogger'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-5583893524466915764</id><published>2010-04-25T20:37:00.009-03:00</published><updated>2011-08-29T14:07:52.266-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hora do lanche'/><title type='text'>Syntax Highlighting no Blogger</title><content type='html'>Para adicionar o recurso de Syntax Highlighting no Blogger é muito fácil. &lt;br /&gt;&lt;br /&gt;1) Faça o download do &lt;a href="http://code.google.com/p/syntaxhighlighter/downloads/list" target="blank_"&gt;SyntaxHighlighter.rar&lt;/a&gt; &lt;br /&gt;2) Hospede as pastas do projeto em algum lugar de sua preferência &lt;br /&gt;3) No código HTML do seu blog, adicione o seguinte trecho antes do fechamento da tag "head": &lt;br /&gt;&lt;pre class="css" name="code"&gt;&lt;link href="http://[CAMINHO_DAS_PASTAS_NO_SEU_SERVIDOR]/SyntaxHighlighter.css" rel="stylesheet" type="text/css"&gt;&lt;/link&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4) Ainda no código HTMl do seu blog, adicione o seguinte trecho logo antes do fechamento da tag  "body": &lt;br /&gt;&lt;pre class="css" name="code"&gt;&lt;script src="http://[CAMINHO_DAS_PASTAS_NO_SEU_SERVIDOR]/shCore.js" type="text/javascript"&gt;&lt;br /&gt;&lt;script src='http://[CAMINHO_DAS_PASTAS_NO_SEU_SERVIDOR]/shBrushJava.js' type='text/javascript'/&gt;&lt;br /&gt;&lt;script src='http://[CAMINHO_DAS_PASTAS_NO_SEU_SERVIDOR]/shBrushCpp.js' type='text/javascript'/&gt;&lt;br /&gt;// Voce pode adicionar os outros scripts, se quiser. Por enquanto só adicionei esses.&lt;br /&gt;&lt;script language='javascript'&gt;  &lt;br /&gt;dp.SyntaxHighlighter.BloggerMode();  &lt;br /&gt;dp.SyntaxHighlighter.HighlightAll(&amp;#39;code&amp;#39;);  &lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;5) No seu post, para formatar o código desejado, basta colocar o conteúdo entre as tags: &lt;br /&gt;&lt;pre class="cpp" name="code"&gt;&lt;pre class="java" name="code"&gt;[CONTEUDO JAVA]&lt;/pre&gt;// Se estiver usando outra linguagem, Ruby, por exemplo, basta colocar o caminhodo script "shBrushRuby.js" no código HTML do seu blog e, no post, em vez de usar class="java", usar class="ruby"&lt;pre class="ruby" name="code"&gt;[CONTEUDO RUBY]&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-5583893524466915764?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/5583893524466915764/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=5583893524466915764' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/5583893524466915764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/5583893524466915764'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2010/04/syntax-highlighting-no-blogger_25.html' title='Syntax Highlighting no Blogger'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-8183305257206334247</id><published>2010-04-17T21:44:00.005-03:00</published><updated>2010-04-17T22:30:36.278-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Problema Logon Windows (Resolvido)</title><content type='html'>Esses dias no computadaor da minha mãe foi apresentado um problema que eu nunca tinha me deparado: nenhum usuário conseguia logar no Windows (XP SP2). Nem o Administrador. Era uma espécie de "loop", logava e deslogava em seguida, voltando para a tela de login. Isso foi causado logo após minha mãe instalar as atualizações do sistema :P&lt;br /&gt;&lt;br /&gt;Após alguns minutos de pesquisa no Google, consegui achar a solução para este problema. (Os créditos à fonte serão informados no final deste post).&lt;br /&gt;&lt;br /&gt;1) Boot com o CD de instalação do Windows XP&lt;br /&gt;2) Pressione R para entrar no console de recuperação&lt;br /&gt;3) Escolha o diretório "C:" (no meu caso tive que digitar 1)&lt;br /&gt;4) Navegue até &lt;span style="font-weight:bold;"&gt;C:\WINDOWS\SYSTEM32&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Quero deixar claro que, na maioria dos lugares onde pesquisei, o problema final era o mesmo, porém causado de formas diferentes. A maioria era causado por algum malware. A solução para estes casos era copiar o conteúdo do arquivo "userinit.exe" para "wsaupdater.exe". Contudo este não era meu problema em si...&lt;br /&gt;&lt;br /&gt;Tente digitar o seguinte:&lt;br /&gt;5) copy userinit.exe wsaupdater.exe&lt;br /&gt;&lt;br /&gt;Se conseguiu encontrar o arquivo e copiar, reinicie o computador e seja feliz, e não precisa continuar os próximos passos!&lt;br /&gt;&lt;br /&gt;Se informar que não conseguiu encontrar o arquivo, então seu caso é igual ao meu, pois algum vírus deve ter excluído o arquivo. Continue os próximos passos.  &lt;br /&gt;&lt;br /&gt;6) Digite =&gt; copy C:\Windows\ServicePackFiles\i386\userinit.exe C:\Windows\System32\userinit.exe&lt;br /&gt;7) Reinicie o computador e não se esqueça de escanear com o anti-vírus.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.techarena.in/windows-xp-support/1029483.htm"&gt;Créditos&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-8183305257206334247?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/8183305257206334247/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=8183305257206334247' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8183305257206334247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8183305257206334247'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2010/04/problema-logon-windows-resolvido.html' title='Problema Logon Windows (Resolvido)'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-1069921355684545270</id><published>2010-04-07T10:34:00.002-03:00</published><updated>2010-04-07T10:38:26.720-03:00</updated><title type='text'>Morte ao IE!</title><content type='html'>Ainda usando IE? (não interesa qual versão) Entre neste &lt;a href="http://codeshow.visie.com.br/"&gt;site&lt;/a&gt; e veja mais um motivo pra mudar de browser. Com certeza a página vai ficar muito estranha. Isto significa que o IE não carregou o CSS3 e o HTML5, duas novas tecnologias de desenvolvimento web. Instale outro browser que não seja o IE e veja este &lt;a href="http://codeshow.visie.com.br/"&gt;site&lt;/a&gt; na íntegra. &lt;br /&gt;&lt;br /&gt;Não adianta ficar esperando sair o IE9...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-1069921355684545270?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/1069921355684545270/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=1069921355684545270' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/1069921355684545270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/1069921355684545270'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2010/04/morte-ao-ie.html' title='Morte ao IE!'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-1408623066451459882</id><published>2010-04-04T14:10:00.004-03:00</published><updated>2010-04-04T14:31:22.690-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geral'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Resolvendo problema do Windows Installer no XP com SP3</title><content type='html'>--------------------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ambiente:&lt;/span&gt; Windows XP - Service Pack 3&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ação:&lt;/span&gt; Instalar qualquer tipo de programa&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Mensagem:&lt;/span&gt; "O serviço Windows installer não pode ser acessado. isso pode ocorrer se você estiver executando o windows em modo de segurança, ou se o serviço windows installer não tiver sido devidamente instalado. Entre em contato com a equipe de suporte para obter ajuda."&lt;br /&gt;--------------------------------------------&lt;br /&gt;&lt;br /&gt;Isso ocorreu depois que atualizei meu SP2 para SP3. Deve ser algum bug, eu acho.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Como resolvi o problema:&lt;/span&gt; Google, claro, pois não sou expert em Windows. No final deste post segue a fonte.&lt;br /&gt;&lt;br /&gt;1) Clique em Iniciar &gt; Executar&lt;br /&gt;2) Digite "services.msc"&lt;br /&gt;3) Procure no lado direito o serviço Windows Installer &gt; Botão direito nele &gt; Propriedades&lt;br /&gt;4) Deixe o tipo de inicialização Automático e Inicie o serviço. &lt;span style="font-weight:bold;"&gt;Caso dê alguma mensagem de erro, faça os próximos passos, senão, pode começar a instalar seus programas normalmente.&lt;/span&gt;&lt;br /&gt;5) Iniciar &gt; Executar&lt;br /&gt;6) Digite &lt;span style="font-weight:bold;"&gt;msiexec /unregister&lt;/span&gt; e clique em OK. Se não retornar qualquer mensagem de erro esta tudo normal e a mensagem foi escrita corretamente. Se retornar uma mensagem ou um erro de qualquer tipo, verifique se a mensagem foi digitada corretamente e repita esta etapa.&lt;br /&gt;7) Iniciar &gt; Executar&lt;br /&gt;8) Digite &lt;span style="font-weight:bold;"&gt;msiexec /regserver&lt;/span&gt; e clique em OK. Se não retornar qualquer mensagem de erro esta tudo normal e a mensagem foi escrita corretamente. Se retornar uma mensagem ou um erro de qualquer tipo, verifique se a mensagem foi digitada corretamente e repita esta etapa.&lt;br /&gt;9) Repita os passos 1, 2, 3 e 4.&lt;br /&gt;&lt;br /&gt;Pronto, já pode instalar o que você quiser na sua máquina!&lt;br /&gt;Como todo bom blogueiro, e como pesquisei no &lt;a href="http://www.google.com.br"&gt;Google&lt;/a&gt; para resolver este erro, segue a &lt;a href="http://www.babooforum.com.br/forum/index.php?showtopic=638260"&gt;fonte&lt;/a&gt; que salvou minha vida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-1408623066451459882?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/1408623066451459882/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=1408623066451459882' title='12 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/1408623066451459882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/1408623066451459882'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2010/04/resolvendo-problema-do-windows.html' title='Resolvendo problema do Windows Installer no XP com SP3'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-8900675467287630604</id><published>2010-04-02T15:26:00.018-03:00</published><updated>2010-09-29T10:30:56.274-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Templates no Eclipse</title><content type='html'>No Eclipse existe uma ferramenta muito legal que é de criar Java Templates.&lt;br /&gt;Um template é um pedaço de código que pode ser colocado através do CTRL + (espaço). Por padrão o Eclipse já vem com alguns templates pré-definidos, onde você pode alterar ou criar novos templates de acordo com sua necessidade.&lt;br /&gt;&lt;br /&gt;Como exemplo, você digita "main", aperta CTRL + (espaço) e o Eclipse te traz o template (estrutura) de um método main. Eu acho isso muito produtivo e facilita o trabalho do programador.&lt;br /&gt;&lt;br /&gt;Esta ferramenta fica em Window =&gt; Preferences. Depois escolher os sub-menus Java =&gt; Editor =&gt; Templates.&lt;br /&gt;&lt;br /&gt;Pronto, você pode alterar ou criar seus próprios templates!&lt;br /&gt;Vou criar aqui um template Singleton, para mostrar como é fácil:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Singleton&lt;/span&gt;&lt;br /&gt;Toda vez que formos criar um Java Singleton, sabemos que a estrutura dele é uma variável estática com o tipo da classe, um construtor privado e um método que devolve a única instância.&lt;br /&gt;&lt;br /&gt;1) Window =&gt; Preferences =&gt; Java =&gt; Editor =&gt; Templates&lt;br /&gt;2) Escolher um novo&lt;br /&gt;3) Definir um nome para o template. Vamos usar "singleton"&lt;br /&gt;4) Definir o contexto. Neste caso, é Java.&lt;br /&gt;5) Colar o seguinte código no campo Pattern:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;private static ${enclosing_type} instance;&lt;br /&gt;&lt;br /&gt;private ${enclosing_type}(){}&lt;br /&gt;&lt;br /&gt;public static ${enclosing_type} getInstance(){&lt;br /&gt;if(null == instance){&lt;br /&gt;instance = new ${enclosing_type}();&lt;br /&gt;}&lt;br /&gt;return instance;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Onde:&lt;br /&gt;- "${enclosing_type}" é o tipo da Classe onde se está usando o template.&lt;br /&gt;&lt;br /&gt;Não se deve alterar o nome da variável que está entre ${}, pois é o nome usado pelo Eclipse. Já os nomes de campos (variáveis do template) e nomes de métodos, você pode alterar livremente, de acordo com seu gosto.&lt;br /&gt;&lt;br /&gt;Agora, com seu template singleton criado, crie uma classe chamada MeuSingleton. Digite o nome do seu template (singleton, lembra?), aperte CTRL + (espaço) e pronto, a estrutura criada deve ser essa:&lt;br /&gt;&lt;pre name="code" class="java"&gt;public class MeuSingleton {&lt;br /&gt;&lt;br /&gt;private static MeuSingleton instance;&lt;br /&gt;&lt;br /&gt;private MeuSingleton() {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static MeuSingleton getInstance() {&lt;br /&gt;if (null == instance) {&lt;br /&gt;instance = new MeuSingleton();&lt;br /&gt;}&lt;br /&gt;return instance;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-8900675467287630604?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/8900675467287630604/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=8900675467287630604' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8900675467287630604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8900675467287630604'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2010/04/java-templates-no-eclipse_02.html' title='Java Templates no Eclipse'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-4426442510495646093</id><published>2010-02-13T23:46:00.012-02:00</published><updated>2010-04-02T15:29:58.663-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Server Pages (JSP) e JSTL</title><content type='html'>Tentando usar a taglib "foreach" do JSTL, o seguinte erro ocorria:&lt;br /&gt;"According to TLD or attribute directive in tag file, attribute items does not accept any expressions"&lt;br /&gt;&lt;br /&gt;Um post &lt;a href="http://72.5.124.102/thread.jspa?messageID=9423383"&gt;neste&lt;/a&gt; fórum me salvou.&lt;br /&gt;&lt;br /&gt;Minha declaração no JSP estava assim:&lt;br /&gt;&lt;span class="Apple-style-span" style=""&gt;%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E por estar usando uma versão do Tomcat acima da 5 (Versão 6), a solução foi trocar a declaração por:&lt;br /&gt;&lt;span class="Apple-style-span" style=""&gt;%@ taglib prefix="c" uri="http://java.sun.com/&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;jsp&lt;/span&gt;/jstl/core"%&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"It Works!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-4426442510495646093?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/4426442510495646093/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=4426442510495646093' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4426442510495646093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4426442510495646093'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2010/02/java-server-pages-jsp-e-jstl.html' title='Java Server Pages (JSP) e JSTL'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-2106274862775692423</id><published>2010-02-13T23:28:00.006-02:00</published><updated>2010-04-02T15:30:13.007-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Problema com JSTL+Eclipse+Tomcat (Resolvido)</title><content type='html'>Estava eu fazendo um 'Hello World' com o &lt;a href="http://vraptor.caelum.com.br/"&gt;VRaptor &lt;/a&gt;3, e ao fazer a página de que lista os produtos, com a taglib do JSTL, me apareceu o seguinte erro ao acessar a página:&lt;br /&gt;&lt;br /&gt;"SEVERE: Servlet.service() for servlet jsp threw exception&lt;br /&gt;org.apache.jasper.JasperException: &lt;span style="font-weight:bold;"&gt;Unable to read TLD "META-INF/c-1_0.tld"&lt;/span&gt; from JAR file "file:/WEB-INF/lib/standard-1.1.2.jar": org.apache.jasper.JasperException: &lt;span style="font-weight:bold;"&gt;Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Segundo &lt;a href="http://ryandaigle.com/articles/2005/1/27/frustrating-tomcat-5-5-x-issue-solved-conflicting-jars"&gt;este&lt;/a&gt; artigo, se trata de um possível conflito no jar "jsp-api.jar" do CLASSPATH do meu projeto com o CLASSPATH da instalação do Tomcat. Apenas retirei este jar da lib do meu projeto (não sei porque raios coloquei ele lá mas...) e tudo correu bem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-2106274862775692423?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/2106274862775692423/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=2106274862775692423' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/2106274862775692423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/2106274862775692423'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2010/02/estava-eu-fazendo-um-hello-world-com-o.html' title='Problema com JSTL+Eclipse+Tomcat (Resolvido)'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-5022035580145348150</id><published>2009-12-12T12:32:00.014-02:00</published><updated>2010-03-23T17:38:50.810-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Apostila Ruby on Rails da Caelum</title><content type='html'>A &lt;a href="http://www.caelum.com.br/"&gt;Caelum&lt;/a&gt; disponibilizou em novembro a apostila de seu curso RR-71 (Ruby on Rails). Achei muito boa a ideia, de propagar o conhecimento com a comunidade.&lt;br /&gt;&lt;br /&gt;Como sempre gostei do material deles (fiz também o curso Formação Consultor Java lá) e gosto de compartilhar meus arquivos e conhecimentos com os colegas, compartlhei a apostila no ebaH!, de modo a disseminar mais o desenvolvimento ágil na comunidade.&lt;br /&gt;&lt;br /&gt;Para ficar melhor ainda, agora  o ebaH! conta com um sistema de incorporação (embedded) de arquivos na páginas e blogs.&lt;br /&gt;&lt;br /&gt;Segue a apostila incorporada no ebaH!. Espero que gostem. Recomendo o curso!&lt;br /&gt;&lt;br /&gt;&lt;object width="435" height="470"&gt;&lt;param name="movie" value="http://ebah.info/flash/player.swf?arquivoId=28959"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://ebah.info/flash/player.swf?arquivoId=28959" type="application/x-shockwave-flash" allowscriptaccess="always" name="player" allowfullscreen="true" width="435" height="470"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-5022035580145348150?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/5022035580145348150/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=5022035580145348150' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/5022035580145348150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/5022035580145348150'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2009/12/apostila-ruby-on-rails-da-caelum.html' title='Apostila Ruby on Rails da Caelum'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-4969128857555169188</id><published>2009-12-01T09:44:00.006-02:00</published><updated>2010-02-13T23:43:11.446-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Estudo Rails - Instalação do Sqlite3 (Parte III)</title><content type='html'>Dando continuidade ao estudo, antes de criar a aplicação, precisamos determinar qual será o banco de dados utilizado. Neste estudo será utilizado o Sqlite3, que é o padrão do Rails desde a versão 2.0.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;É necessário acrescentar  dois arquivos do sqlite3 no bin da instalação do Ruby. Eles podem ser baixados no site oficial do &lt;a href="http://www.sqlite.org/download.html"&gt;Sqlite&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Baixar o zip que contém o sqlite3.dll, descompactar e copiar o dll para a pasta "C:\Ruby\bin".&lt;/div&gt;&lt;div&gt;- Baixar o zip que contém o sqlite3.exe, descompactar e copiar o exe para a pasta "C:\Ruby\bin".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Estes passos são realmente necessários, pois na hora da instalação, o Ruby tentará encontrar estes arquivos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Agora abra o console (cmd) e digite: &lt;i&gt;gem install sqlite3-ruby&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Pronto, o Sqlite3 está instalado! &lt;/b&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/52367605280780120-4969128857555169188?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/4969128857555169188/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=4969128857555169188' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4969128857555169188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/4969128857555169188'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2009/12/instalacao-do-sqlite3-parte-iii.html' title='Estudo Rails - Instalação do Sqlite3 (Parte III)'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-3317130691470731718</id><published>2009-12-01T09:15:00.016-02:00</published><updated>2009-12-19T21:57:48.042-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Estudo Rails - Instalando o Ruby/Rails (Parte II)</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Bom, seguindo a ideia de montar um estudo sobre o Rails, neste post vamos ver o passo-a-passo da instalação, que é muito simples.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lembrando que estou utilizando como guia de aprendizado, o&lt;a href="http://guias.rubyonrails.pro.br/"&gt; site oficial do Rails &lt;/a&gt; e o livro do &lt;a href="http://www.urubatan.com.br/"&gt;Urubatan&lt;/a&gt; (recomendo!).&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_CelkGtVWwBs/SxT7rWLwq1I/AAAAAAAAAEY/hTsu19IO7k0/s320/capalivroruby.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 222px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5410225774486661970" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;É necessário primeiramente ter o ruby instalado na máquina. Vou detalhar em passos desde a instalação do ruby.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Download do ruby no &lt;a href="http://rubyforge.org/frs/?group_id=167"&gt;RubyForge&lt;/a&gt; (estou usando a versão 1.8.6 exe - Windows). No Linux , neste exemplo com o Ubuntu, para instalar, basta executar o comando :&lt;/div&gt;&lt;div&gt;&lt;i&gt;sudo apt-get install ruby irb&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;- A instalação é recomendada a ser feita no diretório "C:\" do Windows. É bem simples.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Em seguida adicione o diretorio "C:\Ruby\bin" da instalação do Ruby no Path do seu S.O (sistema operacional). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pronto, o Ruby está instalado! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Precisamos baixar o pacote do RubyGems, que será o "motor" para instalação das dependências do Ruby (similar ao 'sudo apt-get' do Ubuntu...). Baixe o pacote do site &lt;a href="http://docs.rubygems.org/"&gt;oficial&lt;/a&gt;, descompacte o arquivo e em seguida, pelo console, navegue até a pasta onde se encontra o pacote RubyGems descompactado e digite: &lt;span class="Apple-style-span" style="font-style: italic;"&gt;ruby setup.rb&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Isto irá instalar o RubyGems :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Agora, podemos então começar a instalação do Rails. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Abra o console e digite: &lt;i&gt;gem install rails -include-dependencies&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;O Rails já está instalado na sua máquina!&lt;/div&gt;&lt;div&gt;Nos próximos posts, daremos continuidade com o estudo montando uma aplicação web simples e mostrando as principais funcionalidades deste poderoso framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lembrando que este estudo é destino ao público que já conhece Ruby, com o intuito de mostrar com objetividade a agilidade no desenvolvimento de aplicações web com Ruby on Rails.&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-3317130691470731718?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/3317130691470731718/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=3317130691470731718' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/3317130691470731718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/3317130691470731718'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2009/12/instalando-o-rubyrails-parte-ii.html' title='Estudo Rails - Instalando o Ruby/Rails (Parte II)'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CelkGtVWwBs/SxT7rWLwq1I/AAAAAAAAAEY/hTsu19IO7k0/s72-c/capalivroruby.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-52367605280780120.post-8807543045250915992</id><published>2009-11-29T15:41:00.005-02:00</published><updated>2009-12-01T09:59:27.838-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Estudo Rails - Iniciando com Rails (Parte I)</title><content type='html'>Ultimamente tenho percebido a fama de Rails quanto à sua agilidade em desenvolver aplicações Web. Me interessei pelo assunto e comecei a me aprofundar...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fiz uma maratona de estudos em Ruby, para entender melhor a linguagem, uma vez que Rails é feito em Ruby. &lt;a href="http://eustaquiorangel.com/downloads/tutorialruby.pdf"&gt;Esta&lt;/a&gt; apostila me ajudou muito.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como ainda sou novo nesta área, posso dizer algo que não seja coerente e, acontecendo isso, peço ajuda aos demais colegas que me corrijam.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vou, na medida do possível, tentar passar através de alguns posts meu aprendizado inicial com Rails, desde sua instalação até o desenvolvimento de uma aplicação web básica. Este estudo espera que o leitor já tenha alguma familiaridade com a linguagem Ruby. Para iniciar com Ruby, recomendo fortemente estudar a apostila que indiquei &lt;a href="http://eustaquiorangel.com/downloads/tutorialruby.pdf"&gt;acima&lt;/a&gt;. Existem ainda na internet muitos tutoriais e materiais sobre a linguagem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nos próximos posts vou apresentar o estudo com o framework Rails. Não vou entrar em detalhes teóricos. O objetivo aqui é demonstrar de forma prática o desenvolvimento de uma aplicação web básica utilizando Ruby on Rails.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/52367605280780120-8807543045250915992?l=leandromaringolo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leandromaringolo.blogspot.com/feeds/8807543045250915992/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=52367605280780120&amp;postID=8807543045250915992' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8807543045250915992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/52367605280780120/posts/default/8807543045250915992'/><link rel='alternate' type='text/html' href='http://leandromaringolo.blogspot.com/2009/11/iniciando-com-rails.html' title='Estudo Rails - Iniciando com Rails (Parte I)'/><author><name>Leandro Maríngolo</name><uri>http://www.blogger.com/profile/15981941407170706568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_CelkGtVWwBs/So19OlZSrsI/AAAAAAAAAD4/eTnLr0zzz5Y/S220/lua_de_mel_tres_+041.jpg'/></author><thr:total>0</thr:total></entry></feed>
