Tag Archives: programming

LXterminal on steroids

Qualche miglioramento per rendere migliore questo ottimo programma.

Da un po’ di tempo uso lxterminal (dal progetto LXDE) al posto di gnome-terminal, ma mi sono scontrato subito con alcune sue limitazioni. E come me anche altri utenti, come Giggio che me l’ha segnalato nei commenti del mio articolo su Debian sull’Eee900.

Ho quindi preso il coraggio a quattro mani e mi sono messo a studiarne il sorgente. Nonostante sia in C, è scritto in modo molto pulito, quindi sono riuscito facilmente a risolvere i due problemi grossi che aveva: un buffer di scrollback troppo limitato (il valore di default, credo un centinaio di righe), e le scritte in grigio su fondo nero, che rendevano stancante o anche impossibile la lettura.

I miei sforzi si sono concretizzati in una patch che ho segnalato all’upstream (che spero verrà integrata presto), e già che c’ero ho rimesso in ordine anche l’interfaccia di configurazione, che era un po’ confusionaria con due parametri, figurarsi ora che sono 5. :)

Ora vi potete sbizzarrire come preferite coi colori, con combinazioni anche oltre il limite dell’assurdo. Continue reading

Il PHP(4) è morto. Viva il PHP(5)!

Ne danno l’annuncio i parenti e gli amici tutti…

Con la release 4.4.9, rilasciata il 7 agosto, si chiude la storia di PHP4. Era già stato annunciato un anno fa, e dall’8/8/8 (8 agosto 2008) la versione 4 di PHP non verrà più supportata né sviluppata. Non ci saranno nemmeno patch di sicurezza, se non da parte di terze parti (come Debian, che sicuramente lo supporterà almeno fino al 2010, visto che in lenny c’è ancora).

Era ora!

PHP4 ha segnato una discreta svolta rispetto a PHP3, con l’introduzione della programmazione a oggetti.

Ma PHP5 è su un altro pianeta. La programmazione a oggetti è enormemente migliorata rispetto al 4, e sono state deprecate diverse feature che rappresentavano enormi buchi di sicurezza o fonti di inefficienze o di mal di testa da parte dei programmatori, tra cui il maledetto register_globals, ma anche il safe mode, le magic_quotes, ecc.

Queste, con PHP6, spariranno del tutto. Quindi conviene iniziare subito a sistemare i propri software, e/o a disinstallare dai propri server i software che ne fanno uso. E con PHP6 (e 5.3) verranno introdotte altre novità tra cui i namespace e un maggior supporto a UTF-8.

Il problema finora è stata l’enorme mole di software scritti in PHP3, portati in PHP4 contando su queste caratteristiche, e mai aggiornati, per pigrizia o perché “finché funziona, non ripararlo”. Questo ha condizionato la diffusione di PHP5 che, dopo quasi 4 anni dall’uscita, è adottato ancora da solo il 30% dei provider a livello mondiale.

Chi glielo fa fare di installare PHP5 se nessuno sviluppa col 5, e chi ce lo fa fare di sviluppare in PHP5 se nessun provider ce lo fornisce?

Per fortuna diversi grossi progetti, tra cui Drupal, hanno deciso di abbandonare PHP4 per “costringere” i provider a fornire il 5, e questo ha convinto la Zend a dare l’annuncio della morte di PHP4.

Ora speriamo che i sysadmin vengano autorizzati all’upgrade al più presto, anche se ci saranno sicuramente milioni di utenti che si lamenteranno che il loro PHPNuke (una polveriera con la miccia già pronta) in PHP3 non gira più.

Aggiornate!

Vala e Clutter

Interfacce in 3D in modo semplice e veloce.

Da un po’ di tempo seguo lo sviluppo di Clutter, una libreria che permette di scrivere interfacce 3D basate su OpenGL, e quindi automaticamente accelerate se avete i driver 3D per la vostra scheda, in modo molto semplice.

Non andando molto d’accordo con il C (mi si ingarbugliano spesso i puntatori e i cast ;) ), aspettavo che fossero stabili e utilizzabili i binding per Vala, e dopo il recente rilascio della versione 0.8.0 di Clutter, finalmente anche i binding sembrano a buon punto, quindi mi sono messo a smanettarci. L’unica “fregatura” è che per ora bisogna scaricarli via SVN e installarli a mano in /usr/share/vala/vapi/.

Purtroppo non si trovano molti esempi in Vala, e quelli che si trovano sono basati sulla versione 0.6.x di Clutter, quindi ho cercato di fare un mix di questi e degli esempi in C sul sito ufficiale, seguendo il manuale ufficiale di Clutter che, nella migliore tradizione Gtk/Gnome, è utilissimo se sapete già usarlo, ma molto rognoso se state iniziando, e me ne sono uscito col primo programmino: Continue reading

Google non è poi così open-friendly…

… come voleva far sembrare.

In questi giorni sono pieno di lavoro fin sopra la testa, quindi perdonatemi se posto poco, ma oggi sono venuto a conoscenza di una cosa che mi ha fatto perdere parecchia della stima che avevo in Google.

Sembra che Google stia distribuendo le nuove versioni dell’SDK per Android solo ai programmatori che hanno superato la prima fase del concorso per lo sviluppo di applicazioni, quello che aveva suscitato le ire degli italiani e anche un’interrogazione in parlamento, a causa delle nostre leggi sui concorsi.

Tutti gli altri sviluppatori stavano aspettando le patch da oltre 4 mesi, e avevano segnalato diversi bug, anche gravi, nell’SDK stesso, ed ora un dipendente di Google, per sbaglio, ha inviato alla mailing list degli sviluppatori, invece che a quella dei vincitori del concorso, un messaggio in cui li informa che la nuova versione dell’SDK è disponibile della loro area privata di download.

Si è scoperto poi che quegli sviluppatori hanno firmato un NDA (Non Disclosure Agreement) che vieta loro di rilasciare informazioni sull’SDK.

Ora molti sviluppatori sono delusi dal comportamento di Google, e io sono d’accordo con loro. Che senso ha rilasciare l’SDK solo ad alcuni e non a tutti? Potrebbe essere comprensibile dare un canale preferenziale per le informazioni o per il debug all’SDK a questa elite, ma lasciare indietro tutti gli altri significa semplicemente che non c’è alcun interesse nello sviluppo open source, ma solo nello sfruttamento della comunità per la scoperta di bug, senza dare loro nulla in cambio.

Cercando informazioni ho poi scoperto che Google non ha nemmeno mai rilasciato i sorgenti di Android, e che si riserva di farlo solo dopo che sarà uscito il telefono vero e proprio, e che David “Lefty” Schlesinger, che se ne è lamentato nella mailing list, è stato moderato per averlo chiesto.

Non mi meraviglia che molti stiano abbandonando Android per sviluppare per l’iPhone, anche se avrei preferito si fossero rivolti a OpenMoko, che ne ha più bisogno. Ma solo sicuro che qualcuno tra loro lo farà.

Pessima figura, Google.

Esse ed Essedue v1.0. Debianizzati

Prima milestone per i miei due programmini.

Oggi, con un po’ di tempo a disposizione, mi sono messo a lavorare su Esse ed Essedue, e ho implementato alcune modifiche che mi hanno convinto a portare la versione alla fatidica 1.0:

  • In fase di chiusura viene controllato che non ci siano file aperti e modificati ma non salvati, e viene chiesta conferma
  • Si possono aprire file direttamente dalla linea di comando. Se non esistono o sono illeggibili viene aperto un requester di errore
  • Ho aggiunto un file .desktop, in modo da farli apparire nei menu di Gnome, KDE e dei WM e DM che seguono le direttive freedesktop.org
  • Entrambi sono stati debianizzati. I file per creare il pacchetto deb sono inclusi assieme ai sorgenti.

Ora anche chi non era interessato a Vala o alla programmazione in genere, potrà scaricarsi il pacchetto deb della versione che preferisce, presente nella pagina di progetto di Esse, ed utilizzarlo. Non ho testato, ma in teoria il pacchetto dovrebbe essere compatibile anche con Ubuntu 8.04.

Se non vi piace, aptitude remove è vostro amico.

Se trovate dei bug non esitate a segnalarmeli. Continue reading

Essedue v0.1

Esse, ancora più scarno

Segnalo a chi fosse interessato, nella pagina dedicata ad Esse, il mio micro-editor scritto in Vala, la disponibilità di Essedue.

Si tratta dello stesso micro-editor, con le stesse caratteristiche minimali, a cui è stata completamente rimossa la dipendenza da Glade. Ora la GUI viene costruita interamente da codice, e per i menu e la toolbar ho utilizzato UIManager.

Il pacchetto è più piccolo, in quanto XML non è proprio un formato “risparmioso”, mentre l’eseguibile è cresciuto leggermente, da 36 a 40 KB. In compenso, in memoria, esse occupa 13.3 MB (di cui 8.1 condivisi, quindi 5.2) ed essedue 12.6 (di cui 7.6 condivisi, quindi 5.0). In pratica tutto il risparmio, come previsto, è dato dalla libglade (500 KB) e dal DOM XML per la stessa (circa 200 KB). Il risparmio non è enorme, soprattutto in un sistema che usa già glade per altri software, ma in un sistema embedded come un palmare anche solo quei 200 KB potrebbero essere utili per qualcos’altro.

Per fare un confronto molto spannometrico, geany occupa 19.2 MB (di cui 9.5 condivisi, quindi 9.8) e gedit  28.5 (di cui 15 condivisi, quindi 13.5).

Ora non mi resta che capire dove vadano a finire quei 5 MB, viste le dimensioni dell’eseguibile, ma presumo in strutture di sistema, aree allocate dalle librerie, bitmap dei widget, ecc. Mi piacerebbe capire se si possono ridurre.

Esse 0.1, un piccolo editor in Vala

La mia prima applicazione in Vala. Che emozione! :)

Come promesso, ho trovato il tempo di ripulire un po’ il codice del mio primo programmino in Vala, e per l’occasione ho creato una sezione apposita del sito dedicata a Vala, con una sottosezione dedicata a questo programmino, che ho chiamato Esse (spero non ci siano altri software con lo stesso nome…).

Il codice non è molto denso di commenti, anche perché, secondo me, è talmente chiaro e lineare che avrei finito col riscrivere in italiano quello che già si capisce leggendolo. L’unica cosa che forse confonde un po’ le acque sono i continui cast tra un oggetto e l’altro. Spero che nelle future versioni di Vala il tutto venga un po’ automatizzato e reso più trasparente.

Che altro aggiungere? Scaricatelo, guardate il sorgente, provatelo e fatemi sapere le vostre impressioni. La licenza è GPL2.

Vi ricordo che avrete bisogno del compilatore Vala (e del GCC) per compilarlo. In Debian Lenny (testing) è già presente da diversi mesi, quindi basta un

aptitude install valac

Happy hacking. ;)

Multi core e programmazione concorrente

Bisogna adeguarsi al mondo che cambia…

Qualche giorno fa Donald Knuth, uno dei mostri sacri della programmazione, autore di vari libri della serie Art of Computer Programming, ha rilasciato un’intervista a InformIT in cui, tra le altre cose, esprime un parere estremamente negativo sulla attuale tendenza dei produttori hardware verso le architetture multi-core.

Il suo pensiero si può riassumere più o meno con: i produttori hardware non sanno più come migliorare le prestazioni dei loro chip, quindi hanno riciclato l’idea del multiprocessing, mantenendo le prestazioni fisse (o inferiori) su un singolo core, e mettendo diversi core per poter dire che la CPU è più veloce. In questo modo fanno ricadere la “colpa” nel mancato rispetto della legge di Moore (il raddoppio della potenza di elaborazione ogni 18 mesi) sui programmatori, dicendo che non sono in grado di scrivere software adatto alle nuove architetture.

Io, come diceva un saggio, sono “completamente d’accordo a metà col mister”. Continue reading

Zend Framework 1.5

Nuova versione del framework “ufficiale” per PHP, con numerose novità interessanti.

Assieme a un restyling del sito, che trovo molto meglio del precedente (almeno ora è fluido in verticale), anche se ha ancora qualche link rotto, è stata annunciata oggi la nuova versione di Zend Framework, la 1.5.

Le principali novità di questa versione sono Zend_Layout, che permette di avere un layout comune a tutte le pagine invece di doverlo ripetere per ogni View o di dover usare accrocchi per includere i pezzi in ogni View, e Zend_Form, che permette di creare dei form da passare alla View e di inglobare negli stessi le informazioni per la validazione dei campi oltre a permetterne la validazione al volo anche tramite AJAX (informando il browser tramite JSON sugli eventuali errori).

Ci sono moltissime altre novità, naturalmente, oltre a diversi bugfix.

Più veloce della luce Akrabat, che in contemporanea ha rilasciato la sua nuova versione (anche questa 1.5) del tutorial per Zend Framework, includendo già le informazioni su Zend_Layout e Zend_Form.

Trovo molto intelligente la sua scelta di categorizzare i vari form come Model, ma devo ancora vedere la documentazione ufficiale, se già lo prevedeva.

In realtà ad una prima occhiata avevo classificato Zend_Form come una feature utile al massimo per chi scrive CMS, perché rimuove dalla View le informazioni sul form, rendendo la vita difficile ai grafici/HTMListi quando si lavora in un ambiente misto, ma ora sto meditando se ricredermi. Forse lo proverò direttamente sul campo per vedere le reazioni.

Ho già installato il nuovo framework in parallelo al precedente 1.0 (che mantengo per non rischiare la compatibilità di alcune applicazioni già scritte) e nei prossimi giorni lo proverò sicuramente.