Quick script to fetch diff history [of a file] using svn
If you wanna see the whole history differences of some file in svn repository, you could use this:
$ svndiffhist file
Retrieving releases...
OK (found 17 steps)
## 908:895
diffs...
## 895:890
diffs...
## 890:880
... etc
Where svndiffhist is the following script:
function svndiffhist {
FILE=$1
echo -n "Retrieving releases..." >&2
releases=$( svn log $FILE | grep '^r[^a-z]' | cut -d " " -f1 |
cut -dr -f2- )
num_steps=$( echo $releases | wc -w )
echo -e "tOK (found "$num_steps" steps)" >&2
# Sort them in ascrending order
#releases=$( echo $releases | tr " " "n" | sort -n )
# Group them as A:B B:C C:D
releases=$( echo $releases | sed 's/ ([0-9]+)/:1 1/g' )
for EACH_STEP in $releases; do
#svn diff -r $EACH_STEP $FILE | gvim -
echo "## $EACH_STEP" >&2
svn diff -r $EACH_STEP $FILE
done
}
A REST client interface for Python
The py-restlib: [http://code.google.com/p/py-restlib] is a GNU GPL library that implements a REST client interface for Python.
Here it goes its Getting Started section:
Introduction
Py-restlib is supposed to be a simple REST client interface for python. But, it also claims that writing a python client to communicate with RESTful applications on the Web should be an easy task.
Getting Started
Download
Check out the latest release using svn:
svn checkout http://py-restlib.googlecode.com/svn/trunk/ py-restlib
svn checkout http://py-restlib.googlecode.com/svn/trunk/ py-restlib
If you want support for translating JSON format into python structures, download json-py package, and unzip it to json-py subdir.
Examples
The REST client
from restlib import *
users = Resource("http://hostname/api/users")
# List all users (GET /api/users)
users.get()
# List user where id==1 (GET /api/users/1)
users.get(1)
# List user where id==1 && foo=='bar' (GET /api/users/1?foo=bar)
users.get(1, foo='bar', ...)
# Create a new user (POST /api/users)
users.create(foo='bar', ...)
etc...
# You are also able to use it that way:
api = BaseResource("http://hostname/api")
api.users.get()
api.users.create(foo='bar')
etc...
The REST server (in this case a Ruby on Rails application)
class Api::UsersController < ApplicationController
protect_from_forgery :except => :create
# GET /api/users
def index
@users = User.find(:all) # FIXME: if param[id] - under construction
request.format=:json if request.format=:html
respond_to do |format|
format.xml {render
ml => @users.to_xml}
format.json {render :json => @users.to_json}
end
end
# POST /api/users
def create # FIXME: under construction
request.format=:json if request.format=:html
respond_to do |format|
format.xml {render
ml => params.to_xml}
format.json {render :json => params.to_json}
end
end
end
Python POST request
If you’re trying to send a python POST request with httplib, but it’s not working like example tells. Try this minor fix:
Here is an example session that shows how to “POST” requests:
>>> import httplib, urllib
>>> params = urllib.urlencode({’spam’: 1, ‘eggs’: 2, ‘bacon’: 0})
>>> headers = {”Content-Type”: “application/x-www-form-urlencoded”,
… “Accept”: “text/plain”}
>>> conn = httplib.HTTPConnection(”musi-cal.mojam.com:80″)
>>> conn.request(”POST”, “/cgi-bin/query”, params, headers)
>>> response = conn.getresponse()
>>> print response.status, response.reason
200 OK
>>> data = response.read()
>>> conn.close()
Thanks to wireshark and the working command below, so example above could be compared.
curl -d foo=bar http://localhost
vim – highlight search
Para setar seu vim (vi) para destacar o que procura (to highlight the searched text), use:
:set hlsearch
keywords: highlight destaque destacar search procurar procurado searched text string
vim – smart command completion
Para completar os comandos (:) com TAB (^I):
:set wildchar=<Tab>
:set wildmode=full
Compiz Fusion – linux ao estilo Mac OSX parte2
Em 2006, surgiram as primeiras aparições de um desktop 3D tangível no linux, com o XGL. http://www.dicas-l.com.br/dicas-l/20060606.php
Algum tempo se passou e muito se evoluiu…
O projeto Compiz juntou-se com seu fork Beryl e, agora, chama-se:
http://www.compiz-fusion.org
Criptografia em Linux, utilizando EncFS
Introdução (o que?)
Este tópico descreve o procedimento para criptografia de dados no GNU/Linux, utilizando o sistema de arquivos EncFS.
Público Alvo (pra quem?)
Este tópico deve ser útil para usuários de laptop.
Vantagens e Desvantagens de utilizar o EncFS
Modos de criptografia
TODO
Como utilizar
Instalação
Instalar os pacotes: (utilizar o gerenciador de pacotes de sua distribuição)
- FUSE (Filesystem in Userspace)
- EncFS
Criação do diretório criptografado
Na 1a tentativa de montar seu volume criptografado, ele é criado.
Existem várias opções de criptografia. Caso opte-se pela praticidade, siga os valores default.
$ mkdir ~/.pessoal.enc # dados criptografados (raw data)
$ mkdir ~/pessoal # ponto de montagem (dados legíveis)
$ encfs ~/.pessoal.enc ~/pessoal # na 1a tentativa de montagem, o volume criptografado é criado
Volume key not found, creating new encrypted volume.
Password: [password entered here]
Verify: [password entered here]
O diretório ~/pessoal, agora, é um ponto de montagem de ~/.pessoal.enc e todo o conteúdo que estiver dentro dele (~/pessoal) estará seguro quando offline.
Montando/Desmontando
Montando.
$ encfs ~/.pessoal.enc ~/pessoal
Password: [password entered here]
Diretório legível: (montado)
$ cd ~/pessoal
$ echo "hello foo" > foo
$ echo "hello bar" > bar
$ ln -s foo foo2
$ ls -l
total 8
-rw-r--r-- 1 vgough users 10 2003-11-03 21:44 bar
-rw-r--r-- 1 vgough users 6 2003-11-03 21:44 foo
lrwxrwxrwx 1 vgough users 7 2003-11-03 21:44 foo2 -> foo
Diretório criptografado: (de fato, armazenado)
$ cd ~/.pessoal.enc
$ ls -l
total 8
-rw-r--r-- 1 vgough users 6 2003-11-03 21:44 eEM4YfA
-rw-r--r-- 1 vgough users 10 2003-11-03 21:44 gKP4xn8
lrwxrwxrwx 1 vgough users 7 2003-11-03 21:44 i7t9-m,I -> eEM4YfA
Desmontando.
$ fusermount -u ~/pessoal
Criptografando os dados de seus aplicativos: Firefox, Thunderbird, etc.
Deseja ter criptografados seus emails, informações de calendário, conversas do instant messenger e informações de seu browser? Mova o diretório de configuração de cada aplicativo para dentro do volume criptografado e crie um link de volta. Como no exemplo abaixo:
Antes de iniciar os aplicativos (óbvio), mova seu diretório de configuração para dentro do volume criptografado e link-o de volta. Por exemplo:
cd ~
mv .mozilla ~/pessoal
ln -s ~/pessoal/.mozilla .
Faça o mesmo para mozilla-thunderbird, gaim, evolution, entre outros.
Ambiente Gráfico
Em ambiente gráfico, pode ser mais prático criar starers de aplicativos que, antes de inicializar o aplicativo em si, cheque se a unidade criptografada está montada. Caso não esteja, o próprio starter poderá montá-la, utilizando gtk2-ssh-askpass, x11-ssh-askpass ou zenity. Exemplo:
encfs --extpass=/usr/bin/zenity-encfs $ENC $MNT
http://gentoo-wiki.com/TIP_EncFS
Backup!
Uma vez que todos os dados estão concentrados no diretório criptografado ~/.pessoal.enc, torna-se fácil a realização de backup. Basta copiá-lo para uma mídia removível e, sim, o backup também estará criptografado.
Exemplos de como realizar o backup:
- Compactar o diretório
tar -czf ~/pessoal.enc.tgz ~/.pessoal.ence copiá-lo para um DVD (sugestão: k3b). - Utilizar alguma forma de backup diferencial/incremental (é copiado apenas o que alterou), sem sugestões…
Links externos
Segue: