Posted by Dibi Store
Thu, 15 Nov 2007 09:21:00 GMT
Ieri abbiamo rilasciato la nuova versione di zooppa, il social network di advertising con contenuti generati dagli utenti.
E' stato il mi primo rilascio per zooppa, ma siamo rimasti tutti molto soddisfatti, anche se abbiamo dovuto togliere qualcosa qua e la all'ultimo momento (esigenze estetiche). Sono rimasto invece soddisfatto della velocità del nuovo sito, ora è un fulmine!
Comunque fateci pure un giro, spero che vi piacerà ancora di più, e soprattutto i nuovi contests!
Posted in news | Tags zooppa | no comments
Posted by Dibi Store
Sun, 11 Nov 2007 11:41:00 GMT
Aggiornare un record di database tramite active record e ruby on rails è molto semplice, infatti abbiamo a dispozione, tra gli altri, due semplici metodi, update_attribute, che accetta 2 parametri, ossia i nome del campo e l'attributo, e update_attributes, che invece accetta un hash di chiavi e valori.
C'è da ricordardi, però, che in questo caso, active recocord NON esegue la validazione prima del salvataggio, fate pure delle prove se volete. L'alternativa è quella di usare un codice simile al seguente:
user = User.find(3)
user.name = 'john'
user.save
In questo caso, il nome verrà validato, in quanto la validazione viene richiamata prima del salvataggio di un record. Potete usare una tecnica simile anche quando aggiornate da un form:
user = User.find(params[:id])
user.name = params[:user][:name]
user.save
Per il resto, è tutto molto semplice, ma tenete questa cosa bene in mente.
Posted in ruby on rails | Tags activerecord | no comments
Posted by Dibi Store
Fri, 09 Nov 2007 12:03:00 GMT
In questo articolo cercherò di essere molto breve, in quanto questo verrà usato come referenza per impostare un corretto accesso SSH in una macchina virtuale. L'esperimento viene eseguito in una macchina con sistema OSX. Mi sono ispirato all'articolo della IBM che potete trovare quiqui. E' inoltre disponibile una terza parte qui.
Per prima cosa, ho gia accesso alla macchina remota tramite SSH tramite il solito comando ssh user@remote.org.
Verificato questo, abbiamo bisogno di rigenerare una coppia di chiavi pubblica e una privata, quindi usciamo dalla macchina virtuale e generiamo la chiave RSA:
ssh-keygen
Premo invio quando mi chiede dove posizionare il file, perchè la directory di default va bene, dopodiche dobbiamo inserire una password a scelta, che NON è la password del server, che d'ora in poi chiamerò passphrase.
Prepariamo la copia per la macchina in remoto con questo comando:
scp ~/.ssh/id_rsa.pub user@remote.org
Colleghiamoci al server:
ssh user@remote.org
Dico si alla domanda se voglio continuare la connessione, e poi inserisco la password del server. A questo punto posso copiare la chiave pubblica nella mia home remota:
mkdir .ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
Usciamo dal server e proviamo a connetterci, se tutto va bene, possiamo usare la passphrase. Siamo a metà dell'opera. Fate attenzione che sia abilitata la chiave nel file /etc/ssh/sshd_config, siccome nel mio caso non lo è, genero anche una chiave dsa.
Chiave DSA
Questa parte è se volete o avete bisogno di generare una chiave DSA
ssh-keygen -t dsa
Dopo la solita storia, copiamo tutto online:
scp ~/.ssh/id_dsa.pub user@remote.org
ssh user@remote.org
cat id_dsa.pub >> ~/.ssh/authorized_keys2 #notate il 2
Posted in sicurezza | Tags ssh | no comments
Posted by Dibi Store
Wed, 07 Nov 2007 20:58:00 GMT
Ringraziando un collega per l'ispirazione (tra l'altro appassionato di mac e che ringrazio per tutti i consigli), segnalo questa risorsa che contiene un elenco di molte aplicazioni per mac osx. Non ditemi che non ce ne era neanche una che non conoscevate (o forse sarò l'unico ignorante XD), ad ogni modo, grazie Michele per l'ennesimo consiglio.
Posted in mac osx | no comments
Posted by Dibi Store
Wed, 07 Nov 2007 10:22:00 GMT
Quando scriviamo del codice in ruby, non sempre risulta efficente, per qui potremmo trovarci nelle situazioni di usare una tecnica molto piu lenta rispetto ad un altra, che magari crediamo sbagliata. Rimanere nel dubbio, non è una buona cosa, specialmente per noi programmatori, per qui in questo articolo illustro 2 tecniche: la prima per testare il codice prodotto con ruby, e l'altra per testare la velocità delle sql in rails.
Performance in Ruby
Ruby dispone di una libreria chiamata Benchmark, che ci permette di testare la velocità del codice, ci basterà quindi includela nel nostro test, e provare un esempio come il seguente (preso da programming ruby):
require 'benchmark'
include Benchmark
string = "Stormy Weather"
m = string.method(:length)
bm(6) do |x|
x.report("call") { 10_000.times { m.call } }
x.report("send") { 10_000.times { string.send(:length) } }
x.report("eval") { 10_000.times { eval "string.length" } }
end
produces:
user system total real
call 0.020000 0.000000 0.020000 ( 0.045998)
send 0.040000 0.000000 0.040000 ( 0.051318)
eval 0.130000 0.000000 0.130000 ( 0.177950)
Il che non è niente male, giocateci un po per capire come sfruttarlo.
Performance in Rails
Rails ci mette a disposizione la classe benchmark per testare la velocità delle sql, che è utilissima, potete includere del codice simile al seguente in un vostro modello, richiamando poi una qualsiasi azione di quel modello, potrete vedere nel log il tempo che ci ha messo:
User.benchmark("adding and deleting 1000 users") do
1000.times do
State.create(:name => 'something')
x = State.find_by_name('something')
x.destroy
end
end
Spero prossimamente di poter fare degli articoli dettagliati riguardanti le performance, intanto vi lascio sperimentare un po :)
Posted in ruby on rails | Tags performance | no comments
Posted by Dibi Store
Sat, 03 Nov 2007 12:31:00 GMT
Ottenere la lista di tutti i metodo di un oggetto in javascript è molto semplice, in sostanza è sufficente iterare con un ciclo for (ma potete usare quello che volete) nel nome dell'oggetto, per ottenere una variabile contenente il metodo. Nell'esempio seguente, creo un array contenente una lista di tutti i metodo disponibili per l'oggetto document:
var a = []
for (temp in document) {a.push(temp)}
Come vedete, è tutto molto semplice, sta a voi poi farci qualcosa se ne avete bisogno, potete ad esempio stampare il risultato attraverso la funzione Array.join, in questo caso comunque, data la lunghezza, vi sconsiglio di usare un alert :).
Posted in javascript | no comments
Posted by Dibi Store
Tue, 30 Oct 2007 20:38:00 GMT
Da qualche giorno, ho iniziato ad offrire consulenza per zooppa come programmatore back end in ruby on rails.
Le prime impressioni sono ottime, il team è preparato e si lavora in un buon clima, inoltre vedo buone probabilità di crescita e di apprendimento (che è la cosa più importante per me).
Se non ne avete mai sentito parlare, zooppa vi permette di partecipare a dei contest, sponsorizzati da aziende famose, farvi votare dagli altri utenti, e vincere soldi veri. Certo non è facile, ci vuole molta creatività, ma l'impegno viene premiato, e la community è molto seguita.
Spero di scrivervi ancora riguardo a questa esperienza, magari con qualche info in più per chi vuole partecipare!
Posted in news | Tags zooppa | no comments
Posted by Dibi Store
Fri, 26 Oct 2007 08:02:00 GMT
Capistrano è uno dei migliori (se non il migliore) strumenti per il deployment delle vostre applicazioni web (non solo rails). In questo articolo descriverò le procedure base per attivare un semplice progetto usando Capistrano
E' essenziale seguire le semplice istruzioni per l'installazione nel sito ufficiale in modo da poter essere subito operativi.
Read more...
Posted in ruby on rails | Tags capistrano, deployment | no comments
Posted by Dibi Store
Fri, 19 Oct 2007 11:58:00 GMT
Siccome può tornare utile a molti, ho creato questo piccolo helper, in sostanza è un alias di button_to, solo che questo effettua una richiesta in remoto tramite AJAX.
Per usarlo è necessario solamente inserire il codice che trovate alla fine di questo articolo nel file application_helper.rb che si trova in app/helpers.
Usarlo è semplicissimo, infatti funziona esattamente come button_to, nell'esempio seguente simulo una richiesta ajax per eliminare un utente (utilizzando il formato rspec).
Read more...
Posted in ruby on rails | Tags helper, rails | no comments
Posted by Dibi Store
Thu, 18 Oct 2007 07:43:00 GMT
Alla base di rails, come tutti sappiamo, c'è la filosofia DRY. Tuttavia mi meraviglio che non venga applicata di default ad esempio al file database.yml, quello che contiene tutte le info di connessione al database. Ecco come potete sintetizzarlo:
login: &login
adapter: mysql
encoding: utf8
username: root
password:
host: localhost
development:
<<: *login
database: ecommerce_development
test:
<<: *login
database: ecommerce_test
production:
<<: *login
database: ecommerce_production
Gia meglio no?
Posted in ruby on rails | Tags dry | no comments