Ir para o conteúdo
ou

Software livre Brasil

Minha rede

 Voltar a planetas
Tela cheia Sugerir um artigo
 Feed RSS

Planeta do ArchLinux

11 de Fevereiro de 2010, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Magnun Leno : Projeto "Aprenda a Programar"

5 de Agosto de 2014, 14:35, por Software Livre Brasil - 0sem comentários ainda

Semana passada lendo alguns textos pelo feedly acabei vendo que o Lucas Caton (um cara que eu sigo a muito tempo) iniciou um projeto de crowdfunding chamado "Aprenda a Programar".

Código

Geralmente sou muito receoso com esse modelo, mas vindo do Lucas Caton eu já fico mais tranquilo, por isso fui checar o projeto no Catarse.

Projeto "Aprenda a Programar" é um artigo original de Mind Bending



Reinaldo Bispo : Instalando archlinux 2014.06.01 no HP dm4-2065br via wireless

4 de Agosto de 2014, 13:30, por Software Livre Brasil - 0sem comentários ainda

Olá a todos, como vão?

E mais uma vez aqui estou eu para falar de instalação de arch linux.. sim, novamente :)

Se você for montar o pendrive no Windows utilize o programa Win 32 DiskImager, ele é bem tranquilo de se usar. Se estiver no Linux pode usar o comando dd ou o unetbootin.

Lembrando que essa instalação vai ser feita toda via wireless, porque o pessoal tem a boa mania de apenas explicar em ethernet e apenas citar o modo wireless que é MUITO simples de configurar.

Caso você queira fazer a instalação usando o teclado em layout pt_br basta digitar loadkeys br-abnt2

ps: Isso é apenas para a instalação OK?

Deu o boot e está na linda tela preta sem internet não é? Então vamos descobrir o seu dispositivo wireless.

Digite o comando iw dev e irá ser mostrado a interface da sua placa.

Feito isso digite wifi-menu INTERFACE e certamente vai aparecer o nome de sua rede wireless. Basta selecionar, colocar o nome/password e pronto. Sim, apenas isso e você tem wireless para fazer a instalação.

Vamos particionar o HD?

Digite fdisk -l que ele vai te mostrar o seu HD e o seu pendrive que está fazendo a instalação. Preste atenção para não selecionar a parte errada, se o seu HD tiver um outro sistema, para não se cagar todo.

O Básico do básico é você ter uma partição / e uma swap. AH… eu quero uma /home e uma /boot e etc. Cara, isso aqui é para iniciantes então se você souber o que está fazendo e quer um sistema todo organizadinho crie. Se não sabe e quer saber basta ler aqui e aprender.

Pronto, você criou a partição raiz e a swap. Agora temos que formatar a raiz e escolher o seu sistema de arquivos e ativar a swap.

Na raiz você vai digitar, se quiser usar o ext4, o comando mkfs.ext4 /dev/sdX e aguarde que se tiver algum problema de bad block irá ser notificado. No swap você vai digitar 1 comando que vai fazer duas coisas, porém pode digitar um de cada vez se quiser.

Digite mkswap /dev/sdX && swapon /dev/sdX . O primeiro comando vai configurar uma área de swap e o segundo vai ativar os arquivos de paginação para swap.

Agora você vai montar a partição criada para instalar as coisas. Digite mount /dev/sdX /mnt

Agora é digitar o comando para fazer a instalação do sistema base, base-devel e o grub-bios. Com um comando você resolve isso, basta digitar pacstrap /mnt base base-devel grub-bios e ao terminar você digita genfstab -p /mnt >> /mnt/etc/fstab que ele vai configurar seu /etc/fstab para montar sua partição.

Agora, para fazermos alterações no sistema que acabamos de instalar vamos utilizar o arch-chroot para isto. Digite arch-chroot /mnt para fazer alterações diretamente na partição que estamos instalando.

Para nomear a sua máquina basta digitar echo NOMELEGAL > /etc/hostname e sua máquina terá um nome, depois se quiser pode modificar fique tranquilo.

Agora vamos editar o hosts que é o local que transforma IP em nome. Caso você queira acessar sua máquina para configurar um web server local por exemplo você pode digitar o nome de sua máquina. Acesse o arquivo /etc/hosts com seu editor preferido e acrescente a direita do nome localhost o nome de sua máquina.

Exemplo simplificado:

Original localhost / Modificado localhost NOMELEGAL

Salve e pronto.

Caso queira deixar seu sistema em pt_br basta você entrar no arquivo /etc/locale.gen e remover o # das seguintes linhas:

#pt_BR.UTF-8 UTF-8
#pt_BR ISO-8859-2

Em seguida você digita locale-gen que a modificação será feita. Agora crie o arquivo /etc/locale.conf e insira o seguinte conteúdo:

LANG=pt_BR.utf-8
LC_COLLATE=C
LC_TIME=pt_BR.utf-8

Digite o comando export LANG=pt_BR.utf-8, pois como o arquivo não existia não surtirá efeito a sua criação sem digitar este comando.

Para preparar o ramdisk inicial digite: mkinitcpio -p linux .

Para instalar o grub 2 basta digitar o seguintes comandos:


grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

Antes de terminar instale os pacotes dialog e wpa_supplicant, eles são importantes para configurar sua rede wireless usando o wifi-menu e/ou netctl, pois quando der boot vai voltar a ficar sem internet.

Insira uma senha no seu login root com o comando passwd e digite exit para finalizar o arch-chroot. Depois é desmontar o /mnt com o comando umount /mnt e reniciar.

Pronto, agora tem um archlinux. Só instalar os programas que necessita, você que escolhe e nada além do que deseja é instalado como em outras distribuições.

Até a próxima ;*




Magnun Leno : TTY - Programando para o console do Linux

4 de Agosto de 2014, 9:55, por Software Livre Brasil - 0sem comentários ainda

Outro dia eu estava desenvolvendo um programa para o GNU/Linux em modo texto e esse programa executaria algumas operações e deveria exibir o status dessa execução no terminal. Pois bem, foi aí que me deparei com algumas características interessantes do famoso "modo texto" do GNU/Linux. Acabei tropeçando também em muita história interessante que gostaria de compartilhar.

Termianl

Na verdade o correto não é modo texto, mas sim "Terminal". Terminal, Modo Texto, TTY? What the Hell?

TTY - Programando para o console do Linux é um artigo original de Mind Bending



Helio Costa - hlegius : Rua sem saída: não consigo criar meu próximo teste - Parte I

4 de Agosto de 2014, 7:35, por Software Livre Brasil - 0sem comentários ainda

Continuando o assunto como criar meu próximo teste, irei abordar os três primeiros tópicos do primeiro post da série.

Caso não tenha visto o prelúdio que deu início a isto, recomendo que leia antes de continuar!

Não consigo imaginar em qual objeto ficará a feature - e/ou se ele precisará de outros objetos existentes para funcionar.

Antes de se preocupar com o aonde temos que nos preocupar com o o que. Explico: a vontade de sair criando coisas e ver teste passar é muito tentadora, fato. Mas antes, planejar aquela feature irá te facilitar muito o começo. Tornando em recipe:

  1. O que a feature irá fazer exatamente? Neste ponto, você já deve saber o que esta nova tarefa irá acrescentar no sistema, do começo ao fim.
  2. Será necessário criar outra classe ou é uma nova funcionabilidade para uma classe existente?
  3. Essa tarefa precisará de informação de alguma classe já existente? Quais?

Carregado isto para sua memória ram (cabeça), é possível seguir em frente. O foco agora é esboçar um rascunho de como serão as coisas. Neste passo, cada um tem uma técnica diferente. Eu já fiz rascunho de UML, rasbisco em moleskine, arquivo de texto, diagrama de sequência e arquivo de teste.

Depende do que estamos lidando, por exemplo, se você está criando uma feature que irá permitir que o sistema receba pagamentos, você provavelmente lidará com a criação de um novo módulo inteiro. Isto requer um rabisco mais arquitetural. Agora, se você está criando uma classe dentro de um módulo já existente ou apenas uma nova ação para uma classe, pode-se ficar com arquivos de teste e diagrama de sequência.

"Rascunho arquitetural"

Este tipo de rascunho serve para nossa mente começar a relacionar o assunto com mais "detalhes" - este detalhe de nome, e possível relação entre objetos/pacotes facilitará pensar no assunto enquanto você está fazendo outras coisas (almoçando, por exemplo). Quem não acha que nossa mente tem background jobs? :P

Saindo da arquitetura e partindo para o design (de código), uma coisa que me ajuda muito na hora de encontrar nomes para as classes é o Ubiquitous Language. Em miúdos, é extrair nomes/verbos das conversas com seu cliente e tentar encaixá-los dentro do software. Isso é quase uma arte - e a prática neste caso tornará você mais ágil neste passo. Se ainda assim, encontrar nome está difícil, crie a API que espera ter no código.

"Rascunho de design de código"

Durante esse processo eu acabei amadurecendo a ideia e os relacionamentos. Veja que até abortei uma ideia que ia começar. Com isso, eu tenho mais detalhes e posso sem medo criar meu arquivo de teste (RSpec, JUnit, NUnit, etc.) e começar a experimentar.

Preciso mockar um objeto do qual é criado dentro da classe que vou usar como auxiliar.

Clássico. Vou usar o esboço que fiz acima. Vamos supor que criei o código User.build_invoice(for_orders). Seguindo o que está no rabisco, sairia algo assim:

class User

  def build_invoice(for_orders)
    Checkout.new.create_for(self, for_orders)
  end
end

class UserTest < Test::Unit
  # helper method to simplify User object creation
  def subject
    User.new # Ruby doesn't require 'return statement' to return values
  end

  # collection with dummy orders just to satisfy our test
  def for_orders
    [mock('order'), mock('order')]
  end

  def test_build_invoice_with_orders
    subject.build_invoice(for_orders) # ???
  end
end

Disto eu te faço uma pergunta: como farei o teste de unidade uma vez que Checkout.new está hardcoded no método build_invoice? No exemplo acima, Checkout.new não requer nenhum objeto em seu construtor, mas provavelmente, assim como seu User ele deve instanciar outras classes internamente (o que novamente, é errado) e em algum momento seu código será intestável por causa desses objetos voodoo que aparecem do nada e você não tem como configurá-los a seu modo.

E mais, como que o User pode saber do que Checkout precisa em seu construtor? O User é bidu? Acho que não. Uma coisa interessante que existe no Ruby são os valores pré-definidos (e aceita instância de classe, viu, PHP e afins?). Eu facilmente poderia modificar meu código para:

class User

  def build_invoice(for_orders, checkout: Checkout.new)
    checkout.create_for(self, for_orders)
  end
end

Agora, User#build_invoice recebe 1 ou 2 parametros: orders e o objeto de checkout. Isto permite que você injete o Checkout na configuração que achar melhor no código. E sem mágica alguma, isto torna seu código testável novamente.

class UserTest < Test::Unit
  # helper method to simplify User object creation
  def subject
    User.new # Ruby doesn't require 'return statement' to return values
  end

  # collection with dummy orders just to satisfy our test
  def for_orders
    [mock('order'), mock('order')]
  end

  def test_build_invoice_with_orders
    checkout = mock('Checkout') # using Mocha gem to create mocks/stubs
    checkout.expects(:create_for).with(subject, for_orders).once
    subject.build_invoice(for_orders, checkout: checkout)
  end
end

Utilizei pseudo Test::Unit para ficar mais fácil para Javeiros/PHPeiros/.NETeiros, etc.

Pude criar o mock de checkout e criar uma expectativa nele que diz: espero que o User#build_invoice me chame passando os argumentos: user e orders uma vez. Para quem nunca viu, isso é um teste de expectativa sob comportamento. Tem seus usos, como já afirmou Sandi Metz.

Percebi que meu setup (before no RSpec) tem mais que 5 linhas.

Primeiramente, 5 linhas é modo de dizer. Cada projeto, cada linguagem, cada tudo, irá variar a quantidade de linhas. O ponto aqui é chamar a atenção para a complexidade de código de teste que diretamente afeta a complexidade do código de produção, que afeta o design, que afeta o bug detection, que afeta seu bug tracking, que afeta seu chefe, que te afeta e que estressa a todos. Um ciclo imenso justamente porque alguém neste meio acha que design de código não é importante e/ou que não deve ser pensado de forma contínua.

De fato a isto, a frase mostre-me seu setup e direi como tu és passa a fazer sentido. O setup é um dos caras mais evidentes nos testes. Se ele é complicado, indica que seu código é um espaguete. Apesar de gostoso na vida real, no código ele te coloca em um cenário complicadíssimo.

Soluções? Bem, refatorar ou até mesmo refazer partes/módulos do seu software. Refatorar != refazer. A conversa de não tenho tempo agora pode até ser válida em alguns casos, mas antes de afirmá-la, pense muito bem se realmente está em um momento complicado do seu negócio ou se é apenas por achar que não vale a pena.

Supondo que você pensou muito sobre o assunto e realmente não tem tempo para refazer ou refatorar, uma solução válida é criar as próximas features o mais isoladas do código macarrônico possível. Eu abordei isso no post Unit Testing em aplicações legadas e sem teste. Dá uma conferida que fará bastante sentido neste caso.

Anatomia do teste de unidade

Por fim, você pode estar pecando na estrutura dos seus testes. Como disse neste post, o teste tem anatomia e você deve conhecê-la para definir se um teste está bem escrito ou não. Spoiler: não é pela quantidade de linhas que define-se isto.

To be continued.



Helio Costa - hlegius : Rua sem saída: não consigo criar meu próximo teste - Parte I

4 de Agosto de 2014, 7:35, por Software Livre Brasil - 0sem comentários ainda

Continuando o assunto como criar meu próximo teste, irei abordar os três primeiros tópicos do primeiro post da série.

Caso não tenha visto o prelúdio que deu início a isto, recomendo que leia antes de continuar!

Não consigo imaginar em qual objeto ficará a feature - e/ou se ele precisará de outros objetos existentes para funcionar.

Antes de se preocupar com o aonde temos que nos preocupar com o o que. Explico: a vontade de sair criando coisas e ver teste passar é muito tentadora, fato. Mas antes, planejar aquela feature irá te facilitar muito o começo. Tornando em recipe:

  1. O que a feature irá fazer exatamente? Neste ponto, você já deve saber o que esta nova tarefa irá acrescentar no sistema, do começo ao fim.
  2. Será necessário criar outra classe ou é uma nova funcionabilidade para uma classe existente?
  3. Essa tarefa precisará de informação de alguma classe já existente? Quais?

Carregado isto para sua memória ram (cabeça), é possível seguir em frente. O foco agora é esboçar um rascunho de como serão as coisas. Neste passo, cada um tem uma técnica diferente. Eu já fiz rascunho de UML, rasbisco em moleskine, arquivo de texto, diagrama de sequência e arquivo de teste.

Depende do que estamos lidando, por exemplo, se você está criando uma feature que irá permitir que o sistema receba pagamentos, você provavelmente lidará com a criação de um novo módulo inteiro. Isto requer um rabisco mais arquitetural. Agora, se você está criando uma classe dentro de um módulo já existente ou apenas uma nova ação para uma classe, pode-se ficar com arquivos de teste e diagrama de sequência.

"Rascunho arquitetural"

Este tipo de rascunho serve para nossa mente começar a relacionar o assunto com mais "detalhes" - este detalhe de nome, e possível relação entre objetos/pacotes facilitará pensar no assunto enquanto você está fazendo outras coisas (almoçando, por exemplo). Quem não acha que nossa mente tem background jobs? :P

Saindo da arquitetura e partindo para o design (de código), uma coisa que me ajuda muito na hora de encontrar nomes para as classes é o Ubiquitous Language. Em miúdos, é extrair nomes/verbos das conversas com seu cliente e tentar encaixá-los dentro do software. Isso é quase uma arte - e a prática neste caso tornará você mais ágil neste passo. Se ainda assim, encontrar nome está difícil, crie a API que espera ter no código.

"Rascunho de design de código"

Durante esse processo eu acabei amadurecendo a ideia e os relacionamentos. Veja que até abortei uma ideia que ia começar. Com isso, eu tenho mais detalhes e posso sem medo criar meu arquivo de teste (RSpec, JUnit, NUnit, etc.) e começar a experimentar.

Preciso mockar um objeto do qual é criado dentro da classe que vou usar como auxiliar.

Clássico. Vou usar o esboço que fiz acima. Vamos supor que criei o código User.build_invoice(for_orders). Seguindo o que está no rabisco, sairia algo assim:

class User

  def build_invoice(for_orders)
    Checkout.new.create_for(self, for_orders)
  end
end

class UserTest < Test::Unit
  # helper method to simplify User object creation
  def subject
    User.new # Ruby doesn't require 'return statement' to return values
  end

  # collection with dummy orders just to satisfy our test
  def for_orders
    [mock('order'), mock('order')]
  end

  def test_build_invoice_with_orders
    subject.build_invoice(for_orders) # ???
  end
end

Disto eu te faço uma pergunta: como farei o teste de unidade uma vez que Checkout.new está hardcoded no método build_invoice? No exemplo acima, Checkout.new não requer nenhum objeto em seu construtor, mas provavelmente, assim como seu User ele deve instanciar outras classes internamente (o que novamente, é errado) e em algum momento seu código será intestável por causa desses objetos voodoo que aparecem do nada e você não tem como configurá-los a seu modo.

E mais, como que o User pode saber do que Checkout precisa em seu construtor? O User é bidu? Acho que não. Uma coisa interessante que existe no Ruby são os valores pré-definidos (e aceita instância de classe, viu, PHP e afins?). Eu facilmente poderia modificar meu código para:

class User

  def build_invoice(for_orders, checkout: Checkout.new)
    checkout.create_for(self, for_orders)
  end
end

Agora, User#build_invoice recebe 1 ou 2 parametros: orders e o objeto de checkout. Isto permite que você injete o Checkout na configuração que achar melhor no código. E sem mágica alguma, isto torna seu código testável novamente.

class UserTest < Test::Unit
  # helper method to simplify User object creation
  def subject
    User.new # Ruby doesn't require 'return statement' to return values
  end

  # collection with dummy orders just to satisfy our test
  def for_orders
    [mock('order'), mock('order')]
  end

  def test_build_invoice_with_orders
    checkout = mock('Checkout') # using Mocha gem to create mocks/stubs
    checkout.expects(:create_for).with(subject, for_orders).once
    subject.build_invoice(for_orders, checkout: checkout)
  end
end

Utilizei pseudo Test::Unit para ficar mais fácil para Javeiros/PHPeiros/.NETeiros, etc.

Pude criar o mock de checkout e criar uma expectativa nele que diz: espero que o User#build_invoice me chame passando os argumentos: user e orders uma vez. Para quem nunca viu, isso é um teste de expectativa sob comportamento. Tem seus usos, como já afirmou Sandi Metz.

Percebi que meu setup (before no RSpec) tem mais que 5 linhas.

Primeiramente, 5 linhas é modo de dizer. Cada projeto, cada linguagem, cada tudo, irá variar a quantidade de linhas. O ponto aqui é chamar a atenção para a complexidade de código de teste que diretamente afeta a complexidade do código de produção, que afeta o design, que afeta o bug detection, que afeta seu bug tracking, que afeta seu chefe, que te afeta e que estressa a todos. Um ciclo imenso justamente porque alguém neste meio acha que design de código não é importante e/ou que não deve ser pensado de forma contínua.

De fato a isto, a frase mostre-me seu setup e direi como tu és passa a fazer sentido. O setup é um dos caras mais evidentes nos testes. Se ele é complicado, indica que seu código é um espaguete. Apesar de gostoso na vida real, no código ele te coloca em um cenário complicadíssimo.

Soluções? Bem, refatorar ou até mesmo refazer partes/módulos do seu software. Refatorar != refazer. A conversa de não tenho tempo agora pode até ser válida em alguns casos, mas antes de afirmá-la, pense muito bem se realmente está em um momento complicado do seu negócio ou se é apenas por achar que não vale a pena.

Supondo que você pensou muito sobre o assunto e realmente não tem tempo para refazer ou refatorar, uma solução válida é criar as próximas features o mais isoladas do código macarrônico possível. Eu abordei isso no post Unit Testing em aplicações legadas e sem teste. Dá uma conferida que fará bastante sentido neste caso.

Anatomia do teste de unidade

Por fim, você pode estar pecando na estrutura dos seus testes. Como disse neste post, o teste tem anatomia e você deve conhecê-la para definir se um teste está bem escrito ou não. Spoiler: não é pela quantidade de linhas que define-se isto.

To be continued.



Marcelo Cavalcante - kalib : Assista ao documentário sobre Aaron Swartz: O menino da internet

3 de Agosto de 2014, 3:19, por Software Livre Brasil - 0sem comentários ainda

Informação é poder. Mas, como todo poder, há aqueles que querem mantê-la para si mesmos. O patrimônio cultural e científico do mundo, publicado ao longo dos séculos em livros e revistas, está cada vez mais szendo digitalizado e trancado por um punhado de corporações privadas. Enquanto isso, aqueles que foram bloqueados não estão em pé de braços cruzados. Eles estão bisbilhotando em buracos e escalando cercas libertando as informações trancadas pelos editores e compartilhando com seus amigos. Mas toda essa ação acontece no escuro, escondida no subterrâneo. É chamado de roubo ou pirataria, como se compartilhar uma riqueza de conhecimentos fosse o equivalente de saquear um navio e matar sua tripulação. Mas compartilhar não é imoral - é um imperativo moral. Só os cegos pela ganância se recusam a deixar um amigo fazer uma cópia. Não há justiça em seguir leis injustas. É hora de virmos para a luz e, na grande tradição de desobediência civil, declararmos a nossa oposição a este roubo privado da cultura pública.

Este é apenas um trecho do manifesto assinado por Aaron, entitulado “Manifesto do guerrilheiro ao acesso livre”.

Recentemente foi lançado um documentário de Brian Knappenberger sobre Aaron Swartz, o qual foi considerado um dos principais nomes da internet e luta pela liberdade de acesso ao conhecimento dos últimos anos.

Para quem ainda não sabe do que se trata, Aaron Swartz foi um dos criadores do RSS bem como do famoso site de notícias e debates Reddit.Após alguns anos lutando e enfrentando a justiça americana Aaron cometeu suicídio.

Aaron estava sendo condenado a cerca de 50 anos de prisão, bem como a pagar um montante superior a U$ 4 milhões em multas por querer tornar públicos os artigos acadêmicos e científicos que eram mantidos na base do JSTOR, o qual vendia o acesso a estes artigos que, na visão de Aaron, deveriam ser de domínio e acesso público.

Aaron sempre defendeu e lutou para que o conhecimento fosse de livre acesso a todos. Lutou tanto que acabou sendo covardemente perseguido e pressionado pelo governo americano, o que acabou por lhe deixar exausto, psicologicamente e financeiramente, ao ponto de ele desistir da luta ao invés de simplesmente “assumir” que estava errado e aceitar os “acordos” que lhe foram oferecidos pela justiça americana.

Seu crime? A curiosidade. A fome por conhecimento. Também a vontade de expor este conhecimento a todos que o desejassem.

Para quem por algum motivo ainda não conhece o recurso de legendas ou caption do YoutTube, caso a legenda do filme não apareça automaticamente, basta clicar no botão de legendas/caption, habilitando-o, conforme apresentado na imagem abaixo:

Link para o vídeo: https://www.youtube.com/watch?v=2uj1EeiuK5U

Abraços,



Reinaldo Bispo : Criptografe suas mensagens usando gnuPG

30 de Julho de 2014, 23:23, por Software Livre Brasil - 0sem comentários ainda

Olá internet, como estão?

Então.. esse blog que aparentemente estava morto vai voltar a ser utilizado para escrever dicas/opiniões e coisas do gênero.

Hoje eu irei falar um pouco sobre criptografia de e-mail usando o ThunderBird. O ThunderBird serve para você receber seus e-mails sem a necessidade de abrir um navegador para tal, você pode gerenciar sua conta de e-mail, organizar, filtrar e etc como se estivesse no ambiente web.

Vou presumir que você já tem o ThunderBird instalado em sua máquina ok? Ainnn eu não tenho e agora? Procure no google, no fórum de sua distribuição, no vivaolinux que vai encontrar. Certamente terá que digitar apenas um comando para baixar e instalar ele. Feito isso, configure a sua conta, que também é simples, e siga os passos que irei informar.

Vamos falar alguns conceitos para você não ficar totalmente perdido sobre o que vamos falar abaixo.

O que é criptografia?

Criptografia é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da “chave secreta”), o que a torna difícil de ser lida por alguém não autorizado.[1]

Então, conforme o conceito diz, a criptografia é o envio/troca de mensagens entre pessoas sendo de conhecimento de quem envia e de quem recebe. Se um terceiro ler está mensagem presume-se que o mesmo não tem autorização para tal.

Porque eu devo criptografar meus e-mails?

Devido ao aumento acelerado de quebras de privacidade, das denúncias feitas pelo Snowden as pessoas começaram a pensar mais sobre como a sua privacidade é ferida por cada serviço que costuma utilizar. Para grupos coletivos, ativistas, denunciantes a troca de informação de forma segura é um diferencial necessário, pois os intrusos utilizam de todas as ferramentas disponíveis para vigiar as pessoas que eles intitulam perigosas.

O que é GnuPG?

É uma aplicação de criptografia que criptografa as mensagens utilizando a criptografia de chaves assimétricas. O resultado é que chaves públicas podem ser trocadas com outros usuários de várias maneiras, uma delas são os servidores de chaves. As chaves devem sempre ser trocadas com cuidado para evitar o roubo de identidade.

Sim, falou e falou e até agora nada… Então vamos lá!

Abra o seu ThunderBird e vá na opção Ferramentas e depois em Complementos. Selecione Extenções e pesquise por Enigmail e instale e siga os passos padrões.

Terminou? Reinicie seu ThunderBird.

Criação das Chaves

No ThunderBird vá na opção OpenPGP depois Assistente de Configuração. Na tela Assinatura selecione Não, eu quero criar regras por destinatário especificando quais mensagens precisam ser assinadas. Em seguida utilize as opções padrões até chegar na tela Criar Chave.

Escolha uma senha forte de 12 caracteres no mínimo. Feito isso irá aparecer uma tela de confirmação do OpenGPG, selecione Gerar Certificado e salve em um local do seu computador. Você pode posteriormente salvar esse certificado na nuvem, em um CD, pendrive para caso tenha algum problema com sua chave, roubo por exemplo, você pode revogar sua chave :)

Agora vamos subir sua chave recém criado para o Servidor de Chaves “KeyServer“. No menu do ThunderBird escolha OpenPGP e em seguida Gerenciamento de Chaves OpenPGP. Clique com o botão direito sobre sua chave e escolha a opção Enviar Chaves Públicas para Servidor de Chaves e não existe necessidade de modificar o servidor padrão de chaves.

Rede de Confiança

A Rede de Confiança nada mais é uma rede na qual as pessoas sabem quem são as donas das chaves, pois uma pessoa má intencionada pode criar um e-mail parecido ou tentar se passar por você utilizando novas chaves para tentar se comunicar com você.

Quando você assina a chave de alguém, está dizendo publicamente que confia que a chave pertence mesmo a essa pessoa e não a um impostor. Pessoas que usam sua chave pública podem ver o número de assinaturas que ela tem. Quando já tiver usado o GnuPG por algum tempo, sua chave pode ter centenas de assinaturas. A Rede de Confiança é uma constelação de todas as pessoas que usam o GnuPG, conectadas umas às outras por correntes de confiança expressadas através de assinaturas, formando uma rede gigante. Quanto mais assinaturas uma chave tiver, e quanto mais assinaturas essas pessoas que assinaram tiverem, mais confiável é essa chave.“[3]

Para assinar uma Chave é simples, basta ir no menu OpenPGP e depois em Gerenciamento de Chaves OpenGPG. Dê dois cliques na chave que deseja assinar e em seguida selecione Assinar Chaves no menu Selecionar Ação. Apareça um menu, selecione a opção Não irei responder e clique em OK.

No menu do ThunderBird novamente seleciona OpenPGP e selecione Gerenciamento de Chaves OpenPGP depois Servidor de Chaves e em seguida Enviar Chaves Públicas e clique em OK.

Antes de assinar uma chave é bastante importante que tenha certeza que está assinando uma chave verdadeira, certifique-se que a pessoa é detentora daquela chave. Quanto mais uma pessoa ou você tiver assinatura demonstra que você é detentora da chave e não exige maiores esforços para verificar que é dona da chave.

Uma dica, antes de enviar uma mensagem criptografada ative a criptografia, é uma chave que está cinza quando desativada ao clicar fica AMARELA, para que o servidor de e-mail não sabe um rascunho da mensagem que está enviando. O assunto do e-mail não é criptografado, então seja discreto e imparcial ao preencher esse campo ao enviar um e-mail.

Este artigo foi baseado nesse link, para maiores informações você pode acessá-lo e se informar com maiores detalhes.

Espero que tenham gostado e até a próxima. O uso da criptografia é importante, troquem sua chaves e caso tenha alguma mensagem que não queira que seja lida criptografe!

Até a próxima :D

[1] – http://pt.wikipedia.org/wiki/Criptografia
[2] – http://pt.wikipedia.org/wiki/Gnupg
[3] – https://emailselfdefense.fsf.org/pt-br/index.html




Magnun Leno : Makefile Para Java

28 de Julho de 2014, 20:56, por Software Livre Brasil - 0sem comentários ainda

No artigo anterior, mostrei como realizar uma série de compilações e empacotamentos usando os utilitários do Java. Entretanto, utilizar a linha de comando constantemente para esse tipo de tarefa é um trabalho árduo.

Java & GNU

Agora que sabemos exatamente como podemos compilar um código Java e gerar seus respectivos pacotes manualmente, podemos escrever um GNU Makefile para automatizar essa tarefa.

Makefile Para Java é um artigo original de Mind Bending



Arch Linux Brasil : xorg-server 1.16 está disponível

28 de Julho de 2014, 20:00, por Software Livre Brasil - 0sem comentários ainda

Leandro Inácio escreveu:

A nova versão vem com as seguintes mudanças:

  • X não precisa de root com a ajuda do systemd-logind, isto significa que é necessário ser executado a partir do mesmo terminal virtual que foi usando para logar, redirecionando a saída padrão também quebra a execução sem root. A antiga execução com root pode ser restaurada através do arquivo de configuração Xorg.wrap (man xorg.wrap). Observe que executar o X através de um gerenciador de login (gdm, kdm, ...) ainda não fornece acesso sem root.

  • Os arquivos de configuração padrão estão agora no /usr/share/X11/xorg.conf.d, todas as configurações do host ainda estão no diretório /etc/X11/xorg.conf.d/. Observe que os arquivos 10-evdev.conf e 10-quirks.conf no /etc/X11/xorg.conf.d podem ser renomeados com o sufixo .pacsave, os quais podem quebrar sua configuração, então apenas renomeie e remova o sufixo .pacsave.

  • Melhor renderização acelerada glamor, pacote glamor-egl em desuso.

  • Um novo pacote xorg-server-xwayland que permite executar aplicações X dentro de uma sessão do wayland.

  • O pacote xf86-video-intel não fornece suporte a dri3 por causa de vários bugs de renderização.

URL da notícia: https://www.archlinux.org/news/xorg-server-116-is-now-available/



Arch Linux Brasil : xorg-server 1.16 está disponível

28 de Julho de 2014, 20:00, por Software Livre Brasil - 0sem comentários ainda

Leandro Inácio escreveu:

A nova versão vem com as seguintes mudanças:

  • X não precisa de root com a ajuda do systemd-logind, isto significa que é necessário ser executado a partir do mesmo terminal virtual que foi usando para logar, redirecionando a saída padrão também quebra a execução sem root. A antiga execução com root pode ser restaurada através do arquivo de configuração Xorg.wrap (man xorg.wrap). Observe que executar o X através de um gerenciador de login (gdm, kdm, ...) ainda não fornece acesso sem root.

  • Os arquivos de configuração padrão estão agora no /usr/share/X11/xorg.conf.d, todas as configurações do host ainda estão no diretório /etc/X11/xorg.conf.d/. Observe que os arquivos 10-evdev.conf e 10-quirks.conf no /etc/X11/xorg.conf.d podem ser renomeados com o sufixo .pacsave, os quais podem quebrar sua configuração, então apenas renomeie e remova o sufixo .pacsave.

  • Melhor renderização acelerada glamor, pacote glamor-egl em desuso.

  • Um novo pacote xorg-server-xwayland que permite executar aplicações X dentro de uma sessão do wayland.

  • O pacote xf86-video-intel não fornece suporte a dri3 por causa de vários bugs de renderização.

URL da notícia: https://www.archlinux.org/news/xorg-server-116-is-now-available/



Tags deste artigo: archlinux planet planeta