Archive

Archive for the ‘Programmazione’ Category

Pubblicati plcfetch e php_smbpasswd

Agosto 4th, 2006 - Agosto 4th, 2006

Ho pubblicato sul mio sito questi due progetti, sperando possano esservi utili nelle vostre attivita’, o che possono esservi utili nello studio del C e di unixODBC:

  • plcfetch (C/unixODBC): un daemon in c. legge dati da un plc, secondo un protocollo definito, attraverso la rs232, e scrive allarmi e informazioni su un server sql, attraverso la libreria unixodbc. e’ un programma che ho scritto per lavoro, ma che puo’ essere anche per apprendere rudimenti di programmazione c su unix, e l’utilizzo della api di unixodbc in c.
    il software e’ liberamente scaricabile e modificabile perche’ coperto da licenza gpl.
    Il repority CVS è browsabile qui.
    È possibile fare il checkout dal cvs pubblico cosi’:

    $ export CVSROOT=:pserver:anoncvs@hinezumilabs.org:/home/cvsroot
    $ cvs login
    $ cvs -z3 co plcfetch
  • PHP SambaPasswd (C/PHP): È un’applicazione che consente di cambiare password di Samba via web. Molto utile nel caso di domini NT. Consente di far cambiare la password agli utenti che non sono loggati su una macchina joinata al dominio.
    La parte server è un demone C che apre una socket su filesystem (UNIX socket) e resta in ascolto di connessioni da parte di un client (in questo progetto una pagina PHP).
    Il demone C deve essere setuiddato root per permettere di lanciare smbpasswd coi permessi di root.
    Il progetto è ancora in fase embrionale ma funzionante, migliorie dal punto di vista del controllo degli accessi devono ancora essere implementate.
    Un chmod 700 sul demone C è consigliato.

Popularity: 8% [?]

pallotron Comunicazioni, Informatica, Linux, Programmazione, Software, Unix

Il vero programmatore…

Settembre 11th, 2006 - Settembre 11th, 2006

Il vero programmatore!

Come fare a riconoscere un Vero Programmatore? Semplice. Basta verificare se corrisponde al seguente identikit. (via layos, ma la storia è lunghissima, parte da qua e ha persino un blog tutto per lui).

(nota 1: se non sei un Vero Programmatore, potresti avere problemi a comprendere alcune affermazioni. Non preoccuparti: non è grave.
nota 2: il fatto che il Vero Programmatore sia scritto “VeroProgrammatore” non è un refuso, ma una notazione ungherese. nota 3: il “mangiatore di Quiche” è l’antitesi del Vero Programmatore)

  • Quando il VeroProgrammatore si ferma a fare benzina a un distributore IP, si meraviglia di non poterlo usare come server DHCP.
  • Il VeroProgrammatore quando va a letto esclama sleep (0x7080).
  • Il VeroProgrammatore mangia wafer di silicio.
  • Il VeroProgrammatore sa che il caso non esiste: è solo uno pseudo-caso precomputato.
  • Il VeroProgrammatore non si fida delle mappe di Libero. Se deve spostarsi da una città all’altra, applica l’algoritmo di Dijkstra.
  • Il VeroProgrammatore può condividere un appartamento su eMule.
  • Il VeroProgrammatore può eludere qualsiasi intercettazione telefonica semplicemente dicendo “slash slash” all’inizio della conversazione.
  • Il VeroProgrammatore si dichiara alla donna che ama dicendo “private Object VeroProgrammatore;“.
  • Se il VeroProgrammatore si reca negli Stati Uniti, non ha bisogno di convertire i suoi euro in dollari: esegue un cast implicito.
  • Il VeroProgrammatore ha una casetta sull’albero binario di ricerca.
  • Al VeroProgrammatore non piace Il Signore Degli Anelli. Non gli va giù che 8 Hobbit non facciano 1 Hobbyte.
  • La casa del Mangiatore di Quiche è orientata a sud. La casa del Vero Programmatore è orientata agli oggetti.
  • Il VeroProgrammatore entra in casa dalla porta 8080.
  • il VeroProgrammatore va a fare la spesa con una lista concatenata.
  • Il VeroProgrammatore può contare fino a 1024 con le dita delle mani.
  • Il VeroProgrammatore regala alla sua fidanzata un array di perl(e).
  • Il VeroProgrammatore programma le sue vacanze in assembler.
  • Quando un VeroProgrammatore da bambino impara a parlare, le sue prime parole non sono “mamma” o “papà” ma “Hello, World!
  • Quando un VeroProgrammatore riceve le carte al tavolo da gioco, se le ordina in mano in O(n log(n)) mosse.
  • Quando a uno sportello gli viene chiesto di compilare un modulo, il VeroProgrammatore esclama: “gcc modulo.c“.
  • Quando da piccolo a scuola il VeroProgrammatore doveva fare il tema “il mio papà”, scriveva semplicemente Papà.toString().
  • Quando due Veri Programmatori si scontrano, o vanno subito in Buffer Overflow, o si affrontano per mille cicli di clock senza che vi sia un vincitore.
  • Nel caso erediti una vecchia casa, il VeroProgrammatore non la ristruttura. La sovrascrive.
  • Il VeroProgrammatore può scrivere un metodo che lancia un’eccezione che conferma la regola.
  • Il VeroProgrammatore non porta fuori la spazzatura: non si fida del Garbage Collector. Si limita ad esclamare: “Rifiuti.Dispose()” e l’immondizia si dissolve nel nulla.
  • Il VeroProgrammatore non iscrive i suoi figli a scuola. Ne fa comparire i nomi direttamente sul registro di classe utilizzando un puntatore.
  • Il VeroProgrammatore ha un grande rispetto per l’arte. Uno dei più grandi misteri che lo tormentano è come Leonardo sia riuscito a dipingere La Gioconda senza vertex shading.
  • Il VeroProgrammatore ha sulla parete di casa sua un quadretto con la scritta “127.0.0.1 dolce 127.0.0.1“.
  • Un VeroProgrammatore non usa alcun firewall. Si accorge che qualcuno è entrato nel suo computer perché il suo personaggio di Ultima Online skippa un frame quando attacca.
  • Il VeroProgrammatore utilizza nomi di variabile tipo _abr, idGnr, o più semplicemente a. Se in un listato scritto da un VeroProgrammatore trovate una variabile chiamata stipendioImpiegato, probabilmente contiene il numero di isotopi radioattivi di un reattore nucleare (il VeroProgrammatore ha riciclato il codice di un suo vecchio programma di contabilità).
  • Un test per verificare se qualcuno è un VeroProgrammatore consiste nel legarlo, imbavagliarlo e chiuderlo a chiave in una stanza vuota da solo con un computer preassemblato e non overcloccato, senza alcun utensile o strumento. Se entro 30 secondi non sta uscendo del fumo da sotto la porta, il soggetto non è un VeroProgrammatore.
  • Il VeroProgrammatore chiama qualsiasi interfaccia più complessa di una shell a riga di comando con un unico nome: “spreco di RAM”.
  • Il VeroProgrammatore non si ferma col rosso. Si ferma col #FF0000.
  • Un VeroProgrammatore finisce tutte le sue frasi con un punto e virgola;…anche quando parla;
  • Il Mangiatore di Quiche può cancellare la cache del suo browser. Il VeroProgrammatore puo’ cancellare la cache di Google.
  • Nel caso perda le chiavi di un lucchetto, il VeroProgrammatore si cimenta in un lungo ed estenuante brute force.
  • Il Mangiatore di Quiche va all’Ikea, compra una scrivania, la porta a casa e la monta. Al VeroProgrammatore invece basta esclamare: “apt-get install scrivania” perché essa appaia in tutto il suo splendore nello studio, pronta all’uso (e con una risma di fogli bianchi nel primo cassetto).
  • Per il VeroProgrammatore il concetto di interfaccia grafica è rappresentato da una serie di 1 e 0 ben indentati su di un monitor monocromatico.
  • Se proprio viene costretto a commentare il proprio codice, il Vero Programmatore disseminerà casualmente nel proprio listato qualche ovvia descrizione dei metodi più semplici. Le parti di codice indispensabili al funzionamento del sofware saranno invece precedute da un:
    // Non mi aspetto che tu capisca questo
  • Quando il VeroProgrammatore viene invitato ad una festa, può scoprire quali ragazze sono single e quali no semplicemente esclamando: “ls -l“.
  • Se il suo bucato non è abbastanza morbido, il VeroProgrammatore ricompila il Vernel.
  • Il VeroProgrammatore ha gli Gnome da giardino.
  • La VeraProgrammatrice si preoccupa quando ha un ritardo nel ciclo for.
  • Il VeroProgrammatore ricorda con affetto il suo vecchio Spectrum. Stava giocando contro un certo Joshua a Guerra Termonucleare Globale, quando il processore si è fuso. Era il 9 novembre 1989.
  • Qualcuno sostiene che il VeroProgrammatore tiene sempre i backup da quando ha dovuto riscrivere 327000 linee di assembler 68020. In realtà il VeroProgrammatore non fa alcun backup: è più veloce riscrivere il software a memoria che ricordarsi dove ha messo i nastri o i cd dei backup.
  • Una recente teoria sostiene che gli universi paralleli esistono: li fa girare il VeroProgrammatore con VMWare.
  • Il VeroProgrammatore non usa strumenti di debug o checkpoint. Può leggere il valore di una variabile durante l’esecuzione del suo programma semplicemente osservando attentamente i banchi di RAM del computer su cui lavora.
  • Se non conosce il significato di una parola, il Mangiatore di Quiche consulta un dizionario. Se non conosce il significato di una parola, il VeroProgrammatore consulta una tabella di hash.
  • Il VeroProgrammatore può formattare un disco in vinile.
  • Il VeroProgrammatore può scacciare le zanzare con il RAID 5.
  • Se ha bisogno di parlare con qualche autorità o personaggio importante, il Vero Programmatore non necessita di permessi o lasciapassare speciali: gli basta esclamare “chmod 777“.
  • Se il VeroProgrammatore non riesce a ritrovare una cravatta nell’armadio, invece di cercarla dice: “cat armadio | grep cravatta rossa“.
  • Il VeroProgrammatore, per sorridere, inclina la testa 90° a sinistra.
  • Il VeroProgrammatore ha messo un filtro antispam nella cassetta della posta condominale.

Popularity: 9% [?]

pallotron Hardware, Humor, Informatica, Linux, Programmazione, Software, Unix

Auguri originali in stile Freaknet!

Settembre 29th, 2006 - Settembre 29th, 2006

Tutto inizia con un messaggio di Elibus sulla mailing list Freaknet:

pallotron++

Che ricorda un po’ a tutti che oggi e’ il mio compleanno.
Seguono una sfilza di cose troppo divertenti che potete vedere cliccando sul link qui sotto!
auguri.txt

Popularity: 14% [?]

pallotron Comunicazioni, Humor, Informatica, Programmazione

Idea per nuovo software!

Ottobre 3rd, 2006 - Ottobre 3rd, 2006

In azienda gestisco, tra le altre cose, un gw VPN in esecuzione sul firewall OpenBSD aziendale. Utilizzo OpenVPN.
Funziona alla perfezione!

Con Windows si installa un client specifico, che funziona molto bene, installa anche i driver TUN/TAP per Windows.

Su gli altri sistemi (UNIX, Linux, MacOS) si puo’ scegliere tra:

  1. Usare la linea di comando e scrivere solo “openvpn /path/fileficonfigurazione.conf”. Lasciare il programma in esecuzione e chiuderlo con ^C quando si e’ finito
  2. Utilizzare uno dei tanti client grafici per KDE/GNOME, e altro.

Il problema e’ che questi ultimi sono una chiavica… non funzionano, funzionano male, sono poco intuitivi.

Ho deciso di scrivermi il mio client :)

Immagino una semplice applicazione GTK+2.0 che alla partenza si posizioni sulla notification area (quella vicino all’orologio dei piu’ comuni window manager) che si possa configurare il percorso del file di configurazione di openvpn E BASTA!

E con un semplice menu’ (raggiungibile dal tasto destro) che consenta di fare start e stop del tunnel.

Ah! L’applicazione dovrebbe anche consentire di eseguire la cosa come root user, un po’ come fa gksu su gnome.

Sto leggendo qualche doc:

  • Gtk+2.0 Tutorial, qui
  • Writing Gnome Applets in Gnome2, qui
  • GTK+ refernce manual, qui

Sono ancora indeciso se fare un applet Gnome o una applicazione standalone, credo che optero’ per quest’ultima.

A presto notizie! :)

Popularity: 6% [?]

pallotron Informatica, Lavoro, Linux, Programmazione, Software, Unix

Come diventare un programmatore, ed anche come saper fare il proprio lavoro di manager

Ottobre 5th, 2006 - Ottobre 5th, 2006

Se siete programmatori, ma anche se siete manager o altro, leggete questo FAVOLOSO documento:
http://samizdat.mines.edu/howto/HowToBeAProgrammer.html

fantastici i paragrafi:

  • How to Talk to Non-Engineers
  • How to Evaluate Interviewees
  • How to Disagree Honestly and Get Away with It
  • How to Deal with Difficult People
  • How to Recognize When to Go Home

Popularity: 8% [?]

pallotron Informatica, Lavoro, Letture, Programmazione, Software

OK, Let’s begin

Ottobre 8th, 2006 - Ottobre 8th, 2006

crazy programming

Ho iniziato a scrivere il client di cui vi parlavo qualche post fa.

Il CVS pubblico e’ raggiungibile qui:

http://cvs.hinezumi.org/viewcvs/ovpnc/

Popularity: 7% [?]

pallotron Comunicazioni, Informatica, Lavoro, Linux, Programmazione, Software, Unix

Un poco di sane risate geek non fanno mai male…

Ottobre 17th, 2006 - Ottobre 17th, 2006

Nuovi strumenti musicali

Novembre 10th, 2006 - Novembre 10th, 2006

Guardate qui:

E’ un progetto portato avanti da un dipartimento di una universita’ spagnola. E’ tutto open source, i sorgenti dell’engine sono liberamente scaricabili! :)

Popularity: 10% [?]

pallotron Hardware, Linux, Programmazione, Software

Debugger Man

Dicembre 1st, 2006 - Dicembre 1st, 2006

Ecco come sono dopo una sessione di debugging di 30 MINUTI devastante! :(
(I genitori della persona accanto a me non hanno acconsentito alla pubblicazione del suo volto, perche’ trattasi di MINORENNE! AHAHAHA):

Debugger Man

Popularity: 6% [?]

pallotron Humor, Informatica, Lavoro, Programmazione, Software

Usare libpcap con Perl

Marzo 12th, 2007 - Marzo 12th, 2007

A lavoro abbiamo pubblicato sul nostro server di demo una applicazione che deve essere testata in remoto da un cliente.

Il boss mi ha espressamente chiesto di poter tracciare l’utilizzo della demo da parte del cliente.

Ho realizzato uno script perl molto semplice basato sull’uso delle libpcap (quelle di tcpdump), che rimane in ascolto sniffando su una interfaccia del server, alla ricerca di pacchetti che matchano con una filter rule definita (come quelle di tcpdump). Quando c’e’ del traffico invia una email a una lista di destinatari.

Lo script e’ basato su un file di configurazione che e’ fatto cosi’:

listen_interface = eth0
email_from = sysadmins@spmc.mobi
email_to = "mvoalarm@spmc.mobi"
smtp_server = mail.spmc.mobi
filter_name = "A browser connected to Tomcat!"
filter_rule = "tcp dst port 8080 and dst host 192.168.1.12"
notification_period = 300

Il tar.gz con lo script e il file di configurazione e’ qui.

Ovviamente le cose che si possono fare su questa base sono tantissime, pensate a firewall totalmente blindati che a seconda di certi pattern catturati sulla interfaccia di rete aprono porte, esguono particolari comandi, etc, etc…

Il sorgente del programma e’ qui

Popularity: 6% [?]

pallotron Informatica, Lavoro, Programmazione, Software

Silenzio per un mese, ma ora torno a scrivere

Giugno 3rd, 2007 - Giugno 3rd, 2007

E’ quasi un mese che non scrivo niente sul blog, anche, ma non solo, per colpa di alcune situazioni lavorative accadute in questo mese per niente rassicuranti, di cui avrei voluto scrivere qualcosa da condividere con voi, ma che non faro’, almeno per il momento.

Quindi non ho avuto tanta voglia ne’ tempo per scrivere su queste pagine, ora la situazione si e’ un po’ stabilizzata…

Cerco di sintetizzarvi l’ultimo mese come meglio posso.

Lavoro

Escludendo i recenti fatti che vi ho detto sopra mi limito ai discorsi puramente tecnici. Ultimamente mi sono divertito con Xen3, che mi e’ servito per fare testing di cluster HA con Heartbeat e DRBD.

Su un altro fronte mi sto divertendo con un po’ di programmazione in kernel space Linux per un sistema embedded che stiamo creando in azienda.

Trattasi di un sistema basato su un Toradex Colibri PXA270. E’ una minuscola schedina formato SO-DIMM con un processore Intel XScale PXA270. Il mio lavoro consiste nella scrittura di un modulo del Kernel 2.4 necessario per gestire gli interrupt generati alla pressione di pulsanti e switch che saranno posizionati all’esterno del box che conterra’ l’embedded, le routine lanciate via interrupt servono per comunicare il da farsi ad un programma userland scritto da un altro mio collega. Il modulo sara’ anche in grado di pilotare dei led (facendoli lampeggiare o lasciandoli accesi/spenti) per indicare lo stato dell’embedded e del software a bordo.

Rugby

Come sapete il campionato e’ finito. Ieri si e’ disputato il tanto atteso incontro “Vecchi vs Giovani” del San Gregorio, preceduto pero’ la sera prima da una bella festa/concerto ai Magazzini Sonori. Suonavano i Lautari, un gruppo in cui suonano anche ex giocatori del San Gregorio e che non conoscevo: pero’ sono veramente OK! Una piacevole sorpresa di musica popolare siciliana, tralaltro c’e’ anche una voce su Wikipedia Italia ed un sito ufficiale!

Il giorno dopo festa al campo di Nicolosi, invitati tutti! Giocatori di tutte le categorie con amici, famiglie, genitori, etc. 15 fusti di birra, mangiare e bere gestito dal locale La Meta di Catania, del mio compagno di squadra Ciccio detto “Daitan”.

Purtroppo la giornata e’ stata piovosa e ha un po’ ridimensionato la festa, ma ci siamo divertiti uguale. Partite delle nostre giovanili contro quelle del Belpasso, e poi dopo fiumi di birra e cibo la attesa partita Vecchi vs Giovani, vinta dai giovani ovviamente! Nella foto il preparatore atletico della squadra, Roberto Cafaro, in una caratteristica posa durante la “finta danza Haka” cantata dai Vecchi, che inizia con “Viri ca ti calu u peri i poccu”!

Roberto Cafaro durante l’haka dei vecchi

L’haka dei vecchi

Le foto le trovate sul mio account Flickr.com :)

Popularity: 11% [?]

pallotron Informatica, Lavoro, Linux, Programmazione, Rugby, Sport, Tempo libero

E’ uscita la GPLv3.

Luglio 13th, 2007 - Luglio 13th, 2007

gnu.jpg

E’ uscita finalmente la licenza GPL versione 3. Il buon Katolaz ne ha fatto una traduzione, non ufficiale, in italiano consultabile a questa URL:

http://katolaz.homeunix.net/gplv3/

Buona lettura

Popularity: 7% [?]

pallotron Comunicazioni, Diritti digitali, Informatica, Politica, Programmazione, Software

INGEGNERI

Luglio 17th, 2007 - Luglio 17th, 2007

AH! GLI INGEGNERI. STIRPE DESTINATA A SALVARE IL MONDO. I CAVALIERI DEI TEMPI MODERNI, CHE SFORNANO SOLUZIONI PER MIGLIORARE LA NOSTRA VITA! MA COSA E’ UN INGEGNERE, O DOVREBBE ESSERE ESATTAMENTE? Vediamo una definizione canonica:

L’ingegnere è una persona attiva nell’ambito dell’Ingegneria. L’Ingegnere usa la creatività, la tecnologia e la conoscenza scientifica per risolvere problemi pratici. Persone che lavorano come ingegneri tipicamente hanno una laurea od un diploma in una delle branche dell’Ingegneria. [...] Il termine ingegnere risale all’alto medioevo ed ha la sua etimologia nel latino ingenium, col suo duplice significato di congegno e capacità mentale. Un illustre esempio di ingegnere ed architetto fu Leonardo da Vinci.

CREATIVITA’? TECNOLOGIA? CONOSCIIIIIIIENZA SCIENTIFICA?!?!?!?! ILLUSTRE CAPACITA’ MENTALE!!!?! EH!?!?!?!?!?!

Uno regala il proprio Apple iBook 12″ alla sua ragazza, gli dice: “toh! cara! ecco il mio ibook 12″, e’ tuo, vedrai, e’ bello, non prendi piu’ virus, macos x e’ una figata, e blablablabla”.
Poi arriva il giorno che la tua ragazza vuole partecipare ad un concorso pubblico, e per prepararsi scarica un software FATTO DA UN INGEGNERE, il software e’ qui e si chiama XYZ .
Uno va’ pensando: “Toh! Un beneffatore che ha raccolto i PDF del concorso con le domande, complete di risposte corrette, ha fatto un file binario, ed una applicazione GUI”. POI, INVECE, vai sul sito e leggi:

NON SCEGLIERE UN PROGRAMMA QUALSIASI PER PREPARATI MA “XYZ”.

E ancora si legge:

Programma per la preparazione alla preselezione informatica per il concorso XYZ realizzato da Ing. XYZ.

Incredibile ma vero l’autore ha deciso di distribuire gratuitamente il programma affinchè possa avere la massima diffusione possibile, spera che con questo possa fare cosa gradita a tutti gli aspiranti $POSIZIONEPUBBLICA.

[...] E’ inutile dilungarsi nella descrizione del programma valuta tu stesso scaricando gratis la versione completa, la nostra migliore pubblicità sono gli utenti soddisfatti che hanno superato la preselezione nelle scorse edizioni e ancora oggi ci danno fiducia e consigliano questo programma ai loro colleghi.

OVVIAMENTE IL SOFTWARE E’ FATTO PER WINDOWS, IN .EXE, LA TUA RAGAZZA LO VUOLE USARE SU MACOSX, MA NON PUO’, TU GLI SPIEGHI PERCHE’ NON PUO’, E PENSI A QUESTO INGEGNERE, PERCHE’ STA SMONTANDO LA CREDIBILITA’ DI QUELLO CHE VAI DICENDO.

MA DICO: CON TUTTI I LINGUAGGI PORTABILI CHE CI SONO ORA, TU LO DOVEVI FARE UN VISUAL C++/VISUAL BASIC?!?!? Complimenti! UNA SCELTA CHE DENOTA INGEGNO, CREATIVITA’. MA NON LO SAI CHE C’E’ GENTE CHE NON VUOLE USARE CERTA MERDA PAGATA ED ESISTONO UN FOTTIO DI ALTRI SISTEMI OPERATIVI DIVERSI DA WINDOWS?

Ma studiati questi linguaggi va’:

  • PHP
  • Perl
  • Tcl/Tk
  • Java, o meglio GIAVA
  • Python

Poi ho avuto la malsana idea di rifare quel programma in GPL e scarammarlo online, con somma gioia e soddisfazione, dicendomi: “ok ora prendo il db delle domande e vedo come e’ fatto, magari poi faccio una GUI uguale”.
Poi vado a vedere il formato del file con le domande ed e’ BINARIO. MA ALLORA PERSISTI NEL FALE LE COSE MALE.

PS: E NON MI VENITE A DIRE CHE CON WINE FUNZIONA. LO SO. L’HO PROVATO, NON E’ QUESTO IL PUNTO!

Popularity: 11% [?]

pallotron Informatica, Lamentazioni, Programmazione, Software

Il decennale dell’Hackmeeting italiano

Settembre 3rd, 2007 - Settembre 3rd, 2007

logohm2.png

Quest’anno e’ il decennale dell’hackmeeting italiano.

Ho iniziato a frequentare gli ambienti dell’hackit nel 2002, quando ho iniziato a frequentare anche il FreakNet e Dyne.org. Da allora non mi sono perso nessuna edizione:

Mi sono perso l’edizione dell’anno scorso, a Parma.

In queste manifestazioni ho conosciuto un mucchio di persone, condiviso un sacco di interessi e ideali, mi sono fatto una rete di conoscenze fiduciose, ho fatto anche qualche speech e workshop. Insomma mi sono divertito! E’ un’occasione per vedere amici una volta all’anno.

Quest’anno, a differenza dell’anno scorso, ci saro’ :)

Se volete avere maggiori informazioni su cosa sia l’hackit vi invito a leggerne il manifesto.

L’hackmeeting normalmente e’ un posto dove si puo’ partecipare a seminari veramente interessanti fatti da gente interessante. Vedere la pagina relativa per farvi un’idea.

Ma non ci sono seminari, ci sono anche dibattiti non tecnici per i non tecnici, tavole rotonde di lavoro dove nascono progetti interessanti, and so on.

Ecco il volantino/manifesto:

manifesto.jpg Volantino hackit07

Aggiornamento dell’ultim’ora da parte di Jaromil:

From: jaromil <jaromil@dyne.org>
To: hackmeeting@inventati.org
X-GPG-Fingerprint: 779F E8B5 47C7 3A89 4112  64D0 7B64 3184 B534 0B5E
Subject: [Hackmeeting] le capanne dei suchi
 
[-- Segue l'output di PGP (orario attuale: Mer  5 Set 01:34:44 2007) --]
gpg: Signature made Mer  5 Set 03:43:18 2007 CEST using DSA key ID B5340B5E
gpg: Good signature from "Denis Jaromil Rojo (Dyne.org Foundation) <jaromil@dyne.org>"
gpg:                 aka "Denis Rojo (Jaromil) <jaromil@dyne.org>"
gpg:                 aka "Jaromil (Rasta Coder) <j@rastasoft.org>"
gpg:                 aka "Jaromil (FreakNet member) <jaromil@freaknet.org>"
gpg:                 aka "Jaromil (Enemy.org xploit agent) <jaromil@enemy.org>"
gpg:                 aka "Jaromil (Kyuzz.org network nomad) <jaromil@kyuzz.org>"
gpg:                 aka "Denis Rojo (Netherlands Media Art Institute) <jaromil@montevideo.nl>"
[-- Fine dell'output di PGP --]
 
[-- INIZIO DEL MESSAGGIO FIRMATO CON PGP --]
 
re all,
 
una proposta per il programma, se volete ficcatevelo per bene nel wiki:
 
durante l'hackmeeting ed in modo del tutto casuale avverranno le CAPANNE
DEI SUCHI: dei circoli spontanei di ghei-lesbo caca-suchen che si
fistano, nei quali sono benvenuti tutte e tutti, all'unica condizione di
non fare nessuna foto a nessuno per nessuna accademia delle belle arti.
 
le capanne dei suchi si distinguono per il fatto che non ci sono
relatori a spararsi le pose, ma solo degli ZII FIST che avviano il
fisting che proseguira' poi a VOTAMAZZA in modo completamente
peer-to-peer e serverless secondo i canoni del lesbismo omosessuale.
 
in anticipo sui tempi propongo gia' da subito agli aspiranti frocetti
TRE argomenti quali: ASCII-ART-FA-FICO, crittazione facile per il popolo
e "ce l'hai filtro e cartine?".
 
accorrete numerosi! troverete le indicazioni precise tra le mille
bacheche dell'hackmeeting evidenziate dall'inconfondibile CIPPA DI
CAZZO.
 
per maggiori informazioni rivolgersi con un rutto al jim morrison dei
poveri.
 
ciao

Popularity: 17% [?]

pallotron Comunicazioni, Diritti digitali, Freaknet, Informatica, Linux, Paranoia, Politica, Programmazione, Software, Unix, Viaggi

Hackmeeting 07 finito

Ottobre 1st, 2007 - Ottobre 1st, 2007

Quest’anno, seppur dopo alcune peripezie riguardanti il lavoro, sono riuscito a recarmi a Pisa per l’Hackmeeting 2007.

E’ stato un bell’hackmeeting.

Ho speso il mio tempo li’ principalmente non davanti al computer, in modo da poter divertirmi insieme agli amici li e seguire i seminari (per la verita’ ne ho seguiti solo 2 in english, meno tecnici e piu’ “filosofici”).

freaknetpreview.jpg

Molto tempo l’ho speso anche al banchetto Freaknet insieme a Nightolo e gli altri per vendere le magliette Freaknet.

Abbiamo ricreato il famoso mercato di Catania (aka “A fera”) a Pisa, con Nightolo che gridava:

  • ACCATTITI A MAGLIETTA DO FREAKNET!
  • SULU PA OGGI DECI EURI!
  • Ed altre chicche che spero di riportare in qualche mp3/video qui.

Bellissima la maglietta ForkBomb inventata da Jaromil che e’ andata a ruba. Io ne ho comprata una arancione:

forkbomb_tshirt.jpg

 :( ){ :| :& };:

Cosa e’ una fork bomb? Leggete qui su wikipedia.
Non eseguite quel codice sulla vostra shell LINUX!!!! :)

L’hackit e’ stata una occasione per rendermi conto di quanta gente legge questo blog, veramente non me lo immaginavo. Mi hanno fermato diverse persone dicendomi:

“Ma tu sei Pallotron, quello di vitadiunsysadmin.net, continua cosi’, sei un mito”
“Posso fare ‘na foto con te?”

Fa piacere, ma nello stesso tempo non nascondo che la cosa mi provoca PARANOIA! :)
E poi a questo punto mi viene la paranoia di quello che scrivo. :P

Lancio una richiesta: chiunque lurka questo blog lasci un commento in fondo a questo post, per piacere :)

Popularity: 32% [?]

pallotron Amici, Diritti digitali, Esperienze, Freaknet, Hardware, Informatica, Linux, Paranoia, Politica, Programmazione, Software, Software Libero, Tempo libero, Unix, Vacanze, Viaggi

Letture sempre attuali.

Ottobre 3rd, 2007 - Ottobre 3rd, 2007

Navigando per la rete oggi ho trovato questo post in un blog che lurko ogni tanto. Ebbene si’, anche io lurko, mica solo voi :)

Il post cita un documento, in inglese, reperibile cliccando qui.

Si intitola: “How Software Companies Die”, cioe’: “Come muoiono le software house”, ovvero le aziende che producono software.

E’ una lettura interessante, se non altro perche’ e’ stata scritta nel 1995, ed e’ ancora tremendamente attuale, ritrovo alcune esperienze personali in certi passaggi del testo.

Mi e’ piaciuto cosi’ tanto che lo tradurro’ per i non anglofoni. Se ci sono sviste, errori, etc, segnalatemele nei commenti! Grazie e buona lettura!

Come muoiono le software house

Orson Scott Card

Windows Sources, Marzo 1995, p. 208

L’ambiente che si prende cura dei programmatori creativi uccide il management – e viceversa. Programmare e’ il Grande Gioco. Ti consuma, anima e corpo. Quando cadi nel programmare, niente altro ha importanza. Quando esci dal tunnel, potresti scoprire di essere 100 libbre sovrappeso, che le tue mutande sono piu’ vecchie, e che, a giudicare dal numero dei cartoni di pizze che giacciono tutt’intorno, deve essere di nuovo primavera. Ma tu non te ne preoccupi, perche’ il tuo programma gira, e il suo codice e’ veloce, ingegnoso, conciso. Tu hai vinto. Sei consapevole che qualcuno pensi tu sia un nerd. E allora? Loro non sono giocatori. Loro non hanno mai combattuto con le porcate di Windows, o non hanno mai utilizzato DOS. Per loro C++ e’ un voto decente – come B – non un linguaggio. Loro esistono, semplicemente. Come soldati o artisti, tu non ti preoccupi delle loro opinioni di civili. Tu stai costruendo qualcosa di intricato e bello. E loro non lo capiranno mai.

Apicoltori

Questo e’ il segreto su cui e’ basato ogni successo di una software house: I programmatori possono essere addomesticati nello stesso modo in cui gli apicoltori domano le api. Non potete comunicare con loro esattamente, ma potete fare in modo che esse sciamino verso un posto, e quando non stanno guardando, potete tirare fuori il miele. Potete evitare che esse pungano pagandole con i soldi. Piu’ soldi di quelli che loro si aspettano. Ma meno di quello che possiate pensare. Vedete, tutti questi programmatori tengono in testa la voce dei loro padri che dicono “Quando inizierai ad entrare nel mondo reale?”. Quindi voi dovete pagarli abbastanza soldi a sufficienza per fargli rispondere, anche solo nelle loro teste: “papa’, io guadagno piu’ di te”. Nella media questo e’ conveniente. Ed otterrete che essi stiano nell’alveare dandogli altri programmatori con cui sciamare insieme. L’unica persona da cui importa farsi lodare e’ un altro programmatore. I programmatori meno talentuosi li prenderanno a mo’ di idoli; e se vuoi avere un buono sciame, devi essere sicuro di avere almeno un programmatore-genio “certificato” che tutti possano seguire, anche se lui da occhiate superficiali al codice degli altri quel tanto che basta per ridicolizzarli. Lui e’ un professionista, pensa il programmatore junior. Lui ha visto il mio codice. Questo e’ sufficiente. Se una software house si dota di un simile alveare, i programmatori dormiranno, staranno bene, mentre la societa’ raccogliera’ i soldi.

Fuori controllo

Questo e’ il problema che tende ad uccidere ogni azienda. Tutte le software house di successo hanno, un leader che si prende cura dei programmatori. Ma nessuna societa’ puo’ mantenere questo leader per sempre. O perche’ perde soldi, o perche’ incontra del management che lo buttano fuori, o perche’ lui stesso entra a far parte del management. In un modo o nell’altro i marchettari prendono il controllo. Ma… controllo di cosa? Invece di trovare linee di assemblaggio di lavoratori produttivi, scoprono velocemente che il loro prodotto e’ realizzato da gente completamente imprevedibile, non cooperatia, disobbediente, e peggio di tutto, poco attraente, che resiste a tutti i tentativi di essere gestita. Metteteli davanti a scadenze orarie, vestiteli in giacca e cravatta, e loro diventeranno astiosi e inizieranno a sabotare il prodotto. Peggio ancora, potete iniziare a rendervi conto che inizieranno a divertirsi ad ogni parola da voi detta.

Cacciati via

Lo shock e’ grande per il programmatore. Esso trova improvvisamente creature aliene che controllano la propria vita. Meeting, Scadenze, Report. E ora qualcuno inizia a domandargli di pianificare le sue attivita’ di programmatore, e di attenersi a quel piano. Mai piu’ miglioramenti, mai piu’ tweaking, e mai, mai piu’ toccare il codice di qualche altro programmatore del team. Il giovane programmatore scadente che prima lo adorava e’ ora il suo boss tirannico, una posizione che ha ottenuto perche’ ha giocato a golf con qualche sfintere in giacca e cravatta. L’alveare e’ stato distrutto. I migliori programmatori se ne vanno. E i marchettari, a loro agio adesso perche’ circondati da super cravatte avendo le cose sotto controllo, sono confusi ad ogni iterazione che il loro software perde quote di mercato in quanto il codice diventa vecchio e i bug prolificano. Meglio concentrarsi sul packaging. Si, proprio cosi’.

Popularity: 12% [?]

pallotron Cultura, Dibattiti, Informatica, Lamentazioni, Lavoro, Letture, Programmazione, Software

Mamme exploitano :P

Ottobre 11th, 2007 - Ottobre 11th, 2007

Volevo condividere con voi questo fumetto di xkcd.com. Mitico sito/blog che vi invito a seguire.

ATTENZIONE! QUESTO E’ UMORISMO GEEK/NERD, SE NON CAPISCI NON PREOCCUPARTI! :)

exploits_of_a_mom.png

Popularity: 11% [?]

pallotron Cultura, Humor, Informatica, Programmazione, Software

Lavorando ad un nuovo embedded…

Dicembre 5th, 2007 - Dicembre 5th, 2007

Esattamente lo stesso mese di qualche anno fa, 2005, (vedere il post a riguardo su questo blog), realizzai un sistema embedded basato su Linux per un cliente.

La richiesta del committente era la realizzazione di un sistema che fosse collegato ad un PLC, a sua volta collegato a macchine di taglio lamiera, per la ricezione di dati e allarmi dalla macchina di taglio, e la successiva scrittura di questi dati su un RDBMS centralizzato.

Il sistema embedded era munito di LCD con risoluzione 640×480 e touchscreen per l’interazione.

All’avvio il sistema doveva aprire un browser (javascript capable) che doveva puntare ad una webapplication scritta da un’altra azienda, che serviva per pilotare le macchine.

Realizzai qualcosa in un mesetto:

  • l’embedded in se’: kernel + file system layout minimale + busybox + dropbear (ssh) + xorg + opera 9 (versione minimal): circa 100mb facendo un lavoro certosino di taglio di file inutili. Il dom dell’embedded era di 128MB
  • un daemon scritto in C che leggeva la seriale, parsava i dati (mi sono divertito con gli operatori bit a bit, grazie al K&R, per estrapolare gli allarmi dai char letti sulla seriale), ed utilizzava unixODBC per scriverli sul server MS SQL Server (?!?!**##%%$) della applicazione web fatta dall’altra azienda

Ne’ risulto’ un bel lavoro.
Dall’inizio avevo cercato di evitare Xorg e di usare qualcosa tipo links2 in modalita’ framebuffer, ma l’applicativo web di terze parti faceva uso massivo di Javascript…
Poi provai con Dillo, ma anche li il supporto Javascript era penoso.
Poi provai con Firefox, funzionava ma chiedeva troppo tempo al boot…
Poi sono approdato a Opera9! Opera e’ davvero un bel browser, molto personalizzabile, forse piu’ facilmente di Firefox perche’ basta editare il file opera.ini.
Date un occhio a http://del.icio.us/pallotron/opera.

Opera9 aveva gia’ una funzionalita’ di kiosk mode interna, senza bisogno di installare addon come nel caso di Firefox.

Questo lavoro produsse la pubblicazione di un howto da me scritto che illustrava come usare il portage di Gentoo Linux per realizzare sistemi embedded. E’ ancora un valido documento. Ho visto che molta gente approda ad esso cercando con Google. Ne realizzai anche una versione English.In questi giorni mi sono trovato nella situazione di dover realizzare un altro embedded. Nel frattempo la mia considerazione di Gentoo e’ andata scemando. Per una serie motivi che se volete possiamo discutere.BTW mi sono messo all’opera per vedere che strumenti offre Debian per realizzare lo stesso lavoro.Premetto che sia l’embedded precedente che quello odierno sono basati su cpu x86 compatibili. No ARM.

Quindi per realizzare un sistema usabile e funzionante non si deve fare cross-compiling delle applicazione per la CPU target.

Debian mi ha permesso di essere molto piu’ spedito nella creazione di questo nuovo embedded. Ho utilizzato debootstrap, dando comandi simili a questi:

main # mkdir -p /opt/lenny-root
main # debootstrap lenny /opt/lenny-root http://ftp.debian.org/debian/
[ ... attendere prego ... ]

Alla fine del processo otterrette un sistema debian standard minimal (in questo caso la relase lenny) nella directory prescelta.

A questo punto mountare /proc, copiare /etc/hosts e chrottarsi:

main # mount proc /opt/lenny-root/proc -t proc
main # cp /etc/hosts /opt/lenny-root/etc/hosts
main # chroot /opt/lenny-root /bin/bash

A partire da questo punto ho installato il software necessario al cliente usando apt.
Ho installato Firefox, Xorg, dropbear, Splashy, ed un RPM della National Instruments fornitomi dal cliente che installa un envoirnment chiamato Labview che include anche un plugin di Firefox.

E’ un ambiente molto utilizzato da 20 anni in automazione industriale:

For more than 20 years, NI LabVIEW graphical development has revolutionized the development of scalable test, measurement, and control applications. Regardless of experience, engineers and scientists can rapidly and cost-effectively interface with measurement and control hardware, analyze data, share results, and distribute systems.

Il cliente ha gia’ scritto applicazione LabVIEW, il terminale embedded deve puntare all’applicazione di monitoring della infrastruttura automatizzata.

Il cliente voleva anche che il processo di boot non mostrasse tutte le scritte tipiche del boot dei kernel UNIX. Ma qualcosa di grafico con una barra di scorrimento, qualcosa alla Ubuntu/Windows.

L’ho realizzata con Splashy.
E’ stato sufficiente installarlo, leggere la documentazione, realizzare delle bmp con pochi colori come questa, con le immagini da usare, configurare qualche file di xml per definire colori della barra ed i comportamenti.

Mentre che c’ero ho anche utilizzato lilo in modalita’ grafica con immagine bmp e menu’ di scelta dove l’utente al boot puo’ scegliere se partire con lo splash, senza splash (per vedere i messaggi del kernel), oppure in una modalita’ “configurazione”.

La modalita’ “configurazione” viene usata per configurare l’apparecchio.
In pratica a dopo il boot, e dopo aver effettuato il login uno script in .bashrc legge la command line del kernel leggendo /proc/cmdline ed eventualmente esegue uno script bash che fa domande sulla configurazione e poi scrive i file che deve scrivere…

Il filesystem dell’embedded e’ cosi’ organizzato:

  • / in read only
  • /usr compressa con squashfs
  • una partizione /rw di pochi mega in read write

In totale tutto sta in 164MB. OK non proprio dimensioni embedded, ma in realta’ questo non e’ proprio un embedded nel vero termine della parola… e’ piu’ un dispositivo da affiancare ad una macchina di taglio, e poi dovendo anche avere Xorg… Considerato che il dom che ho a disposizione e’ di 256MB direi che vado tranquillo, ma sono convinto che con un po’ di lavoro certosino fatto di strace, ldd, e altri tool posso minimizzare di molto!
Ed ora pappatevi un video che ho girato l’altra notte mentre ci lavoravo, in questo video il sistema impiega ben 4′30″ dall’accensione elettrica al caricamento di una pagina di test con un plugin Labview. Ma nel momento in cui scrivo sono riuscito a ridurre il tempo di caricamento a soli 2′20″… purtroppo l’embedded che ho e’ solo 166mhz… 129MB di ram… e si sa firefox non e’ che sia leggerissimo… beh casomai il cliente optera’ per ferragglia piu’ prestante.

Popularity: 30% [?]

pallotron Hardware, Informatica, Lavoro, Linux, Programmazione, Software, Tips and Tricks, Video , , , , , ,

ARGHHHHHHHHHHHHH!

Gennaio 4th, 2008 - Gennaio 4th, 2008

Senior Testing Engineer: potresti dirmi come faccio ad aggiornare la jvm su una macchina?Angelo (pallotron) Failla: basta installare la nuova jvm sul disco e cambiare le variabili di ambiente…

Senior Testing Engineer: ok e per installare la jvm ?

Angelo (pallotron) Failla: scarichi la jvm, chmod +x file && ./file, leggi lo schermo, e poi aggiorni le variabili di ambiente…

Senior Testing Engineer: ok

Dopo un po’…

Senior Testing Engineer: puoi venire?

Non aveva impostato JAVA_HOME alla nuova directory della jvm, ne’ il PATH per avere $JAVA_HOME/bin/…

Glielo dico e torno a sedere… dopo un po’:

Senior Testing Engineer: puoi venire? se faccio java -version mi spunta ancora la versione vecchia!

Mi rialzo, vado a vedere, aveva messo “:$JAVA_HOME/bin/” alla fine della catena dei PATH… e la shell gli prendeva con precedenza il comando java di default dentro”/usr/bin/java” …

ARRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHH!!!!!!!!

Sorry, but this post is not available in English

Sentirsi dire questo da un Senior… con 6 anni di esperienza… e’ abbastanza deprimente…

Popularity: 18% [?]

pallotron Informatica, Lamentazioni, Lavoro, Linux, Programmazione, Software, Unix , , ,

Monitoring SSL certificate expiration with Nagios

Luglio 17th, 2008 - Luglio 17th, 2008

Hi Lads,

This is a post for nerds so I’m writing it in English. If you don’t understand English or technical stuff please close this page :D
I’m at work and I’ve just finished to write a Nagios script to monitor expiration date of a SSL certificate.

I wanna share it with you.

To have the script working properly you just need to install OpenSSL and let the openssl
command be in your PATH environment.

This is the usage:

Usage:
check_ssl_cert.sh hostname port [warningdays]

Warning days default value is 30 days.

Some examples:

[afailla@terminus ~]$  /usr/local/nagios/bin/check_ssl_cert.sh google.com 443
OK: Certificate is valid for 289 days expires on May  2 17:02:55 2009 GMT
 
[afailla@terminus ~]$  /usr/local/nagios/bin/check_ssl_cert.sh google.com 443 400
CRITICAL: Certificate will expire in 289 days on May  2 17:02:55 2009 GMT

Download the script here and enjoy it.

Popularity: 22% [?]

pallotron Hardware, Informatica, Lavoro, Linux, Programmazione, Software, Unix , , , , , , , , ,

Migliorare la pagina “archive” di Wordpress.

Agosto 8th, 2008 - Agosto 8th, 2008

E’ venerdi’. Che cosa fa uno Venerdi’ in Irlanda? Va a riempirsi di birra! Per poi finire cosi’:

Beh io questa volta passo. :D
Mi avevano invitato indirettamente ad un leaving party al Pravda ma ho deciso di rimanere a casa, per vari motivi, uno di questi motivi e’ che mi trovavo in the middle di una sezione di hacking molto proficua di wordpress.

Ieri sera ero in chat con una amica che vuole trasferirsi, e le ho detto di consultare il blog per consigli, scorrendo le pagine mi sono ricordato di cose successe anni fa, e anche di curiosi foto ritocchi, specie gli ultimi post prima di partire. :)

Questa situazione mi e’ servita da inpulso oggi pomeriggio, mentre ero al lavoro, per installare, fra un cosa e l’altra da fare, un nuovo plug-in per la pagina archive. Si chiama smartarchives.

Che cos’e'? Niente di meglio della descrizione sulla home page ufficiale:

Smart Archives is a rather simple WordPress plugin that will allow you to display your archives in a much “cleaner” format. You can see it in action on my archives page. You’ll notice that everything on the page is hyperlinked (years, months, posts) and that all of the respective links are future-proofed.

Il problema di questo plug-in e’ che mantiene le stesse impostazioni del blog, quindi nel mio caso 5 post per pagina, e ordinamento discendente. Io volevo, solo per la pagina /archive/, un ordinamento normale, ascendente, e nessun limite sul numero di post. In piu’ volevo anche la data accanto ad ogni post che si vede nella root page di /archive.

Cosa ho fatto?

Dopo qualche oretta di lettura di documentazione per gli sviluppatori di wordpess, che tralaltro ho trovato molto completa (rispetto a quando ho iniziato ad usare wordpress nel 2005), ho prodotto le seguenti linee di codice che ho inserito nel file functions.php del mio tema.

function pallotron_nopaging($query) {
   if ( !is_home() && !is_feed() && '' == $query->get('nopaging') ) {
      $query->set('nopaging', 1);
      $query->set('order', 'asc');
   }
}
 
add_action('parse_query', 'pallotron_nopaging');

Per completare l’opera ho dovuto fare anche un po’ di modifiche al plugin, cambiando delle clausole di order by da DESC ad ASC (il default):

ORDER BY post_date");

E due cicli for che diventano cosi’ (commentato la vecchia linea):

//for ($currentMonth = 12; $currentMonth >= 1; $currentMonth--) {
for ($currentMonth = 1; $currentMonth <= 12; $currentMonth++) {

Adesso i lettori possono navigare la pagina archive e vedere tutte le cazzate scritte da Ottobre 2005 a ora.

References:

http://codex.wordpress.org/Query_Overview
http://justinblanton.com/projects/smartarchives/
http://codex.wordpress.org/Developer_Documentation
http://codex.wordpress.org/Conditional_Tags

Popularity: 23% [?]

pallotron Blog, Informatica, Programmazione, Software, Software Libero, Tempo libero, Tips and Tricks , , ,

Come ti estendo l’homebanking col Perl

Gennaio 31st, 2009 - Gennaio 31st, 2009

Ireland, 1 year.

Sono al giro di boa del primo anno. Non faro’ il solito post commemorativo del tipo “questo giorno un anno fa ero all’aeroporto ignaro del futuro”. Forse lo faro’ dopo. Accontentati di quello che avevo scritto un mese fa. Piuttosto festeggio con un bel rilascio su CPAN.org dei miei sforzi informatici delle ultime 2 settimane, per provare quanto sia sensato il fumetto di xkcd.com : cioe’ che abbia piu’ senso una settimana incasinando col Perl che 900 ore di corso universitario o 400 ore di compiti a casa :)

11th_grade

Cosi’, dopo 2 settimane di programmazione piu’ o meno autistica, ho rilasciato una prima release usabile: il modulo si chiama Finance::Bank::IE::PermanentTSB, e si aggiunge al namespace Finance::Bank, accanto ad altri moduli dello stesso tipo.

Il modulo permette di stampare da riga di comando il saldo di tutti i conti correnti bancari collegato all’homebanking di PermanentTSB.

pallotron@terminus ~ $ ptsb -b
Parsing configuration file...
 
You need a passphrase to unlock the secret key for
user: "Angelo Failla &lt;afailla@newbay.com&gt;"
2048-bit ELG-E key, ID F83D3FCA, created 2008-02-18 (main key ID B68B318D)
 
gpg: encrypted with 2048-bit ELG-E key, ID F83D3FCA, created 2008-02-18
      "Angelo Failla &lt;afailla@newbay.com&gt;"
 
Connecting...
 
-----------------------------------------------------------
|       Account name | Acc. # |     Balance |   Available |
-----------------------------------------------------------
| Switch Current A/C |   0220 |      135.35 |      235.35 |
|          Visa Card |   2667 |     -419.66 |       80.34 |
-----------------------------------------------------------

Ovviamente i dati dell’output sono taroccati :D
Lo script e’ anche in grado di stampare l’estratto conto basandosi su range temporale, regular expression (per matchare la description), e condizioni matematiche (tipo <300, >=2000, etc).

L’idea del modulo mi e’ venuta dopo che ho scoperto la potenza di WWW::Mechanize. E’ un modulo Perl che permette di automatizzare l’interazione con un sito web: gestisce la navigazione attraverso pagine, i click, la gestione delle form, il fill out delle form, etc. C’e’ qualche pazzo che l’ha usato per scriversi bot che tengono d’occhio aste di Ebay o che effettuano operazioni periodiche su Ogame (famoso gioco alla Warcraft, ma online; ci giocavo 2 anni fa, ma poi ne sono uscito pulito!).

Il miglior modo per imparare qualcosa quando programmi e’ di solito scrivere qualcosa che ti serva veramente. Cosi’ mi sono detto: «devo scrivere qualcosa che mi serva veramente e nel frattempo mi possa servire per imparare il modulo e rispolverare altre cose del Perl».

Noi sistemisti siamo pigri e non amiamo fare le stesse cose ripetutamente, e, dove possibile (quasi dovunque!), ci piace automatizzare :D
Se poi possiamo avere tool command line per fare le cose piu’ disparate sicuramente non disdegniamo.

Il sito di PermanentTSB e’ una chiavica, non fa grafici e istogrammi del conto, non salva/esporta gli estratti conto in file CSV, non tiene dati piu’ vecchi di 6 mesi! Un invito a nozze per rimediare a cio’ con WWW::Mechanize!

D’apprima ho iniziato scrivendo un modulo per familiarizare con le librerie, obiettivo: “inserire da command line, le ore lavorate nel sistema di time tracking aziendale”. Devo dire che lo script e’ stato molto apprezzto a lavoro visto che per inserire anche un solo record nella interfaccia aziendale si devono cliccare milioni di volte, e il sistema non e’ a prova di errore!

Queste due settimane mi sono servite a:

  • rispolverare Perl;
  • imparare la programmazione dei package/moduli;
  • capire come funziona la comunita’ CPAN;
  • imparare WWW::Mechanize;
  • imparare come funzionano le test unit in Perl usando Test::More e Test::MockObject;
  • imparare come funziona git, il sistema di versioning creato da Linus Torvalds usato dalla comunita’ di sviluppo del Kernel Linux. Veramente fico per velocita’ e completezza di opzioni e feature. Meglio di subversion/cvs.

In piu’ e’ servito a coprire anche un po’ di spazi vuoti che ultimamente sto avendo a lavoro. :P

Alla prossima!

Popularity: 22% [?]

pallotron Informatica, Linux, Programmazione, Unix , , , ,

Io ti odio!

Febbraio 14th, 2009 - Febbraio 14th, 2009

Caro collega,

stavolta lo scrivo qui: ieri ti ho odiato, per l’ennesima volta!

Quando il nostro collega DBA indiano e’ venuto da me chiedendomi:

«Angelo, come faccio ad inserire una stringa “NAME” su un file “tmp.log” da 1 GB tra la quarta e la quinta colonna con VI/VIM?»

Tu hai sentito… ti sei voluto alzare… con quell’aria da saccente… *dovevi* intrometterti… il tuo istinto da “nerdone-primo-della-classe-so-tutto-io” ti ha fatto venire alla mia scrivania mentre io scrivevo il one-liner perl necessario alla magia, consigliandomi di poterlo fare cosi’ e coli’… con sed piuttosto che con awk, e blabla…

nerd

Non e’ stato sufficiente che ti dicessi di farti i cazzi tuoi… dovevi gareggiare… dovevi farti sputtanare… e dopo 2 minuti hai avuto anche la sfacciataggine di mandare una email al collega col subject “sed version”, scrivendo questa zozzeria:

$ cat tmp.log | sed 's/^\(\W*\w\+\W\+\w\+\W\+\W*\w\+\)/\1 fff/g'

Ma ti ho punito con la eleganza del Perl:

$ perl -lpne 's/^((\w+\W+){3})/$1NAME /;' tmp.log

Sei old! OLD! Mettitelo in testa. Guarda quella linea, e’ ILLEGGIBILE. Con tutte quelle sequenze di escape!

Peccato che il DBA abbia scelto il tuo sed. In questo mondo non c’e’ giustizia.

Popularity: 32% [?]

pallotron Informatica, Irlanda, Lamentazioni, Lavoro, Programmazione, Unix , , , , ,

Evviva YAML! Abbasso XML!

Agosto 6th, 2009 - Agosto 6th, 2009

Ultimamente le mie vicessititudini perliste mi hanno portato a scoprire YAML.

Ho sempre pensato che XML sia una merda che puo’ andare bene per i programmi ma non e’ molto umano.

YAML puo’ essere usato per molte robe al posto di XML. Io ad esempio lo sto usando per file di configurazione. Ad esempio questo piccolo fiel di configurazione qui sotto:

$ cat mm.conf.yml
---
hosts:
 
    - hostname: localhost
      port: 2812
 
    - hostname: linutop
      port: 2812
      username: admin
      password: monit

Puo’ essere parsato e schiafatto in un bel hash tree solo con queste poche linee di codice:

open (TEST, $f);
$file .= $_ while(<TEST>);
close TEST;
$cfg_file = Load($file);

Quello che vedrete nel hashref sara’ cosi’:

$VAR1 = {
          'hosts' => [
                       {
                         'hostname' => 'localhost',
                         'port' => '2812'
                       },
                       {
                         'password' => 'monit',
                         'hostname' => 'linutop',
                         'port' => '2812',
                         'username' => 'admin'
                       }
                     ]
        };

In XML lo stesso file potrebbe essere scritto cosi’:

< ?xml version="1.0" encoding="UTF-8"?>
<hosts>
  <host hostname="localhost" port="2812"/>
  <host hostname="localhost" port="2812" username="admin" password="monit"/>
</hosts>

O chissa’ in quali altri modi astrusi…
Come vedete YAML e’ molto piu’ leggibile di XML.
Fico vero?

Popularity: 24% [?]

pallotron Informatica, Programmazione , ,