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 !
mercoledì 1 giugno 2011
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 Delphi: code.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;
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 !
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
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:
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:
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 :-)
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.
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/
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/
prendi i precompilati per windows: http://www.sqlite.org/sqlite-
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/
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.
Iscriviti a:
Post (Atom)