programmazione

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

Gestire le modifiche a un progetto Rails con Bazaar e Olive

Diamo uno sguardo a Bazaar (il VCS di Ubuntu) e a come utilizzarlo per gestire un progetto fatto con Ruby on Rails.

Bazaar

Si tratta di uno strumento molto utile per gestire le modifiche fatte ai file (VCS) e le sue caratteristiche principali sono l'essere:

  • distribuito: si possono apportare delle modifiche a un progetto altrui e gestire le revisioni come se si fosse proprietari.
  • integrato: si integra con Nautilus ed è estensibile con dei plugin
  • semplice: viene utilizzato anche da chi usa un'altro VCS (es SVN) per fare delle modifiche locali


Riunificazione di 2 rami locali: myapp e myapp.experimental

Installazione

Potete installarlo selezionando bzr e bzr-gtk da Synaptic o con

apt-get install bzr bzr-gtk

Se volete avere le ultime versioni disponibili aggiungete questo repository

deb http://bazaar-vcs.org/releases/debs/feisty ./

Iniziamo

Per chi non lo sapesse un progetto Rails non contiene solo codice sorgente, ma anche file di configurazione, file temporanei, database, che ovviamente non vogliamo tener traccia nel VCS.
Questo utilizzo potrebbe sembrare specifico, ma problematiche molto simili sono comuni a molti altri contesti.

rails myapp
cd myapp
bzr init      # Crea la cartella .bzr
bzr add       # Aggiunge ricorsivamente i file presenti
script/server # Parte il server Rails, CTRL+C

Screencast su Gedit e i plugin per programmare

Ecco uno screencast su Gedit e alcuni plugin utili per la programmazione.


Potete anche scaricare il video in alta qualità o dare uno sguardo a Gedit Textmate-like per altre informazioni e l'abilitazione della colorazione della sintassi per i file RHTML

Textmate-like Gedit in few steps

UPDATE: A !! new version !! of this guide is avalaible.
UPDATE: This guide was for gedit 2.18.x, please upgrade to gedit 2.20.x to have an easier color scheme managing. Textmate is really a great text-editor (almost an IDE but faster), it has even the support for latest Ruby/Rails technologies like RSpec. On the GNU/Linux side there are also similar full-featured text editor and one is Gedit.

Gedit can be extended by plugins written in C or in Python, here is a tutorial how to set up a Textmate-like Gedit.

Syntax highlight for RHTML, RJS

By default Gedit supports a lot of languages php, C#, java,.. and Ruby, but Ruby embedded. To enable the sintax highlight in HTML files with embedded ruby code (.rhtml) you have to add 2 files (Thanks to Bitsbam).

From the terminal:

$ wget http://grigio.org/files/x-rhtml.xml; sudo mv x-rhtml.xml /usr/share/mime/packages
$ wget http://grigio.org/files/rhtml.lang;  sudo mv rhtml.lang /usr/share/gtksourceview-1.0/language-specs/

Select the plugin you need

The list of the plugins avalaible is growing fast; this is a list of plugins that work well each other.


Snippets: it permits to call structures of code easly and everytime you press TAB the cursor automatically jumps to the right position
Snap Open
: it opens the files that contains the word you are typing

Un assaggio di Ruby e Rails

# .oOoOo Un assaggio di Ruby & Rails v0.0.2 .oOoOo

=begin

° Introduzione
Ci sono tanti linguaggi di programmazione, il C per il "basso livello",
il Php per il web, il Visual Basic per le interfacce veloci, Java per le
applicazioni multipiattaforma, Bash per lo scripting di sistema, il Perl
per gli exploit..

Tutti simili e ognuno con le proprie peculiarità. Il C rimarrà ancora per
molto lo standard per il basso livello, ma ad alto livello ci sono state
innovazioni che non tutti i linguaggi di programmazione hanno considerato.

Questo documento non ha la pretesa di essere esaustivo sull'argomento

10 passi per diventare un (potenziale) programmatore Open Source

Avete installato GNU/Linux, lo utilizzate, ma volete andare oltre. ... Il software libero è bello anche perché c'è il codice quindi perché non approfittarne per imparare qualcosa di nuovo?

In questo howto analizzeremo in generale un caso sufficientemente specifico. L'obiettivo non è diventare dei guru della programmazione, ma raggiungere l'obiettivo conoscendo un minimo i "blocchi" che ci interessano.

(1) Motivazione

Indipendente dalle capacità tecniche, chi contribuisce al software (filosoficamente) libero o (tecnicamente) Open Source lo fa per uno o più dei seguenti motivi:
- Adattare al meglio il software alle nostre esigenze
- Interesse nel campo specifico
- Lavoro / soldi
- ...

In questo caso il motivo interessato è il primo perché "Se metto uno sfondo chiaro al Desktop di GNOME(Nautilus), i caratteri non si leggono bene".
Purtroppo questo valore non si può cambiare, neanche con un tema, perché questa informazione è proprio scritta nel codice (hardcoded). Non resta quindi che mettere mano al codice e risolverlo in qualche modo.

I colori verranno poi gestiti dall'interfaccia dei temi e a seconda della tonalità del desktop, verrà usato il viola o il giallo-verdino (che ovviamente l'utente potrà cambiare).

Nautilus colors

Ovviamente questa modifica è molto semplice da fare e non è neanche detto che venga accettata, comunque è un buon esempio giusto per iniziare.

(2) Documentazione

Prima di avventurarvi nel codice del programma, potrebbe interessarvi, almeno a grandi linee, come è stato strutturato. In questo modo eviterete di vagare in parti che non vi interessano.