L’informatico poliglotta

4 06 2008

Ci sono persone che parlano una sola lingua, chi due e solitamente una delle due è l’inglese. Poi ci sono chi ne parla 3 come nel mio caso, di cui una è l’inglese, a fatica però, e le altre 2 bene (ammesso e concesso che il dialetto Varzese sia considerata una lingua 😛 ). Poi ci sono quelli più bravi che ne parlano 4 o 5 o di più.

Di fronte a cotanta bravura io mi inchino, ho sempre ammirato chi si destreggia bene con più lingue. Però quando mi ritrovo a scrivere il mio curriculum vitae alla voce competenze informatiche mi ritrovo senza volerlo a spatellare giù un elenco di linguaggi conosciuti più o meno bene che mi sembra quasi una rivincita morale (è proprio il caso di dire che culo!) 😐

Certo era meglio conoscere il francese od il tedesco visto che sono circondato dalla Svizzera piuttosto che sapere a memoria System.out.println(“Hello World!”); 😀

Ad ogni modo non posso neanche essere contento di sapermi destreggiare con una decina o più di linguaggi di programmazione o markup quando per caso trovo questo elenco e mi cadono le cosiddette a terra. E non contento scopro in quanti modi diversi posso dire quel fottuto “Hello World!”.

Ma si può? 338 linguaggi! che poi alla fine si usano sempre gli stessi. E che dire quando consulto le offerte di lavoro alla voce IT dove la frase più abusata è:

cercasi neolaureato, max 25 anni, con almeno 3 anni di esperienza. E’ richiesta l’ottima conoscenza dei linguaggi C, Java, php, C#, ASP, VB, Javascritp, …

e l’elenco prosegue per un paio di righe senza interruzioni. Diamoci una calmata, so anch’io poi che nessun ragazzo/a si iscrive più alle facoltà scientifiche comprese quelle informatiche. Si spaventano cavolo! piuttosto vanno a fare i provini per il GF o veline in tour che è molto meno impegnativo e più redditizio 🙂





Taglia Copia Incolla

25 04 2008

Perché adeguarsi sempre alle mode?

Ctrl + x → taglia

Ctrl + c → copia

Ctrl + v → incolla

Io non voglio seguire il gregge, io vado controcorrente:

Shift + Canc → taglia

Ctrl + Ins → copia

Shift + Ins → incolla

[Fonte: sul lavoro, sai quante cose si imparano? 🙂 ]





Cosa vuol dire essere programmatori

21 04 2008

Credo che sia successo a tutti i programmatori professionisti e non almeno una volta nella vita, nessuno si può salvare, me compreso 😀

programmer-job

[Fonte: stuffthathappens.com]





Ottimizzare il codice: un esempio pratico con bash e java (1/2)

27 02 2008

Questo articolo si riallaccia al post di qualche giorno fa sugli esempi di utilizzo del comando awk intitolato “qualche esempio di utilizzo di awk ed utili risorse web“.In quell’occasione vi avevo accennato al programmino java per convertire dei timestamp in date leggibili. Tutto questo perchè in questi giorni io ed il mio socio di tesi (pes) stiamo analizzando una serie di dati proveniente dagli archivi dei database di SourceForge (hihi abbiamo i super-privilegi di poter sguazzare liberamente negli enormi immensi oscuri database di SF 🙂 )

Leggi il seguito di questo post »





Qualche esempio di utilizzo di awk ed utili risorse web

12 02 2008

In questi giorni mi è capitato di ricorrere al piccolo ma potentissimo comando awk. Le sue potenzialità superano i limiti dell’immaginazione, lo si può usare per tantissimi scopi, ma spesso ci si dimentica di lui e si ricorre ad altri strumenti più macchinosi. Vi mostro ora due esempi di utilizzo di questo comando che ho utilizzato per un lavoretto sulla mia tesi, e che mi hanno fatto risparmiare un bel po’ di tempo 😉

Usare awk per splittare stringhe

awk può essere facilmente utilizzato per eseguire lo split di stringhe ricorrendo anche all’uso di espressioni regolari.
$ awk -F ";" '{print $1"\t"$2"\t"$3"\t"$4"\t"$5}' elenco.txt
ove -F “;” indica quale carattere (o l’espressione regolare) delimita le stringhe da separare, print $i stampa le stringhe così ottenute separandole da una tabulazione (indicata da \t). Quindi se in input abbiamo il file di testo (elenco.txt) fatto così:
Metallica;Queen;Muse;Zucchero;Pink Floyd
il comando produrra un output così (qui non si nota molto la tabulazione perché WordPress si mangia gli spazi):
Metallica Queen Muse Zucchero Pink Floyd

al posto di “;” potete inserire qualsiasi espressione regolare inserendola all’interno di / e /. Trovare esempi di espressioni regolari già pronte qui, mentre qua le potete testare. Questo metodo può rilevarsi utile quando di manipolano file CSV i quali generalmente usano il ; (o la ,) come carattere separatore dei campi.

Usare awk per lanciare ripetutamente un programma

Problema:

Devo usare un piccolo programma (in Java) per fare delle conversioni sulle date e stamparle, ed in input ho un elenco di timestamp.

Soluzione rapida:

Uso awk per passare a Java ogni singolo oggetto stringa (il timestamp), invocando di volta in volta il programma Java. Non è la soluzione più bella ne tantomeno efficace perché la JVM ogni volta alloca tutto il codice della classe (ma di questo ne riparleremo in un prossimo post), ma richiede pochissimo tempo nel realizzarla.

Supponiamo di avere il programma Java si chiama DataConverter.java e riceve in ingresso un parametro (il numero): se fosse invocato manualmente ogni volta il comando sarebbe questo (il timestamp è in millisecondi):

$ java DataConverter 1234567890123

che genererà una data in un formato human readable (es: 06/06/1983) da stampare sulla console, ma noi vogliamo automatizzare la procedura avendo a disposizione un file di testo contente n timestamp. Usiamo ancora una volta il magico awk:

$ awk '{print "java DataConverter "$1}' date.txt | sh > dateOutput.txt

Analizziamolo.
Questo intero comando può essere pensato come un’esecuzione concatenata di 3 funzioni (processi) più piccole.

awk ‘{print “java DataConverter “$1}’ date.txt

awk prende in ingresso il file .txt che è un elenco di un numero su ogni riga; esso genera la stringa java DataConverter $1 ove $1 viene di volta in volta sostituito con il numero appena letto.

| sh

significa che la stringa appena generata deve essere interpretata (attraverso l’IPC della pipe | ) dalla shell come un comando da eseguire. Infatti la stringa java DataConverter $1 non è altro che l’invocazione del programmino Java di prima.

> dateOutput.txt

serve per redirige l’output sul file di testo indicato anziché stampare il risultato sulla console. Come vedete con la console potete combinare assieme ben tre linguaggi di programmazione differenti (java, awk, script bash) con l’ausilio di pochissimi comandi 😉

Utili risorse per conoscere AWK: