O ÚNICO site que não é um blog, alojado no blogger. É assim tipo um é pá... um..., um coijo...

sexta-feira, março 20, 2009

Fritzl

Sim, aquele gajo que manteve a filha presa na cave durante 20 anos. Aparentemente vai para um manicómio. Creio ser um fim injusto. Uma sentença que me parece vagamente justa é prisão perpétua mas numa cela do tipo solitária mas com um gajo de 2,5m de altura que já não vê mulheres há muito tempo...
A justiça humana tende a revelar uma terrível falta de imaginação. Ei, isto quase que dava uma frase motivadora.

«A justiça humana tende a revelar uma terrível falta de imaginação.»

Naa, não me parece.

Toques para telemóvel

Mais um toque de telemóvel que o irá levar a ser amado ou a apanhar uma tareia
leão marinho

quinta-feira, março 19, 2009

Phishing

Escrevi um texto sobre phishing aqui (no outro blog/site/portal/coisa que tenho mantido).
Como também queria ter aquilo aqui mas sou preguiçoso demais para escrever tudo de novo, fica aqui o link (aquele que está ali em cima... se for preguiçoso demais para ir até ali a cima, aqui fica outro link para o mesmo artigo sobre phishing).

domingo, março 15, 2009

Frase Motivadora

«Um louco num lugar de topo é como qualquer homem no cimo de uma montanha: tudo
lhe parece pequeno e ele próprio parece pequeno para todos os outros.»

sábado, março 14, 2009

Toques para telemóvel

Mais um toque para mensagem:
Arrow sound
Tivemos de alugar um Necromancer para trazer este de volta do sub-mundo
Bater à porta

sexta-feira, março 13, 2009

A minha alma está parva

Então não é que os wallpapers do ubuntu já ultrapassaram (em popularidade) as frases motivadoras?

É natural que não haja nenhum esconjuro, ali não há nada para esconjurar.

Interrogo-me se o número de downloads do ubuntu também terá aumentado...

segunda-feira, março 09, 2009

CSS cross-browser inline-block

Ora bem, como estou sempre a esquecer-me disto e (vá-se lá saber porquê!) nunca me lembro de pôr a fonte desta cena nos favoritos, aqui fica um fix css para ter inline-block a funcionar em todos os browsers (mesmo aqueles que não suportam o inline-block):

Para aqueles que não perceberam nada do que foi dito: esqueçam isto vão mazé ver os wallpapers do ubuntu, cheios de curvas, que está a ter uma saída do caraças.

Isto foi encontrado aqui


.inlineblock li { display:-moz-inline-box; -moz-box-orient:vertical;
display:inline-block; vertical-align:top;
word-wrap:break-word; }
* html .inlineblock li { display:inline; }
* + html .inlineblock li { display:inline; }
.inlineblock li > * { display:table; table-layout:fixed;
overflow:hidden; }
ul.inlineblock{ list-style: none inside none;padding: 0px;}

Toques para telemóvel

Mais um toque de telemóvel que irá fazer furor
Entrar na sala

domingo, março 08, 2009

sábado, março 07, 2009

Toques para telemóvel

Directamente da forja este magnífico toque para SMS
Morse:
Download

sexta-feira, março 06, 2009

Toques para telemóvel

Vamos lá mais uma vez tentar recuperar esta coisa.

Aqui está a nova edição do toque Darth Vader(mp3).

Frase Motivadora

«Em qualquer conjunto dado de circunstâncias, o curso correcto de acção é
determinado pelos acontecimentos subsequentes.»

segunda-feira, março 02, 2009

Backups à preguiçoso II

Ora viva!
Cá estou eu mais uma vez a dar um truque que poucas pessoas vão usar. Da última vez mostrei um script que fazia backups de websites geridos por cpanel que quase podia ser usado por pessoas que não percebiam nada de python. Agora vou mostrar a versão 2.0 do mesmo script, que pode ser usado por qualquer pessoa que saiba escrever. Sim, já não é preciso olhar para o código. A não ser, claro para o copiar, colar e guardar no computador.

Portanto, basta copiar o código python, e guardar num ficheiro de texto ao qual podem dar qualquer nome, desde que tenha extensão .py (para o windows. Em unix/linux pode ser qualquer coisa). Depois é só fazer um ficheiro de texto chamado "cpanel.accounts.txt" e atirar lá para dentro os dados das contas. Vamos ver um exemplo:

Ficheiro cpanel.accounts.txt-----------------------------


username=OMeuSite
password=AMinhaPass
domain=OMeuDominio
folder=APastaOndeVouGuardarOBackup
host=127.0.0.1:1234
dbs=soTemUmaDB
replace=yes

username=OMeuSite2
password=AMinhaPass2
domain=OMeuDominio2
folder=APastaOndeVouGuardarOBackup2
host=127.0.0.1:1234
dbs=dbPrincipal,dbSecundaria
replace=yes

Ficheiro cpanel.accounts.txt-----------------------------

Aqui vemos um exemplo simples de um ficheiro de contas com duas contas. Reparem que as várias contas têm de estar separadas por uma linha em branco e tem de existir uma linha em branco no fim do ficheiro. De resto é quase tudo igual à versão anterior, só existem dois parâmetros novos:

"replace": Serve para decidir se vamos guardar todos os dias novas cópias de backups ou se queremos substituir a cópia de ontem. Neste caso decidi substituir, para poupar espaço no disco.

"dbs": Serve para indicar o nome das bases de dados presentes na conta e que devem ser guardadas. As várias bases de dados são separadas por virgulas. No exemplo acima, a primeira conta só tem uma base de dados e a segunda conta tem duas.

Podem por uma centena de contas neste ficheiro. Para que funcione, basta estar junto ao programa python do qual se segue o código. Devem copiar sem qualquer alteração para um ficheiro de texto tal como disse mais acima.

Ficheiro cpanel-backup.py-----------------------------

#!/usr/bin/env python
from os import system
from datetime import date

def dbBackup(db, url, folder, replace = True):
db = db.strip()
download = "%s.sql.gz" % db
system("rm %s/%s" % (folder, download))
system("wget -P %s %s/getsqlbackup/%s" % (folder, url, download))
if not replace:
today = date.today()
newfile = "db-%s-%d%d%d.sql.gz" %\
(db, today.day, today.month, today.year)
system("rm %s/%s" % (folder, newfile))
system("mv %s/%s %s/%s" %(folder, download, folder, newfile))

def homeBackup(username, url, folder, replace = True):

if replace:
download = "home-%s.tar.gz" % username
else:
today = date.today()
download = "home-%s-%d%d%d.tar.gz" %\
(username, today.day, today.month, today.year)

system("rm %s/%s" % (folder, download))
system("wget -P %s %s/getbackup/%s" %\
(folder, url, download))

def doBackup(account):

url = 'http://%s:%s@%s' %\
(account['username'], account['password'], account['host'])

if account['replace'] == 'yes': replace = True
else: replace = False

for db in account['dbs'].split(','):
dbBackup(db, url, account['folder'], replace)

homeBackup(account['username'], url, account['folder'], replace)


def getAccounts(infile):
accounts = []
f = open(infile, 'r')
account = {}

for line in f:
line = line.strip()
if line == '##': break
if not line:
if not account == {}:
accounts.append(account)
account = {}
if line and not line[0] == '#':
pos = line.find('=')
key = line[0:pos].strip()
value = line[pos+1:].strip()
account[key] = value
f.close()
return accounts

if __name__ == '__main__':

accounts = getAccounts('cpanel.accounts.txt')
for account in accounts:
doBackup(account)
Ficheiro cpanel-backup.py-----------------------------

sábado, fevereiro 28, 2009

Fumar mata...

Descobri o que fazer àquelas pessoas que fumam em qualquer lado sem se preocupar se estão a matar quem está à volta. Fica aqui o truque:

sábado, fevereiro 14, 2009

Frase Motivadora - Especial Dia dos Namorados

Ora cá estamos nós no meu dia favorito para escrever frases motivadoras... logo que publico o post de frases motivadores do dia dos namorados, é logo uma enchente de choro e suicídios que até sinto o planeta agradecer-me por o ter livrado de mais alguns macaquinhos que o estão a tentar destruir.

Mas chega de divagações, aqui vão as frases de hoje. Sim, porque hoje vão ser três. Pensem nelas como uma sequência... frases relacionadas com vários estágios do relacionamento entre dois seres humanos (sejam lá de que sexo forem... homens... mulheres... ou qualquer outra coisa).

«Um malmequer de um amante significa mais do que uma orquídea de um amigo.»

«Mais vale um seixo dado por amor que um diamante dado por dever.»

«Aquele que ressona adormece primeiro.»

quarta-feira, fevereiro 11, 2009

Frases do Oogway

Fica em inglês porque traduzido não tem piada nenhuma:
"Yesterday is history, tomorrow is mystery, but today is a gift, thats why it's called present"

segunda-feira, fevereiro 09, 2009

Wallpapers do Ubuntu

Quem não gostar de linux, prepare-se para mudar radicalmente de opinião.

Agora, com estes dois wallpapers, vou mostrar porque o lema do Ubuntu é "Linux para seres humanos"


Seguem-se os wallpapers...


Nota: vejam lá se conseguem encontrar o logotipo do Ubuntu ;)





sábado, fevereiro 07, 2009

Já vim tarde!

Olha, mas fica aqui o post. E vão 3 anos, ainda é pequenino. Vamos ver como vai ser quando crescer.

sexta-feira, fevereiro 06, 2009

Aniversário

E pronto passou-se mais um ano de verborreia sem sentido.
Este ano vamos ter uma festa de arromba: vamos ter um grupo de gaitas de foles, uma enorme travessa de haggis e tudo bem regado com o melhor hidromel.
Melhor que isto só aquelas paradas de aniversário das estações privadas de televisão ou ver apresentadores de noticiário a cantar...

terça-feira, fevereiro 03, 2009

Backups à preguiçoso

Provavelmente poucas pessoas irão achar isto útil, portanto aqui vai:

Hoje andei à procura duma forma fácil de fazer backups dos meus websites. Aquilo tem um sistema de gestão bem conhecido, o cPanel. Mas ele obriga a fazer tudo à mão. O problema é que além de ter de me lembrar de fazer backups todos os dias (ou pelo menos de tempos a tempos) ainda por cima já vai em 3 sites e há mais um na calha.

Após uma curta pesquisa, encontrei este tutorial para fazer backups de websites com cPanel usando php mas não gostei (passwords em texto no servidor + requer ir lá buscar o backup à mão + apagar ou ter um servidor ftp para onde enviar o backup).

Portanto, arranjei a minha forma de fazer a coisa, mas com a minha linguagem interpretada favorita: Python!

Aqui vai o código com comentários úteis (mais fáceis de ver num editor com coloração de sintaxe).
Mesmo quem não perceber nada de python deve conseguir costumizar este script. Caso não consiga, pode esconjurar-me à vontade.
Ah, mais uma coisa: isto foi feito para funcionar em linux/unix. Quem estiver a usar o windows que se lixe pode tentar usar o cygwin, uma máquina virtual ou arranjar uma versão do wget para windows.

Para se conseguirem esquecer de vez que fazem backups, basta (mais uma vez, no linux/unix) criar uma tarefa cron para que o computador faça os backups sozinho.

Segue-se o código:


#!/usr/bin/env python

# primeiro, vamos importar uma bibliotecas que precisamos
from os import system
from datetime import date

# vamos buscar a data de hoje...
# porque o nome do ficheiro de backup é feito com a data de hoje
today = date.today()


#------------------------------
# aqui COMEÇAM as configurações
#------------------------------

# aqui vai o IP e porta do alojamento do cpanel
# podem copiar da url que usam para aceder ao cpanel
host = '12.345.67.89:2082'

# aqui é a pasta onde vão ficar os backups
backupsFolder = '/home/eu/backups'

o_meu_site = { # os dados sobre uma das contas
'username' :'o_meu_site',
'domain' :'o_meu_site.algures.pt',
'password' :'a-minha-super-password'}

o_site_do_meu_vizinho = { # os dados de outra conta
'username' :'o_site_do_meu_vizinho',
'domain' :'o_site_do_meu_vizinho.algures.pt',
'password' :'a-super-password-do-meu-vizinho'}

# vamos juntar as contas numa lista para fazer backups de tudo
accounts = [o_meu_site, o_site_do_meu_vizinho]

#-----------------------------
# aqui ACABAM as configurações
#-----------------------------



# ok, agora vamos percorrer a lista de contas
for account in accounts:
# indicamos a pasta de destino do backup
destinationFolder = '%s/%s' % (backupsFolder, account['username'])

# agora vamos ver onde está o backup
remoteURL = 'http://%s:%s@%s' % (account['username'],
account['password'], host)

# e vamos escrever o comando que vai lá buscar as cenas
wget = "wget -P %s %s" % (destinationFolder, remoteURL)

# primeiro vamos buscar o backup da base de dados
dbfile = 'getsqlbackup/%sdb.sql.gz' % account['username']
system("%s/%s"%(wget, dbfile))

#agora vamos buscar o backup da "home directory"
homefile = 'getbackup/backup-%s-%d-%d-%d.tar.gz' % (
account['domain'], today.month, today.day, today.year)
system("%s/%s"%(wget, homefile))

#e pronto, tá feito!

eXTReMe Tracker