Skip to content

Instantly share code, notes, and snippets.

View scardine's full-sized avatar

Paulo Scardine scardine

View GitHub Profile
@scardine
scardine / aescipher,py
Created September 21, 2012 06:26
AESCipher
class AESCipher:
def __init__( self, key ):
self.key = key
def encrypt( self, raw ):
raw = pad(raw)
iv = Random.new().read( AES.block_size )
cipher = AES.new( self.key, AES.MODE_CBC, iv )
return base64.b64encode( iv + cipher.encrypt( raw ) )
@scardine
scardine / bootstrap.py
Created August 15, 2012 23:17
python script bootstrap
import logging
import argparse
import datetime
import sys
FORMAT = '%(asctime)-15s [%(levelname)s] %(message)s'
LOGLEVEL = logging.INFO
parser = argparse.ArgumentParser(description='Program descriptiom.')
parser.add_argument('-sf', '--someflag', const=True, action='store_const', help='Option description')
@scardine
scardine / log_transacao_srph.sql
Created August 3, 2012 18:45
example audit trigger for django model that inserts to another model
CREATE OR REPLACE FUNCTION log_transacao_srph() RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'UPDATE' THEN
INSERT INTO sla_mudancastatus (datahora, numero_os, anterior, novo, abertura, orcamento, aprovacao, emissao, cancelamento, reabertura, operador)
VALUES(NOW(), NEW.numero_os, OLD.status_viagem, NEW.status_viagem, NEW.abertura, NEW.orcamento, NEW.aprovacao, NEW.emissao, NEW.cancelamento, NEW.reabertura, NEW.operador);
RETURN NEW;
END IF;
IF TG_OP = 'INSERT' THEN
INSERT INTO sla_mudancastatus (datahora, numero_os, anterior, novo, abertura, orcamento, aprovacao, emissao, cancelamento, reabertura, operador)
VALUES(NOW(), '', 'ABE', NEW.status_viagem, NEW.abertura, NEW.orcamento, NEW.aprovacao, NEW.emissao, NEW.cancelamento, NEW.reabertura, NEW.operador);
@scardine
scardine / cpf_cnpj.php
Last active October 6, 2015 14:38
CPF/CNPJ Validation
/*
O algoritmo para validação do CPF e CNPJ é
bem conhecido, portanto a preocupação de tornar
o código legível foi sacrificada em prol de tornar
o código compacto.
Ambas as funções recebem uma string e retornam
TRUE ou FALSE dependendo do dígito de verificação
bater ou não.