mercoledì 1 giugno 2011

Annunci interessanti

Prima di tutto ruby on rails; refinerycms: è uscita la rel. 1.0 :-)

E poi Delphi; Marco Cantù rende disponibili i suoi esperimenti con REST clients scritti in Delphi; per il momento si va su Amazon Web Services, Simple Storage Service (S3), ma seguirà anche qualcosa per i google docs. Grazie Marco !

Back to Refinery: l'accoppiata con heroku e S3 mi sembra vincente; ho imparato "sfettolare" i prototipi in html statico e a formare i temi; forse il mio approccio è stato un po' troppo drastico, alla "occidentale", nel senso che sovrascrivo tutta la generazione del frontEnd, ma in compenso la flessibilità è illimitata; in fondo sono un programmatore, non un power user di Wordpress o Joomla.

Ciao !

martedì 17 maggio 2011

OPC delphi su google code

Oggi deviazione verso l'automazione industriale e lo sviluppo nativo in ambiente windows ! Ecco un interessante progetto open source per usare le specifiche OPC con Delphicode.google.com/p/opcdelphi/

Esistono comunque anche componenti già pronti, come dOPC e Sentrol.

OPCquick è un semplice client che mostra due approcci per la lettura asincrona: una "class to receive IDataObject data change advises" e una "class to receive IConnectionPointContainer data change callbacks"; quest'ultima (TOPCDataCallback) mi sembra più semplice.

Il minimo indispensabile per imbastire un po' di codice è:


var
  ServerIf: IOPCServer;
  GroupIf: IOPCItemMgt;
  GroupHandle: OPCHANDLE;
  ItemHandle: OPCHANDLE;

Gli item sono tenuti insieme in group e tutti i group sono attaccati ad un server. Ma è fondamentale iniziare con una chiamata a CoInitializeSecurity ...

Mi resta da capire se è più efficiente fare delle letture asincrone o sincrone ... mah !

lunedì 31 gennaio 2011

refinery cms

Refinery CMS è stato probabilmente il primo CMS ad essere disponibile in ambiente Rails 3; attualmente risulta il più scaricato (fonte: rubytoolbox); installarlo è facilissimo: gem install refinerycms.

Anche il deploy non dà problemi: io ci sono riuscito al primo colpo su heroku, incluso ovviamente l'appoggio di immagini e files su Amazon S3 (grazie all'esperienza fatta con new-mobility).

La documentazione disponibile è ingente, così come sono numerosi i siti in giro per il mondo che si basano su questa soluzione. Certo niente di paragonabile come diffusione a wordpress, ma comunque significativo.

Due sono i concetti chiave, qui: engine e theme, vale a dire i motori (cioè moduli creabili dal utente con un insieme specifico di campi) e ... i vestiti (cioè quella collezione di html, css e img che vestono il contenuto del cms). Adesso vediamo più in dettaglio i temi (themes). Per creare un tema:

rails generate refinery_theme name_of_theme

e intanto che ci siamo aggiungiamo

rake refinery:override view=shared/* theme=name_of_theme

Ecco fatto: adesso abbiamo una cartella che contiene tutto ciò che influenza l'apparenza del sito, escluso il contenuto ! Possiamo gestire più temi per lo stesso CMS, ma uno solo è attivo per volta, ovviamente; possiamo prendere la cartella di un tema e inserirla in un altro CMS (a patto che la struttura delle info gestite sia compatibile), ottenendo un veloce cambio di vestito.

La struttura del tema è fortemente ispirata a Rails 3: abbiamo praticamente la stessa struttura della cartella app/views, dentro cui ritroviamo le cartelle layouts e pages; anche le classiche cartelle stylesheets, images e javascripts sono contenute all'interno del tema e prendono il sopravvento sulle rispettive cartelle di public.

Bisogna fare attenzione ai riferimenti all'interno dei .css: ad es. ci si riferisce ad una immagine con /theme/images/logo.jpg, non semplicemente a images/logo.jpg; questo probabilmente vale in molte altre circostanze che solo la pratica può svelare.

Non resta che fare qualche prova ! Buon Lavoro


P.S. Come editor adesso sto usando redcar, che è scritto in Ruby !

giovedì 20 gennaio 2011

Jekyll, generazione di siti statici

Un sito web statico, di 4 o 5 pagine tutte con la stessa struttura, e magari una home un po' più carina ... ecco il target perfetto per una esercitazione con jekyll, una gemma di ruby.

gem install jekyll e siamo pronti a lavorare :-)

creiamo una cartella di lavoro (ad es. c:\ror\j0), ci mettiamo dentro un file di nome _config.yml con questo contenuto:



poi (dentro j0) creiamo una cartella di nome _site e una _source; infine lanciamo jekyll dalla shell dos o git: ciò che si trova in _source verrà elaborato ed eventualmente il risultato finirà in _site.


Immaginiamo di avere un file prove.html dentro _source con questo contenuto:



e poi immaginiamo di avere un file base.html dentro _layouts con questo contenuto:



Quando avremo salvato questi due file, Jekyll produrrà un file prove.html in _site con la loro "fusione" !



Bisogna cercare di separare quello che resta costante in ogni pagina e metterlo nei layout; in questo modo le pagine (abbiamo visto solo prove.html, ma possiamo averne quante ne vogliamo, anche organizzate in sottocartelle, e ognuna può - al limite - avere un layout diverso) restano molto "asciutte" e sono più facili da produrre e soprattutto da manutenere !

DRY: Don't Repeat Yourself, non ripeterti, in modo che se c'è da modificare qualcosa, lo si debba fare in uno e un solo punto.

Jekyll sa fare altre cose: ad es. implementa il formato liquid

Ora si tratta di provare e prenderci la mano. Buon Lavoro

sabato 8 gennaio 2011

version control: git

Update 20gen11: nuovo tutorial (in inlgese): http://gitimmersion.com/

Tutte le robe noiose, ripetitive e che non danno gusto, diamole da fare al computer, tanto lui ci gode. Veramente !
Ad esempio: la gestione dei sorgenti, o meglio: delle diverse versioni dei nostri programmi. La comunità ruby sembra essersi orientata su git come tool locale (cioè da far girare sul pc) e su github.com come repository, cioè come magazzino su internet in cui salvare i nostri sorgenti e condividerli con i colleghi (e con eventuali reclutatori o potenziali clienti che vogliono valutare le nostre capacità).

Ecco le istruzioni per installare git: http://progit.org/book/ch1-4.html
su windows si tratta semplicemente di scaricare l'installer da qui: http://code.google.com/p/msysgit (colonna di destra, featured downloads) ed eseguirlo.

Una volta installato bisogna configurarlo dicendogli chi siamo:

$ git config --global user.name "Your Name"
$ git config --global user.email youremail@example.com

A questo punto siamo pronti per mettere sotto version control una intera cartella, il cui contenuto verrà salvato in modo incrementale (cioè prendendo solo le differenze); è comunque possibile indicare files o intere sottocartelle che devono essere ignorate (file .gitignore tutto cognome e niente nome, strane eh ? Utile per  moduli oggetto ed exe, se stanno nella stessa cartella con i sorgenti e non ha senso salvarsi in quanto sono sempre riproducibili, ma qui parliamo essenzialmente di ruby, non di delphi). Allora:
1) lanciare la git bash,
2) andare nella cartella prescelta (cd c:/etcetcetc...)
3) una-tantum dare git init e
4) tutte le volte che vogliamo salvare una versione dare:

$ git add .
$ git commit -a -m "le mie annotazioni"

Facile no ? (Forse git add . è una-tantum, non serve ripeterlo in presenza dell'opzione -a, ma non sono sicuro).
Poi si possono fare i branch, cioè le ramificazioni: la versione attuale (detta anche master) viene per così dire congelata, si dà un nome a questa "divagazione" e poi (tipicam. alla fine delle sperimentazioni) ricongiungere la master con il branch, tenendo in pratica le modifiche (merge), oppure buttare via tutto e ripartire dalla master immodificata. Qui c'è un esempio veramente chiaro da seguire: http://railstutorial.org/ruby-on-rails-tutorial-book#sec:git_commands

Quando si fa viaggiare della roba su internet (cfr github ed heroku) si devono prendere delle misure di sicurezza in modo che solo noi possiamo gestire la nostra roba; si tratta di qualcosa di più di una semplice password: le chiavi SSH; ecco qui come costruirle: http://help.github.com/msysgit-key-setup/

Ora si tratta di crearsi un account (gratuito per iniziare) su github e uno su heroku. Nei prossimi post vedremo come installare uno strumento per la generazione di siti statici (jekyll), come salvare il lavoro fatto su github e come pubblicarlo su heroku usando il framework sinatra

Poi ci sarà da aprire un account anche su amazon web services (AWS) anche lui gratuito per i primi 6 o 12 mesi, se stiamo entro certi limiti di utilizzo. Tutto gratis ! Sembrerebbe proprio un mondo migliore, e per certi aspetti lo è davvero :-)

sabato 1 gennaio 2011

back to school

Update 20gen11: ruby+rails+git+SQLite installer !  http://railsinstaller.org/

Questo blog ha languito per un paio d'anni in attesa di una cena di ex-compagni di scuola che non si è concretizzata. Siccome da qualche tempo mi son messo a studiare un nuovo linguaggio (e un nuovo framework e un nuovo ecosistema e un nuovo modo di lavorare nel campo del software) ho pensato di raccogliere qui i miei appunti.

Magari può essere utile anche a qualcun altro e proprio a questo pair programmer immaginario, purchè lavori in ambiente windows, mi rivolgo.

Il linguaggio è Ruby; c'è già fuori la rel. 1.9.2 ma io uso la 1.8.7. Lo puoi installare in windows da qui:
http://rubyforge.org/frs/download.php/72085/rubyinstaller-1.8.7-p302.exe
quando lo esegui ti consiglio di selezionare la modifica della path e l'associazione dei files .rb all'interprete; per il resto conferma i default

Dopo scarica anche: http://github.com/downloads/oneclick/rubyinstaller/DevKit-3.4.5-20100819-1535-sfx.exe (il devKit 3.4.5)
esegui per decomprimere in una qualsiasi cartella (suggerisco una dentro quella di ruby, ad es. "c:\ruby187\devkit345")
si tratta infine di eseguire dk.rb da una finestra dos e seguire le istruzioni (prima "dk.rb init" e poi "dk.rb install" ... tutto qui :-)

Poi bisogna scaricare il database server SQLite; sono 3 file in tutto da mettere in "c:\ruby187\bin":
Li trovi in http://www.sqlite.org/download.html
prendi i precompilati per windows: http://www.sqlite.org/sqlite-3_7_3.zip e http://www.sqlite.org/sqlitedll-3_7_3.zip

Adesso apri una finestra dos e aggiorna gem:  
gem update --system

Poi, sempre dalla stessa finestra dos puoi installare rails 3 dando  
gem install rails
puoi seguire un tutorial qui:
http://guides.rubyonrails.org/getting_started.html .
L'installazione è tutta automatica, ma prende un tot di tempo - porta pazienza ... dovresti ottenere rails 3.0.3.

Adesso sei quasi pronto; ti serve un editor (prova geany, con il vibrant color theme !) e soprattutto git, il sistema di gestione dei sorgenti, indispensabile per fare il deploy su heroku.

Adesso un bel respirone e buttati se vuoi imparare, che sulla sabbia non è nuotare. Ecco un altro bel tutorial.

P.S: ho installato jolicloud sul mio netBook acer aspire one e, con qualche aggiustamento alle operazioni qui sopra illustrate,  si può configurare una macchinetta di sviluppo niente male; quello che impressiona è che con 170€ una tantum (il costo del netBook) e 20€ al mese (il costo dell'abbonamento a internet) puoi imparare a fare il programmatore (tutorial e forum abbondano) e arrivare addirittura a fare il deploy del tuo lavoro su internet (cfr heroku); rispetto ai 5 milioni di £ del TRS80-mod ][ e non mi ricordo più quanto del software (ma era parecchio, più tutti i libri da comprare in libreria) se ne è fatta di strada per avvicinare questo bellissimo mestiere a tutti quelli che vogliono provare a farlo.