programmazione

Rails 3 rilasciato, ecco le novità

Il più famoso framework web MVC, ispiratore di framework analoghi in altri linguaggi non ruby è stato rilasciato. Rails 3 è internamente molto diverso da Rails 2 perché è frutto di un merge (ex framework Merb) e di altre standardizzazioni che ci sono state in ambito Ruby.

Ecco brevemente le feature più interessanti:

Applicazioni montabili

Ovvero porter montare applicazioni diverse su path diversi del sito. Le applicazioni possono essere anche scritte in altri framework Rack-compatibili

Query componibili

La mappatura query db -> oggetto ruby (ORM) viene fatta da un nuovo componente interno chiamato Arel

Più modulare, più Rack

Rack permette di condividere separatamente funzionalità complesse, con controller e view, come un'autenticazione (es Devise).

Mantenimento dell' ecosistema ruby e dipendenze

Bundler è un altro componente nuovo gestisce le dipendenze gem a livello di progetto, così da poter gestire contemporaneamente versioni diverse della stessa libreria sullo stesso sistema.

Codifica Utf8 di default

Indipendentemente che usiate ruby >=1.8.7 o ruby 1.9/2.0 la codifica di default ora è utf8.

DrupalCamp 2010 a Torino!

Segnalo con piacere che il sito del DrupalCamp 2010 è online! Drupal è uno dei migliori CMS sulla piazza e il suo punto di forza è la sua estrema modularità che lo rende molto flessibile ma non mastodontico, e non ultimo è il motore di questo blog dal 2006. 

Se siete nelle vicinanze o vi interessa l'argomento non potete non partecipare a questo evento che si terrà il 2 ottobre 2010 alla Cascina RoccaFranca (la stessa del linux day).

Per maggiorri info fate riferimento al sito del DrupalCamp su Drupal Italia.

Esperimenti con HTML5: gli Esempi di Google, Best Practices e Mobile

Uno dei temi sempre più ricorrenti è l'HTML5: è open, standard, multipiattaforma ed supportato a modo suo da diversi Big del settore tra cui Google, Apple,.. e addirittura Microsoft con Internet Explorer 9!


Un mio layout senza immagini con Webfont e gradienti CSS3

Quindi la soluzione di tutti i mali? Più o meno, ci sono ancora alcune questioni in sospeso, alcune limitazioni che verranno risolte de facto, altre che non si risolveranno e altre ancora che si ricorrerà ad hack.

HTML5 e HTML5 & Family

Come già chiarito qualche post fa, quando si parla di HTML5 quasi nessuno intende puramente solo la specifica HTML5, ma per semplificazione ci si mette dentro anche CSS3 e altre tecnologie standard che sono alle porte. Ad ogni modo è consigliato, prima di usare qualche funzionalità di HTML5, verificare che sia effettivamente implementata o che ci sia un modo decente per fare fallback a browser più "limitati" come Internet Explorer 6, 7, 8 e Opera Mini.

Accedere a SSH senza password e senza specificare l'utente remoto

Tutti gli hosting migliori offrono ormai un'accesso SSH,. diffidate dagli altri :P A differenza di ftp e intefacce web, ssh permette di fare molte più cose sul computer remoto e in modo più agevole.

SSH "liscio" è come avere una shell bash remota, ci si accede con un comando e si digita la password.

$ ssh remote-user@mysite.com
<password>

Fin quando l'accesso è saltuario va bene, ma se mysite.com è un nostro a lungo andare si fanno tante inutili digitazioni, inoltre se bisogna digitare ogni volta la password non è possibile automatizzare a dovere azioni quali backup remoto o script di monitoraggio

Quindi arriviamo a 2 configurazioni "da incorniciare" per chi ha a che fare con ssh

Accesso SSH senza password

Dalla macchina locale digitate:

$ ssh-keygen -t rsa # battete più volte invio e lasciate la passphrase vuota
$ cat $HOME/.ssh/id_rsa.pub | ssh remote-user@mysite.com 'cat >> .ssh/authorized_keys'

Digitate per l'ultima volta la password, dopodiché non vi verrà più chiesta.

Impostare l'utente SSH di default

Create o aggiungete un file di configurazione di ssh fatto così

Deploy Rails 3 with Passenger/Apache on Dreamhost

After many tutorials and hacks I got my Rails 3 working on Dreamhost too!
The whole setup involve many components but it's a good investiment if you are planning to develop a new Rails app. The final aim is editing locally your app and sending the new features or fixes incrementally via ssh/Git. 

 +

Summary

I'll cover just some nasty parts but here is an overview of my enviroment.

ruby 1.8.7, rubygems 1.3.7, bundler, rails 3, sqlite, capistrano, git and gedit :P On the shared hosting the environments is slightly different because the web server you must to use is Apache/Passenger, the suggested database is mysql and the text editor available is vim.

Step 1: You need a working Rails 3 environment on Dreamhost

Something like my past instructions but with gems installed in $HOME/.gems
You should have something like:

Applicazioni Web HTML5 vs Native. Riflessioni varie

Si sente sempre più spesso parlare di HTML5, vs flash, vs applicazioni native,.. ma di cosa si tratta in concreto?

Innanzitutto con HTML5 non si tratta di un prodotto finito ma di una specifica del consorzio W3C, quindi la sua bontà dipenderà da chi vorrà implementarlo. Inoltre molte delle tecnologie a cui si allude non fanno parte di questo standard e la loro implementazione non è allo stesso livello su tutti i browser (webkit, firefox, opera, ie). Potete farvi un'idea testando il vostro browser su html5test.com.

Html5 vs Flash

Flash è un plugin molto diffuso che viene utilizzato per lo più per video streaming e animazioni interattive (non che giochini). In questo senso Html5 svolge egregiamente lo streaming video tramite il tag <video> e un codec solitamente h264, theora o il nuovissimo WebM/vp8 reso libero da google.

Riguardo i "giochini" e le animazioni, html5 non ha ancora un'implementazione con prestazioni a livello di flash.

Online il "data.gov" della Regione Piemonte

Sulla scia di quello che è successo in America con Data.gov anche la Regione Piemonte ha deciso di liberare una parte dei dati in suo possesso.

Attualmente i dati divulgati dalla PA sono limitati, ci sono statistiche sulla scuola piemontese e l'utilizzo dell'ICT ma l'impostazione fa ben sperare.
Il formato scelto per distribuire i dati è csv e xml mentre per quanto riguarda la licenza d'uso si è scelto CC Zero (aka Pubblico Dominio), quindi potete usarli come meglio credete, anche per scopi commerciali.

Sul sito si accettano suggerimenti e per quanto mi riguarda ho suggerito l'utilizzo di una WebAPI (OAuth) e il rilascio delle mappe cartografiche. Vedremo :)

Un terminale più funzionale con un .bashrc stiloso

Se vi capita di usare spesso il terminale, vi farà piacere questo piccolo ritocco

 

  • Al posto del path completo viene visualizzata solo l'ultima cartella
  • Viene visualizzato il branch corrente di git se presente

 Ovviamente per sapere dove vi trovate potete sempre digitare 'pwd'

Installazione

Aggiungete al fondo del vostro ~/.bashrc:

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/|\1|/'
}
PS1="\W\$(parse_git_branch)$ "

Riaprite il terminale.

Nota. Se fate "sudo -s" rimane il $ e non viene il #. Consigli sono bene accetti :P

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)>' ...