Come ti estendo l’homebanking col Perl

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 <afailla@newbay.com>"
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 <afailla@newbay.com>"

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 😀
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 😀
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. 😛

Alla prossima!

Comments Posted in Informatica, Linux, Programmazione, Unix
Tagged , , , ,

Comments

  1. bacco1977 says:

    antonio :
    queste cose probabilmente gliel’hanno insegnate all’universita’, dove formano programmatori incapaci di lavorare con meno di 8 giga di memoria.

    Spiacente Antonio.
    Non e’ corretto.
    la frase dovrebbe essere:
    queste cose probabilmente gliel’hanno insegnate all’universita’, dove formano programmatori incapaci .

  2. bacco1977 says:

    certo che il livello IT italiano a volta mi fa riflettere se sia veramente il caso di non fare mai piu’ rientro

    @pallotron

  3. antonio says:

    queste cose probabilmente gliel’hanno insegnate all’universita’, dove formano programmatori incapaci di lavorare con meno di 8 giga di memoria.

  4. pallotron says:

    Gia’ il primo task, “mettere a dominio i pc” lo degrada a “sistemista cazzuola.”
    Specie di cui il mondo, specie quello italiota, e’ pieno.

    Presumo che parli di domini Microsoft NT o Active Directory, da cui i veri sysadmin e system engineer si tengono giustamente alla larga.

    Tu confondi IT con Operations! conosci la differenza no?
    Se non la conosci se vuoi te la spiego nel prossimo commento.

    Il sistemista alla quale ti riferisci tu e’ quello tipicamednte italico, che si e no ha a che fare con sistemi con meno di 10 utenze 😀
    Ma pensi veramente che il sysadmin sia solo il classico personaggio che fanno vedere in telefilm come “The IT Crowd”?

    Secondo te in grandi compagnie come Amazon, Sun, Google, Facebook, et al. o in grandi corporation come operatori di telefonia con centinaia di migliaia di server e milioni di utenze fanno tutto gli sviluppatori?

    svegliati!

    gli sviluppatori medi non vanno oltre il concetto di blackbox che prende input e sputa output e non hanno idea dell’hw e delle architetture che le eseguono!

    I migliori System Engineer fanno capacity planning, design di architetture hw, sw, di storage e networking, conference call col cliente alle 4 di notte quando un sistema di 30 milioni di utenze va giu’ e tu devi capire cosa e’ successo, come risolvere, e come gestire il cliente.

    Se dove lavori tu hanno licenziato l’unico sistemista che avete per ragioni di costi vuol dire che non ne avevate bisogno perche’ la tua azienda ha un business limitato.

    PS: punto informatico non e’ la bibbia 😀

  5. Ale says:

    ma il sistemista….

    in gran soldoni oltre che:

    -mettere a dominio i pc
    -tirare su dei server quando servono
    -occuparsi dei backup
    -mantenere i client dell’azienda (con antivirus e programmi office style)
    -cambiare i toner alle stampanti.
    -parlare con i fornitori per i preventivi hardware.

    che diavolo fa???
    Non fa altro.
    Infatti qui da noi, ritenendolo un costo inutile, l’hanno tolto.

    [$tutto #preso _da ?puntoinformatico]

  6. pallotron says:

    @bacco1977
    per quotare usa l’apposito pulsante “quote”! il nuovo tema e’ fichissimo!

  7. antonio says:

    bravo, visto che fai sempre quelle cose li’ da fotoamatore
    bianco e nero, ritratti pastello, etc

  8. Gizzo says:

    io la laurea l’ho presa perché avevo spazio sul muro, e mi vergognavo ad appenderci le foto.

  9. bacco1977 says:

    e nn mi serve la laura? 😛

  10. pallotron says:

    aahahaha basta vi prego! ahahah

  11. antonio says:

    va bene uguale, fai cifra/numero persone e lui ti dice quanto viene la cena alla romana 😀

  12. bacco1977 says:

    Diretto’ io smanetto con python….va bene uguale?

  13. antonio says:

    ma chi se ne frega del filtraggio che ha un IIR, se non sapete il Perl siete solo dei lamer, altro che fisica e matematica, al massimo vi servono per dividere il conto al ristorante.

  14. bacco1977 says:

    qui nessuno da addosso ai laureati Bill
    Rileggi
    Do addosso a chi crede che sia sinonimo di competenza, nel settore informatico.
    Io ho sacrificato molto del mio tempo per conseguire la laurea mentre lavoravo.
    Perche’ dovrei spalare merda su Laureati? Suvvia, sarebbe controproducente.

    >anzi, sto gia’ pensando a quale certificazione professionale prendere dopo la >laurea, perche’ sono consapevole di non essere pronto a livello professionale, a >meno di non trovare un’azienda disposta a colmare le mie lacune a loro spese.

    Un consiglio. Basta studiare. Comincia a lavorare…
    Saluti

  15. kat says:

    Ti consiglio di trovarti un lavoro…fa più curriculum un’esperienza lavorativa che una certificazione…poi se riesci ad avere entrambi è meglio…:)

  16. Bill says:

    Questo dare addosso ai laureati (come se fossero un peso morto per la societa’) non e’ rispettoso nei loro confronti, e degli enormi sacrifici che uno studente universitario deve affrontare al giorno d’oggi…
    Non ho problemi a dire che il mio 110 e lode in Informatica non significa nulla, e’ solo un numero inflazionato (contrariamente a quello che pensano i parenti, ancora illusi nella vecchia simmetria “voto alto”=”alte competenze”=”posto sicuro in una grande azienda bla bla bla”), non implica necessariamente che sono un genio, che so’ fare di tutto e di piu’, anzi, sto gia’ pensando a quale certificazione professionale prendere dopo la laurea, perche’ sono consapevole di non essere pronto a livello professionale, a meno di non trovare un’azienda disposta a colmare le mie lacune a loro spese.
    Ma questo non significa nemmeno che “la laurea in informatica non serve a nulla” o “tutti i laureati sono palloni gonfiati che si credono geni”. Abbandonare gli studi, ed andare a lavorare all’estero, e’ un atto di grande coraggio, ma lo e’ altrettanto continuare a mangiare fango (per non usare un’altra parola) in Italia, per raggiungere un obiettivo, che ti fornisce comunque delle competenze, un metodo di studio, e mostra agli altri sei riuscito, dopotutto, a superare le “forche” del sistema universitario (che, sono daccordo con Pallotron, in Italia, ma credo in generale in Europa, premia piu’ chi obbedisce ai Prof. e studia per superare gli esami, che chi preferisce un approccio piu’ indipendente).

  17. bacco1977 says:

    pallotron sei diventato troppo diplomatico.
    E’ una brutta deriva.

  18. pallotron says:

    @ale
    le ore di lezione le recuperi *se vuoi* semplicemente… facendo lezione… basta reiscriversi, sempre che serva o tu ne abbia voglia!
    cmq io non capisco la gente che prende sul serio le vignette umoristiche 😀
    il discorso e’ da leggere NON LETTERALMENTE. non e’ una verita’ assoluta! e’ uno spunto di riflessione a cui serve un minimo di immaginazione ed esercizio mentale per pensarci su’.
    il discorso che il fumetto vuol sottolineare e’ che vale di piu’ qualcosa che tu studi perche’ ti piace studiarla rispetto a qualcosa che sei costretto dal sistema a fare, e che alla lunga, per quanto ti piaccia il tuo corso universitario e le materie trattate, finiscono per diventare un dovere.
    in questa situazione la mente assimila peggio e suo malgrado meno rispetto a quello che assimili quando fai qualcosa che ti piace e che tu scegli di fare, perdendoci i giorni interi, con soddisfazione…

    my 2 cents.

  19. bacco1977 says:

    bravo ale.

    tipico genio universitario Italiano, convinto che la sua preparazione sia migliore del mondo intero.
    Fortuna che il mondo civilizzato, di cui l’Italia da qualche anno ha deciso di non far piu’ parte, la pensa diversamente.

    Poi con calma, mi dici, a parte l’mp3, cosa hanno realizzato le universita’ di importante nel campo informatico.

    Comunque io sto preparando la tesi in ingegneria del Software al Politecnico di Milano. Mentre parlavo col professore, che sapeva che lavoravo, dove avevo lavorato e cosa avevo realizzato, dissi che ci avevo messo un bel po’ di anni per arrivare alla tesi perche’ nel frattempo, appunto, avevo lavorato.
    La sua risposta fu :” beh, bel frattempo , mi lasci dire, che ha fatto molto di meglio…..”
    Probabilmente avra’ detto una cazzata…Peccato che e’ stato prof. associato a Stanford…..

  20. ale says:

    Con la differenza che 400 ore di lezione non le recupererai piu’ in vita tua, il weekend a smanettare col Perl e’ accessibile a tutti.
    Il mio collega non ha fatto l’universita’ e a 45 anni ci sta mettendo 3 mesi per fare un controllore PID software… e si e’ messo a leggere ora le dispense universitarie ahaha.
    Io dopo solo 1 ora ho capito che un sistema di filtraggio aveva dietro un IIR, e chi non ha fatto un certo esame non ci arriva subito credimi…con tutte le conseguenze del caso.
    La matematica o la fisica non te la puoi inventare, ci devi passare sopra le ore, i giorni i mesi.
    Il weekend di Perl o qualsiasi cosa e’ invece una cosa che fanno bene a non insegnare all’universita’ in quanto appunto si risolve con un po’ di pedanteria e smanettamento.
    Universita’ non insegna a smanettare

  21. bacco1977 says:

    @Pallotron
    Angelo dai che scherzavo!
    Non fare il permaloso!
    Comunque confermo che e’ meglio unn weekend a smanettare con perl che 3 esami universitari.
    E sono d’accordo con te che uno sviluppatore dovrebbe sempre avere a mente problematiche di tipo sistemistico.
    Un saluto da Seattle.

  22. diego says:

    @antonio
    Ma l’hai visto che paese del cazzo stiamo diventando??
    Meglio sottopagato fuori che sottopagato qua 😉

  23. pallotron says:

    @Bill
    la mia personale esperienza: io sono partito lavorando come programmatore nel 2000, contemporaneamente al mio ingresso in universita’, perche’ non mi andava di aspettare 5 anni di duro studio ed uscire senza un minimo di esperienza, ritenevo di poter fare le due cose contemporaneamente ma ho abbandonato, ma quella e’ un’altra storia…
    visualbasic (non ridete!) era il mio linguaggio di lavoro, degli inizi, allora iniziavo a smanettare con linux, e lavoravo per una societa’ che faceva software di tracciabilita’ per la filiera dei prodotti deperibili, carne, formaggi, etc.
    ho fatto poi altri lavori come sviluppatore, principalmente lato web, e le conseguenze che ne ho tratto alla fine sono che io non sono fatto per lavorare come programmatore (da dipendente); amo prendere le direzioni che mi piacciono quando scrivo il codice, e odio le deadline, specie nel ramo dello sviluppo, perche’ io ho un approccio abbastanza zen alla programmazione, mi piace soffermarmi sulle minchiate del linguaggio senza badare al sodo (ovvero: sviluppa sto mattone prima possibile, l’importante che passi le unit test).
    complice la mancanza di skill manageriali in italia la mia strada mi ha portato verso il modo dei sysadmin. probabilmente se fossi capitato in una situazione in cui si usano metodologie agili (xp, scrum, etc etc) probabilmente lo strappo sarebbe stato meno netto, ma inevitabile.
    personalmente ritengo che qualsiasi programmatore debba obbligatoriamente fare esperienze di mantenimento di sistemi piu’ o meno critici per prendere coscienza di problematiche che normalmente vengono da loro ignorate (come prestazioni generali su tutti i fronti, gestione della memoria, organizzazione dei dati nel filesystem, semplicita’ nella configurazione dell’applicazione scritta).
    aggiungo che per un me un vero sysadmin deve essere ANCHE un programmatore in grado di scrivere codice su richiesta, codice di “basso” livello per task importanti come ad es. migrazioni di massa di dati e system automation vario.
    deve essere in grado di usare strumenti di debug come strace, gdb, jdb etc etc.
    deve essere in grado di modificare sorgenti a richiesta per farli compilare nelle macchine che amministra.
    per quanto riguarda quello che hai detto, ti do ragione, a volte da sysadmin si sta in periodi di tranquillita’ ma ti assicuro che quando qualcosa va storto sei messo in prima linea e senti il fiato del cliente sul collo. 😛

    my 2 cents

  24. Bill says:

    Ciao Pallotron,
    quasi alla fine della mia carriera universitaria, devo decidermi se la mia carriera lavorativa sara’ piu’ improntata verso lo sviluppo, o l’amministrazione di sistema. Puoi dirmi pregi e difetti del lavoro di amministratore Linux/Solaris vs Software engineer (il linguaggio che conosco meglio e’ Java, ma riesco ad arrangiarmi anche con il C++)?
    Da quello che ho capito, il lavoro di amministrazione e’ caratterizzato da brevi periodi di intenso lavoro, seguiti da periodi di “normale” controllo/mantenimento, mentre il lavoro di Software Engineer/Sviluppatore dovrebbe essere piu’ “costante” (tranne forse in vista delle release). Io pero’ odio fare il debugging, e scervellarmi per trovare quell’errore stupido che non ti permette di far funzionare il resto del codice. Anche l’amministratore spesso deve scrivere del codice, ma di meno, e comunque si usano linguaggi di scripting solitamente piu’ semplici da gestire…
    Ovviamente all’Universita’ l’attivita’ “hands-on” richiesta agli studenti e’ al 95-99% improntata allo sviluppo, anche perche’ l’amministrazione di sistema viene quasi vista quasi come una cosa di “basso livello”, che non produce di per se’ “prodotti”. Io comunque sarei piu’ orientato verso l’amministrazione Linux/Solaris, ma vorrei da te un’opinione/consiglio…
    Grazie mille

  25. antonio says:

    ma soprattutto, non ci sono tanti che ti possono sottopagare in italia?
    a mente mi vengono i nomi di almeno una decina di piccole/medie imprese 😀

  26. pallotron says:

    beh con sta crisi che c’e’ non ne ho idea 😀
    forse non e’ il migliore momento.

  27. diego says:

    hei, io mi sto per laureare.. non è che c’è un posticino, anche sottopagato, per un informatico alle prime armi da te? ^_^

  28. pallotron says:

    @bacco1977
    beh, c’e’ chi dice che e’ una bella cosa, c’e’ chi no. io propendo per entrambe le cose, a seconda degli umori della giornata.

  29. bacco1977 says:

    Minchia non hai un cazzo da fare!!!

  30. […] fonte:  Vita di un sys-admin » Come ti estendo l’homebanking col Perl Articoli correlati: Benvenuti nel DailyMail di Armanni Luca: Download della settimana […]