programmazione

OAuth + Twitter API + ACCESS_TOKEN_SECRET

Uno dei problemi dell'internet attuale è che un utente scrive/utilizza/partecipa su tanti siti/servizi ma non è in grado di far interagire i vari fornitori tra loro (a meno di non ricaricare i dati).
Se più o meno tutti (i geek) sanno cos'è OpenID, ovvero uno standard per autenticare gli utenti su internet, di meno si conosce OAuth, ovvero uno standard usato da Google, Yahoo, Twitter,.. per autorizzare a terzi l'accesso ai nostri dati su un determinato servizio.
Immaginate di accedere a un sito che si occupa di stampe di foto, autorizzarlo ad accedere alle vostre foto su Flickr, selezionare quelle che vi interessano e farvele stampare. Sarà a cura dei 2 siti gestire la transazione senza farvi fare a voi nuovamente l'upload.

Il bello degli standard è che ognuno li implementa un po' come vuole, ma tra i problemi di sicurezza di OAuth 1.0 e il diffondersi di Facebook (Facebook Connect), adesso sembra che OAuth 1.0a sia qui per restare ed essere utilizzato al meglio da tutti.

Aggiornare a Rubygems 1.36

Se dovete avere a che fare col sistema di pacchettizzazione multipiattaforma "gem" vi sconsiglio caldamente di usare il pacchetto "rubygems" per Debian/Ubuntu, oltre ad essere (inevitabilmente) indietro non potete autoaggiornarlo.
UPDATE: se non volete avere problemi usate ruby 1.8.7 o 1.9.1.378-1
UPDATE2: se avete ancora Timeout o Gem::RemoteFetcher::FetchError applicate questa patch. Tnx raggi su #rubygems

$ sudo gem update --system

Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.6
Updating RubyGems to 1.3.6
Installing RubyGems 1.3.6
/usr/lib/ruby1.9/gems/1.9.0/gems/gemcutter-0.5.0/lib/gemcutter.rb:4:in `require': no such file to load -- rubygems/commands/migrate (LoadError)
from /usr/lib/ruby1.9/gems/1.9.0/gems/gemcutter-0.5.0/lib/gemcutter.rb:4:in `block in <top (required)>' ...

Rails 3.0pre, JQuery, UJS in pratica

Il framework Rails 3.0 raggiungerà presto la versione 3.0pre, ma già ora è possibile apprezzare delle funzionalità interessanti: una su tutte la separazione tra HTML5 e Javascript (Unobstrusive Javascript - UJS). Pensate in un futuro prossimo di poter cambiare dei widget (es. Date picker) all'interno delle pagine web senza farvi venire il mal di testa e allo stesso tempo mantenere una "certa" compatibilità con i web browser sfigati.

Installazione di Rails 3.0 pre e Ruby 1.9 su Linux Ubuntu 10.04a Lucid Lynx

Nonostante Ruby 1.9 sia già presente nei repository, la versione di default è ancora Ruby 1.8.7, quindi bisogna specificare se vogliamo quella nuova.

Rails 3 e Browser Cms

In passato abbiamo già trattato il tema un CMS modulare come Drupal per Ruby on Rails. Purtroppo quella strada non ha portato da nessuna parte.
Ora però ci sono delle interessanti novità nella comunità Ruby.

Browser CMS

Un cms basato su Rails 2, modulare, con supporto alla localizzazione. Vi consiglio di vedere il video introduttivo, il sito ufficiale di Browser CMS, ma soprattutto il codic e su GitHub.

Linuxcast #14 - Programmare in Linux

Una Video Guida per iniziare a programmare in Linux.

Per approfondire:

PS: il sorgente usato si può scaricare qui e vi ricordo che se il video va a scatti potete scaricare la versione in OGG download

Libro su Rails 2.1 in italiano, gratis e in anteprima

I ringraziamenti vanno a Carlos per la versione originale e alla comunità Ruby Italia per la traduzione.
La versione italiana è praticamente tradotta, ma è ancora da revisionare. Se volete partecipare ai lavori fate riferimento al wiki e al progetto su Github.

In modo analogo è partito dal forum un'iniziativa per creare della documentazione in italiano su git.

Notifiche dalla tastiera

Chi avrà visto qualche screencast su Mac OSX avrà notato che esiste un modo per visualizzare i tasti premuti sullo schermo.
L'utilità non è fondamentale, ma è utile per chi vuole imparare qualcosa di più.


(ctrl + s, per salvare)

Queste notifiche dovrebbero essere gestite tramite Growl e anche su Linux abbiamo le nostre alternative (notify e mumbles), il problema maggiore rimane: come prendere tutti i tasti premuti dall'utente?

~$ cat /dev/input/event1

Putroppo (e per fortuna, vedi keylogger) per accedere a questo device bisogna essere root, ma è possibile fare qualcosa di analogo anche su Linux.

Git in pratica e GitHub

Git è il VCS, secondo Linus Torvalds, che è stato scelto per Linux, Freedesktop, Ruby on Rails e altri progetti importanti.
Il perché si può riassumere in prestazioni e decentramento. Git è molto veloce e permette di mantenere traccia delle modifiche senza essere online.

1a Iniziare un proprio progetto

cd mio-progetto/
git init  # crea la configurazione in .git/
git add . # aggiunge tutti i file presenti
git commit -m "progetto iniziale"

1b Iniziare prendendo il codice da un progetto già esistente

git clone git://sitoweb.com/mio-progetto.git

2 apportare le modifiche

git checkout -b nuova_feature_x

# Fai ora le tuo modifiche sensazionali

git status # vedi cosa hai modificato
git commit -m "ottimizzo qui, ottimizzo lì"

# ... altre modifiche

3 Sincronizzarsi nel frattempo con le modifiche altrui

git checkout master # torno nel ramo principale
git pull # prendo eventuali modifiche fatte da altri su master

git checkout nuova_feature_x
# .. altri adattamenti e modifiche

4a Condividere le modifiche aggiornando il proprio repository

git checkout master
git merge nuova_feature_x # il nuovo ramo viene unito a master
git push # aggiorna il repository remoto

4b Condividere le modifiche con una patch

git format-patch master --stdout > tutte-modifiche-del-mio-ramo-su-master.diff
..e inviarla a qualcuno.
Per annullare le modifiche locali:
git checkout -f

Gestire le righe con Gedit

Gedit sta diventando sempre più il "Textmate per Linux". Un nuovo plugin che vale la pena di segnalare è Line Tools.
Una volta abilitato potrete gestire le linee di codice in modo molto più semplice.

  • Trim Line : Rimuove il testo dalla posizione corrente fino alla fine della riga.
  • Clear Line : Rimuove tutto il testo della riga corrente
  • Kill Line : Rimuove la riga
  • Duplicate Line : Duplica la riga corrente
  • Raise Line : Muove la riga in alto
  • Lower Line : Muove la riga in basso
  • Copy Line : Copia la tutta riga
  • Cut Line : Taglia la tutta riga
  • Paste Line : Incolla la riga
  • Replace Line : Sovrascrive la riga corrente con quella precedentementwe copiata
  • Line Bookmarks : Per accedere velocemente a delle righe particolari

Come generare la documentazione offline per Rails

Sul wiki di Ubuntu si trovano alcune "vie" per installare Ruby on Rails, ma dopo averlo installato vi renderete conto che non basta qualche articolo o screencast per saperlo usare.

La documentazione ufficiale è fatta abbastanza bene ed disponibile online, ma per svariate ragioni potrebbe essere utile averla offline o comunque all'ultima versione possibile.

Quindi:

rails progetto-di-prova
cd progetto-di-prova

Se avete installato rails con rubygems usate:

rake rails:freeze:gems

Altrimenti o se volete l'ultima versione disponibile in svn

rake rails:freeze:edge

Adesso potete usare il comando

rake doc:rails

Dopo un po' di tempo trovere in doc/api tutta la documentazione che cercate. Vi conviene spostarla altrove e pulire il progetto.

rake rails:unfreeze