Diário de bordo: Primeiro dia da viagem.

Estou de mudança para SP. Irei trabalhar na Plataforma Tecnologia. Para não ter que repetir a história várias vezes para familiares e amigos eu decidi fazer este post para auxiliar na minha preguicinha de contar e recontar. Os preparativos da mudança ficará para outro post, provavelmente quando o post sobre abertura de empresa sair. Vamos ao que interessa: a viagem.

Saímos de Aracaju/SE hoje, dia 21/01, às 5h00. Um pouco mais tarde do previsto pois colocar fralda e preparar as caixas de transporte dos gatos (Carvão e Duque) e da cadela (Cristal) foi um pouco cansativo. Ah, também acordamos 20 minutos atrasados e um pouco mais lentos que o normal devido ao sono.

Sim, levamos os nossos bichos. Tivemos que fazer toda a consulta médica, atualizar carteiras de vacinação, autorização de viagem, sedativo e comprar as caixas de transporte (os que precisavam). Quem conhece a minha esposa e meu filho sabe como eles gostam dos bichanos.

Como fomos nos despedir de meu cunhado aproveitamos e pegamos o caminho para Estância através do Mosqueiro. Caímos na estrada e ela estava muito boa. Apenas quando chegamos próximo a BR 101 que o asfalto ficou um pouco ‘remendado’.

Tínhamos duas opções em mente. Ir direto pela BR 101 ou ir para Salvador e depois pegar o Ferry Boat. Indo pelo Ferry Boat tínhamos a parte positiva de andarmos um pouco menos e seguirmos pela Linha Verde. Porém teria o trânsito de SSA, o tempo de espera para embarque mais o tempo da travessia. Acabamos optando por ir direto pela BR 101.

Durante o trajeto usamos o GPS do Android, ajudava apenas quando tinha internet, e o mapa do guia 4 rodas. Não é o mesmo tipo do que usamos (Eu e meu avô) quando viajamos pelo Nordeste. Este é mais simples. Sem as marcações das estradas pelos estados, etc.. Usamos o WhatsApp e o foursquare para atualizar os familiares e amigos.

O caminho foi tranquilo entre as cidades. Passamos por Cristinápolis, Entre Rios, Esplanada, Feira de Santana. Durante um pedaço teve alguns caminhões a mais. Mas nada que a ultrapassagem segura não resolvesse. Depois deste trecho tiveram algumas complicações que irei colocar nos pontos a ressaltar no final do post.

Eu havia feito o cronograma para ficarmos em Eunápolis/BA porém errei o cálculo e acabei fazendo como sendo a distância de Aracaju para Itabuna. Pelo trajeto percorrido achávamos que conseguiríamos chegar em Teixeira de Freitas/BA. Mas acabamos rodando 863 Km e ficando em Eunápolis mesmo. Como tomamos um café reforçado a la caminhoneiro em restaurante de estrada (cuscuz com carne ensopada e suco de laranja) não paramos para almoçar, assim aproveitamos o tempo para rodar mais. Tínhamos frutas e suco que ajudou a não ficarmos com fome e diminuir as pausas. Fizemos apenas 2 paradas (abastecimento, alongamento e sanitário).

Neste momento estamos em Eunápolis e em um hotel onde aceitou os nossos bichos. Claro que já havia sido feito o contato antes com eles. Os bichanos estão todos quietos e ainda com um pouco do efeito do sedativo. Chegamos por volta das 17h (horário de Aracaju).

Alguns pontos a ressaltar sobre o percurso:

  • Poucos caminhões durante o trajeto. Não sei se por ser sábado tinha menos ou se estavam usando mais o trajeto que passa por MG.
  • Alguns motoristas imprudentes que faziam ultrapassagens perigosas. Tinha gente que ultrapassava quem já estava ultrapassando e usando o acostamento. Lamentável. Em alguns casos quase houveram acidentes.
  • Encontramos dois carros envolvidos em acidentes. Um era uma caminhonete capotada. Pelo que vimos achamos que perdeu o controle em uma curva e o barranco de terra deve ter virado ela. Outro era um Honda Civic que adentrou a vegetação na beira da estrada e bateu em alguns arbustros.
  • Muita curva. Muita mesmo. Algumas eram abertas e conseguia-se manter a velocidade. Outras nem tanto. Era saindo de uma e entrando em outra. Agora você imagina ficar atrás de dois caminhões com produtos tóxicos níveis 5.1 e 8 nestas curvas? Muito #tenso. Pior ainda quando souber do próximo item.
  • O clima estava nublado próximo ao Abaís/SE. Teve uma chuva no início da Bahia mas foi tranquilo. Agora quando estávamos entre Itabuna e Eunápolis caiu o mundo. De tal forma que pensei em parar. Mas e o medo de uma carreta passar por cima? O acostamento era minúsculo, quando existia. Neste trajeto tinham alguns deslizamentos com pedras (isto, pedras! Rocha! Não era de terra não) e acostamento que tinha sido engolido. Tiveram momentos onde quase não conseguíamos ver direito o carro na nossa frente. Mas fizemos um grupinho (Eu, um gol branco e um 307) e fomos juntos durante um bom pedaço.

Um ítem que vale a pena contar é que ontem a noite quando fazíamos a última verificação no carro, fizemos toda revisão do carro e checklist, vimos que a luz de freio direito estava apagada. Imagina que horas foi isto!? 17h55!! Em um dia onde tinha Pré-Caju e a cidade parou! Conseguimos encontrar um lugar para trocar na Av. Explosão (aka Av. Edésio Vieira de Melo) na hora que o cara estava fechando o lugar. E, claro, já era depois das 18h. Mesmo se preparando e deixando tudo certo, ainda pode existir imprevistos ;)

Faz muito tempo que não pego estrada. A última vez foi a 5 anos e foi de moto. Sair para uma cidade vizinha ou ir a uma praia próxima não conta, ok!? Mas acho que o balanço do primeiro foi tranquilo. Agora é descansar e prepararmos para o próximo dia.

Algums fotos deste primeiro dia (apenas as do meu celular, por enquanto):

Killer Apps: TrueCrypt

Muitas pessoas não se preocupam tanto com a segurança de seus dados. Algumas acham que apenas a senha em seus computadores já é suficiente. Qualquer sistema operacional, mesmo bem configurado, é passível de acesso se o intruso tiver acesso físico a máquina.

Uma das opções que utilizo para guardar arquivos de configuração, senhas, etc é o Truecrypt que possui versões para Linux, Mac e Windows. E todas funcionam.

Já tinha conhecimento do aplicativo mas comecei a usá-lo após ter vindo a tona a notícia do bancário Daniel Dantas. Para quem não se lembra até o FBI não conseguiu quebrar o arquivo encriptado usando a ferramenta em questão.

Vamos as informações que nos interessam. Primeiramente o truecrypt pode encriptar uma partição toda ou criar um arquivo.

Atualmente uso um pendrive de 16GB onde utilizo um arquivo de 12GB encriptados e o restante do espaço para colocar outros dados públicos e o próprio programa para ser instalado em alguma máquina que eu venha a usar. Pode-se usar também a versão portátil do programa. Também utilizo um HD todo encriptado onde guardo backups de dados dos projetos de um cliente.

Ao criar o volume você pode escolher a opção standard ou hidden. A diferença é que o hidden cria um senha falsa que acessa um conteúdo exclusivo. Muito utilizado caso seja coagido a informar a senha de seu volume criptografo.

Existem vários algoritmos de criptografia, entre eles o AES e o Serpent. Ainda existe o hash do algoritmo que pode ser RIPEMD-160, SHA-512 e Whirlpool. Segurança levada a sério. Para efeito de otimização eu utilizo o AES SHA-512.

Caso escolha o formato de arquivo você irá escolher o lugar e o tamanho a ser usado (MB, GB). O tamanho do arquivo já será o final, não existe expansão automática.

O Truecrypt além da senha de acesso ao sistema criptografado também dá suporte a keyfile. Antes de terminar o processo de configuração você deve informar se a partição irá receber arquivos maiores de 4GB (eles já deixará seleciona a combo do filesyste: none, FAT, NTFS).

Após este processo é só esperar a criação do seu arquivo e pronto! Selecione o arquivo ou partição e mande montar em uma unidade do seu sistema operacional.

Dica para quem utiliza Linux. Script para montagem automática (altere os diretório como desejado):

truecrypt --fs-options=rw,sync,utf8,umask=0000 /path/to/truecrypt /path/to/mount

Alguns prints:


			

Convenções de código javascript

Indentação:
Utilize sempre espaços ao invés de tabs. Lembre-se que a configuração do SO ou do editor de um outro usuário pode deixar o código todo bagunçado.
Caso queira continuar usando o TAB, configure-o para que seja usado como soft tabs (utilizar espaços). Sobre a quantidade de espaços não se existe uma regra. Constuma-se usar entre 2 e 4.

Fechamento de escopo:
Ao fechar o escopo de uma função ou bloco use ‘{‘ sempre no final da linha. As vezes o seu código pode não se comportar da forma que você deseja, exemplo:

function teste() {
  return {
    dado: 'teste'
  }
}

console.log(teste()); // { dado: 'teste' }

function teste2() {
  return
  {
    dado: 'teste'
  }
}

console.log(teste2()); //undefined

Comentários:
Utilize sempre comentários de uma linha. Para remover código ou documentação que você deve usar comentários de várias linhas.

// Comentário de uma linha
/*
 * Comentário para
 * múltiplas linhas
 */

Ponto-e-vírgula:
Use sempre. O JS tenta facilitar o uso da linguagem porém acaba se perdendo em alguns lugares.

Nomenclatura:
Variáveis e nome de funções simples devem utilizar CamelCase (variação lowerCamelCase). As funções construtoras devem ser do tipo upperCamelCase).

Splat, Tap e hashrockets do Ruby 1.9

O @fnando realizou hoje uma palestra para testar a sua nova aplicação de apresentações com Node.js.

Dentro da abordagem do que mudou no Ruby 1.9 três coisas que acho muito legais:

Splat

Passagem de quantidade indefinada de argumentos. No Ruby 1.8 ele era aceito apenas como seu último argumento:

def teste (a,b,*c)
  puts c
end
teste(1,2,3,4,5) # => 3,4,5

No Ruby 1.9 é aceito em qualquer posição:

def teste (x,*y,z)
  puts y
end

teste(1,2,3,4,5) # => 2,3,4

TAP

O TAP é helping que sempre retorna o objeto passado para o bloco, mesmo se dentro do bloco existir outro tipo de retorno. Muito parecido como o returning do Rails.

Para exemplificar vamos ver como seria uma instanciação básica no ruby 1.8:

class User
  attr_accessor :name, :blog
end
user = User.new
user.nome = "Erich Kist"
user.blog = "http://erichkist.com"
user # => #<user:0x9495634 @name="Erich Kist" ,="" @blog="http://www.erichkist.com">

No Ruby 1.9 com o tap:

class User
  attr_accessor :name, :blog
end

user = User.new.tap do |u|
  u.nome = "Erich Kist"
  u.blog = "http://erichkist.com"
end
user # => #<user:0x9495634 @name="Erich Kist" ,="" @blog="http://www.erichkist.com">

Hashrocket

A criação de hash no Ruby 1.8 se dava desta forma:

social = {
  :twitter => "http://www.twitter.com",
  :linkedin => "http://www.linkedin.com"
}

No Ruby 1.9 já pode utilizar assim:

social = {
  twitter: "http://www.twitter.com",
  linkedin: "http://www.linkedin.com"
}

Quer saber mais ? Veja o PDF guia que ele montou: O que mudou no Ruby 1.9

Selecionar melhor mirror para atualizar repositório do Ubuntu

Muitas pessoas instalam o Ubuntu e ao realizar o upgrade de seus aplicativos acham a velocidade um pouco baixar. Porém, por padrão, o repositório configurado é o servidor principal nos EUA. A demora se por este motivo: distância e link mais usado.

Para resolver este problema existem vários repositórios espalhados pelo mundo e alguns no Brasil. Para quem usa o Ubuntu com Gnome é só ir em repositórios e selecionar “Escolher melhor servidor” e pronto. O aplicativo irá rastrear todos os repositórios da lista e ver qual o melhor, naquele momento, para você utilizar.

Para fazer isto acesse o programa Synaptic e vá no menu: Settings -> Repositories.

Abrirá uma janela onde na primeira aba, Ubuntu Software, tem um campo chamado Download from que ao clicar irá abrir uma lista com a opção: Other

Ao selecionar abrir uma nova janela com todas as listas de repositórios. Você poderá escolher um manualmente ou clicar no botão: Select best server. Todos os repositório serão pingados e no final será selecionado o melhor para ti.

Todo muito bonito e fácil para quem utiliza o Gnome. Porém e se estiver usando o Ubuntu Server, como realizar este ‘scanner’ de repositórios ? Fazendo pesquisas em forums não encontrei uma resposta, porém encontrei uma aplicação em python que realiza este procedimento. Vamos aos comandos:

# Necessário ter o git e o pacote python-setuptools.
# Caso não queira instalar o git, pode-se baixar o projeto em tar.gz e descompactá-lo.
# http://github.com/hychen/getfastmirror
sudo apt-get install --yes git-core python-setuptools

git clone http://github.com/hychen/getfastmirror.git;
cd getfastmirror;
sudo python setup.py install;
cd ..;
sudo rm -rf getfastmirror;
sudo getfastmirror update -t;

Dentro do github do getfastmirror existe informações sobre instalação e comandos a serem executados. Esperem que gostem. Hoje o getfastmirror não sai dos meus scripts de instalação de vps e desktops do ubuntu.