<?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-5334099545270650864</id><updated>2011-11-27T21:31:56.544-03:00</updated><category term='Git'/><category term='criptografia'/><category term='gitbook português'/><category term='Ruby'/><category term='Gerenciador de Versão'/><category term='Controle de versão'/><category term='Linguagem de programação'/><category term='Linux'/><category term='matemática'/><category term='gitbook pt_BR'/><title type='text'>DjalmaFilho</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-193368134186349898</id><published>2009-02-21T16:54:00.004-03:00</published><updated>2010-03-25T20:32:52.944-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Git'/><category scheme='http://www.blogger.com/atom/ns#' term='Gerenciador de Versão'/><category scheme='http://www.blogger.com/atom/ns#' term='gitbook português'/><category scheme='http://www.blogger.com/atom/ns#' term='gitbook pt_BR'/><title type='text'>Gitbook em português brasil em formato PDF</title><content type='html'>Olá,&lt;br /&gt;&lt;br /&gt;Estou aqui mais uma vez trazendo o resultado de um trabalho que viemos realizando desde o final de 2008, a versão PDF em português do livro &lt;b&gt;The Git Community Book&lt;/b&gt; criado por &lt;b&gt;Schacon&lt;/b&gt; (&lt;i&gt;schacon@gmail.com&lt;/i&gt;), hospedado no Github em &lt;a href="http://github.com/schacon/gitbook"&gt;http://github.com/schacon/gitbook&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finalmente consegui instalar os gems que os scripts precisavam para gerar o PDF.&lt;br /&gt;&lt;br /&gt;Aviso desde já, que este livro encontra-se em constante mudança, através de correções, atualizações e adição de novos conteúdos, então, você ainda pode encontrar trechos ou capítulos inteiros em inglês.&lt;br /&gt;&lt;br /&gt;Por fim confira a versão traduzida fazendo o &lt;a href="http://djalma.blog.br/gitbook/book.pdf"&gt;download aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Quem quiser contribuir pode juntar-se a comunidade começando pelo &lt;a href="http://github.com/schacon/gitbook/tree/pt_BR"&gt;projeto original&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=1a1e03d2-898a-43ca-b418-2669416c7be2" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5334099545270650864-193368134186349898?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/193368134186349898/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=193368134186349898' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/193368134186349898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/193368134186349898'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2009/02/ola-estou-aqui-mais-uma-vez-trazendo-o.html' title='Gitbook em português brasil em formato PDF'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-2666409707636552063</id><published>2008-12-09T20:17:00.000-03:00</published><updated>2008-12-09T23:18:42.486-03:00</updated><title type='text'>Livro git-scm em português</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Para quem tem interesse em aprender mais sobre Git , existe um projeto de tradução do livro git-scm para o português, baseado no site &lt;a href='www.git-scm.com'&gt;www.git-scm.com&lt;/a&gt; mantido por Scott Chacon.&lt;br/&gt;O livro ainda precisa de revisão (voluntários para revisão não deixem de acessar), mas o seu conteúdo já permite o aprendizado sobre as funcionalidades do Git.&lt;br/&gt;Ele ainda encontra-se incompleto em alguns capítulos, definição de termos, exemplos entre outros.&lt;br/&gt;Se você tem interesse em aprender ou contribuir com o projeto de tradução acesse &lt;a href='http://github.com/schacon/gitbook/tree/pt_BR'&gt;http://github.com/schacon/gitbook/tree/pt_BR&lt;/a&gt;.&lt;br/&gt;O meu fork do projeto está em&lt;a href='http://github.com/djalmaoliveira/gitbook/tree/pt_BR'&gt; http://github.com/djalmaoliveira/gitbook/tree/pt_BR&lt;/a&gt; e já está com um tradução completa do livro, mas lembrando novamente, de que precisamos de revisores.&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/5334099545270650864-2666409707636552063?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/2666409707636552063/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=2666409707636552063' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/2666409707636552063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/2666409707636552063'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2008/12/livro-git-scm-em-portugus.html' title='Livro git-scm em português'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-7693367679215950569</id><published>2008-09-11T05:55:00.002-03:00</published><updated>2011-09-19T09:30:30.911-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><category scheme='http://www.blogger.com/atom/ns#' term='criptografia'/><title type='text'>Criptografia é Matemática (uma inocente visão)</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Continuando a leitura(3º capítulo) do livro  "O último teorema de Fermat", pude conhecer além das trágicas hitórias da vida de alguns matemáticos além de mulheres que ofereceram uma grande contribuição para a matemática mas não foram reconhecidas, o princípio de funcionamento da criptografia de chave pública e privada a partir dos estudos de Euler.&lt;br /&gt;&lt;br /&gt;Imagine a chave como se fosse uma senha, senha essa usada para codificar e decodificar algum texto usando um determinado algoritmo(não importa qual algoritmo é usado nesta explicação).&lt;br /&gt;&lt;br /&gt;Segundo o livro conta, os matemáticos procuravam uma forma de criar 2 chaves, a primeira que fosse fácil de criar e a segunda, baseada na primeira,  que fosse quase impossível de ser recriada / deduzida.&lt;br /&gt;&lt;br /&gt;A segunda chave, a  pública(onde todos podem saber), seria usada para gerar um texto codificado(ainda não importa o algoritmo usado) no qual somente quem detem a primeira chave poderia decodificá-la.&lt;br /&gt;&lt;br /&gt;Como gerar essas chaves? &lt;br /&gt;Vejamos um exemplo:&lt;br /&gt;Escolhemos 2 números: 5 e 17&lt;br /&gt;Multiplicamos eles entre si : 5 x 17 = 85&lt;br /&gt;&lt;br /&gt;O número 85 seria a chave pública divulgada e o 5 e 17 (que juntas geram o 85) seria a chave privada (somente o dono a possui).&lt;br /&gt;&lt;br /&gt;Então neste momento podemos deduzir a partir do número 85 qual seria os 2 números que multiplicados entre si se igualasse a 85 (é claro que você deve considerar que não conhece a chave privada que foi citada acima)?&lt;br /&gt;&lt;br /&gt;Existem algumas possibilidades além da chave original 5 e 17.&lt;br /&gt;&lt;br /&gt;A quantidade de possibilidades de combinações mostra o quanto uma chave(privada) pode ser forte (capacidade de deduzí-la através de tentativa e erro), quanto maior o número maior a possibilidade.&lt;br /&gt;&lt;br /&gt;É claro que não utilizariamos números pequenos numa aplicação real, mas números muito grandes com 80 a 100 digitos(por exemplo, é claro que pode ser maior) cada um dos 2 termos da multiplicação(chave privada).&lt;br /&gt;&lt;br /&gt;E para dificultar mais ainda usaríamos números primos, ou seja, teríamos que computar primeiros os 2 números primos grandes antes de efetuar a multiplicação e gerar a chave pública.&lt;br /&gt;&lt;br /&gt;Números primos tão grandes assim poderiam fazer com que sistemas computacionais levasse anos para descobrir qual combinação de 2 primos muito grandes multiplicados dão como resultado a chave pública por tentativa e erro.&lt;br /&gt;&lt;br /&gt;E ainda segundo o texto, essa chave poderia ser alterada frequentemente(a cada ano por exemplo), para que desmotive quem esteja tentando calcular, via tentativa e erro, a chave privada a partir da pública, forçando-o a iniciar novamente todo o processo.&lt;br /&gt;&lt;br /&gt;Essa dificuldade se dá pelo fato das características dos números primos, que são números divisíveis por 1 e por ele mesmo apenas.&lt;br /&gt;&lt;br /&gt;Provavelmente devem existir algumas formas de acelerar estas buscas, como por exemplo, uma catalogação dos números primos, ou algum outro método que desconheço.&lt;br /&gt;&lt;br /&gt;Bom, dadas a minhas humildes experiências com criptografia e seus métodos atuais de funcionamento e matemáticos, esse é minha pequena contribuição para os interessados nesse assunto.&lt;br /&gt;&lt;br /&gt;Até a próxima !&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/5334099545270650864-7693367679215950569?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/7693367679215950569/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=7693367679215950569' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/7693367679215950569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/7693367679215950569'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2008/09/criptografia-na-matemtica.html' title='Criptografia é Matemática (uma inocente visão)'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-654721819499625744</id><published>2008-08-26T23:40:00.000-03:00</published><updated>2008-08-26T23:41:42.996-03:00</updated><title type='text'>Um simples problema matemático</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Lendo os 2 primeiros capítulos desse interessante livro "O último teorema de Fermat" (para os leigos, assuntos sobre a origem das fórmulas matemáticas e outros assuntos históricos matemáticos) pensei como poderia resolver esse simples problema: &lt;br/&gt; &lt;br/&gt;Sendo a raiz quadrada de 2 um número irracional(números com infinitas casas decimais), como a multiplicação da raiz quadrada de 2 por ela mesma( raiz quadrada de 2 ao quadrado ) é o número 2 como resultado? &lt;br/&gt; &lt;br/&gt;Uma multiplicação entre números é na verdade uma sequência de somas, por exemplo: &lt;br/&gt;&lt;blockquote&gt;4 x 3 = 12 &lt;br/&gt;&lt;/blockquote&gt;mais didaticamente:  &lt;br/&gt;&lt;blockquote&gt;4 + 4 + 4 = 12 &lt;br/&gt;ou  &lt;br/&gt;3 + 3 + 3 + 3 = 12 &lt;br/&gt;&lt;/blockquote&gt; &lt;br/&gt;Então como a multiplicação de 2 números irracionais iguais é o próprio número sem a raiz. &lt;br/&gt; &lt;br/&gt;Isso me faz pensar que os números irracionais não são infinitos. &lt;br/&gt; &lt;br/&gt;Bom, meus conhecimentos sobre as definições e convenções matemáticas não são extremamente grandes, na realidade são muitos básicas(só o que aprendi no colegial) e não conseguem entender esse fato, mas será que existe alguma explicação para este simples problema. &lt;br/&gt; &lt;br/&gt;Que tal calcular todas as casas decimais de um núumero irracional? Mas eles são infinitos, e agora? &lt;br/&gt; &lt;br/&gt;Obs.: Estou considerando aqui somente números inteiros como resultado, é claro que a soma de irracionais pode chegar bem próximo do valor inteiro. &lt;br/&gt; &lt;br/&gt;Se você quer saber a história dos postulados matemáticos e seus desafios, este é um bom livro para começar.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5334099545270650864-654721819499625744?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/654721819499625744/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=654721819499625744' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/654721819499625744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/654721819499625744'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2008/08/um-simples-problema-matemtico.html' title='Um simples problema matemático'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-2932686115823061423</id><published>2008-06-04T00:00:00.002-03:00</published><updated>2008-06-04T00:16:34.818-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Controle de versão'/><category scheme='http://www.blogger.com/atom/ns#' term='Git'/><title type='text'>Tutorial Git  - Atualizado</title><content type='html'>Nova versão do Tutorial, caso prefira a versão em &lt;a href="http://djalmaoliveira.site88.net/tutorial-git/tutorial-git-v2.pdf"&gt;pdf clique aqui!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TUTORIAL PRÁTICO SOBRE Git&lt;br /&gt;&lt;br /&gt;por Djalma Oliveira &lt;djalmaoliveira@gmail.com&gt;&lt;br /&gt;&lt;br /&gt;Versão 1.1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"Git é um sistema de controle de revisão distribuida, rápido e escalável" (tradução rápida do manual).&lt;br /&gt;Basicamente é um sistema de controle de versionamento de arquivos, muito usado por desenvolvedores para gerenciar versões do software produzidos seja por um desenvolvedor como também por outros participantes do projeto.&lt;br /&gt;    Com ele podemos integrar novas funcionalidades efetuadas por outros desenvolvedores, completa, parcial ou não, e tudo isso sendo registrado em um histórico que permite "voltar no tempo" para descobrir por exemplo como funcionava uma determinada versão daquele projeto. Os participantes do projeto podem enviar suas versões, correções, patchs para o projeto principal sem que o projeto principal seja comprometido, permitindo ao dono do projeto a escolha, teste e inclusão dessas alterações no projeto principal se desejar.&lt;br /&gt;    O Git foi desenvolvido inicialmente por Linus Torvalds mediante uma necessidade de ter um software robusto para controle de versão do kernel linux.&lt;br /&gt;    Outras informações sobre o assunto pode ser acessado através desses links:&lt;br /&gt;   &lt;br /&gt;    Projeto : http://git.or.cz/&lt;br /&gt;    Vídeo do Linus falando sobre o Git: http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;    Manual do usuário: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html&lt;br /&gt;&lt;br /&gt;    Aqui iniciaremos um rápido e prático tutorial sobre o Git, nada muito profundo, mas bastante útil para aqueles que queiram entender um pouco sobre Git.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    TERMOS ANTES DE COMEÇAR&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Repositório: Local onde fica armazenado os arquivos do projeto, versões e históricos, local onde os desenvolvedores podem submeter as alterações para o projeto.&lt;br /&gt;&lt;br /&gt;    Commit: Conjunto de alterações realizadas durante o desenvolvimento, normalmente essas alterações são implementações específicas, seja uma correção, nova versão entre outros. Veja um commit como um ponto histórico no desenvolvimento do projeto, esses pontos podem ser recuperados quando necessário.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    INICIANDO UM REPOSITÓRIO LOCAL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Criaremos uma pasta para nosso repositório:&lt;br /&gt;        mkdir meuprojeto&lt;br /&gt;        cd meuprojeto&lt;br /&gt;&lt;br /&gt;    Dentro da pasta iniciaremos um repositório Git:&lt;br /&gt;        git init&lt;br /&gt;&lt;br /&gt;    Perceba que todos os arquivos dentro da pasta(meuprojeto) fazem parte do repositório, ou seja o seu projeto.&lt;br /&gt;&lt;br /&gt;    Configuramos agora as informações sobre o desenvolvedor(você), usado para identificar o desenvolvedor em cada commit realizado:&lt;br /&gt;        git config user.name "Djalma Oliveira"&lt;br /&gt;        git config user.email "djalmaoliveira@gmail.com"&lt;br /&gt;&lt;br /&gt;    Perceba que foi criado uma pasta '.git', aonde todas as informações e históricos dos arquivos ficam armazenados e onde acontece a 'mágica'.&lt;br /&gt;&lt;br /&gt;    Criamos dois arquivos(vazios) para o projeto.&lt;br /&gt;        touch arq1.txt&lt;br /&gt;        touch arq2.txt&lt;br /&gt;&lt;br /&gt;    Agora informamos ao Git que todos os arquivos devem ser incluidos ao próximo commit:&lt;br /&gt;        git add .&lt;br /&gt;&lt;br /&gt;    Mas se desejar também pode adicionar somente arquivos específicos, basta informar o seu caminho:&lt;br /&gt;        git add arq2.txt&lt;br /&gt;&lt;br /&gt;    O Git é inteligente o suficiente para detectar se houve alguma alteração nos arquivos que foram indicados para o commit(git add), assim ele não realiza commits sem que pelo menos um arquivo tenha sido alterado, exceto o primeiro commit.&lt;br /&gt;&lt;br /&gt;    Agora realizamos o commit:&lt;br /&gt;        git commit -a -m "Meu primeiro commit"&lt;br /&gt;&lt;br /&gt;    * o parâmetro -a informa que deve adicionar todos os arquivos alterados ao commit;&lt;br /&gt;    * o parâmetro -m "texto" adiciona uma mensagem informativa para o commit;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Resumindo, para realizar commits seguimos 3 passos:&lt;br /&gt;        1 - Efetuar modificações em algum arquivo;&lt;br /&gt;        2 - Informar ao Git quais arquivos devem ser adicionados ao próximo commit(git add);&lt;br /&gt;        3 - Efetuar o commit(git commit) propriamente dito baseado nos arquivo do passo 2;&lt;br /&gt;&lt;br /&gt;    No Git todo commit, exceto o primeiro, é descendente(filho) de um outro commit, então você pode verificar diferenças entre commits caso queira.&lt;br /&gt;&lt;br /&gt;    Após eleger(git add) quais arquivos irão para o próximo commit, você pode ver quais alterações foram realizadas desde o último commit, usando:&lt;br /&gt;        git diff --cached&lt;br /&gt;&lt;br /&gt;    Essas informações sobre alterações desde o último commit ficam armazenadas em uma estrutura do Git chamada de 'index', ou seja, todas as vezes que você adicionar(git add) arquivos para o próximo commit essas diferenças ficam armazenadas nessa estrutura até o momento em que de fato seja realizado o commit(git commit).&lt;br /&gt;&lt;br /&gt;    Listando commits realizados:&lt;br /&gt;        git log&lt;br /&gt;&lt;br /&gt;    Mostrando os arquivos alterados desde o último commit:&lt;br /&gt;        git status&lt;br /&gt;&lt;br /&gt;    Mostra as alterações realizadas no último commit:&lt;br /&gt;        git show&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    BRANCHS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Uma branch é uma linha de desenvolvimento do projeto. Você pode ter vários branchs em seu repositório, cada branch representando uma versão específica de seu projeto, por exemplo. Veja um branch como um fork('cópia') do projeto que pode seguir sua própria linha de desenvolvimento.&lt;br /&gt;    Todo novo repositório Git (após o primeiro commit) possue um branch chamado por padrão 'master'.&lt;br /&gt;   &lt;br /&gt;    Por exemplo podemos reprensentar nossos branchs da seguinte forma:&lt;br /&gt;        master    =&gt; projeto principal e a última versão em produção.&lt;br /&gt;        working     =&gt; branch no qual você está trabalhando atualmente;   &lt;br /&gt;        versao-1.0     =&gt; uma das várias versões disponíveis de seu projeto.&lt;br /&gt;        versao-1.1    =&gt; outra versão...&lt;br /&gt;        teste        =&gt; alguma versão para testes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    MANIPULAÇÃO DE BRANCHS LOCAIS&lt;br /&gt;&lt;br /&gt;    Listando os branchs locais:&lt;br /&gt;        git branch&lt;br /&gt;&lt;br /&gt;        * master&lt;br /&gt;          teste&lt;br /&gt;          working   &lt;br /&gt;&lt;br /&gt;    Perceba que o branch que possui um '*' na frente representa o branch corrente.&lt;br /&gt;&lt;br /&gt;    Criamos um novo branch 'working' baseado no branch corrente, mantendo-se no branch atual(master):&lt;br /&gt;        git branch working&lt;br /&gt;&lt;br /&gt;    Criando um novo branch 'teste' baseado em um outro branch 'working' que não é o corrente,ainda mantendo-se no branch atual:&lt;br /&gt;        git branch teste working&lt;br /&gt;&lt;br /&gt;    Outra forma de criar um branch e ao mesmo tempo tornar o novo como corrente é usando:&lt;br /&gt;        git checkout -b teste working&lt;br /&gt;&lt;br /&gt;    Até este ponto devemos ter as seguintes branchs:&lt;br /&gt;        * master&lt;br /&gt;          teste&lt;br /&gt;          working   &lt;br /&gt;&lt;br /&gt;    Mudando para o branch working:   &lt;br /&gt;        git checkout working&lt;br /&gt;&lt;br /&gt;    Agora ficará assim:&lt;br /&gt;          master&lt;br /&gt;          teste&lt;br /&gt;          * working   &lt;br /&gt;&lt;br /&gt;    Apagando um branch:&lt;br /&gt;        git branch -D teste&lt;br /&gt;&lt;br /&gt;    Lembrete: você não pode apagar o branch corrente, alterne para um outro então execute novamente o comando.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    MAIS SOBRE OS BRANCHS&lt;br /&gt;&lt;br /&gt;    Até aqui você já deve ter percebido que não foi necessário sair da pasta do projeto, na realidade a cada mudança de branch (git checkout) os arquivos contidos na pasta do projeto são modificados para refletir exatamente as versões de cada branch, sendo assim o seu projeto sempre vai estar localizado naquela pasta, pois o Git se encarrega de gerenciar as informações relativos a cada branch corrente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    INCORPORANDO(merge) NOVAS MODIFICAÇÕES AO PROJETO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Uma das funcionalidades mais interessantes do Git é a capacidade de incorporar as alterações realizada por programadores ao projeto. Essa 'junção' se dá somente entre branchs e é chamada de merge.&lt;br /&gt;   &lt;br /&gt;    Por exemplo, digamos que o arquivo arq2.txt no branch working foi alterado:&lt;br /&gt;        git checkout working    # mudando para o branch working&lt;br /&gt;        echo "opa" &gt; arq2.txt    # alteração propriamente dita&lt;br /&gt;        git add .            # marca os arquivos para o próximo commit&lt;br /&gt;        git commit -a -m "alterando arq2.txt" # commit&lt;br /&gt;&lt;br /&gt;    Agora a idéia é adicionar as alterações realizadas no branch working para o branch master(lembre-se que o branch working é um fork do master!?).&lt;br /&gt;&lt;br /&gt;    Mudamos para o branch que receberá as alterações:&lt;br /&gt;        git checkout master&lt;br /&gt;&lt;br /&gt;    Realizamos agora o merge das alterações do branch working para o corrente(master):&lt;br /&gt;        git merge working&lt;br /&gt;&lt;br /&gt;    Após o comando acima será mostrado um resumo do que foi realizado:&lt;br /&gt;        Updating 751bee8..625fa43&lt;br /&gt;&lt;br /&gt;        Fast forward&lt;br /&gt;         arq2.txt |    1 +&lt;br /&gt;         1 files changed, 1 insertions(+), 0 deletions(-)&lt;br /&gt;&lt;br /&gt;    Confirmando a alteração no arquivo:&lt;br /&gt;        cat arq2.txt&lt;br /&gt;   &lt;br /&gt;    Peceba que neste momento toda e qualquer alteração realizada no último commit do branch working agora está refletida do branch master, inclusive o commit realizado na branch working, que agora está na branch master.&lt;br /&gt;   &lt;br /&gt;    Verifique o último commit:&lt;br /&gt;        git log&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    COMPLICANDO MAIS&lt;br /&gt;&lt;br /&gt;    Perceba que antes de efetuarmos o merge, somente a branch working possuia alterações, a master não, mas e se a branch master fosse alterada antes de dar-mos um merge a branch working?&lt;br /&gt;&lt;br /&gt;    Essa situação é bastante comum em projetos grandes que alterações são adicinadas frequentemente ao projeto principal, não refletindo mais a versão atual do working.&lt;br /&gt;    “Lembrando que todo branch possui um branch pai que é a sua base a partir de então.”&lt;br /&gt;    Nessa situação a melhor forma de realizar o merge seria realizar um 'rebase', ou seja, pegar o último commit do master, que é a base do working (por isso o nome rebase), trazer para o working e aplicar todos os seus commits(na mesma ordem de criação) nele, agora sim a sua versão do working estará sincronizada com a última versão do master mais os seus commits.&lt;br /&gt;&lt;br /&gt;    Realizar um merge nessa situação pode até funcionar(o Git é inteligente em algumas situações), mas não é recomendado pois isso poderia causar conflitos que seriam mais trabalhosos de resolver do que se efetuasse um 'rebase'.&lt;br /&gt;&lt;br /&gt;    Então antes de aplicar-mos um merge ao master, faremos um rebase a branch working antes para refletir a última versão do master:&lt;br /&gt;        git checkout working&lt;br /&gt;        git rebase master&lt;br /&gt;&lt;br /&gt;    Agora podemos aplicar um merge ao master:&lt;br /&gt;        git checkout master&lt;br /&gt;        git merge working&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;REPOSITÓRIOS REMOTOS&lt;br /&gt;&lt;br /&gt;    A idéia é a mesma de um repositório local, mas os remotos são hospedados em servidores na internet ou outra máquina que não a sua (mas pode ser a sua também).&lt;br /&gt;    Para trabalharmos com repositórios remotos usamos alguns comandos extras além dos já estudados.&lt;br /&gt;   &lt;br /&gt;Para criar um clone (cópia de todo o projeto, incluindo todos commits) do projeto podemos usar um dos seguintes comandos (dependendo a configuração do servidor):&lt;br /&gt;git clone git://sitehospedado.com.br/projeto&lt;br /&gt;ou&lt;br /&gt;git clone http://sitehospedado.com.br/projeto&lt;br /&gt;&lt;br /&gt;    Logo após, você verá que será criado um diretório com o nome do projeto, e dentro a cópia(clone) de todo o projeto.&lt;br /&gt;&lt;br /&gt;    Veja o repositório remotos disponível agora:&lt;br /&gt;        cd projeto&lt;br /&gt;        git branch –r&lt;br /&gt;&lt;br /&gt;origin/HEAD&lt;br /&gt;          origin/master&lt;br /&gt;          origin/working&lt;br /&gt;   &lt;br /&gt;    Perceba que a palavra origin é o nome padrão (mas você pode criar um com nome diferente desse se quiser) para repositórios remotos, representando os branchs que existem no projeto, mas que são de origem remotas para você agora.&lt;br /&gt;    Veja que você deve criar um branch local baseado em algum branch remoto antes de começar a efetuar suas alterações.&lt;br /&gt;        git checkout –b working origin/working&lt;br /&gt;&lt;br /&gt;Agora digamos que você efetuou várias alterações neste repositório e durante esse tempo o projeto principal também foi alterado não correspondendo mais a base que você possui agora e então deseja sincronizar com a última versão disponível do projeto.&lt;br /&gt;&lt;br /&gt;Primeiramente recuperamos a versão recente do projeto:&lt;br /&gt;    git fetch&lt;br /&gt;&lt;br /&gt;Agora efetua o merge com o branch atual:&lt;br /&gt;    git merge origin/master&lt;br /&gt;&lt;br /&gt;    Uma outra forma de realizar poderia ser assim:&lt;br /&gt;        git pull origin master&lt;br /&gt;&lt;br /&gt;    Ou até mesmo:&lt;br /&gt;git pull&lt;br /&gt;   &lt;br /&gt;    Neste último caso considerando que você tem um branch master ele fará o merge automaticamente.&lt;br /&gt;SINCRONIZANDO SUAS ALTERAÇÕES COM O REPOSITÓRIO REMOTO&lt;br /&gt;&lt;br /&gt;    Após efetuar suas modificações no branch, você pode enviá-lo para o servidor remoto através deste simples comando:&lt;br /&gt;        git push&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    INFORMAÇÕES FINAIS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Bom, finalizo por aqui mas existem ainda muitos comandos sobre o Git que podem ser abordados em versões futuras deste manual, então aguardem atualizações.&lt;br /&gt;&lt;br /&gt;    Espero ter abordado de forma clara, algumas características do Git e comentem se encontrarem algum erro, pois algumas partes foram traduzidos(minha versão) do manual do usuário.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5334099545270650864-2932686115823061423?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/2932686115823061423/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=2932686115823061423' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/2932686115823061423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/2932686115823061423'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2008/06/tutorial-git-atualizado.html' title='Tutorial Git  - Atualizado'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-5790747369563517834</id><published>2008-05-25T11:32:00.003-03:00</published><updated>2008-05-25T11:44:08.768-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Controle de versão'/><category scheme='http://www.blogger.com/atom/ns#' term='Git'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Tutorial prático sobre Git</title><content type='html'>Esse tutorial tem a intenção de abordar as principais características do Git, nada profundo, mas  suficientemente prático para que você possa ter uma visão geral de como utilizar os seu comandos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://djalmaoliveira.site88.net/tutorial-git/tutorial-git-v1.pdf"&gt;Para acessar clique aqui&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5334099545270650864-5790747369563517834?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/5790747369563517834/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=5790747369563517834' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/5790747369563517834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/5790747369563517834'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2008/05/tutorial-prtico-sobre-git.html' title='Tutorial prático sobre Git'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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-5334099545270650864.post-7924573825825049346</id><published>2008-05-09T00:47:00.001-03:00</published><updated>2008-05-25T11:47:15.730-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linguagem de programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Tutorial Ruby: Nova versão 0.3</title><content type='html'>Mais uma versão do tutorial sobre Ruby.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://djalmaoliveira.site88.net/tutorial-ruby/tutorial-ruby-0.3.pdf"&gt;O link para download é esse&lt;/a&gt;&lt;a href="http://djalmaoliveira.site88.net/tutorial-ruby/tutorial-ruby-0.3.pdf"&gt;.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5334099545270650864-7924573825825049346?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/7924573825825049346/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=7924573825825049346' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/7924573825825049346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/7924573825825049346'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2008/05/tutorial-ruby-nova-verso-03.html' title='Tutorial Ruby: Nova versão 0.3'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-4402080561214863504</id><published>2008-03-29T19:36:00.006-03:00</published><updated>2008-03-29T19:53:07.474-03:00</updated><title type='text'>Instalação manual do Lazarus no Ubuntu 7.10</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Essa é a minha primeira contribuição para a comunidade e aos interessados na área de desenvolvimento utilizando software livre.&lt;br /&gt;Aqui irei explicar como realizei a instalação do Lazarus na distribuição linux Ubuntu 7.10.&lt;br /&gt;Essa instalação é baseada na versão mais nova retirada do site do projeto e não a que está disponível no repositório do Ubuntu.&lt;br /&gt;Lazarus é um ambiente (IDE) de desenvolvimento que utiliza a linguagem de programação pascal.&lt;br /&gt;&lt;br /&gt;Antes de continuar, devo lembrar que esta foi minha experiência de instalação através da versão mais recente do Lazarus e FreePascal utilizando Ubuntu 7.10, portanto poderá existir uma outra forma mais rápida ou simples de realizar essas instalações.&lt;br /&gt;&lt;br /&gt;Abra um terminal.&lt;br /&gt;&lt;br /&gt;Crie um pasta em um lugar preferido, chamada lazarus e entre nela:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;span style="font-weight: bold;"&gt;mkdir lazarus&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;br /&gt;cd lazarus&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Efetue o download dos pacotes necessários:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left; font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;wget -c http://ufpr.dl.sourceforge.net/sourceforge/lazarus/lazarus_0.9.24-0_i386.deb&lt;br /&gt;wget -c http://ufpr.dl.sourceforge.net/sourceforge/lazarus/fpc_all_i386_deb.tgz&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Agora descompacte o freepascal:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; tar -xvzf fpc_all_i386_deb.tgz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Remova do sistema alguma versão instalada do lazarus através do repositório:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;apt-get remove lazarus&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora instale os pacotes do Freepascal(nem todos serão instalados agora):&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; dpkg -i fp*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora corrija os pacotes que faltam no sistema:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; apt-get install -f&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reinstale novamente:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dpkg -i fp*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora a instalação do lazarus:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; dpkg -i lazarus_0.9.24-0_i386.deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E finalizando, antes de iniciar o lazarus apague a pasta .lazarus na pasta home do usuário corrente(se existir), isso evita que utilize as configurações do lazarus instalado anteriormente ou cause algum erro.&lt;br /&gt;&lt;br /&gt;Inicie o lazarus através do menu de programas do seu ambiente gráfico.&lt;br /&gt;&lt;br /&gt;Bom é só isso, espero que esse passo a passo tenha ajudado em sua instalação!&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;a href="http://www.lazarus.freepascal.org/"&gt;http://www.lazarus.freepascal.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.freepascal.org/"&gt;http://www.freepascal.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5334099545270650864-4402080561214863504?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/4402080561214863504/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=4402080561214863504' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/4402080561214863504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/4402080561214863504'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2008/03/instalao-manual-do-lazarus-no-ubuntu.html' title='Instalação manual do Lazarus no Ubuntu 7.10'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5334099545270650864.post-8818597315131289173</id><published>2007-12-27T22:34:00.000-03:00</published><updated>2007-12-27T22:38:01.993-03:00</updated><title type='text'>Chegando...</title><content type='html'>Tentarei neste blog compartilhar com a comunidade os projetos que venho desenvolvendo na área da informática.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5334099545270650864-8818597315131289173?l=djalmafilho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://djalmafilho.blogspot.com/feeds/8818597315131289173/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5334099545270650864&amp;postID=8818597315131289173' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/8818597315131289173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5334099545270650864/posts/default/8818597315131289173'/><link rel='alternate' type='text/html' href='http://djalmafilho.blogspot.com/2007/12/chegando.html' title='Chegando...'/><author><name>Djalma Filho</name><uri>http://www.blogger.com/profile/04644042630882522023</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>0</thr:total></entry></feed>
