domenica 21 marzo 2010

Javadoc - plsqldoc

Una cosa delle molte cose su cui Java ha lasciato il segno e' la standardizzazione del modo di gestire la documentazione di utilizzo delle varie classi / interfacce e dei loro metodi, tramite Javadoc.

Molti altri linguaggi hanno adottato un approccio simile, anche Ruby ha il suo RDoc.

Anche per chi programma in Oracle Plsql, puo' appoggiarsi ad un tool che leggendo direttamente le informazioni su DB costruisce le API Reference.

Ci sono principalmente due progetti su questo argomento :
1) http://sourceforge.net/projects/plsqlutils/
2) http://pldoc.sourceforge.net/

Sono tutti e due progetti di qualche anno fa che non hanno avuto una loro evoluzione, anche se il primo sembra piu' "ufficiale", sul quale si appoggia anche un altro progetto "OraDoc", a mio avviso e' il secondo "pldoc" che risulta piu' immediato e maneggevole.
Una volta scaricato e' sufficiente eseguire il batch pldoc.bat (pldoc.sh) indicando il db e i package da leggere e sul percorso corrente (o specificato tramite -d) verranno creati i file html in puro stile Javadoc.
Un esempio di esecuzione e' :
  • pldoc.bat -doctitle testPLSQLDOC -d myfolder -url jdbc:oracle:thin:@mydbmachine:1521:mydbsid -user userx -password userxpassword -sql USERX.MYPACKAGE1,USERX.MYPACKAGE2
Attenzione : ad indicare sul parametro -sql l'utente/schema in maiuscolo altrimenti verra' rilanciato un errore di pacchetto non trovato.

La scrittura della documentazione deve essere fatta nello Spec del package e non nel body.

Se non si hanno troppe pretese, il tool funziona efficaciemente non possiede funzionalita' avanzate, come la possibilita' di trasferire via FTP la documentazione o un interfaccia GUI di gestione etc.. , ma se ne puo' fare tranquillamente a meno.

lunedì 8 marzo 2010

Rails - Controller Routing in Subdirectory

Al fine di razionalizzare e aggregare funzioni specifiche puo' essere utile far rispondere un determinato controller ad un webpath nidificato rispetto a quello normale.
Per fare questo e' sufficiente ci sono una serie di passi da effettuare :
  • creare un controller in subfolder della dir. controller (se desiderate tramite script/generate subfolder/controller, es. ruby script/generate admin/users ).
  • creare le view in un subfolder con lo stesso nome del subfolder.
  • se desiderate potete modificare il routing in routes.rb in modo da puntare la richiesta al nuovo percorso, tramite :
    map.connect 'subfolder/controller/:action/:id', :controller => 'subfolder/controller' o tramite il map.namespace.
Se siamo in presenza di un application layout o in ogni caso in cui occorra puntare al controller corretto indicare nel reference :controller :
  • "subfolder/controller" se si desidera puntare al controller nidificato.
  • "/controller" se si desidera puntare al controller in posizione root.

Utility - GIMP - dbp

Durante la costruzione di siti vetrina, capita di dover eseguire una serie di operazioni (ridimensionamento per i thumbnails, renaming, crop etc..),  su una grossa mole di immagini, per evitare di farne una ad una, esiste un plugin GIMP che viene in soccorso :

http://members.ozemail.com.au/~hodsond/dbp.html

L'interfaccia e' abbastanza spartana, ma efficace nel funzionamento.

Utility - Q-Dir

Spesso capita di avere a che fare con spostamenti, comparazioni, visualizzazione di files distribuiti su diverse directory ed e' cosi' che si inizia con qualche esplora risorse, aperto e si finisce con 10 e piu' finestre e via di interminabili ALT+Tab alla ricerca della finestra giusta.
Un utile strumento che ovviamente non risolve tutti i problemi, ma senza dubbio agevola l'utilizzo e' "Q-Dir" :

Tramite la visualizzazione contemporanea di piu' folder (fino a 4) e' possibile in modo agevole gestire i propri files.


domenica 7 marzo 2010

Ruby on Rails - Ambiente di sviluppo

Dopo il primo progetto costruito senza alcun ambiente di sviluppo, ma semplicemente da riga di comando e editor (cosa consigliabile per evitare di prendere per scontato in fase di apprendimento, concetti che l'uso di un RAD ti maschera), ho deciso di cercare un RAD che potesse un po' velocizzare lo sviluppo.
Abituato agli IDE per Java che, anche se molto potenti, sono sempre piu' invasivi nel progetto e spesso legati all'ambiente di runtime (vedi cartella nbproject di Netbeans, .settings di WebSphere, i vari xml di configurazione di Jdev per il deploy su OC4J), ho cercato per Ruby uno che potesse piu' possibile essere qualcosa di piu' di un semplice editor ad evitare il trauma nel caso di migrazione da RAD a RAD, dopo un po' di ricerche tra i prodotti, la mia scelta e' caduta su RadRails :

http://www.aptana.com/

anche se cerca di installare un po' di Gems utili al debug e altro, disabilitandole l'ambiente rimane pulito, sempre valido e funzionante da riga di comando o da altro RAD.
La piattaforma e' Eclipse e un solo file extra ".project" e' presente, sono presenti inoltre, in perfetto stile Eclipse, plugin di ulteriori funzionalita' quali l'aggancio a server di versioning, stile Subversion etc...

Errori Subdoli - 1 - warning: multiple values for a block parameter (0 for 1)

Mi sono imbattuto in questo errore o meglio warning visto che non mi creava problemi nell'applicazione :
  • C:/Sviluppo/Ruby/WorkSpace_Ruby/geotaggy/app/views/users/passwordforgotten.html.erb:3: warning: multiple values for a block parameter (0 for 1)
    from C:/Sviluppo/Ruby/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/helpers/capture_helper.rb:36
durante lo sviluppo non si presentava alcun problema, ma non appena fatto un functional test, sulla console si presentava (pur funzionando) questo messaggio.

Il problema era semplicemente dovuto alla presenza del parametro del blocco f sul form_tag sulla view, probabilmente dovuto alla trasformazione da un form_for.
  • form_tag(:controller=>"users" , :action=>"passwordforgotten") do |f|
Siccome si tratta di un form_tag non e' gestito il parametro quindi la sintassi corretta e'
  • form_tag(:controller=>"users" , :action=>"passwordforgotten") do

Della Serie "Errori Subdoli"

La serie riguarda tutti gli errori che per la loro natura "subdola" fanno perdere un sacco di tempo inutilmente.
Quante volte e' capitato di perdere 2 ore e poi accorgersi che il problema era una virgolina fuori posto...

martedì 2 marzo 2010

Rails Api

ci sono diversi siti dove e' possbile trovare le api di ruby e di rails, ma uno dei migliori per la ricerca e per i contenuti e' :

http://apidock.com

Rails I18N Traduzione Modello

Per tradurre il nome del modello e dei suoi attributi, inserire nel file locale ??.yml (es. it.yml), le traduzioni nei seguenti path :

Traduzione del modello :
  • "lingua".activerecord.models."modello"
esempio :
  • it.activerecord.models.user

Traduzione degli attributi :
  • "lingua".activerecord.attributes."modello"."attributo"
esempio :
  • it.activerecord.attributes.user.email

Dove :
"lingua" -> il prefisso della lingua (es. : it)
"modello" -> il nome del modello
"attributo" -> nome dell'attributo

Rails I18N Gestione Errori

Per gestire i messaggi di errore in lingua occorre aggiungere nel file ??.yml (es. it.yml), la traduzione nelle seguenti modalita' :
Traduzione codice di errore per ogni Attributo :
inserire la traduzione in questo path :
  • "lingua".activerecord.errors.models."modello".attributes."attributo"."tipodierrore"
esempio :
  • it.activerecord.errors.models.user.attributes.email.invalid
Traduzione codice di errore a livello generale :
  • "lingua".activerecord.errors.messages."tipodierrore"
esempio :
  • it.activerecord.errors.messages.invalid
Dove :
  • "lingua" -> Il prefisso della lingua (es.: it)
  • "modello" -> il nome della classe del modello.
  • "attributo" -> il nome dell'attributo.
  • "tipodierrore" -> codice di errore secondo lo standard rails (es. blank, too_short etc...)
Per la lista dei tipi di errore e per gli yml utilizzabili per ogni lingua e' possibile visitare il sito su GitHub :

domenica 28 febbraio 2010

Scopi di questo Blog

La finalita' di questo blog e' di condividere informazioni di carattere tecnico informatico quali :
  • Opinioni su siti
  • Opinioni su strumenti
  • Opinioni su tools di sviluppo/librerie etc..
  • Metodi di sviluppo
  • Best Practices
In modo piu' tecnico e veloce rispetto ad un articolo e/o recensione, presente sull'altro mio blog.