Archive for the ‘informatica’ Category

29
Aug

ImageCopier: aggiornamento

   Posted by: Siv Tags: ,   PDF version Pdf version

ImageCopier 1.3.1.7

ImageCopier 1.3.1.7

Dopo mesi, per non dire anni, in cui non mi ero più dedicato al mio piccolo programmino in C#, ecco un aggiornamento di ImageCopier, che tocca la versione 1.3.1.7.

ImageCopier è una piccola utility che permette la copia di file da un percorso ramificato ad un percorso unico: vi è mai capitato di tornare dalle vacanze e voler mettere insieme tutte le foto che avete, e che tendenzialmente avrete posto in diverse sottocartelle (una per ciascuna scheda di memoria)? Ebbene, da ImageCopier è sufficiente che selezioniate la cartella padre delle sottocartelle di cui sopra come input, una cartella vuota come output, ed il programma copierà i file dalla prima alla seconda, in ordine strettamente alfabetico e numerando correttamente in sequenza i file ivi contenuti.

Ok, ovviamente se usate (come me) un programma di gestione di foto, non ve ne fate assolutamente niente; ma se ordinate voi a mano le vostre immagini sull’hard disk, potrebbe tornarvi utile.

Di fatto, tutta questa spiegazione è stata una scusa per poter giocare un po’ con C#, che potrei definire il primo linguaggio di programmazione serio di cui io abbia mai avuto un libro (e parliamo del 2003, e non vogliamo certo considerare Pascal e BASIC come seri, no?), e con il quale non avevo mai avuto occasione di sperimentare. Il programma naturalmente è rigorosamente cross-platform, e solo una riga di codice deve essere modificata affinchè l’esecuzione sotto Mono avvenga senza problemi (ed aggiungo: solo perchè non ho ancora capito come far andare quella riga sotto Mono senza che lanci una runtime exception). In ogni caso, ecco l’installer per Windows, creato con Nullsoft Installer, ed il consueto archivio di sorgenti per Linux: per il primo, le dipendenze (ovvero il runtime di .NET >= 2.0) vengono installate automaticamente, per il secondo dovete assicurarvi di avere installato il compilatore e le librerie base di Mono.

Rispetto alla versione precedente, ho reso l’utility vagamente più furba, ovvero ora la parte di copia viene eseguita in un thread in background, con il progresso visualizzato correttamente nell’UI; c’è anche un’altra modifica che vorrei fare prossimamente, vale a dire l’ordinamento dei file secondo la data riportata dai metadati EXIF, invece che secondo l’ordine alfabetico; vedremo se ce ne sarà il tempo nei prossimi giorni.

Tra parentesi: avete notato che ora i file .exe di Mono possono essere eseguiti da console direttamente, senza dover specificare l’interprete mono?

HP DeskJet 710C

HP DeskJet 710C

Foto ricordo della gloriosa HP, che ci ha reso più di 10 anni di onorato servizio e che abbiamo pensionato due giorni fa: quante cose stampate con questo oggetto in tanti anni!

Le minchiate uscite alle superiori sono state un’enormità, come ad esempio il Libro delle Ombre di Streghe, o le mappe dei livelli di Tomb Raider III fatte da TGM (ti ricordi, Matt?), e da lì ad arrivare alle dispense dell’università. Un po’ di tristezza c’è, anche se non credo comunque che la butteremo (metti che succeda qualcosa al successore?). Faccio notare, comunque, come non abbia mai dato alcun problema, e sia stata usata ininterrottamente senza mai mostrare la propria età.

Voglio proprio vedere se la HP che ho comprato l’anno scorso per il mio appartamento a Milano si rivelerà analoga…

21
Aug

Sei mesi di Matlab

   Posted by: Siv Tags: ,   PDF version Pdf version

Ho passato i primi cinque anni di università a stare il più alla larga possibile da Matlab, per niente entusiasta di imparare un linguaggio di programmazione di matematica discreta, io che venivo da cinque anni passati al Liceo usando Derive (il miglior programma di matematica continua (e non solo, peraltro) mai esistito, se volete il mio parere); e devo ammettere che questo piano è stato un successo: passati con nonchalance gli pseudo-laboratori dei corsi di matematica della triennale, poi non se ne è più sentito parlare. Fino all’anno scorso.

Il corso di “Analisi e sintesi di immagini” prevedeva, infatti, un progetto relativo ai contenuti, e per allora io avevo sviluppato una certa voglia di immergermi in questo linguaggio/piattaforma/IDE, non so se per tutte le pubblicità “Do you speak Matlab” in quarta di copertina tutti i mesi su Spectrum; il progetto che ho scelto (e di cui parlerò quando lo avrò consegnato, non prima) peraltro mi permetteva di scegliere l’ambiente ed il linguaggio che volevo, ma dato che avevo già intravisto le potenzialità delle funzioni di analisi delle immagini di Matlab stesso, mi sono rivolto direttamente ad esso, ed ora, dopo circa sei mesi di lavoro (non continuo, naturalmente!), posso dare un primo giudizio sull’andazzo generale.

L’ambiente

L’IDE di sviluppo è sicuramente interessante, e la quantità di librerie usabili piuttosto alta e di qualità, e lo posso dire pur avendo solo la Student Edition + NN tools; le uniche due pecche riscontrate sono l’editor, che non riapre i file che aveva aperti l’ultima volta (ma può essere che io non abbia visto un’opzione che faccia al caso mio), ed il fatto che per alcune operazioni, o a fronte di qualche problema, non sia possibile bloccare l’esecuzione corrente del codice, rendendo necessario in un paio di occasioni un sonoro kill del processo.

Il linguaggio

Sul linguaggio si pecca un po’: alcune funzioni non sono di così immediata comprensione, e mi rendo conto che in alcuni casi sia più che altro dovuto al fatto che non si è abituati a lavorare sempre e comunque con matrici; in altri casi, alcuni comportamenti sono veramente assurdi (length restituisce 2 sia a fronte di [a b] che [a; b], e non è così immediato pensare che size ha un secondo parametro per indicare la dimensione: un bel metodo rows, per esempio, avrebbe fatto comodo), oltre al fatto che qualche metodo di list comprehension sarebbe stato utile. Il vero problema in questo caso (e parlo per esperienza, avendo cercato di replicare la libreria lists di Erlang in Matlab) è che le funzioni lambda sono limitate ad un solo statement, cosa veramente incredibile.

Si sente anche (parecchio!) la mancanza di un contenitore tipo ArrayList, ovvero in cui si possa fare inserimento/sostituzione di elementi ad accesso casuale: certo, diranno gli utenti di Matlab, ci sono le celle per questo, ma decisamente siamo anni luce indietro, dato che hanno due metodi utili e manca il resto della libreria adatta.

La sintassi delle classi non è male, è un po’ un incrocio tra Python (bisogna inserire self ad ogni metodo, e non sono richieste parentesi!) e C++ (suddivisione tra parametri, metodi pubblici, metodi privati…); certo, bisogna abituarsi a creare gli oggetti senza new, ma di nuovo Python si comporta tale e quale. In compenso, la necessità nella definizione di funzioni di avere una variabile di ritorno da assegnare è veramente stupida: ma return non ha insegnato nulla?

Giudizio finale

Direi che il tutto si merita un bell’8, anche se ogni tanto alcune idiosincrasie (ad esempio i complaints perchè si è modificato il codice di una classe ed, a detta sua, esistono ancora oggetti vecchi non eliminati (da eliminare con clear, secondo lui, anche se ciò si rivela inutile)) rendono la vita decisamente difficile.

10
Aug

KDE SC 4.5

   Posted by: Siv Tags: ,   PDF version Pdf version

KDE SC 4.5

KDE SC 4.5

7
Aug

Un anno di eeePC

   Posted by: Siv Tags: ,   PDF version Pdf version

Asus eeePC 1005HA

Asus eeePC 1005HA

E’ ormai quasi un anno che possiedo felicemente un eeePC come quello in figura (il mio non ce l’ho sottomano, altrimenti avrei messo una foto originale), e da un paio di mesi ho “in canna” questo post, un omaggio al piccolo computerino che ormai mi segue come un’ombra da quando è stato acquistato.

Devo ammettere, ad oggi, e non me ne voglia il pur fedele e potente Dell da cui sto scrivendo, che il 1005 è stato il mio miglior acquisto di computer ever, ed è in questo momento lo strumento informatico cui tengo di più nel mio “parco macchine”: questo perchè, nonostante le performance non certo stratosferiche (insomma, un Atom non è certo una scheggia, specie tenendo presente che lo si usa soprattutto in batteria ed in risparmio energetico), mi ha veramente accompagnato ovunque ed in qualunque attività:

  • navigazione Web e lettura documenti in università
  • sviluppo progetti in università, con diverse tecnologie coinvolte
  • Nepomuk Workshop @Freiburg, il che ha implicato compilazione di codice C++ in macchina virtuale (!!!), con Eclipse aperto di fianco
  • presentazione slide in diversi momenti (lezioni Linux, dipartimento…)
  • presentazione di diversi progetti
  • partite in multiplayer ad UrbanTerror

Insomma, in sostanza qualunque applicazione io abbia gira tranquillamente sull’eeePC; l’unico momento in cui non mi sono sentito di sfruttarlo è stato alla lezione multimediale ai corsi Linux, anche se probabilmente avrebbe comunque fatto il suo dovere (essendo stata una demo abbastanza tranquilla).

Volendo, l’unica pecca è il mancato raggiungimento delle famigerate 8 ore di durata: in genere si aggira tra le 5 e le 6, e sono quasi convinto che con l’ultima Ubuntu duri qualcosina di meno, ma non ne ho le prove certe, è solamente un’impressione. Ma questo non è comunque un problema: a febbraio ho fatto un viaggio di andata Padova – Milano, la presentazione di un progetto ed il ritorno Milano – Padova, e non ho comunque finito la batteria: per la maggior parte degli usi, la durata è comunque più che accettabile.

Voto: 10/10.

7
Aug

Verso il digitale (non terrestre)

   Posted by: Siv Tags:   PDF version Pdf version

Nuovo Kindle

Nuovo Kindle

Ieri ho pre-ordinato il nuovo Kindle, versione solo Wifi, dal buon Amazon a 139$: ho deciso di approfittare dell’offerta, anche se dovrò aspettare un mesetto prima che arrivi, con in mente un obiettivo ben chiaro: transitare sempre di più verso un digitale puro.

E’ già parecchio tempo che tendo ad evitare di stampare ogni documento che mi passi davanti, come ho invece fatto per diversi anni, e mi limito a stampare quanto strettamente necessario; ora, finalmente, se il Kindle rispetta le sue promesse, potrò definitivamente leggere i miei documenti, anche quelli più lunghi, senza alcuno spreco di carta ma soprattutto di inchiostro della stampante, e senza l’affaticamento della vista tipico degli schermi dei PC.

Oltre a questo, ho le migliori intenzioni di spostare l’acquisto dei libri in inglese verso il digitale, quindi in formato Kindle, sia che si tratti di narrativa (e acquisto in un anno più di qualche libro in lingua originale, e gli ultimi due volumi della “Torre Nera” potrebbero inaugurare la serie) che di informatica (vedi i manuali da PragProg o O’Reilly, in genere le mie due fonti principali). A questo seguirà il “porting” dell’abbonamento a IEEE Spectrum a solo PDF (come ho già fatto con IEEE Computer Magazine, ma quest’ultimo lo leggo di rado).

Infine, vorrei spostare anche l’acquisto musicale verso il solo formato digitale, come peraltro avevo già iniziato a fare qualche anno fa con iTunes: avevo poi smesso, nel momento in cui il programmino per convertire i file mp4 con DRM in mp3 aveva smesso di esistere. Ora vorrei ricominciare, o tramite iTunes stesso se finalmente ha abbandonato il DRM (e qui mi rivolgo agli Apple users di turno: ha smesso del tutto?), o appena Amazon Music decide di permettere anche a noi italiani di acquistare mp3.

Chissà che io riesca ad evitare il più possibile lo spreco di carta, plastica e $materiale_dei_cd. Obiettivo dichiarato per il 2011.

5
Aug

Trasparenze

   Posted by: Siv Tags: ,   PDF version Pdf version

Trasparenze in Matlab

Trasparenze in Matlab

Ecco l’utilità delle finestre trasparenti in fase di trascinamento: permettono di vedere le sovrapposizioni tra grafici in Matlab…

P.S.: se non è chiaro, ci sono due finestre sovrapposte: quella in primo piano produce la parte nera della figura, mentre quella in secondo piano mostra un’ombra grigia.

4
Jul

Tradimenti di Java

   Posted by: Siv Tags: ,   PDF version Pdf version

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.

19
Jun

Phonon & VLC

   Posted by: Siv Tags: ,   PDF version Pdf version

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 :D

Provate per credere!

18
Jun

Sembrowser 0.3

   Posted by: Siv Tags: , ,   PDF version Pdf version

Sembrowser 0.3

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).