Salvando diff em HTML

Comece instalando as ferramentas: sudo apt-get install colordiff kbtin Agora você pode: diff arquivo1.txt arquivo2.txt | colordiff | ansi2html > diff.html Ou, com git: git diff | colordiff | ansi2html > gitdiff.html Você também pode salvar a saída de qualquer comando que retorne ANSI colorido: ls -lha –color | ansi2html > ls.html

Faça o Google falar por você

Ah, a internet! Você, usuário de Linux, comece pela preparação: sudo apt-get install curl mpg123 Depois crie o script falador: #!/bin/bash l=pt-BR if [ “$1” == “-l” ];then shift l=$1 shift fi curl -A “Falador” translate\.google\.com/translate_tts -d “tl=$l&ie=UTF-8&q=$@” |mpg123 -; Dê permissão de execução: chmod +x falador E divirta-se: ./falador “Onde está o futuro que… Continue reading…

Dúvida: URLs de categoria amigáveis

Um amigo me escreveu: Ola Elcio, vc tem algum tutorial de como reescrever a url para deixar mais amigável? no momento eu tenho isso http://www.meusite.com.br/index.php/category/produtos/produtos-especiais/ quero deixar assim: http://www.meusite.com.br/produtos-especiais/ Muito bem, vamos lá. O primeiro passo é, se você não quer que as categorias apareçam uma dentro da outra, não usá-las de forma hierárquica no… Continue reading…

Pare de usar FTP

Há mais de dez anos que meus processos de deploy, isto é, colocar um site ou sistema em produção, não usam FTP. Qualquer bom provedor, nacional ou internacional, oferece ferramentas muito mais eficientes para o deploy de sites e sistemas. E isso inclui desde pequenos sites em WordPress ou HTML estático até portais com milhares… Continue reading…

SQL Executioner

Olha que útil: SQL Executioner, um plugin WordPress que te dá uma tela no painel para a execução de SQL, substituindo para muita coisa o phpMyAdmin ou ferramentas semelhantes: Acabou de salvar um cliente da Visie que hospeda o site num provedor que não nos dá facilidades como acesso SSH ou um bom painel de controle…. Continue reading…

Pequena dica de Python: as classes são dinâmicas

Veja: >>> class Class: … def um(self): … return 1 … >>> c=Class() >>> c.um() 1 >>> def dois(self): … return 2 … >>> Class.dois=dois >>> c.dois() 2 >>> Class.tres=lambda self:3 >>> c.tres() 3 >>> Class.um=lambda self:’Um modificado.’ >>> c.um() ‘Um modificado.’ As classes em Python são completamente dinâmicas. Você pode acrescentar métodos quando quiser… Continue reading…

Pequena dica de Python: string formatting com locals()

Há muitas situações em que uma função faz cálculos e operações para obter valores e, ao final, deve montar uma string com esses valores. Nesta situação, muita gente monta um dicionário com os valores e usa string formatting para gerar a string a ser retornada. Por exemplo: # -*- encoding: utf-8 -*- import string,random template=”’Sugestões… Continue reading…

Módulo Python: gzip

O módulo gzip nos permite ler e escrever em arquivos .gz sem nenhum trabalho. Veja: >>> import gzip >>> f=gzip.open(‘teste.txt.gz’,’w’) >>> f.write(‘Hello!\n’) 7 >>> f.close() >>> $ gunzip teste.txt.gz $ cat teste.txt Hello! $ gzip teste.txt $ python Python 2.7.3 (default, Apr 20 2012, 22:39:59) [GCC 4.6.3] on linux2 Type “help”, “copyright”, “credits” or “license”… Continue reading…

Pequena dica de Python: __missing__

A partir do Python 2.5, ao estender dicionários, você pode dar a suas classes um método __missing_, que será executado toda vez que você tentar acessar um índice inexistente. Veja: class Counter(dict): def __missing__(self, key): self[key]=0 return self[key] Veja funcionando: >>> votos=[‘john’,’paul’,’john’,’john’,’ringo’, … ‘george’,’paul’,’ringo’,’ringo’,’john’, … ‘paul’,’john’,’george’,’paul’,’paul’, … ‘john’,’paul’,’john’,’ringo’,’paul’] >>> c=Counter() >>> for v in votos:… Continue reading…