quarta-feira, 28 de julho de 2010

Maus hábitos em bash

Frequentemente, fazemos uso incorreto de comandos em bash. Não que faça muita diferença, mas não custa nada aprendermos algumas regrinhas, que tornarão o nosso código mais eficiente e legível.
 
Comando cat
Muitos de nós (eu inclusive) temos o hábito de fazer coisas como:

  cat arquivo.txt | wc -l

O comando cat significa catenate, que significa concatenar. Se eu tenho apenas um arquivo, não preciso do cat, posso usar o wc diretamente:

  wc -l arquivo.txt

Já se eu quisesse contar o número de linhas em diversos arquivos, eu poderia usar o cat com o comando wc:

  cat arquivo1.txt arquivo2.txt arquivo3.txt | wc -l

Mas tudo irá depender do que se quer fazer. O comando wc também pode ser usado com esta finalidade, mas a saída é ligeiramente diferente:

  $ wc -l /etc/passwd /etc/hosts
    39 /etc/passwd
    12 /etc/hosts
    51 total

Com o cat:

  $ cat /etc/passwd /etc/hosts | wc -l
  51

O comando wc é mais falante e se eu faço uso deste recurso em uma situação em que preciso apenas do número de linhas, esta verbosidade precisará ser tratada de alguma forma, o que é desnecessário.
 

Comando ls
Um erro bem comum:

  for arquivo in `ls *`
  do
   ...
  done

Eu não preciso usar o ls para obter uma listagem dos arquivos em um diretório neste trecho. Eu posso fazer assim:

  for arquivo in *
  do
   ...
  done

Uma outra variação desta prática, com o comando cat:

  cat `ls *`

Porque não fazer assim?

  cat *

Cuidado com o rm
Quem nunca fez algo assim?

  rm -rf ~/ *.trash

O que a pessoa queria? Remover de seu diretório pessoal todos os arquivos terminados em trash. O que aconteceu? Este infeliz removeu todo o seu diretório pessoal e apagou os arquivos terminados em trash do diretório corrente. O causador de tudo isto foi o espaço em branco entre ~/ e *.trash. A pressa é inimiga da perfeição :-(
Na verdade o que ele queria era:

  rm -rf ~/*.trash

while ou for?
Vejamos:

  for f in `cat arquivo.txt`
  do
    ...
  done

Podemos fazer também assim:

  while read f
  do
   ...
  done < arquivo.txt

Na primeira opção, o resultado do comando `cat arquivo.txt`, pode ser uma linha mais longa do que o seu sistema pode tratar, o que pode trazer resultados indesejáveis.

sexta-feira, 9 de julho de 2010

''Bug da lentidão'' na internet é alarme falso - Será?

Lembra do bug do milênio, na passagem do ano de 1999 para 2000? Especialistas disseram que alguns computadores não conseguiriam fazer a mudança pois as datas eram representadas apenas pelos dois dígitos finais e voltariam para o ano de 1900. Pois bem, um novo bug estaria por vir e chegou a ser noticiado sem muito alarde pela imprensa americana nos últimos dias. A data seria esta quarta (5), dia em que 13 servidores que “traduzem” os pedidos de conexão de usuários a sites nos EUA passam a adotar um novo padrão de segurança, o DNSSEC (Domain Name System Security Extensions), o que poderia causar uma lentidão geral na internet.

Especialistas do ICANN (Internet Corporation for Assigned Names and Numbers, órgão responsável pela preservação da estabilidade da internet no mundo) e do NIC.br (Núcleo de Informação e Coordenação do Ponto BR), no entanto, tranquilizam os usuários. O risco de impactos na internet, tanto nos EUA como no Brasil, é mínimo.
Para entender o impacto do novo padrão de segurança, é preciso antes de tudo entender como funciona a internet que chega até o seu computador. Pense na internet como uma troca de cartas entre você e um amigo: é preciso que as informações cheguem até você pela carta, para só então você responder ao seu amigo. Essa troca de dados, na internet, é feita pelos “protocolos de comunicação”: o mais conhecido deles é o TCP/IP, que identificam a origem dos pedidos de conexão a sites e respondem com os dados da página.
Tanto os pedidos de envio como recebimento têm um tamanho padrão de arquivo (até 512 bytes). E cada endereço de internet, esse que você digita na barra do seu navegador, como www.uol.com.br, corresponde a um endereço IP diferente. São tantos que eles precisam de uma mínima organização, feita por um sistema de nome de domínio, mais conhecido como DNS.

Padrão mais seguro

Com o crescimento do número de golpes e endereços maliciosos, o DNS foi “melhorado”. O novo DNSSEC reduz o risco de manipulação de dados ou domínios forjados a partir de um sistema de resolução de nomes com um padrão de segurança mais rígido. O preço pago pelo padrão mais seguro é que a troca de dados dos protocolos de transporte fica mais pesada (até mesmo quatro vezes maior que 512 bytes).
Para grande parte dos usuários, isso não representa um problema. Mas para aqueles que possuem equipamentos de rede mais antigos, a resposta de dados “maior” poderá ser mal interpretada: firewalls, por exemplo, responsáveis pela segurança da rede, podem simplesmente bloquear o pacote de dados por ele estar "diferente" do padrão normalmente recebido, tornando impossível o acesso a alguns endereços.

Brasileiro pode ficar tranquilo

A adoção do DNSSEC vem acontecendo paulatinamente em todo o mundo, inclusive no Brasil. “O país é um dos líderes e já acumulou uma experiência considerável sobre o novo padrão”, explica Steve Crocker, um dos diretores do ICANN.
Nos EUA, a mudança para o padrão DNSSEC é liderada pelo ICANN, com auxílio do governo do país e a Verisign, e terá a primeira fase concluída nesta quarta (5).
 
Por aqui, o DNSSEC já está totalmente operante: o processo de adoção começou em junho de 2007 e  foi concluído em janeiro do ano passado, sem nenhum sinal de bug, conforme ressalta Frederico Neves, diretor de serviços e tecnologia do Nic.br. “No caso americano, o risco de uma pane geral é praticamente inexistente. O número de equipamentos de rede antigos, que poderiam rejeitar os pacotes de dados, é muito pequeno e eventuais problemas podem ser contornados facilmente pelo administradores de rede”, minimiza.
Crocker também tranqüiliza os usuários. “Doze, do total de treze servidores que traduzem o pedido de conexão, já estão fornecendo registros assinados em DNSSEC com chaves inertes ou “dummy”[que simulam trocas reais entre protocolos], que dão à comunidade bastante tempo para observar se haverá algum impacto. O décimo terceiro servidor será incluído amanhã e, apenas dois meses depois disso, é que a verdadeira chave passará a ser usada na raiz”, detalha o executivo.
Em suma, usuários da internet não irão perceber as mudanças e é muito pouco provável que tenham problemas para acessar sites nesta quarta.
Já administradores de rede que ficaram em dúvida sobre estarem preparados ou não para o novo padrão nos EUA, podem efetuar um teste, detalhado no site do DNS-OARC (Domain Name System Operations Analyses and Research Center). O teste exige o aplicativo dig, disponível para plataforma Windows (distribuição Bind) pelo link http://ftp.isc.org/isc/bind9/9.6-ESV/BIND9.6-ESV.zip.

Em tempo: os links de banda larga da OI/BrasilTelecom estão péssimos! E todos com problemas de DNS, especificamente! Empresas do governo também estão enfrentando problemas com seus proxies e firewalls! Não creio que tudo esteja resolvido...

sábado, 3 de julho de 2010

Comerciante vai prestar 900 horas de serviços à comunidade por pirataria

A 1ª Câmara Criminal do Tribunal de Justiça negou recurso interposto pela defesa do comerciante Luiz Antônio Butzen, condenado à pena de dois anos de reclusão, em regime aberto, pela prática de crime contra a propriedade intelectual - violação de direito autoral.

A pena foi transformada em 900 horas de prestação de serviços à comunidade, mais quatro salários-mínimos para entidade de sua cidade. Inconformado, o réu interpôs recurso de apelação para ver declarada nula a sentença, por ausência de fundamentação. Pediu, também, a absolvição ou, pelo menos, minoração do tempo da pena.

Conforme os autos, policiais civis com mandado de busca e apreensão foram até o estabelecimento comercial do apelante, na Comarca de Ibirama, e apreenderam 684 CDs e 187 DVDs, todos eles cópias de obra intelectual ou fonogramas reproduzidos sem a devida autorização dos titulares dos direitos autorais ou de quem os represente. A Câmara rejeitou as argumentações da defesa.

"O sistema adotado pelo Código Penal, acertadamente, possibilita ao julgador a faculdade controlada de escolher a sanção mais adequada ao delinquente sem esquecer a gravidade objetiva do crime ou as suas consequências particulares. Esse critério tem por base o estabelecimento de determinadas circunstâncias que tornam o fato mais ou menos grave, possibilitando que o Estado repreenda o crime na proporção adequada ao mal causado à sociedade”, esclareceu a desembargadora Marli Mossimann, relatora da matéria. A magistrada justificou os aumentos da pena que o juiz da comarca aplicou ao réu, como provenientes das desfavoráveis circunstâncias judiciais.

"Na condição de comerciante e no meio urbano em que vive, o apelante tinha amplo acesso às informações e campanhas divulgadas na mídia sobre a ilicitude de sua ação e, ainda assim, veio a praticá-la, merecendo a devida reprovação; circunstâncias e consequências do delito, que foram corretamente atribuídas como graves, autorizando a majoração da pena", acrescentou a julgadora. A decisão foi mantida integralmente por votação unânime. Butzen já ingressou com recurso para os tribunais superiores.