Eternize seu blog/site com o Wayback Machine

3 Novembro, 2009

Ter seu blog visto por muitos e  muitos verem seu blog por dia é sonho de muitos blogueiros. Mas seu blog cresce, muda e o servidor que ele está entra em combustão espontânea.  E tudo que existia antes disso se perde para sempre. Não mais.

Na realidade não é nenhuma novidade o que o Wayback Machine faz. A novidade é como fazer com que seu site, assim como o iCaju, consiga ser perpetuado através dessa, vamos dizer, ferramenta. Para quem ainda não sabe o Wayback salva as páginas de seu site/blog em seus servidores e de tempos em tempos ele salva mais uma página.

Isso é interessante para saber como os sites evoluíram e como eram ruins os designers. Uma prova cabal disso é o nosso tão querido Google.

Vamos ao que interessa. Como conseguir que seu site/blog seja eternizado nos servidores do Wayback Machine.


Material do Minicurso de Python

2 Novembro, 2009

Dia 22 de outubro, uma quinta-feira, pela primeira vez na minha vida eu fiz o papel de professor em uma sala de aula. Foi no IFBA de Dias D’Ávila durante a Semana Nacional de Ciência e Tecnologia, com duração prevista de 8 horas. Pra vocês verem como eu estou enrolado, prometi aos alunos(as) que também postaria aqui o material da aula e só hoje o estou fazendo. =/

O livro usado na apresentação foi o “Python para Desenvolvedores” do Luiz Eduardo Borges, cujo download pode ser feito no site do autor, inteiramente de grátis, afinal o trabalho foi licenciado sob CC-BY-NC-SA. Não é um livro de lógica, mas ainda assim é fácil de entender conceitos novos, como programação funcional, ou mesmo programação orientada à objetos.

A leitura é leve e agradável e o livro não aprofunda muito em áreas onde poderia causar confusão nos novatos. É uma boa fonte se você está apenas começando no Python, mas é importante que você não fique preso(a) a este livro, há muito mais coisas para aprender em Python e aquilo ali não é nem a metade.

O slide usado na aula pode ser visualizado aqui. Se você quiser baixar o arquivo basta usar o botão “Get File” lá na página do slideshare. Há muitos slides sobre Python, com os mais variados focos, no slideshare, assim como há diversos livros (impressos ou não) sobre a linguagem. Leia o resto deste post »


Giveaway of the Day: Utilitários grátis

20 Outubro, 2009

Quando alguém precisa de um programa apenas uma coisa vem à mente dela: Quem tem o serial. Ou crack, ou keygen. Algumas poucas pessoas pensam se tal programa é free. Menos gente ainda pensa onde vende tal programa. Nesse ponto que vou cutucar.

Na próxima vez que você precisar de um software vale a pena consultar o Giveaway of the Day . Lá é disponibilizado programas de graça. Mas ninguém dá nada de graça! Digo que dá sim. O lado ruim é que o programa só pode ser baixado e instalado num prazo de 24h, ou não.

Giveaway

A grande maioria de produtos são utilitários. Alguns muito úteis, outros nem tanto. As vezes rolam alguns jogos, xadrez, corrida, RPG, nada de Crysis. Programas famosos até agora não vi.

O projeto consegue existir não por causa das empresas que dão as licenças, mas sim pelo pagamento das licenças pelo site.  Contudo não fica claro de onde vem o dinheiro, da Santa Ifigênia é que não é. (Alguém).

Mas o site não é só isso, nele também tem avaliações dos usuários além da enorme lista de programas e suas descrições para futuras consultas.

Há também uma sessão de games e outra para freewares. Essa ultima particularmente me chama atenção. No Linux, mais precisamente em algumas distros,  para pegar um software basta ir no repositório. Já o pessoal do Windows não tem o repositório. Mas com essa lista enorme de programas free e com links para o download, a vida no “Janelas” fica bem mais fácil.

Se você faz softwares, tem uma empresa que faz, você pode mandar seu programa para eles é só entrar em contato para saber detalhes.

As vezes aparece um software não tão bom nem útil, mas vale a pena, principalmente aqueles que querem sair da ilegalidade(eu!).


Varchar ou não varchar? Eis a questão

14 Outubro, 2009

Aprender a usar sistemas gerenciadores de banco de dados não é uma coisa tão difícil. De longe parece um bicho de sete cabeças, mas depois que você olha mais de perto percebe que na verdade ele é só um bicho de sete tabelas. Você vai colocando um campo aqui, um outro ali, cria meia dúzia de chaves primárias, uma dúzia de chaves estrangeiras e está pronta a estrutura básica do seu banco.

Por mais increça que parível, uma das etapas mais simples é a que me deixa com mais dúvidas: definir o tamanho dos campos. Assim como quando se está programando em uma linguagem qualquer, cada tipo de variável tem um tamanho máximo e você pode especificar que quer usar um tamanho menor e assim reduzir o desperdício de memória no seu programa.

O tipo varchar, que ilustra o título deste artigo, armazena 65536 (2^16) bytes de caracteres, o que para armazenar o nome de uma pessoa é muito, ao passo que quando estamos falando de textos extensos esse limite pode ser facilmente superado. Um link de blog, por exemplo, possui em média uns 100 caracteres. Resolvido, varchar de 100, certo? Nada! Há relatos de URL’s com 2063 caracteres. Este site “encompridor” de URL’s gera links com mais de 3600 caracteres, e o pior, que funcionam em quase todos os browsers! Só não funcionam no Internet Explorer, que tem uma limitação de 2083 caracteres para URL’s. Leia o resto deste post »


Enquete:

13 Outubro, 2009

Dica: Filtros “escondidos” do Mercado Livre

12 Outubro, 2009

E provável que a cada 5 pessoas que leem isso, 2 já compraram no Mercado Livre. Se você foi inteligente, deve ter feito uma bela pesquisa para achar o melhor preço, melhor vendedor e melhor produto. Contudo há alguns artificios para facilitar a busca.

Leia o resto deste post »


Resenha: Epson Stylus Office TX300F

10 Outubro, 2009

Meu antigo scanner Canon CanoScan D646U EX estava com o vidro trincado desde que eu tentei desmontar para limpar ele por dentro (ele está todo empoeirado por dentro, não sei como aconteceu) isso a uns 3 anos atrás. Nunca comprei outro scanner porque não precisava, ele funcionava bem no Windows XP, era só evitar a área do scanner depois da parte trincada e sem problemas.

Começo deste ano troquei de computador e percebi que o scanner não funcionava de jeito nenhum no Windows Vista Home Premium x64. Tudo bem, tudo que eu tinha de fazer era pegar meu computador com Windows XP, ligar e escanear usando o VNC. Certo, certo… não era das uma coisa mais prática, mas funcionava. Até ai tudo era 975 maravilhas, (seria 1000 se não fosse o vidro do scanner, ha!) quando outro problema aconteceu: o cartucho de tinta colorido original da HP Photosmart 7260 deu problema após uma recarga, logo na primeira recarga.

Precisava comprar um cartucho novo, que custaria R$120 (105+frete) na melhor das hipóteses (138 reais nos mercados daqui + gasolina). Com esse preço atrativo, fui olhar o preço de uma impressora nova e lembrei que precisava de outro scanner, uma vez que além de não ser lá muito economico ligar um computador inteiro só para escanear duas ou três folhas, o scanner também estava trincado. Então olhei o scanner mais barato, o HP ScanJet G2410, custa uns R$250. (Por sorte não comprei esse scanner… um amigo que comprou um scanner HP na mesma época está xingando os drivers e a mãe de quem os programou.) Nisso pensei em comprar uma multifuncional.

De fato não é muito caro, mas se eu fosse comprar esses dois itens, daria cerca de R$ 370, enquanto a multifuncional mais barata, sairia por R$ 220 + frete.

Então olhei os preços das multifuncionais. Comecei olhando as mais baratas, esses modelos em especifico:

  • HP DeskJet F4280, que com uma pesquisada melhor descobri que os drivers são bugados, o scanner é mais ou menos (o que poderia não me atender) e aparentemente usava os mesmos cartuchos caríssimos da HP Photosmart 7260;
  • Epson Stylus TX115 e TX105 que são bem interessantes, porém parecem ser modelos mais antigos e pode ser difícil achar os cartuchos (não sei que cartuchos usam, não olhei).

E nisso gastei mais um tempo olhando multifuncional até que achei a Epson Stylus Office TX300F e a Epson Stylus TX400, que pareceram me atender melhor. Elas são bem similares, porém existem pequenas diferenças: a TX400 possui um LCD colorido não-touchscreen minúsculo e não possui Fax, enquanto a Epson Stylus Office TX300F possui fax e scanner com ADF, o que é uma mão na roda para escanear bastante documentos ou se tu tem preguiça de ficar abrindo e fechando o scanner toda hora.

Não que o Fax seja muito importante nos tempos de email. Para ser bem sincero, o fax não fez a menor diferença para minha escolha, acabei escolhendo a Epson Stylus Office TX300F pelo scanner com ADF. Compra feita. Produto entregue. Vamos ao review.

StylusTX300F_600 Leia o resto deste post »


Glossário virtual em Python e Glade – parte I

8 Outubro, 2009

Mês passado fiz um trabalho de equipe no curso técnico para a disciplina Inglês Técnico – III, que era escrever um glossário com termos relacionados a software, e outras equipes pesquisariam outros temas. Além disso era necessário desenvolver uma forma de visualizar os termos no computador, e o resultado foi este programinha em Python e Glade:

É bem simples, mas como muita gente que eu conheço tem curiosidade em relação ao Python e ao Glade este post será o primeiro mostrando passo-a-passo como fazer um programa parecido com o do meu trabalho. Parecido porque vou tentar melhorar o código do atual pra não passar vergonha aqui nas interwebs. :)

Se você está no Linux, basta instalar o Glade e provavelmente já terá tudo que precisa pra começar instalado aí. Quando muito falta instalar o PyGTK. Caso esteja no Windows, a coisa complica um pouco: você precisa baixar o interpretador Python, o GTK, o Glade (link para a versão sem GTK embutido), o PyGTK, PyGObject e o PyCairo e instalá-los (nessa ordem).

Dica: a instalação do GTK pelo arquivo do link é um porre, então instale o Geany, um IDE peso-leve, que fará essa tarefa por você e já serve para escrever os códigos que criaremos. Além de Python ele suporta várias outras linguagens, como Pascal, C, C++, Ruby, Java, C#, PHP, etc. Se correu tudo bem até aqui está pronto o seu ambiente de desenvolvimento.

Vamos para o código! O projeto usa como forma de armazenamento arquivos no formato CSV, permitindo assim abrir e editar o glossário como uma planilha do Excel ou do Calc. Felizmente o Python já traz na sua biblioteca padrão um módulo capaz de gerenciar a leitura e gravação desses arquivos. No entanto, estou repensando o código para que ele fique mais modular, de forma que você possa mudar essa característica sem ter de mexer no resto do código.

Apesar de existir uma especificação para o formato CSV é necessário apelar para auto-detecção ou definir o dialeto que será usado porque nem todos os programas usam os mesmo símbolos na hora de trabalhar com esses arquivos. Como auto-detecção é algo sujeito a falhas vamos definir o nosso próprio dialeto CSV. O que é feito na seguinte classe: (salve-a em um arquivo chamado “arquivos.py” que será o módulo de acesso aos arquivos do nosso programa)

Veja o código aqui. O WordPress estava bagunçando a indentação toda. =/

  • “delimiter” é o caractere usado para separar os campos de um registro. No nosso caso os registros possuem dois campos: termo e descrição;
  • “quotechar” é o caractere usado para aspas;
  • “doublequote” quando verdadeiro (True) coloca dois quotechars seguidos caso no meio de um campo exista um quotechar, por exemplo: “aspas duplas são assim”", ficaria assim “aspas duplas são assim”"”;
  • “skipinitialspace” quando verdadeiro determina que o parser deve ignorar espaços no começo dos campos;
  • “lineterminator” diz qual o padrão usado para quebrar a linha, ou seja, indicar o fim do registro. O formato padrão de quebra de linha no *nix é “\n” mas se a IETF manda eu colocar o padrão do Windows eu coloco :P ;
  • “quoting” indica o comportamento do módulo quanto ao uso das aspas. csv.QUOTE_ALL significa que todos os campos do registro devem estar entre aspas;
  • Por fim, a última linha registra o dialeto que acabamos de criar para ser usado pelo módulo na interpretação e gravação do arquivo.

Pra não tornar a leitura muito cansativa vou encerrar este artigo por aqui. Na próxima “aula” finalizaremos a parte que mexe com os arquivos e começaremos a desenhar a interface no Glade. Quaisquer dúvidas estou à disposição nos comentários. Até lá!

import csv

class DialetoCSV(csv.Dialect):
”’Define o dialeto usado nos arquivos CSV contendo os glossários seguindo
a especificação RFC4180.”’
delimiter = ‘,’
quotechar = ‘”‘
doublequote = True
skipinitialspace = True
lineterminator = ‘\r\n’
quoting = csv.QUOTE_ALL

csv.register_dialect(‘default’, DialetoCSV)