Settembre 2009
1 post
5 massimo
Unobtrusive JavaScript...& friends
Con il termine Unobtrusive JavaScript (JavaScript non intrusivo) si indica un paradigma di programmazione JavaScript che si basa su 3 principi fondamentali:
Behavioral Separation
Graceful degradation
Progressive enhancement
Senza la pretesa di voler dare una spiegazione esaustiva per ognuno dei precedenti principi, cerchiamo di capire in termini pratici cosa significa e, soprattutto, perchè...
Giugno 2009
2 post
5 massimo
Login centralizzato tra applicazioni Rails
In un articolo precedente ho affrontato la questione del login centralizzato tra più applicazioni attraverso il protocollo CAS (Central Authentication Service). La soluzione presentata risulta una buona scelta nel momento in cui si debba gestire un’autenticazione comune tra applicazioni eternogenee, web o desktop, scritte in Rails, Java, PHP, Python o .NET.
Se però consideriamo una suite di...
10 massimo
Localizzazione URL in Ruby on Rails
Quando si parla di internazionalizzazione e localizzazione delle applicazioni web spesso non viene data la giusta importanza alla localizzazione degli indirizzi, aspetto fondamentale in termini di SEO.
A partire da Rails 2.2 è stato aggiunto al framework il supporto nativo a I18n e L10n con una gestione delle traduzioni e delle regole di localizzazione (date, valute etc.) basata su file .yml.
Al...
Marzo 2009
1 post
5 massimo
Backup incrementali su Amazon Simple Storage...
In Informatica il backup dei dati è una buona abitudine da adottare in ambito domestico ed una pratica che diventa assolutamente doverosa quando si passa alla sfera professionale.
Per le nostre applicazioni web abbiamo scelto una soluzione che prevede il backup giornaliero sui Server di Amazon attraverso il servizio denominato Amazon Simple Storage Service o, più semplicemente, Amazon S3.
...
Gennaio 2009
3 post
6 massimo
Login centralizzato con il protocollo CAS
Per “login centralizzato” si intende la condivisione da parte di più applicazioni web di un servizio di autenticazione degli utenti che garantisca l’acesso ad ogni applicazione attraverso un’unica login.
Consideriamo alcuni scenari:
La Intranet di un’azienda è dotata di una serie di applicazioni web ad accesso protetto i cui utenti devono essere autenticati attraverso il servizio di Active...
3 massimo
Posizionamento assoluto e relativo con IE6
Attraverso la proprietà position: è possibile controllare in maniera piuttosto precisa il posizionamento all’interno di una pagina web di un elemento di tipo block-level.
In particolare il posizionamento relativo – position: relative – usato in combinazione con una o più proprietà di offset (top:, right:, bottom:, left:) consente di definire lo scostamento dell’elemento rispetto alla posizione...
6 massimo
Sviluppare applicazioni Facebook con Ruby on Rails
Facebook non ha certo bisogno di presentazioni, soprattutto dopo il successo esponenziale che, da qualche mese a questa parte, ha vissuto anche in Italia.
Come in tutte le storie di successo c‘è chi utilizza morbosamente e chi critica cinicamente l’applicazione del momento; tuttavia nessuno può negare come il fenomeno debba essere degno di considerazione, non solo da un punto di vista sociale ma...
Novembre 2008
2 post
4 massimo
PDF::Writer vs RGhost per la creazione di pdf in...
Esistono molti scenari nei quali si rende necessaria la creazione di documenti pdf a partire, ad esempio, dai dati presenti in un datatabse.
Ruby offre varie soluzioni che possano essere di ausilio alla risoluzione di questo tipo di problema. Una di queste è la gemma PDF::Writer, che consente la creazione di PDF attareverso l’utilizzo di librerie native. Potete trovare una buona guida...
4 massimo
Ruby on Rails Menù
In molte interfacce viene utilizzato un menù in cui, durante la navigazione, la voce selezionata assume uno stile diverso dalle altre, attraverso l’assegnazione di una classe (es. “selected”) sulla base della pagina corrente.
Questo tipo di effetto può essere ottenuto in vari modi, ad esempio assegnando la classe “selected” in base ai valori assunti dal current_controller e dalla current_action.
...
Ottobre 2008
3 post
4 massimo
Macchine a stati finiti (FSM) e il plugin...
Una macchina a stati finiti (FSM) è un sistema dinamico costituito da un insieme finito di stati e da una funzione di trasferimento che ne specifica il comportamento, ovvero definisce le regole che determinano i passaggi della macchina da uno stato all’altro.
La macchina può essere rappresentata tramite un grafo diretto i cui nodi rappresentano gli stati e gli archi rappresentano le transizioni...
5 massimo
HATBM Checkboxes
Un problema molto semplice e ampiamente documentato è l’aggiornamento tramite checkbox delle associazioni tra due model che sono in relazione n:m tra loro:
1 class Conference < ActiveRecord::Base
2 has_and_belongs_to_many :speakers
3 end
1 class Speaker < ActiveRecord::Base
2 has_and_belongs_to_many :conferences
3 end
Per selezionare gli speaker nella form di una conference, tramite...
4 massimo
Parametrizzare un'applicazione Rails
In molte applicazioni può essere opportuno utilizzare delle costanti con cui parametrizzare alcune funzionalità, eventualmente in base all’environment corrente.
Un esempio calzante è la gestione dei parametri di connessione al database che, in un applicazione Rails, vengono scritti in /config/database.yml.
Seguendo lo stesso approccio, è molto semplice impostare parametri personalizzati. Creiamo...
Settembre 2008
4 post
4 massimo
Popolare il database di sviluppo in un progetto...
In un progetto Rails molto spesso è utile popolare il database di sviluppo con dati di test, in modo da simulare l’ambiente di produzione.
Supponiamo di sviluppare un Social Network che preveda l’iscrizione di utenti e la creazione di relazioni di conoscenza tra essi. Per testare le funzionalità del sistema potrebbe essere utile popolare il database in development con un numero sufficientemente...
4 massimo
Ruby on Rails: oggetti multipli nella stessa form
Supponiamo di avere 2 model Author e Book in relazione 1:n tra loro: vogliamo scrivere una form per la creazione e la modifica di un author e di uno o più book associati. In particolare vogliamo avere la possibilità di aggiungere e rimuovere un numero qualsiasi di book nella stessa form di author. Il risultato sarà qualcosa di questo tipo:
Cominciamo con l’esprimere la relazione tra i due...
2 massimo
Google Chrome e le applicazioni web
Da pochi giorni è uscito Chrome, il tanto atteso browser del colosso di Mountain View.
Come prevedibile la risonanza mediatica è stata notevole; tra le (più o meno innovative) feature ce n‘è una che ha catturato la mia attenzione più delle altre, ovvero la possibilità di creare delle scorciatoie per applicazioni web.
Questa funzionalità può apparire non così rilevante ma, a mio parere, è molto...
6 massimo
Un'alternativa a Globalize: GetText + Model...
Globalize è un ottimo plugin che copre tutti gli aspetti legati all’internazionalizzazione di un’applicazione Rails, tra cui:
Traduzione dei testi “statici” (View Translations)
Traduzione dei testi “dinamici” (Model Translations)
Localizzazione di date, numeri, valute etc…
Il setup del plugin provvede alla crazione di 3 tabelle sul database già popolate con le informazioni di localizzazione...
Agosto 2008
1 post
4 massimo
RESTful (Rails) Development
REST è un acronimo introdotto nel 2000 da Roy Fielding, uno dei principali autori del protocollo HTTP, che identifica uno stile di architettura per sistemi distribuiti (come il World Wide Web) incentrato sul concetto di risorsa.
Una risorsa è una qualsiasi entità identificabile (univocamente) da un’URL, manipolabile attraverso uno dei 4 verbi dell’http (get, post, put, delete) e indipendente...