Il blog di Alessandro Sivieri aka Siv

Syndicate content
Stream of consciousness...
Updated: 21 min 50 sec ago

Numbers

17 July, 2010 - 10:51

Dato che sono ben due settimane che non scrivo, butto giù un’osservazione: ogni tanto qualcuno si lamenta di “Numbers”, il telefilm sui matematici che risolvono polizieschi, le cui teorie in effetti in alcuni casi sono tirate un po’ per i capelli.

Quest’anno, tuttavia, nella stagione che stanno ora trasmettendo, sarà il destino ma stanno utilizzando tutta una serie di tecnologie (e relative basi teoriche) che sto studiando proprio in questa sessione d’esami, ad esempio:

  • il simplesso, usato per risolvere un problema di programmazione lineare (ora non ricordo di preciso il caso): Ricerca operativa
  • un set di robot da utilizzare per mappare automaticamente la zona di un disastro ferroviario: Agenti autonomi (ed anche altri esami gà dati)
  • un file audio con rumori di fondo da filtrare per poter comprendere il messaggio di un infiltrato: Computer music

Insomma, le coincidenze aumentano…

Tradimenti di Java

4 July, 2010 - 21:04

Il codice incriminato:

public class Test { public static void main(String[] args) { String a1 = "test"; String a2 = "test"; System.out.println(a1 == a2); a2 = new String("test"); System.out.println(a1 == a2); } }

Il primo confronto ritorna true, mentre il secondo false: ora, io avevo sempre pensato che una stringa inizializzata nel primo modo fosse semplicemente una scorciatoia al posto di new, invece a quanto pare sono due cose profondamente diverse. Il primo confronto dovrebbe, a norma di legge, confrontare i riferimenti, non i contenuti, ed invece non è così (nonostante i due oggetti siano dichiarati separatamente).

Perchè l’ho chiamato tradimento? Bè, perchè questo viola chiaramente il presupposto degli oggetti in Java: per quanto le stringhe siano un tipo base, sono comunque oggetti a tutti gli effetti, o almeno lo erano prima di questa scoperta… inutile dire che vale lo stesso fattaccio anche per gli oggetti che incorporano i tipi base (Integer vs. int). Questo dimostra comunque che conviene usare equals, dato che se una stringa viene ricreata l’== non funziona più, ma resta un notevole pacco.

Un ringraziamento a Maintux, che ha insinuato il seme del dubbio, ed a Sante che ha condiviso un’istanza di Eclipse all’uopo.

Phonon & VLC

19 June, 2010 - 15:47

Se avete notato qualche rallentamento nei programmi multimediali con KDE (parliamo principalmente di Amarok), soprattutto nelle ultime versioni, ebbene ciò potrebbe essere dovuto al backend in uso: quello maggiormente utilizzato, fino a qualche tempo fa, era Xine (GStreamer esiste, ma non lo si è mai considerato molto performante), ma ha avuto nel tempo diversi problemi ed è quindi in fase di abbandono, specie alla luce di una nuova collaborazione tra KDE ed il gruppo di sviluppatori di VLC.

E’ già possibile testare una versione in sviluppo del nuovo backend (e posso dire che è sparito quel fastidioso bug/feature che faceva sì che un click sulla pausa di Amarok provocasse la pausa del brano dopo almeno 2 secondi…), e su Ubuntu è discretamente semplice: aggiungete un repository su Launchpad con VLC 1.1 (che, ricordo, è RC), quindi aggiornate ed assicuratevi di avere libvlc-dev on board; scaricate il repository Git di Phonon-VLC, quindi compilatelo (assicurandovi di passare -DCMAKE_INSTALL_PREFIX=/usr, così da evitare che Phonon non veda il backend stesso al termine dell’installazione; questo parte dal presupposto che KDE sia in /usr), installatelo e lanciate un bel kbuildsycoca4 –noincremental. Quindi andate nelle impostazioni audio e cambiate backend

Provate per credere!

Sembrowser 0.3

18 June, 2010 - 18:11

Sembrowser 0.3

Hi everyone!

I have just released Sembrowser version 0.3 (sources here, Ubuntu packages here); not much changes since 0.2, time is always a problem, but it was worth publishing it because of the two most important features added:

  • text filtering for tags: thanks for all the facilities provided by kdelibs, in few lines of code I have added an edit box for narrowing the tag list by searching through some text;
  • the facet-term underlying structure is changed, with its classes trying to follow the Model-View-Controller architectural pattern; in this way, it should be easier to add new facets or new views, with less code involved. Please notice that this may not be the final structure: some discussions are happening right now about this, so things may change soon.

Just a reminder: Sembrowser is a (very poor) clone of Dolphin, and it is not meant to substitute the default KDE file browser: it is being developed for testing faceted browsing of Nepomuk metadata applied directly to file browsing; the side panel offering this new functionality may (hopefully) someday be ported to Dolphin itself (or to some other Nepomuk apps). So, do not complain about missing functionalities (for the manager part), because I have just added the most important ones, but they are not the main goal here.

Here in Politecnico the exam session is starting right now, so the next month will be a little busy for me; fortunately, by the end of july I should have finished all of my exams, so I should have some more time to dedicate to KDE (especially if some things will get realized as I wish, but more on this later).

Upgrade alla 3.0

18 June, 2010 - 10:37

E’ uscita la versione 3.0 di WordPress, e scrivo queste due righe solo per dire che sono ammirato della velocità dell’upgrade… memore di altri passaggi tra minor version della 2.x, ero pronto ad aspettare anche qualche minuto, ed invece in qualcosa come 15 secondi l’upgrade è stato fatto!

Spettacolo… ribadisco che WordPress è il miglior gestore di siti esistente, quantomeno ad oggi.

Windows 7 updates

16 June, 2010 - 19:43

Win7 updates

Aaaaah! Ma quanti minchia di updates hai?

Update: Arduino & Java

13 June, 2010 - 11:34

Brevissimo update del mio ultimo post su Arduino & Java: ho verificato un sospetto che avevo, ed in effetti il codice di test funziona, il problema era dovuto ad una differenza di baud rate: il default dello sketch è 57600, mentre quello della classe Java Arduino è 115200; sovrascritto quest’ultimo valore (usando un costruttore diverso), la demo funziona correttamente.

In allegato, il codice aggiornato (con tanto di script Ant, se non volete usare Eclipse; dovrete comunque passare il path della libreria nativa all’interprete, temo): Arduino – Eclipse.

Arduino? Un’altra classe nel vostro programma…

10 June, 2010 - 14:55

Ieri ho avuto il piacere di giocare con la seguente guida, che di fatto è un’unione di altre due guide, e permette di programmare l’Arduino in Java.

“Eh?”, diranno i puristi. Ebbene sì: caricando nel microprocessore uno sketch incluso tra gli esempi del PDE di Arduino (StandardFirmata), e creando un progetto Java sotto Eclipse (ma non siete obbligati ad usare un IDE, vi basta anche una mano di Vim) con giusto un paio di jar di Processing, una sorta di sottolinguaggio costruito per fare arte e programmare (non chiedetemi una definizione migliore, non saprei darvela, nemmeno io ho le idee chiarissime su cosa diavolo sia), è possibile di fatto impiegare l’Arduino come un oggetto remoto.

Ora, non vorrei che l’ultima definizione spaventasse qualcuno, ma il corso di sistemi distribuiti ha avuto i suoi effetti: nel codice Java diviene possibile, con questa modalità, creare un oggetto della classe Arduino (che trovate linkata nell’articolo di cui sopra), e su di esso chiamare i metodi corrispondenti alle API C++ che normalmente si usano per programmare la piattaforma; la classe stessa si occupa di comunicare via seriale con l’hardware Arduino e, tramite lo sketch caricato in precedenza, di eseguire in remoto i comandi e restituire il risultato direttamente in Java.

Ora, questo potrà sembrare una bella sega mentale e basta, ma in realtà apre alcune prospettive decisamente interessanti: per quanto, così facendo, si perda la caratteristica di standalone del circuito elettrico, dato che la comunicazione seriale diventa obbligatoria (tenete presente che il programma che caricate nel microprocessore si limita ad eseguire comandi remoti, non li memorizza), resta il fatto che trattare Arduino come un semplice oggetto, come tutte le altre cose in Java, permette una certa flessibilità sicuramente interessante, ed evita al programmatore di dover mettere le mani direttamente nel protocollo seriale per gestire la comunicazione stessa (oltre al fatto che si utilizza un linguaggio serio(TM), per quanto comunque il PDE di Arduino nasconda una parte del codice C++ necessario a far funzionare i vostri circuiti).

Insomma, non ho ancora fatto grossi esperimenti in merito, ma sicuramente è una modalità stimolante e da approfondire.

P.S.: rispetto all’articolo linkato in alto, è necessario aggiungere che deve essere importato anche il jar di RxTx, la libreria seriale, che trovate nella stessa cartella di Processing dove si trova Serial.jar; all’archivio Java va inoltre aggiunta la libreria librxtx.so, sempre dalla stessa cartella, che potete settare nelle proprietà del Build Path in Eclipse come nativa per rxtx.jar.

P.S.S.: includo anche uno zip del progetto di esempio dell’articolo, così com’è, con incluse anche le librerie richieste, già impostate nel progetto di Eclipse; resta il fatto che, ad un primo test, il led incluso nell’Arduino non si sia acceso, nonostante io abbia usato il pin 13, ma potrei aver cannato qualcosa (e, d’altro canto, l’autore dice di usare un led esterno, che io non ho). Arduino – Eclipse

Prima occhiata a MeeGo 1.0

27 May, 2010 - 23:02

Ci ho messo un paio di giorni, ma alla fine mi sono accorto che la prima versione di MeeGo, il noto sistema operativo (o meglio, distribuzione Linux) sviluppato in collaborazione tra Intel e Nokia, e’ stato rilasciato, e si poteva decisamente fare un test sul mio eeePC (che ricordo essere il 1005HA, cui peraltro sto per dedicare un post a parte). Ecco quindi una prima occhiata al sistema.

Il test e’ stato effettuato live, con boot da chiavetta USB: l’avvio e’ estremamente rapido, parliamo di 10-15 secondi dal click nel menu fino all’apertura della schermata principale, chiamata MyHome.

MyHome

Il menu in alto, visualizzato sempre quando ci si trova in questa schermata, riporta di fatto le categorie presenti: oltre alla gia’ citata home, ce ne sono altre come le impostazioni di rete, i devices, il menu delle applicazioni, il gestore della raccolta musicale… quando un’applicazione e’ avviata, la barra scompare e riappare solo se si sfiora la parte superiore dello schermo.

Applicazioni

Ecco il menu delle applicazioni, con aperta la tendina relativa ad Internet…

Google Chrome

… e Google Chrome avviato in tutto il suo splendore. MeeGo e’ infatti scaricabile in due versioni, una con Chrome ed una senza, con la differenza che per la prima e’ necessario accettare a parte la licenza proprietaria del browser stesso al momento del download; io cosi’ ho fatto, dato che uso abitualmente questo browser e non sono particolarmente preoccupato del discorso licenze.

Un difetto notato in questa schermata e’ la forse eccessiva dimensione della barra del titolo, che potrebbe essere un poco ridotta; non ho ancora scoperto se esiste tale impostazione, potrebbe quindi essere gia’ possibile eseguire questa modifica.

Impostazioni

Ecco la famigerata schermata delle impostazioni: ad una prima occhiata non e’ cosi’ entusiasmante: sembrerebbe essere infatti una versione impoverita del CC di Gnome, che gia’ sappiamo essere estremamente povero di settaggi (almeno in confronto a KDE).

Sinceramente non ho capito se il gestore del desktop sia una versione moddata di Gnome, o piuttosto qualcosa di totalmente diverso; sto ancora leggendo la documentazione sul sito, quindi e’ possibile che sia riportato, in ogni caso la struttura assomiglia a quest’ultimo (e soprattutto i programmi audio/video/messaging sono gli stessi di questo).

Garage

L’installazione di nuove applicazioni e’ gestita tramite un programma simile (nella struttura) a Synaptic, anche se MeeGo non si appoggia ad apt (bensi’ ad rpm); esiste anche questo Garage, schermata da cui e’ possibile installare alcune delle apps disponibili nei repository, apps che generalmente sono corredate da una descrizione ed alcuni screenshot.

Terminale

Ecco, naturalmente, il terminale, che in un buon sistema Linux non puo’ certo mancare.

In conclusione

Ok, e’ stata piu’ una galleria di immagini che una recensione vera e propria, in ogni caso il giudizio non e’ malvagio; essendo di fatto una distro Linux, dovrebbe essere gia’ compatibile con tutti i soliti programmi, ed uscendo direttamente dalla Intel vorrei sperare che sia in grado di gestire come si deve il comparto energetico (da sempre croce e delizia dell’amato pinguino), almeno sul suo hardware.

Le prestazioni sono buone, cosi come l’idea di integrare alcune applicazioni in schermate unificate, di fatto creando un’interfaccia nuova per Empathy, per Evolution, per un aggregatore di social network… Unici due difetti riscontrati, un crash (di fatto un logout seguito da login automatico) quando ho provato a modificare i settaggi della tray, ed il fatto che nonostante la lingua sia settata ad italiano, la tastiera sia rimasta in inglese (avrete notato gli apostrofi al posto degli accenti).

In sostanza, sarei sinceramente curioso di provare ad installare questo sistema al posto di Ubuntu, su questo computer, ed approfondirne la conoscenza; valutero’ la cosa e vi sapro’ dire! Nel frattempo daro’ pure un’occhiata all’SDK, che tra l’altro dovrebbe includere le Qt 4.6, quindi dovrebbe trovare i miei favori senza troppe difficolta’.

Good lesson!

21 May, 2010 - 15:37

L'ultima slide di ieri

Ottima la riuscita della lezione di ieri sul multimedia & GNU/Linux:  la partecipazione non è stata altissima, ma il pubblico presente era in compenso interessato (non mancano mai i giovani aspiranti musicisti!); non ho mostrato molte funzionalità dei programmi proposti, ma d’altronde già così la presentazione è durata circa un’ora, e le due demo live hanno preso decisamente tempo.

Unica pecca la gestione dei volumi: le casse non erano male ma non avevo sufficiente feedback, ed il volume al massimo da KMix ha comportato che alcuni suoni siano riusciti un poco distorti, nonostante avessi droppato al volo un paio di effetti che avrei voluto comunque applicare. In ogni caso, nel complesso non ho di che lamentarmi.

Chiudo perciò con le slide della lezione ed il breve estratto del tema del film “The Rock”, registrato al volo ieri.

The Rock theme – excerpt

Ultima lezione dei Corsi Linux

19 May, 2010 - 22:54

Corsi Linux 2010

Domani c’è l’ultima lezione dei corsi Linux 2010, organizzati come sempre dal POuL; si parlerà di videogiochi e multimedia, in particolare io parlerò del secondo argomento, come fare musica con Linux, con dimostrazioni live

Partecipate numerosi!

Touchscreen, iPad, KDE Plasma Netbook

19 May, 2010 - 10:28

Ecco uno dei video pubblicati da Marco Martin, l’autore di KDE Plasma Netbook, sullo stato dell’unione verso la release 4.5; lo riporto qui non tanto perchè io sia un utilizzatore di quest’interfaccia, quanto più che altro perchè ieri sera mi sono sparato l’intero keynote di Steve Jobs sull’iPad (meglio tardi che mai, no?), ed oltre ad essermi quasi innamorato di detto prodotto (che, ve lo dico, mi comprerei subito se avessi i soldi da buttarci, specie tenendo conto che la conversione dollaro -> euro è stata fatta 1:1, maledetto cambio di valuta…), ammetto che l’aver visto il video qui riportato mi ha ricordato, almeno in parte, l’interfaccia Apple.

Ora, non dico che si equivalgano, specie perchè ovviamente Marco non ha un iPad su cui provarlo, e non so se esista il supporto multitouch anche in altri device, ma l’idea di avere un prodotto analogo (e per analogo intendo con la stessa durata di batteria) ma con sopra Linux e KDE Plasma Netbook, mi attira veramente da morire…

Live CD completamente custom

12 May, 2010 - 18:31

Sono ormai due anni che con il buon Sante seguo lo sviluppo di Polinux, e per la creazione delle ISO abbiamo sempre seguito la customization guide: di fatto, si smonta la ISO dei CD, si installano i programmi in chroot e si rimonta detta ISO.

Ho tuttavia scoperto, non più tardi di due settimane fa, una seconda guida per creare liveCD da zero: usando il buon debootstrap, è infatti possibile creare una sorta di installazione base (minima) di Ubuntu, dalle dimensioni ovviamente molto ridotte, su cui è poi possibile installare qualunque pacchetto (compresi quelli per il riconoscimento hardware automatico, così da rendere il CD risultante live a sbattimento zero).

Ho utilizzato con discreta soddisfazione la tecnica per costruire un liveCD da usare in una demo che ho presentato per la tesi, e sono rimasto davvero colpito dalla semplicità ed efficacia della cosa: un sistema base Ubuntu con installato solamente Erlang, Vim e Git produce un’immagine disco di poco più di 200 MB, perfetti da essere usati in VirtualBox diskless (con l’accortezza, naturalmente, di non spegnere le macchine ma di sospenderle, pena la perdita dei dati); sicuramente un notevole risparmio, tenendo conto che avevo bisogno di 4 piccole macchine per creare una rete distribuita, ed ora anzichè avere 4 hard disk ciascuno da 1 GB circa, ho una sola ISO da 200 MB!

Mandriva vende…

11 May, 2010 - 11:43

E’ di ieri la notizia, esposta per prima dalla Distowatch Weekly e ripresa oggi anche su Pollycoke, che Mandriva (l’azienda, naturalmente) è in vendita.

E’ una notizia, di cui peraltro ho già accennato su FB, che mi rattrista molto: in primo luogo perchè il mio passaggio a Linux è dovuto proprio a Mandriva stessa (o meglio, a Mandrake quando ancora si chiamava così), che con il suo installer e sistema di partizionamento facilitato mi permise, in quell’estate del 2003, di restringere abilmente la partizione del computer di famiglia, senza perdere un solo bit di dati, e di entrare finalmente nel magico mondo dei sistemi operativi seri (TM). Ammetto di non aver usato molto quella distro (il passaggio a Slackware è stato piuttosto rapido… e non dico altro…), e di non essere mai andato oltre a qualche prova sporadica in seguito (ammettiamolo: il sistema degli rpm è inguardabile rispetto ai deb), ma lei è sempre rimasta nel mio cuore.

La seconda motivazione del dispiacere è data dal fatto che Mandriva è stata ed è tuttora la principale sostenitrice del progetto Nepomuk su KDE, contribuendo attivamente (that is: pagando) alcuni degli sviluppatori che ci lavorano. Ora, direi che ormai è risaputo come io ritenga il desktop semantico (e la semantica in generale) il futuro dei computer, abbandonando finalmente il paradigma del filesystem, decisamente obsoleto, e certamente avere un’azienda che sponsorizza tale iniziativa sarebbe un’ottima cosa.

Insomma, non ci resta che aspettare e vedere cosa succederà a questa azienda ed ai suoi prodotti, sperando naturalmente nel meglio possibile.

Studio Siv: sperimentando…

8 May, 2010 - 18:07

Avete presente “Maggot brain” dei Funkadelic? Ebbene, tra ieri e oggi ho deciso di tentare un paio di esperimenti col buon Behringer UCG 102 e la fedele Fender, più che altro testando alcuni programmi che ho intenzione di mostrare tra un paio di settimane a lezione (ai corsi Linux), ed i risultati sono stati sicuramente positivi (per quanto io non sia chissà che cosa come chitarrista… ma da un punto di vista informatico, ci siamo sicuramente).

Plenty of screenshots a dimostrarlo, naturalmente:

La prima schermata mostra il demone Jack (sotto l’attenta supervisione di QJackCtl), con tutti gli ingressi e le uscite dei programmi che stavo usando (e che ora vi descrivo brevemente)… da notare il numero estremamente basso di XRun, essenzialmente dovuti all’avvio delle applicazioni “jack-savvy” a demone già avviato, e questo nonostante il tutto stesse girando sul fedele eeeBox (con load average a 3.5, nei momenti di massimo splendore…).

Qui invece stanno girando Rakarrack, compilato da Git, e SooperLooper: il primo è la “pedaliera virtuale” per eccellenza, da notare il numero di effetti attivi (e non si vede il wah esterno che avevo collegato alla chitarra), mentre il secondo permette di avere da 1 a n loop attivi e funzionanti come base; in questo caso, il primo è dedicato ad un giro di chitarra (peraltro, lo stesso di Maggot brain), mentre il secondo ad una ritmica, preparata con Hydrogen (un banale 6/4).

Infine, ecco Ardour che gira e registra le tre tracce (ridotto a icona potete notare anche Hydrogen, usato all’inizio per creare il loop).

My maggot

KDE 4.5 trunk: le icone bianche

28 April, 2010 - 11:52

Anche KDE 4.5 (da SVN nello screenshot) sta incorporando le icone “monocromo” nella tray bar, così come ad esempio sta per fare Ubuntu 10.04… le voci corrono (e devo ammettere che l’effetto finale non è malvagio)!

Sembrowser 0.2

27 April, 2010 - 12:52

Sembrowser 0.2 is out for testing!

Several weeks are passed from the 0.1 version, so it was time to release the new version; before getting into a few details, let me remind you that this is not a substitute for Dolphin, but simply a prototype for checking the capabilities of having a faceted browsing in a file manager; thus, it has not all the functionalities of Dolphin itself, but only those that I think are needed in a very simple manager.

Now, the new features:

  • new queries under the hood: this should speed up the tags loading (and the file refreshing, too)
  • resizability: the facets panel was quite blocked in the first release, now it can be resized along all directions
  • configuration of the facets to be shown: a settings page can be used for choosing which of the three possible facets (document type, time, tags) are shown in the panel; this may be useful especially on smaller screen (those scroll bars are not the best thing to use, I have to admit it)
  • added some file manager functionalities, in particular cut-copy-paste
  • some minor improvements here and there…

So, go to the KDE-Apps page and check it out, and then tell me what’s good and bad with it (only constructive comments, please, no rants!).

P.S.: you can also get the source from Gitorious, or install it on Ubuntu (Karmic for now, Lucid in the weekend) from my PPA.

Il futuro di Java

24 April, 2010 - 19:13

Ho appena letto due articoli molto interessanti da IBM DeveloperWorks: dato che si sta ormai festeggiando il ventennale di Java, è d’uopo un’analisi dello stato del linguaggio di programmazione (ormai vicino alla sua settima major release) e del mondo che lo circonda, specie a seguito del passaggio di proprietà da Sun ad Oracle (e prima ancora, del suo rilascio sotto licenza libera), per vedere se e quale futuro ci può essere. Penso che tutti i miei 10 lettori sappiano che Java è il mio linguaggio di programmazione preferito in assoluto, e quindi non posso esimermi dal riportare alcuni dettagli interessanti (per quanto vi consigli comunque la lettura perlomeno del primo dei due articoli stessi).

Riflessioni dagli utilizzatori

Nel primo articolo, l’autore convoca una sorta di tavola rotonda digitale, in cui chiede ad alcuni sviluppatori vicini al mondo DeveloperWorks il loro parere sulle questioni sul piatto di Java in questo 2010; in linea generale, l’aspetto positivo che emerge è la varietà di approcci, framework e librerie che si sono sviluppate non tanto e non solo intorno a Java, ma intorno alla sua Virtual Machine, in modo tale che alcuni dei difetti che emergono per Java stesso sono magari già superati da altri approcci compatibili (da un punto di vista di API) ma allo stesso tempo molto diversi (come produttività); alcune risposte emerse degne di osservazione:

  • il primo difetto di Java è l’ammontare di codice necessario per fare qualunque cosa (assolutamente sperimentato anche da me, nel mio piccolo, specie nelle tecnologie usate quest’anno a Sistemi Distribuiti (vero, Sante?)): il futuro inevitabilmente si sposta verso quei framework che sono in grado di sviluppare rapidamente (Agile alla fin fine, Rails in altre parole) e che permettano all’informatico di concentrarsi sulle (famigerate) parti funzionali del prodotto, ed ignorare il più possibile le non funzionali (vedi i behaviour di Erlang); da questo punto di vista, alcuni passi avanti sono già presenti in Java 7 (vedi secondo paragrafo), altri erano già nati in librerie collaterali, altri già sono usabili sulla JVM.
  • Le preoccupazioni verso Oracle sembrano essere venute meno, anche se si teme un po’ per il mondo Open Source (e già c’è stato l’esempio di OpenSolaris, su cui non approfondisco ulteriormente per non uscire dal tema) e sul fatto che alcune delle cose, che sono sempre state libere, di punto in bianco possano non esserlo più (ma nessun esempio viene fatto in merito); fortunatamente, aggiungo io, Java è ora sotto GPL, il che non è male, senza contare il fatto che gli autori sembrano a tratti sottovalutare il potere del Free Software, che invece io ritengo discretamente rilevante.
  • La modularizzazione che verrà introdotta con Java 7 (hopefully, aggiungo io) non sembra riscontrare i favori della tavola rotonda, in particolare si criticano gli approcci, forse troppo teorici o comunque troppo lontani dalla realtà.
  • Non mi soffermo sul problema di “Java è morto”: premesso che lo si dice da anni (e non succede, per ora), il fatto che la Virtual Machine supporti molti altri approcci diversi (funzionali piuttosto che “a la Rails“) fa supporre che il “mondo Java” non sia così facilmente abbattibile.
  • Il cloud computing (parafrasando gli Iron Maiden: “Cloud, cloud everywhere / Cloud, cloud everywhere“): per quanto tutti ritengano il cloud soprattutto una buzzword del momento, l’idea è che le tecnologie sottostanti restino interessanti, ed in particolare l’acquisizione di SpringSource da parte di VMWare fa pensare ad uno sviluppo in quella direzione del famoso framework Spring.
  • Java nelle nuove industrie: tolto il discorso cloud, il discorso mobile (Android in particolare) è assolutamente interessante, sottostando tuttavia alla risoluzione positiva della modularizzazione, ed al contempo all’affrontare e risolvere in maniera decente Java ed il multimedia (da sempre tallone d’Achille, per usare un eufemismo).

Da notare, a margine, come il campo dell’informatizzazione nel no-profit sia ritenuto assolutamente redditizio e colonizzabile, ed è interessante dato che è un discorso emerso anche tra di noi in altre sedi e con altre persone.

Java 7

Il secondo articolo si concentra invece sulle innovazioni che Java 7 (previsto entro l’anno) dovrebbe portare con sè; integro i punti seguenti anche con un paio di riflessioni del primo articolo (per evitare di ripetere le cose due volte), sottolineando come ho ignorato la seconda parte di questo articolo, dato che si parla della VM di IBM, che io non uso (e che peraltro credo sia a pagamento):

  • semplificazione della scrittura di linguaggi “di scripting” sulla JVM: ne avevo già sentito parlare l’anno scorso, dato che avevo fatto una ricerca in merito per l’articolo del corso di “Argomenti avanzati di Ingegneria del Software” (e, se vi interessa, leggetevi l’articolo tra le mie pubblicazioni), e di fatto sono introdotte cose (che io non voglio sapere…) per rendere semplice la resa di linguaggi dinamici in bytecode, velocizzandone anche le prestazioni.
  • Le stringhe nei costrutti switch: sono quasi commosso, dato che è una cosa di una utilità tremenda, che ho sempre invidiato a PHP.
  • Le chiusure: alcuni autori nella tavola rotonda sottolineavano come la popolarità di linguaggi su JVM come Groovy indichi che il popolo richiede a gran voce le chiusure, e queste atterreranno nei nostri computer molto presto; la sintassi definitiva è ancora in fase di sistemazione, ma restano sicuramente interessanti soprattutto per la dinamicità del codice che risulta.
  • La concorrenza tra processi e thread: mi viene di nuovo in mente Erlang, quando viene citato il framework Kilim (con cui devo assolutamente curiosare) ed il paradigma fork-join che verrà portato con Java 7, che di fatto è l’idea che sta dietro anche all’algoritmo di map-reduce; l’applicazione forzata del buon vecchio Divide et impera non può che essere importante all’alba dei multicore.

In conclusione (mia, non degli articoli)

Insomma, tirate le fila di queste riflessioni, direi che di carne al fuoco ce n’è parecchia ancora: sono sinceramente curioso di provare qualcuno dei linguaggi costruiti sulla JVM (ad esempio Scala, cui avevo assistito ad una presentazione lo scorso JavaDay), e di vedere come sarà la versione finale delle closure (dato che, ormai, con il mio lavoro di tesi su Erlang ne uso a palate); non credo che Java sia morto, o quantomeno non credo che morirà senza combattere.

Polinux 10.04 RC

23 April, 2010 - 17:14

Ecco il primo screenshot di Polinxu 10.04 RC, installata su Ubuntu 10.04 RC; inutile dire che questa release candidate esiste solamente se installate Polinux tramite il suo repository Launchpad, le iso seguiranno il rilascio ufficiale la settimana prossima.

VirtualBox e rete interna

21 April, 2010 - 12:02

Mi sembra giusto pubblicare uno pseudo-mini howto su come configurare VirtualBox affinchè si crei una rete interna tra le macchine virtuali, e contemporaneamente tale rete sia raggiungibile dal sistema host esterno (e solo da lui); tutti i test sono stati effettuati con la versione 3.1.6 su Ubuntu 9.10 (sia guest che host).

Dopo una discussione avuta qualche giorno fa con Sante e Massimo riguardo l’esistenza di questa possibilità, che io personalmente non avevo trovato, ho deciso di esplorare a fondo la questione. La mia necessità, per un lavoro che sto facendo per la tesi, è quella di avere un tot di macchine virtuali connesse tra loro, e che a loro volta siano in rete locale con la macchina host; l’unica possibilità che conoscevo io per fare questo era di utilizzare la cosiddetta “scheda con bridge”, la quale tuttavia richiede che l’interfaccia di rete host sia attiva (ovviamente, qualcuno potrebbe dire): soluzione impraticabile se sto creando questa rete locale solo col mio computer, senza un router esterno.

L’opzione giusta da scegliere è “scheda solo host”, su tutte le macchine virtuali: a quel punto, appena avvierete la prima macchina, l’interfaccia vboxnet0, presente nel sistema host, verrà attivata con un IP del tipo 192.168.56.1, di fatto facendo capire che la rete locale che stiamo per creare è sulla sottorete 56.

Dopo aver effettivamente verificato della possibilità di assegnare un altro IP (ad esempio 56.2) ad una macchina virtuale, e che il ping rispondeva correttamente, ho aggiunto un altro tassello: è possibile infatti installare il pacchetto dhcp3-server, che altri non è che il famigerato server DHCP, nel sistema host; una configurazione banale come la seguente (/etc/dhcp3/dhcpd.conf):

default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.56.0 netmask 255.255.255.0 { range 192.168.56.2 192.168.56.254; }

fa sì che tale server assegni indirizzi da 2 a 254 sulla sottorete di cui sopra; un’altra semplice modifica a /etc/default/dhcp3-server per aggiungere la riga

INTERFACES="vboxnet0"

che indica su quale interfaccia restare in ascolto, quindi via anche al server tramite /etc/init.d/dhcp3-server start ed il gioco è fatto!

P.S.: verificate, prima di avviare il demone, che vboxnet0 sia attiva; in caso contrario, avviate la macchina virtuale con cui volete creare la rete, e l’interfaccia si attiverà automaticamente.