Posts Tagged ‘ programming

Facebook API: un fallimento di grande successo

Le nuove API (Application Programming Interface) annunciate durante la conferenza F8, che dovevano semplificare tanto la vita agli sviluppatori, sono arrivate già da un pò e anzichè semplificarla hanno incasintato ancora di più la vita al programmatore. Già perchè sebbene alcune idee siano molto buone (interfaccia REST, protocollo oAuth 2.0) la documentazione e gli esempi sono completamente errati e sbagliati, privi di coerenza e nella fattispecie inutilizzabili. E’ una vergogna che il sito con più iscrizioni al mondo si presenti così male dal punto di vista professionale. L’unico modo per imparare le nuove API è quello di cercare in giro per internet su blog o articoli vari e procedere a TASTONI!

Probabilmente le nuove funzionalità sono state rilasciate in fretta e furia, senza controllare che ciò che rende una libreria o una API utilizzabile: la documentiazione.

Facebook gioca con la pazienza e con la vita dei programmatori (si perchè ovviamente si deve perdere tempo per cercare di capire come funzionano queste API che definirle uscite dal sedere di una vacca è un gran complimento).

Cosa andrebbe fatto:

  1. Stilare una VERA guida che indichi cosa si può fare oggi e cosa è sconsigliato
  2. Completare la documentazione
  3. Scrivere esempi funzionanti
  4. Infine riorganizzare la documentazione (com’erano le vecchie api andava benissimo!)

Back to the future

Eccomi qui dopo più di un anno di assenza dal mio blog, che vergogna!
Ho in programma di scrivere diversi post nei prossimi giorni che riguardano i miei interessi lavorativi correnti:

  1. Sviluppo iPhone
  2. Sviluppo di plugin e temi per WordPress
  3. Geolocalizzazione con Ruby e GeoKit

Stay tuned!

Mi ricorda qualcosa che mi è veramente accaduto…

Spostare un repository Subversion (SVN)

Questa mattina mi è capitato di dover spostare un Repository Subversion da un server ad un altro. L’operazione si è rivelata molto semplice:

Prima di tutto ho eseguito il dump del repository

piero@keplero:~$ svnadmin dump /path/to/repository > repository-name.dmp

dopo di che mi è bastato creare il nuovo repository sul server di destinazione

piero@galileo:~$ svnadmin create repository-name

in fine ho scompattato il dump nel file system

piero@galileo:~$ svnadmin load /new/path/to/repository-name < repository-name.dmp

E tutto è tornato operativo!

Leggi di Murphy per programmatori classici

  1. Qualsiasi programma, quando funziona, è obsoleto
  2. Qualsiasi programma costa di più e ci mette di più
  3. Se un programma è utile, dovrà essere cambiato
  4. Se un programma è inutile, dovrà essere documentato
  5. Ogni programma si espanderà fino a occupare tutta la memoria disponibile
  6. Il valore di un programma è direttamente proporzionale all’ingombro del suo output
  7. La complessità di un programma si arresta solo dopo aver oltrepassato le capacità del programmatore

ActiveRecord troubles

Ho dovuto un po’ sclerare su modello Rails inquando mi generava un errore piuttosto strambo quando eseguivo una find:

compile error
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1358: syntax error, unexpected tINTEGER
Object::1
^

Come ho risolto? All’interno della tabella avevo un campo integer di nome Type che mi mandava in panne la Find.

Rinominando quel campo, tutto è tornato a posto…

Che idiota… mai usare parole che hanno l’aria di ‘riservate’!

Remote Pair Programming with Eclipse and XPairtise

My friend Andrea (bimbomix1) has suggested to me to use XPairtise.

What is XPairtise? It’s a fantastic eclipse plugin for remote pair programming in a complete XP-style! The plugin concurs to share and modify the same code like a driver (who write the code) or navigator (who suggest the code). A comfortable perspective provide a chat session, a blackboard for notes and sketches, and a little project manager. Like in a true pair programming session, the navigator can’t write code (the keyboard is locked by XPairtise) until the driver switch the role with the navigator (for example at the end of Pomodoro…).

Use the plugin with Skype (for talk between pairs) is very cool and useful, but Isn’t a real substitution for the real pair programming.

You can get it here

Mocks Aren’t Stubs

Nella mailing list dell’XpUg di Varese è apparsa una interessante discussione sull’utilizzo dei mock objects.
Alla fine ne è saltato fuori questo paper presente sul sito di Martin Folwer
Mocks Aren’t Stubs

Se siete interessati all’argomento, buona lettura.

Linguaggi Web Oriented, il migliore?

Un interessante articolo sull’argomento è stato pubblicato su CmsWire.com lo scorso novembre. L’articolo metteva a confronto tre linguaggi di programmazione / framework per lo sviluppo di applicazioni Web: Java, PHP e Ruby On Rails.

Nell’articolo venivano fatte delle valutazioni (alquanto soggettive, dato che non si riportano i dati, ma apparentemente fedeli alla realtà) su fattori importanti al fine di individuare quale fosse il migliore. Questi fattori sono la scalabilità, la velocità di sviluppo, gli strumenti di sviluppo e la manutenzione.

Ognuno dei linguaggi ha un proprio cavallo di battaglia: PHP è molto scalabile (ovviamente dipende molto da come è stato scritto il codice), JAVA ha ottimi strumenti di sviluppo, e Rails si distingue per la sua velocità di sviluppo e per la sua manutenzione.

Ovviamente la conclusione che si può trarre è che la scelta del linguaggio dipende dal dominio del problema, da notare però che Rails prende il massimo dei voti su due parametri di giudizio su quatto e gli linguaggi arrivano al massimo a uno su quattro :-)

Leggi l’articolo intero.

Ciao Piero

Div trascinabile con gli Script.aculo.us

Un caratteristica interessante di Rails è che ha già impacchettati i famosi Script.aculo.us, script che consentono di creare pagine graficamente dinamiche. Ad esempio è possibile creare un div simile ad una finestra (cliccabile e trascinabile con il mouse) in poche righe di codice.

Nella view scriveremo

<%= javascript_include_tag "prototype" %>
<%= javascript_include_tag "scriptaculous" %>

per importare i Javascript necessari

Poi creeremo un Div e lo chiameremo “finestra”

  <div id="finestra">  clicca su di me per trascinarmi!  </div> 

Ora modifichiamo il css a lui appicato

#finestra {

position: absolute;
z-index: 70;
height: 400px;
width: 300px;
top: 20px;
right: 300px;
background-color: #FFFFDD;

}

Ora inseriamo uno script appena dopo <div id=”finestra”>

 <script type="text/javascript"> new Draggable('finestra'); </script> 

Il gioco è fatto, avremo un div che si comporterà come una finestra…

Referenze

Sito ufficiale di Ruby On Rails: www.rubyonrails.org

Sito ufficiale degli Script.aculo.us

Ciao Piero