Wolf Clan Brasil

sexta-feira, 9 de setembro de 2011

Automatizando Backups no Rails 3 com astrails-safe e whenever

Uma das tarefas vitais é o backup do banco de dados e dos arquivos de uma aplicação.
Esta tarefa as vezes pode ser complicada e cansativa, para nossa sorte existe duas gems que tornam essa tarefa extremamente simples, a astrails-safe e a whenever, neste post vou exemplificar a utilização destas ótimas gems que oferecem recursos muito requisitados como backup remoto.

Uma das forma de realizar backups automáticos do banco de dados é usar um script mysql dump junto com um cronjob.
porem configurar o crontab não é uma tarefa simples, para facilitar esta configuração utilizaremos a gem whenever que tem uma sintaxe simples para criação de cron jobs.

e utilizaremos também a gem astrails-save, que é um sistema para backups não só do banco de dados mas também dos arquivos e com suporte a CDN's como o Amazom S3 e o Rackspace Cloud Files.

no caso estou utilizando Rails 3.0.4 e Ruby 1.8.7. o primeiro passo é adicionar as linhas abaixo ao Gemfile.


gem 'whenever'
gem 'astrails-safe' 


vamos primeiro analisar o funcionamento do astrails-safe, sua utilização é simples:


astrails-safe [OPTIONS] CONFIG_FILE

as [OPTIONS] são:
  -h, --help           Mostrar a ajuda
  -v, --verbose        executa todos os backups configurados!
  -n, --dry-run        apenas testa, não executa.
  -L, --local          Fazer somente backups locais, ignorando os remotos.
 
o CONFIG_FILE é um arquivo .rb eu criei o arquivo "safe_config.rb" no diretório config.
abaixo tem um exemplo retirado da documentação da gem, com algumas partes traduzidas.




safe do
  local :path => "/backup/:kind/:id"

  s3 do
    key "...................."
    secret "........................................"
    bucket "backup.astrails.com"
    path "servers/alpha/:kind/:id"
  end

  cloudfiles do
    user "..........."
    api_key "................................."
    container "safe_backup"
    path ":kind/" # this is default
    service_net false
  end

  sftp do
    host "sftp.astrails.com"
    user "astrails"
    # port 8023
    password "ssh password for sftp"
  end

  gpg do
    command "/usr/local/bin/gpg"
    options  "--no-use-agent"
    # symmetric encryption key
    # password "qwe"

    #chave pública GPG (deve ser conhecida com GPG, ou seja, estar no chaveiro
    key "backup@astrails.com"
  end

  keep do
    local 20
    s3 100
    cloudfiles 100
    sftp 100
  end

  mysqldump do
    options "-ceKq --single-transaction --create-options"

    user "root" #seu usuário
    password "............" #sua senha
    socket "/var/run/mysqld/mysqld.sock"

    #liste todas as tabelas que deseja efetuar o backup
    database :blog
    database :servershape
    database :astrails_com
   # você pode ignorar algumas tabelas
    database :secret_project_com do
      skip_tables "foo"
      skip_tables ["bar", "baz"]
    end

  end

  svndump do
    repo :my_repo do
      repo_path "/home/svn/my_repo"
    end
  end

  pgdump do
    options "-i -x -O"   # -i => ignorar versão, -x => não configurar privilegios (grant/revoke), -O => skip restoration of object ownership in plain text format

    user "username"
    password "............"  # shouldn't be used, instead setup ident.  Current functionality exports a password env to the shell which pg_dump uses - untested!

    database :blog
    database :stateofflux_com
  end

  #Para efetuar os backups dos arquivos
  tar do
    options "-h" # dereference symlinks
    archive "git-repositories", :files => "/home/git/repositories"
    archive "dot-configs",      :files => "/home/*/.[^.]*"
    archive "etc",              :files => "/etc", :exclude => "/etc/puppet/other"

    archive "blog-astrails-com" do
      files "/var/www/blog.astrails.com/"
      exclude "/var/www/blog.astrails.com/log"
      exclude "/var/www/blog.astrails.com/tmp"
    end

    archive "astrails-com" do
      files "/var/www/astrails.com/"
      exclude ["/var/www/astrails.com/log", "/var/www/astrails.com/tmp"]  #adicione os arquivos aos quais você não deseja que sejam salvos.
    end
  end
end


apos ter o arquivo "safe_config.rb" configurado você pode executar o comando abaixo para realizar o backup:



astrails-safe -L safe_config.rb 
#para backup somente local
astrails-safe -v safe_config.rb 
#para executar o arquivo de configuração na integra, executando os backups local e remoto.



agora vamos tornar a execução deste comando automático e periódico através da gem whenever.
utilize o comando abaixo para criar o arquivo de configuração, que estará no diretório config da aplicação.



wheneverize .

caso não execute é possível que seja necessário adicionar a gem ao PATH.
 
abra o arquivo criado, "schedule.rb" e adicione as linha abaixo:




every 1.days do
#Eu defini que será executado esse comando a cada 1 dia você pode alterar de acordo com sua necessidade.
  command "/diretorio_da_sua_aplicação/config/astrails-safe -L safe_config.rb" 
  #substitua o '-L' para '-v' caso queira executar backup remoto
end


para gravar as alterações no config do Crontab


whenever --update-crontab store  


Pronto agora a aplicação está gerando backups automáticos a cada 1 dia.


Envio automático de Imagens para Otimização via Yahoo Smush.it utilizando Ruby on Rails

Um exemplo de como eu fiz para automatizar o envio de imagens para o otimizador de imagens Yahoo Smush.it utilizando Ruby,RailsPaperclipCrack e RIO.



Infelizmente o Yahoo Smush.it não dispõe de uma API para envio e download das imagens.
Mas é possível eu enviar uma imagem e receber a resposta através de uma arquivo JSON.
 
Para automatizar a otimização das imagens precisamos “ler” sua localização, envia-la para o Smush.it e depois “ler” a localização da imagem otimizada pra tal utilizaremos algumas gems.
Open-uri
Crack, que é o JSON parser, que irá transformar o objeto JSON em objeto Ruby
RIO, utilizo ele para gravar a imagem otimizada sobre a outra, você pode usar o Rmagick ouMinimagick para fazer o mesmo.
Para instalar as gems

sudo gem install rio crack


Como estou utilizando Rails criei o método “otimiza” no model “Imagem” que é invocado após o create.

class Imagem < ActiveRecord::Base

#app/modelos/imagem.rb
class Imagem < ActiveRecord::Base
has_attached_file :photo

after_create :otimiza

def otimiza()
 if self.photo_file_size < 1000000 #limite imposto pelo smush.it

require 'rubygems' #desnecessário caso utilize Ruby 1.9
require 'crack'
require 'open-uri'
require 'rio'

dominio=’’ 
#o open-uri não consegue utilizar o método POST por isso 
#a imagem tem que estar acessível pela internet, impedindo assim de enviá-la direto ao smush.it

imagem= self.photo.url #endereço da imagem 

file = dominio+imagem

 response = open('http://smushit.com/ysmush.it/ws.php?img='+file).read
 #captura o arquivo JSON através de GET.

 path = Crack::JSON.parse(response)['dest']
 #Lê o caminho da imagem otimizada e grava na variável path

  path.to_s #converte a variável path para string
   rio(''+imagem).binmode < rio(path).binmode
 #grava a nova imagem sobre a antiga
  end
end  #fecha otimiza
end

Provavelmente existem formas mais DRY de fazer essa automatização mas foi assim que consegui depois de dois dias ralando XD

Substituindo a tag

por
no Rich Text CKEditor

Altera o função default do Enter de para
no CKEditor


Bom é uma dica simples e que me foi muito útil. 
Estou utilizando o CKEditor no Rails 3 (rails-ckeditor) você pode aprender sobre sua utilização no Github  https://github.com/galetahub/rails-ckeditor mas essa dica funciona para qualquer outra linguagem ou plataforma que deseje usar o CKEditor 3. 
O código abaixo altera a função default da tecla "Enter" de 

 para 
.

No arquivo config.js



// Procure por essa linha de código

CKEDITOR.editorConfig = function( config )
{

// Adicione as linhas abaixo

config.enterMode = CKEDITOR.ENTER_BR;

config.shiftEnterMode = CKEDITOR.ENTER_P;
};


Essa função foi testada na versão 3.4.2.
Espero que tenham gostado da dica.

Usando o encurtador de URLs Bit.ly no Rails 3

Bom vou mostrar como fiz para utilizar o encurtador de URLs Bit.ly com o Rails 3.

Primeiro a criação do Post. Vou utilizar o recurso do Scaffold para agilizar.
  rails g scaffold post title:string body:text short_url:string 

O campo short_url será utilizado para guardar o link encurtado pelo Bity.ly nas views você pode simplesmente excluir o campo “short_url”

no controller do Post
def create
@post = Post.new(params[:post])

respond_to do |format|
if @post.save
encurtaurl(@post) #chama a action que encurtará o link
format.html { redirect_to(@post, :notice => 'Postagem cadastrada com sucesso.') }
format.xml { render :xml => @post, :status => :created, :location => @post }
else
format.html { render :action => "new" }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
end
end
end

Antes de criar a action para o encurtador precisamos cadastrar no link http://bit.ly/a/sign_up e pegar a apiKey no link http://bit.ly/account/your_api_key .

Ainda no controller do Post adicione a action encurtaurl

#/controllers/posts_controller.rb

#bit.ly
def encurtaurl(post)

@post=Post.find(post)
require 'open-uri'
url= url_for(@post).to_s
link = open('http://api.bit.ly/v3/shorten?login=seu_login&apiKey=sua_api_key&longUrl=' + url + '&format=txt').read
@post.short_url = link.to_s
@post.save
end

Tem três formas de utilizar a api do bit.ly: XML, Json e txt. Utilizei txt porque achei a mais simples de implementar, se alguém fizer de outra forma por favor compartilhe conosco.

quinta-feira, 4 de novembro de 2010

Bravo Hits 2010 2

Artist: VA
Title: Bravo Hits 2010 2
Label: Universal
Genre: Dance
Store Date:
Source: CDDA
# Tracks: 40
# CDs: 2
Format: *.mp3
Codec: Lame 3.98
Quality: 128 kbps
Channels: Joint Stereo / 44 khz
Tags: ID3 v2.3, cover
Nonstop mix: No
*.cue: No
Archive size: 142 mb
Recovery record: yes

Track Title Time
CD1
01. DAVID GUETTA ft.CHRIS WILLIS, FERGIE & LMFAO - 3:07
Gettin’ Over You
02. STROMAE – Alors On Danse 3:28
03. KELIS – Acapella 4:12
04. YOLANDA BE COOL vs DCUP – We No Speak Americano 2:11
05. The BLACK EYED PEAS – Rock That Body 4:29
06. P!NK – Bad Influence 3:36
07. KESHA – Your Love Is My Drug 3:07
08. GRAMOPHONEDZIE – Why DonYou 2:49
09. AURA DIONE – I Will Love You Monday (365) 3:23
10. SPANKERS – Chupa Rico 3:31
11. CRAIG DAVID – One More Lie 3:04
12. GABRIELLA CILMI – HeartDonLie 3:42
13. TAIO CRUZ feat. KESHA – Dirty Picture 3:38
14. AKCENT – ThatMy Name 4:06
15. OWL CITY – Hello Seattle 2:46
16. KERI HILSON – I Like 3:38
17. AGGRO SANTOS & KIMBERLY WYATT – Candy 3:01
18. CASCADA – Pyromania 3:30
19. NOVASPACE – Close Your Eyes 3:45
20. DEEPCENTRAL – In Love 3:45
CD2
01. JASPER FORKS – River Flows In You 3:56
02. PAUL VAN DYK feat.JOHNNY McDAIL – We Are One 3:33
03. VELILE vs SAFRI DUO – Helele 3:07
04. ATB – Could You Believe 3:30
05. N-FINITY – Wavin?Flag 3:56
06. VENUS JONES – Alejandro 3:16
07. BELLINI – Samba All Night 3:04
08. DARIUS & FINLAY & SHAUN BAKER – Show Me 10 3:08
(Explode 3)
09. SNAP! – Rhythm Is A Dancer 2k10 6:55
10. PH ELECTRO – Englishman In New York 2:50
11. CABELLA feat.DAISY – My Heart Goes Boom 3:54
12. The RUFFBOYZ vs KARMA – Sedam Dana 2k10 4:09
13. DAN BALAN – Chica Bomb 3:32
14. GOLDFRAPP – Rocket 4:18
15. SWEDISH HOUSE MAFIA – One 2:42
16. ITALOBROTHERS – Love Is On Fire 3:24
17. DJ GOLLUM feat.BASSLOVERS UNITED – Narcotic 3:34
18. DARIUS & FINLAY feat.NICCO – Rock To The Beat 3:28
19. RUDY MC vs SCOTTY – Paradise 3:38
20. DJ BOBO – Superstar 3:32

Download:

CD 01

CD 02

Exotic Wafture #8

Artist: VA
Title: Exotic Wafture #8
Label: 3Lime rec.
Genre: Classic Trance, Vocal Trance, Uplifting Trance, Dream Trance
Store Date:
Source: CDDA
# Tracks: 30
# CDs: 1
Length: 03:50:47
Format: *.mp3
Codec: Lame 3.98
Quality: 128 kbps
Channels: Joint Stereo / 44 khz
Tags: ID3 v2.3, cover
Nonstop mix: No
*.cue: No
Archive size: 211 mb
Recovery record: yes

Tracklist:
01. Mike Foyle – Bittersweet Nightshade (Original Mix)
02. Paul Van Dyk – Haunted
03. Witness Of Wonder – Emotions In Motion (Original Mix)
04. Dash Berlin – Never Cry Again (Original Vocal Mix)
05. Dash Berlin – Till The Sky Falls Down (Extended Mix)
06. Ohmna – People Get Lost
07. Steve May – Sublimate
08. Dash Berlin With Cerf, Mitiska & Jaren – Man On The Run (Andy Duguid Remix)
09. Taxi – Glistening
10. The Scarab – Vagabond
11. DJ Tatana feat. Jael – Always on My Mind (DJ Tatana Sirup Mix)
12. Julian Vincent feat. Cathy Burton – Certainty (Mark Otten Dub)
13. David Amo & Julio Navas pres. Paco Maroto – Electronic Electro (David Amo, Julio Navas, Francisco Maroto)
14. Dennis De Laat – Every Breath (Anthem Instrumental)
15. MIKE pres. Caromax – Logic (Original Mix)
16. Markus Schulz – Electro Hairspray
17. Markus Schulz feat. Carrie Skipper – Never Be The Same
18. Armin van Buuren – Control Freak (Sander van Doorn Remix)
19. Myon & Shane 54 feat. Carrie Skipper – Vampire (Club Mix)
20. Split Second – Midnight Express (Original Mix)
21. Ashley Wallbridge – Harrier (Original Mix)
22. Accessive Rhythm – Activate (Original)
23. Mat Zo – Equinox (Original Mix)
24. Leon Bolier pres. Inner Stories – Beyond (Original Mix)
25. Breakfast – Ait Guitar (Breakfasts Campfire Remix)
26. Glenn Morrison – Contact
27. Global Experience – Madras
28. Temple One – Sahara Nights (Steve Brain Remix)
29. Jonas Hornblad & C-Systems – Still Remember (C-Systems Vocal Mix)
30. Beat Service – Vision Of The Lost (Original Mix)

Download:

Parte 01

Parte 02

Parte 03

Scooter – J’adore Hardcore (HD 720p)

Titulo: J’adore Hardcore
Artista: Scooter
Encoder: H264
Qualidade: 1280 x 720
Tamanho: 86MB

Download: Megaupload

WCB 09 – CD

Artista: VA
Album: WCB 09
Gravadora: G2
Gênero: Dance | Trance | Eletro | Club | House
Lançamento: 07/09/2010
Músicas: 30
Cds: 1
Duração: 2:40:21
Encoder: Mp3
Qualidade: VBR
Tamanho: 309MB

Lista de músicas:

01 – Armin van Buuren vs Sophie Ellis-Bextor – Not Giving Up On Love (Jorn van Deynhoven Remix)
02 – Taylor Dayne – Facing A Miracle (Radio Version)
03 – Richard Durand & JES – N.Y.C. (Original Mix)
04 – Headstrong feat. Helena Ward – Lost In Time
05 – Afrojack Feat. Eva Simons – take over control
06 – Dash Berlin – Wired (Dash Berlin 4AM Mix)
07 – Niko Noise – Dreams (Original Mix)
08 – Solange – I Told You So (Mike Rizzo Funk Generation Radio Mix)
09 – BT feat. Sarah McLachlan - Dreaming (DJ Ti¸sto Mix)
10 – Jon O’Bir, Fisher – Found A Way feat. Fisher – Joint Operations Centre Remix
11 – jazzbit – Sing Sing Sing (Yolande Be Cool Vs. Dcup Remix)
12 – 7th Heaven Ft Banderas – This Is Your Life (7th Heaven Club Mix)
13 – Get Far Ft H Boogie – The Radio (DJ Ross & Alessandro Viale Remix)
14 – Kim Sozzi – Just One Day (Club Mix)
15 – Longo & Wainwright Ft Craig Smart – One Life Stand (Extended Mix)
16 – Dan Balan – Chica Bomb (Club Mix)
17 – Linda O – Invincible (Chris The Greek Panaghi Club Mix)
18 – Alex Sayz Feat Sibel – United As One (Jonas Hornblad Remix)
19 – Almighty Glee Club – Don’t Stop Believin (Almighty Radio Edit)
20 – Girlicious – 2 In The Morning
21 – Ian Davecore – Listen 2 Your Heart (Club Mix)
22 – Kylie Minogue - Get Outta My Way (Paul Harris Remix)
23 – Novaspace – close your eyes (niels van gogh remix)
24 – Oliver Koletzki & Fran – Arrow And Bow (Marek Hemmann Remix)
25 – Pitbull feat. T-Pain – Hey Baby (Drop It To The Floor)
26 – R.I.O. – Hot Girl (Wideboys Remix)
27 – Sahara & Geo Dasilva – Bellezza (Radio Edit)
28 – The Saturdays – One Shot (Starsmith Mix)
29 – Victoria - Radio Waves (Radu & Ana Sirbu Radio Version)
30 – Yasmin Le Bon – Undercover Romance (Original Mix)

Download:

Parte 01

Parte 02

Parte 03

Parte 04

Flo Rida Feat. David Guetta – Club Can’t Handle Me

Titulo: Club Can’t Handle Me
Artista: Flo Rida Feat. David Guetta
Encoder: Xvid
Qualidade: 608 x 208
Tamanho: 86MB

Download: Megaupload

Dash Berlin feat. Solid Sessions – Janeiro

Titulo: Janeiro
Artista: Dash Berlin feat. Solid Sessions
Encoder: h264
Qualidade: 1280 x 720
Tamanho: 50MB

Download: Megaupload

Yolanda Be Cool & Dcup – We No Speak Americano (Official Video)

Titulo: We No Speak Americano
Artista: Yolanda Be Cool & Dcup
Encoder: h264
Qualidade: 854 x 480
Tamanho: 21MB

Download: Megaupload

Tiesto vs Diplo – C’Mon Official Video Full HD

Titulo: C’Mon
Artista: Tiesto vs Diplo
Encoder: h264
Qualidade: 1920 x 1080
Tamanho: 169MB

Download: Megaupload

Stromae – Alors on danse dj tht and ced tecknoboy bootleg mix -x264-2010-supremo

Titulo: Alors on danse
Artista: Stromae
Encoder: h264
Qualidade: 688 x 192
Tamanho: 25MB

Download: Megaupload

Stromae – Te Quiero HDRip

Titulo: Te Quiero
Artista: Stromae
Encoder: h264
Qualidade: 1280 x 720
Tamanho: 60MB

Download: Megaupload

Richard Durand feat Jes! – N.Y.C.

Titulo: N.Y.C.
Artista: Richard Durand feat Jes!
Encoder: h264
Qualidade: 1280 x 720
Tamanho: 83MB

Download: Megaupload

Scooter – The sound above my hair empyre one bootleg mix -x264-2010-supremo

Titulo: The sound above my hair
Artista: Scooter
Encoder: h264
Qualidade: 688 x 384
Tamanho: 45MB

Download: Megaupload

R.I.O. – Hot Girl (Official Video)

Titulo: Hot Girl
Artista: R.I.O
Encoder: Xvid
Qualidade: 638 x 360
Tamanho: 48MB

Download: Megaupload

Mr Sam & Andy Duguid vs. Pat Benatar – Invincible

Titulo: Invincible
Artista: Mr Sam & Andy Duguid vs. Pat Benatar
Encoder: h264
Qualidade: 1920 x 1080
Tamanho: 95MB

Download: Megaupload

Mischa Daniels feat. J-Son – Where You Wanna Go

Titulo: Where You Wanna Go
Artista: Mischa Daniels feat. J-Son
Encoder: h264
Qualidade: 1920 x 1080
Tamanho: 85MB

Download: Megaupload

Matt Cerf & Evelio Featuring Jaren – Walk Away (Lange Remix)

Titulo: Walk Away (Lange Remix)
Artista: Matt Cerf & Evelio Featuring Jaren
Encoder: h264
Qualidade: 480 x 360
Tamanho: 31MB

Download: Megaupload

Mark Oh – Scatman

Titulo: Scatman
Artista: Mark Oh
Encoder: Xvid
Qualidade: 640 x 352
Tamanho: 64MB

Download: Megaupload

Julie Thompson – Shine

Titulo: Shine
Artista: Julie Thompson
Encoder: h264
Qualidade: 1280 x 720
Tamanho: 59MB

Download: Megaupload

Jason Derulo – In My Head (Pornstarz Bootleg Mix) (Supremo Videomix)

Titulo:In My Head
Artista: Jason Derulo
Encoder: Xvid
Qualidade: 672 x 384
Tamanho: 50MB

Download: Megaupload

Fedde Le Grand feat. Funkerman Dany P Jazz – New Life

Titulo: New Life
Artista: Fedde Le Grand feat. Funkerman Dany P Jazz
Encoder: h264
Qualidade: 1920 x 1080
Tamanho: 81MB

Download: Megaupload

DJ Lee – Bitch (Supremos Porn Edit)

Titulo: Bitch
Artista: DJ Lee
Encoder: Xvid
Qualidade: 688 x 384
Tamanho: 43MB

Download: Megaupload

David Guetta & Chris Willis ft Fergie & LMFAO – Gettin’ Over You

Titulo: Gettin’ Over You
Artista: David Guetta & Chris Willis ft Fergie & LMFAO
Encoder: MSMPEG4v2
Qualidade: 800 x 480
Tamanho: 119MB

Download: Megaupload

Darius & Finlay ft. Nicco – Rock To The Beat (MikeScofield)

Titulo: Rock To The Beat (MikeScofield)
Artista: Darius & Finlay ft. Nicco
Encoder: Xvid
Qualidade: 640 x 352
Tamanho: 70MB

Download: Megaupload

CJ Stone & Chriss Ortega feat. Lyck – In The Red Light (Official Music Video) (Radio Mix)

Titulo: In The Red Light
Artista: CJ Stone & Chriss Ortega feat. Lyck
Encoder: h264
Qualidade: 1280 x 720
Tamanho: 69MB

Download: Megaupload

CJ Stone & Chriss Ortega feat. Lyck – In The Red Light (Official Music Video) (Radio Mix)

Titulo: In The Red Light
Artista: CJ Stone & Chriss Ortega feat. Lyck
Encoder: h264
Qualidade: 1280 x 720
Tamanho: 69MB

Download: Megaupload

Cascada – What Do You Want From Me Ti-MO vs Stefan

Titulo: What Do You Want From Me Ti-MO vs Stefan Rio Remix
Artista: Cascada
Encoder: h264
Qualidade:672 x 352
Tamanho: 29MB

Download: Megaupload