quarta-feira, 30 de julho de 2014

Authentication Rails

Scaffold User

rails g scaffold nome email password_digest



Gemfile

gem 'bcrypt-ruby', '~> 3.0.0'


user.rb

Remover a validação de presença de senha
• Remover a validação de confirmação de senha
• Adicionar a class macro has_secure_password

has_secure_password

_form.html.erb

<%= f.password_field :password %>
<%= f.password_field :password_confirmation %>


user_session.rb

class UserSession
  
  include ActiveModel::Validations
  include ActiveModel::Conversion
  
  extend ActiveModel::Naming
  extend ActiveModel::Translation
  
  attr_accessor :email, :password
  
  validates_presence_of :email, :password
  
end

routes.rb

resource :user_sessions, :only => [:create, :new, :destroy]

user_sessions_controller.rb

class UserSessionsController < ApplicationController
  
  def new
    @session = UserSession.new
  end
  
  def create
  end
  
  def destroy
  end
  
end

segunda-feira, 9 de junho de 2014

Html to Haml

for file in app/views/devise/registrtions/new.html.erb; do html2haml -e $file ${file%erb}haml && rm $file; done

quinta-feira, 9 de agosto de 2012

Malditos espaços em branco

Tudo mundo gosta de espaço, mas quando falamos em espaços no meio de uma String, e esta faz parte de uma URL, e a linguagem é Objective-C ... malditos espaços.

Mas, como fala um amigo, para toda problemática existe uma solucionática, o melhor uma stringByAddingPercentEscapesUsingEncoding, aqui entre nós, o cara que colocou o nome a este método merece pelo menos uma pizza.

NSString* nome = @"Federico Neoapps";

NSString* urlEncoded = [[NSString stringWithFormat:@"nome=", paramsstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"[ URL Encoded ] %@",urlEncoded);

NSString * urlDecoded = [urlEncoded stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding ];
NSLog (@"[ URL Decoded ] %@"urlDecoded);


O resultado é:

[ URL Encoded ] nome=Federico%20Neoapps
[ URL Decoded ] nome=Federico Neoapps



Try to Catch the error


Sim o objective-C tem controle de exceções, assim como no Java, Ruby, Javascript, etc.



 NSString* minhaString = [NSString stringWithString:@"abc"];
    @try {
        NSLog(@"Isto vai gerar uma exceção");
        [minhaString characterAtIndex:6];
    }
    @catch (NSException * e) {
        NSLog(@"Opa, alguma coisa errada aconteceu e foi que : %@", e);
    }
    @finally {
        NSLog(@"Este bloco é sempre executado");
    }

Achou fácil, por que não usá-lo?


terça-feira, 31 de julho de 2012

Ruby + Mysql + OSX com MAMP

Após ter desistido de utilizar Ruby como linguagem de script no OSX, pois não conseguia instalar o driver de conexão ao banco.


Building native extensions.  This could take a while...
ERROR:  Error installing dbd-mysql:
ERROR: Failed to build gem native extension.
      [....]
checking for mysql_ssl_set()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  Blá, blá, blá, blá, blá....


Solução:

1 - Instalar Macports https://distfiles.macports.org/MacPorts/
2 - # port install mysql5-devel

3 - # gem install dbi
3 - # gem install dbd-mysql


And that's it


#!/usr/bin/ruby -w
# simple.rb - simple MySQL script using Ruby DBI module
require "dbi" 
begin
  # connect to the MySQL server
  # dbh = DBI.connect("DBI:Mysql:host=192.168.1.102;port=8889;database=federico", "root", "root")
  con = DBI.connect("DBI:Mysql:federico:127.0.0.1", "root", "root")
  # get server version string and display it
  row = con.select_one("SELECT VERSION()")
  puts "Server version: " + row[0]
rescue DBI::DatabaseError => e
  puts "An error occurred"
  puts "Error code: #{e.err}"
  puts "Error message: #{e.errstr}"
ensure
  # disconnect from server
  con.disconnect if con
end


e agora é só matar a saudades desta maravilhosa liguagem ;)


quinta-feira, 23 de fevereiro de 2012

Instalando app no Playbook

Após compactar o projeto

$ cd /Users/federicodigiorgio/Documents/RIM/bbwp
$ ./bbwp /Users/federicodigiorgio/Sites/rim/app-novo.zip

$ cd /Users/federicodigiorgio/Documents/RIM/bbwp/blackberry-tablet-sdk/bin
$ ./blackberry-deploy -installApp -device 192.168.1.107 -package /Users/federicodigiorgio/Sites/rim/bin/app-novo.bar

sexta-feira, 30 de setembro de 2011

Colorindo os Domingos no jQuery-UI Datepicker

$('#something').datepicker({
beforeShowDay:function(date){
if(date.toString().indexOf('Sun ')!=-1)
return [1,'red'];else
return [1];
}
}

css:

.ui-datepicker td.red a{
color:#ff0000 !importat;
}

!important é para dar prioridade ante um conflito no CSS

quarta-feira, 10 de agosto de 2011

Executar um Toast dentro de uma Thread

Button btn = (Button) findViewById(R.id.btnAdd);

btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MinhaClasse.this, "Tracking number is invalid", Toast.LENGTH_LONG).show();
}
});
}
}).start();
}
});

terça-feira, 29 de março de 2011

Airsoft

http://www.uncompany.com/

segunda-feira, 2 de agosto de 2010

CRON - Tarefas agendas no Linux

Parâmetros :

* * * * * [
comando a ser executado
]

onde cada asterisco representa :
primeiro =>
minuto(0-59)
segundo =>
hora(0-23)
terceiro
=>
dia(1-31)
quarto
=>
mes(1-12)
quinto
=>
dia_da_semana(0-6)

Editar as tarefas agendadas
crontab -e

Listar tarefas agendas
crontab -l

Exemplo
00 01 * * 2-6 java -jar /home/federico/teste.jar

quarta-feira, 19 de maio de 2010

Jquery - Checkboxes

Como saber se um checkbox está checked?

Nunca uso mas quando preciso esqueço, hehehe

$('#checkBox').attr('checked');

ou

$('#edit-checkbox-id').is(':checked');


domingo, 4 de abril de 2010

Compartilhar pastas entre Mac OS X e Ubuntu Linux

Host : Mac OS X
Virtual : Ubuntu Linux 8.04
  • Selecione a máquina e vá em Dispositivos > Pastas compartilhadas
  • Adicione um new folder, em Folder Path coloque o caminho da pasta que está na máquina host. Em Folder Name dê um nome para a pasta
  • Clique em OK e inicialize a máquina virtual
  • No ubuntu, crie uma pasta para montar o share.
  • Abra o terminal e digite sudo mount -t vboxsf [ nome do compartilhamento ] [ path para o diretorio ]
  • [ nome do compartilhamento ] é o nome que foi escolhido para a pasta no segundo passo e [ path para o diretorio ] é o caminho do folder criado no Ubuntu.


quinta-feira, 25 de fevereiro de 2010

terça-feira, 8 de dezembro de 2009

VirtualBox - Clonar um disco virtual

Você deve estar imaginando que clonar uma máquina seria simples, pois bastaria dar um Ctrl+c no arquivo original e um Ctrl+v para colar e, assim, teríamos dois arquivos com o mesmo conteúdo, ou seja, um backup da mesma. Pois é, se você fizer isso, a sua cópia não irá rodar no VirtualBox.

Isso ocorre porque cada disco virtual criado recebe um número de identificação (UUID) específico, o qual é armazenado dentro da própria imagem do disco. O VirtualBox somente carrega discos virtuais unitários, o que significa que se você usou a técnica Ctrl+c/Ctrl+v, você terá criado uma cópia com o mesmo UUID do disco original e, portanto, o VirtualBox se recusará a carregar uma das imagens.

Para poder realizar uma clonagem de um disco virtual, o VirtualBox disponibiliza o utilitário VBoxManage, o qual possui diversas funcionalidades, e é chamado por meio da linha de comando. Para clonar um disco virtual você deverá seguir os seguintes passos:

1. acesse a pasta do VirtualBox com o comando no terminal:

cd /home/seu_login/.VirtualBox/HardDisks

2. chame o programa VBoxManage seguido dos parâmentros necessários:

VBoxManage clonehd nome_disco_a_ser_clonado nome_do_clone

No meu caso, se eu desejar clonar meu disco virtual do Windows XP, os comandos seriam:

cd /home/trinity/.VirtualBox/HardDisks
VBoxManage clonehd WinXP.vdi WinXP_backup.vdi

Note que:

VBoxManage = nome do utilitário
clonehd = tarefa (copiar o hd)
WinXP.vdi = nome do meu disco virtual que desejo clonar
WinXP_backup.vdi = nome que será dado ao clone

Assim que o disco começar a ser clonado, você poderá acompanhar o seu andamento pelo próprio terminal por meio da indicação da porcentagem de trabalho concluído. Ao terminar, vá até a pasta onde os discos são armazenados:

/home/seu_login/.VirtualBox/HardDisks


Fonte: http://ubuntulinuxbr.blogspot.com

domingo, 6 de setembro de 2009

domingo, 23 de agosto de 2009

Você precisa mesmo de reuniões?

http://nerdson.com/blog/groupthink/

segunda-feira, 10 de agosto de 2009

Replicação assíncronica

http://tips.blog.br/2009/?p=200

quarta-feira, 29 de julho de 2009

Backup MySQL

#!/bin/bash
U_PASTA="/home/user/backup" # < -- substitua pelo caminho onde vai salvar o backup
U_DATA=$(/bin/date +%Y%m%d%H%M%S)
U_CAMINHO="backup-$U_DATA.sql"
U_HOST="localhost"
U_USER="root"
U_PASSWORD="********"
U_DATABASE="minha_base_mysql"
U_EMAIL="meuemail@meudominio.com.br"
#
erro=""
#
cd $U_PASTA
#
#
# Faz o backup do MySQL
#
mysqldump -h $U_HOST -u $U_USER -p$U_PASSWORD $U_DATABASE > $U_CAMINHO
if [ $? -ne 0 ]
then
erro="Erro na geracao do SQL"
fi
#
#
# Compacta o arquivo
#
if [ "$erro" == "" ]
then
gzip $U_CAMINHO
if [ $? -ne 0 ]
then
erro="Erro ao compactar o SQL"
fi
fi
#
# Apaga arquivos antigos e mantem apenas os 'n' ultimos
#
n=10
c=0
for i in *.sql.gz
do
let c=$c+1
done
if [ $c -gt $n ]
then
for i in *.sql.gz
do
if [ $c -le $n ]
then
break
fi
rm $i
let c=$c-1
done
fi
#
if [ "$erro" == "" ]
then
erro="Backup efetuado com sucesso!"
subject="[Sucesso]"
else
subject="[Erro]"
fi
echo "$erro => $U_CAMINHO.gz" | mail -s "$subject Backup em $(/bin/date +'%d/%m/%Y %H:%M:%S')" $U_EMAIL
#
# Volta para a pasta anterior
cd -


Para agendar a execução, digite:

$ crontab -e

Vai abrir um editor de texto com o arquivo de configuração da cron. Daí você pode digitar algo como:

# m h dom mon dow command 00 02 * * * /home/user/backup_bd.sh

Onde backup_bd.sh é o arquivo do script que passei acima.


Melhorando a performance do Firefox

A partir da versão 3, o Firefox guarda os favoritos, histórico e mais um punhado de coisas em sqlite. Por isso, manter essa base otimizada pode ser muito saudável ao seu Firefox.

No Ubuntu (testei no 9.04), instale o sqlite3.

Abra o terminal e digite:

sudo aptitude install sqlite3

Depois, ainda no terminal, acesse a pasta de seu perfil (profile) do Firefox:

cd ~/.mozilla/firefox/alguma_coisa_estranha.default

Varia de acordo com o computador. No meu, esse alguma_coisa_estranha.default é 73cm0ffy.default.

Você vai ver que essa pasta possui vários arquivos com a extensão .sqlite, que é o que queremos otimizar. Para isso, feche o Firefox (não antes de terminar de ler esse post ou copiá-lo :P ), depois simplesmente digite, para cada arquivo:

sqlite3 nome_do_arquivo.sqlite vacuum

Tem como fazer em todos os arquivos de uma vez? Claro. Você está mexendo em um terminal Linux! Para fazer todos de uma vez, digite:

for i in *.sqlite; do sqlite3 $i vacuum; done