-+  Associazione
-+  Documenti
-+  Eventi
-+  Community
-+  Blog
-+  Link

Ottobre 2013

Dom Lun Mar Mer Gio Ven Sab
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Cerca






 


« Agosto 2004 | Home | Ottobre 2004 »

Smart::Comments

C'è un nuovo modulo di Damian Conway (mantenuto da Autrijus Tang e Brian Ingerson) su CPAN. Mi apprestavo a farne una piccola recensione per il blog, nello spirito degli opliti. Lanciati gli esempi, però, mi sono reso conto che non avrei avuto niente da aggiungere. Scaricate il modulo, installatelo, ricopiate gli esempi della Description e ammirateli in funzione: parlano da soli. Mai sentito parlare della Terza Legge di Clarke?

Inviato da larsen alle 12:26 | Commenti (0)

Una shell Perl interattiva

Molti linguaggi (Python, Tcl, molti Scheme e Lisp, Prolog, *ML, etc etc) hanno un modo semplice di ottenere un ambiente interattivo in cui provare dei comandi, mentre Perl sembra non averne.

Molti si mettono a scrivere dei cicli REP (Read - Execute - Print), e finiscono per infrenarsi orrendamente con lo scope di dichiarazioni dentro eval STRING, e il codice che sembrava necessitare di solo un paio di righe finisce per diventare enorme.

In effetti esiste un sistema molto più semplice: basta usare il debugger!

$ perl -de1

Loading DB routines from perl5db.pl version 1.22
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(-e:1):   1
  DB<1> 

e a questo punto possiamo eseguire tutti i comandi che vogliamo. La linea di comando che ho usato si scompone in:

  • -d attiva il debugger
  • -e fornisce lo script sulla linea di comando, invece che leggerlo da file
  • 1 è lo script da eseguire, giusto perché bisogna pur dargli qualcosa

Se poi volete fare le cose complicate, potete sempre pre-caricare dei moduli:

perl -MDBI -MCGI -de1

Buona sperimentazione!

Inviato da dakkar alle 12:00 | Commenti (4)

E' uscito SpamAssassin 3.0

La notizia è riportata da Punto Informatico <http://punto-informatico.it/p.asp?i=49734>

"Tra le novità della nuova edizione viene citata una configurazione d'uso ancora più semplice del passato. Oltre a non dover aggiornare i dettagli degli account email e delle newsletter o mailing list che si ricevono, è più facile applicare certe definizioni antispam lato server per gestirle poi da client."

Inviato da bronto alle 10:43 | Commenti (0)

Perl & DataBase

Segnalo che sull'ultimo numero di Linux&C si conclude la serie di articoli di gmax dedicati alla programmazione Perl/DBI.

In particolare questa puntata illustra preziose ottimizzazioni ed utili tecniche di profiling.

Inviato da bepi alle 09:00

YAPC::Europe 2004 - Belfast - terzo pomeriggio

Mannaggia ai ristoranti! Siamo andati a pranzo, abbiamo anche ordinato poco, ma alla fine sono dovuto scappare alle due meno cinque altrimenti facevo tardi all'inizio del *mio* talk...

Oh beh, sono arrivato con solo un paio di minuti di ritardo, ho parlato a corsa tutta la mezz'ora seguente, ma sembra che abbiano apprezzato.

Dopo, Nicholas Clark racconta come è andata la release di 5.8.5 e dei 5.8.x prima. In pratica, tra 5.8.0 e 5.8.1 hanno fatto un sacco di lavoro estremamente caotico, ma poi si sono resi contro che era meglio decidere delle date di rilascio, evitare ad ogni costo nuovi bug, ridurre le nuove features al minimo, lasciare tempo per i test. Così la release di 5.8.5 è stata "noiosa", nel senso che non è successo niente di "interessante" (nel senso della maledizione cinese).

Inviato da dakkar alle 16:44 | Commenti (0)

YAPC::Europe 2004 - Belfast - terza mattina

Lightning talks di prima mattina.

Simon Cozens ha detto qualcosa a proposito di WhereWas, un sistema di ricerca basato su PLucene, ma non ho capito molto (stavo smistando posta). Acme riempie dieci minuti di niente...

Claes Jacobsson fa vedere un sistema di cross-referencing di sorgenti Perl, con tanto di interfaccia web e grafici SVG. Non ho capito come si chiami.

Ivor Williams parla di PAR in modo molto veloce e generale.

Jon Mitchell presenta un emulatore Spectrum in Perl: http://www.zen37013.zen.co.uk/perl_spectrum/ Sembra che vada anche piuttosto bene.

Tim Bunce ci presenta il futuro di DBI: v2 avrà un sacco di cambiamenti, soprattuto nell'interfaccia coi DBD, e permetterà maggiore flessibilità etc etc. Nel frattempo stanno lavorando a DBDI per Parrot: tutti i linguaggi che gireranno su Parrot avranno le stesse librerie di accesso ai DBMS, da scrivere una sola volta. DBI v3 sarà per Perl6, uguale a v2, e v4 sarà più in stile Perl6.

H.Merijn Brand parla dell'uso del file FILES.last28days nei mirror GNU: visto che GNU ha smesso di aggiornare questo file e quelli simili, lui ha fatto uno script che li ricrea. Così sa sempre quali sono gli ultimi aggiornamenti ai software GNU. Poi, non ho capito il collegamento, parla di www.radioparadise.com e di uno script che usa per cambiare il volume in modo da non sentire le canzoni che non vuole (lo script sta sul sito della radio).

David Landgren intitola "The Lewis Carroll vs. Julie Andrews Schools of Thought" un rant sul fatto che molti moduli usano la coppia "start/end", invece che "start/stop" o "start/finish" o "begin/end".

Talk più lungo: "Usenet Gems" di Brian McCauley. Alcune domande che compaiono sui gruppi Usenet del Perl e che hanno risposte non ovvie. Tipo passare substr come parametro di una sub e vedere risultati imprevedibili; oppure esportazioni strane usando AUTOLOAD e subroutine definite a metà. Cfr. http://birmingham.pm.org/talks/ugems/title.html o dintorni.

José Alves de Castro ha tenuto il talk "Perl Black Magic": golf, codice offuscato, e dintorni. Bisogna proprio vedere le slides. Potrebbe comparire altro materiale analogo su http://natura.di.uminho.pt/~jac/ o sul suo journal su http://use.perl.org/~cog/journal

Inviato da dakkar alle 12:43 | Commenti (0)

Buona Strada, Simon!

Nella comunità Perl il nome di Simon Cozens è abbastanza noto. Oltre ad essere l'autore di Beginning Perl, un libro che insegna la programmazione in Perl agli "absolute beginners", Simon è anche una di quelle ammirevoli persone che danno tutto alla causa in cui credono. Che condividiate le sue idee o no, trovo che la coerenza verso gli ideali che si professano sia comunque ammirevole.

Simon parte in Giappone mosso dai suoi ideali (mi risulta che sia Cristiano Anglicano), per perseguire quella che lui sente come una "missione culturale", e per questo lascia in eredità alla comunità un centinaio di moduli su CPAN, pronti per essere rilevati dai più volenterosi.

Ho avuto occasione di avere un breve scambio con Simon sulla lista module-authors e poi in privato, in occasione della discussione sul modulo che poi pubblicai con il nome di Date::Calc::Iterator; insieme a qualche complimento e suggerimento piovvero anche molte critiche.

Quando le critiche sembrarono sommergermi, arrivò Simon che mi incoraggiò a pubblicare il mio modulo e si imbarcò a sua volta in una breve discussione con mirod e Dave Rolsky.

La cosa mi fece piacere; al di là del fatto che avevo trovato un paladino che mi difendeva a spada tratta :-) mi piacque il fatto che la discussione verteva sull'opportunità di promuovere sul CPAN moduli molto semplici e specifici.

E allora, per quanto io appartenga ad una confessione diversa dalla sua...

Buona Strada, Simon!

Inviato da bronto alle 10:29 | Commenti (0)

YAPC::Europe 2004 - Belfast - secondo pomeriggio

In questo pomeriggio seguo la linea sui moduli CPAN.

Simon Cozens ha raccontato le sue esperienze di gran produttore di moduli, con dei suggerimenti che riassumo. Rilasciate tutto quello che potete, prima o poi qualcun'altro ne avrà bisogno. Non abbiate paura di lasciar invecchiare i vostri moduli: se funzionano, non c'è nessun bisogno di aggiornarli. Se vedere dei pattern nei vostri programmi, astraeteli e fatene un modulo: i pattern non sono cose che si prendono da un libro e si copiano, sono cose che si inventano. Usate gli strumenti che servono: controllo versioni, test, sistemi automatici per le release.

Alberto Simões ha presentato Tie::Cvs, ovvero come avere persistenza dei dati con gestione delle versioni ovvero della storia. Lento, ma potrebbe essere utile.

José Alves Castro presenta 11 moduli a caso dal CPAN, con un esempio minimale per ciascuno, più i soliti motivi sul perché usare i moduli esistenti.

Acme presenta alcuni moduli inclusi in Perl 5.8.0 che forse non tutti conoscono.
Punto notevole: esiste File::CheckTree (guardatevi il pod, merita). Sembra sia un rimasuglio da Perl4...

Sightings: Simon Cozens (Maypole) che chiede a Tony Bowden (Class::DBI) perché Class::DBI non funziona, e Tony che gli fa notare che nella documentazione c'è scritto bello grosso che quello che sta facendo crea grossi problemi. Tra l'altro, Simon stava lavorando a un sistema basato su Maypole per "The Register".

Mark Fowler ha avviato il suo talk con il riassunto del "Perl Advent Calendar", dopodiché ha presentato qualche decina di moduli più o meno noti. Evito di riportare anche solo l'elenco, che prenderebbe diversi KB...

Inviato da dakkar alle 16:31 | Commenti (0)

YAPC::Europe 2004 - Belfast - seconda mattina

Mattina di lighting talks. Riporto quelli interessanti:

Bernd Ulmann (http://www.vaxman.de/) ha presentato un emulatore per un'archittettura+CPU scritto in Perl. Carino, dovrebbe essere disponibile sul suo sito tra qualche giorno.

Mark Fowler ha fatto in 5 minuti buona parte del mio talk su Unicode... buu!

Hartog de Mik ha presentato (senza slides, non è riuscito a far funzionare il suo portatile col proiettore) XML::LibXML::Tools, una API su XML::LibXML per semplificare un po' la vita a chi deve generare documenti col DOM.

Jonas B. Nielsen ha detto due parole su come si avvia un'attività, ovvero come ha fatto lui.

Il talk più "importante" (almeno per Italia.pm o chi siamo noi) è stato quello di Norber Grüner, su come organizzare YAPC::Europe. L'idea è: è una faticaccia, ma ne vale la pena. Ora c'è la YAPC Europe Foundation (o Council, dipende a chi chiedi) che può aiutare con racconti, esperienze, financo "cash up front". In generale: leggetevi YAPC-1.01 (un POD su CPAN), fatevi due conti, mandate una proposta al comitato committee@yapceurope.org

A seguire, Casey West racconta come fare test: Devel::Cover, cosa testare e come, etc.

Fine mattinata: Thomas Klausner parla di CPANTS, il sistema di valutazione della "kwalitee" dei moduli su CPAN. Fa notare di continuo che i valori hanno poco senso, che non vanno usati seriamente, che sono solo approssimazioni, o al meglio indicatori statistici indiretti. Anche perché CPANTS fa solo analisi statica: non esegue niente dei moduli che esamina. Ad ogni modo fa vedere una query sulla tabella degli autori: autori che hanno almeno 5 distribuzioni su CPAN (comprendendo versioni multiple) ordinati per kwalitee media decrescente. Il primo è il nostro Domizio de Michelis. Forse non vuol dire nulla, ma fa figura comunque.

Inviato da dakkar alle 13:41 | Commenti (0)

Quanto sono veloci i parser XML del Perl?

Su xml.com è stato pubblicato un articolo che fa una comparazione molto approfondita(*) su vari moduli usati in perl per fare il parsing di documenti XML.

I moduli coinvolti sono XML::Parser, XML::SAX::Expat, XML::SAX::ExpatXS, XML::LibXML. Vale sicuramente la pena di leggerlo(*).

Ciao
--bronto

_____________
(*) io, in realtà, non ho ancora letto l'articolo, ma conto di farlo in giornata. Purtroppo oggi sono arrivato tardi al lavoro e non posso fermarmi a leggerlo. Appena lo leggerò commenterò qualcosa, fatelo anche voi ;-)

Inviato da bronto alle 12:30 | Commenti (0)

YAPC::Europe 2004 - Belfast - primo pomeriggio

Nel pomeriggio ho seguito i talk della linea "WWW smackdown" (i titoli e i raggruppamenti sono un'idea di Marty)

Mark Overmeer ha parlato, in modo molto generico e generale, di cos'è un sito web dinamico.

Philippe "BooK" Bruhat ha presentato un software web per la gestione di conferenze stile YAPC e workshop. Sembra fatto molto bene. L'idea è di farlo girare sulle macchine del YAPC Europe Council e usarlo per tutti i workshop e YAPC a venire. Intanto lo useranno per il prossimo workshop francese. Magari lo usiamo anche per IPW2005...

Simon Cozens ha fatto la sua presentazione standard su Maypole, ovvero Apache::MVC, e su come si possano scrivere applicazioni di view/edit DB in pochissimo spazio. Al solito non è sceso tanto nei dettagli di come si fanno le cose non ovvie, e la documentazione non è ancora completa. Per di più sembra che abbia lasciato il progetto a qualcun altro. Appena lo ritrovo gli chiedo a chi l'ha lasciata.

Francamente ho perso il resto dei talk (avete presente quando vi arriva una richiesta di bugfix per posta e serve per ieri? ecco.)

Inviato da dakkar alle 18:31 | Commenti (2)

YAPC::Europe 2004 - Belfast - prima mattina




Il programma diceva che l'avvio sarebbe stato alle 9.30, per cui io alle 9 ero lì davanti. Trovo un po' di gente (Norbert, mirod, …), e dopo un paio di giri a vuoto troviamo anche l'ingresso (è in una viuzza piccola e buia). Dentro ci dicono che non è ancora pronto nulla (stanno ancora preparando le borse, la rete non c'è, nessun cartello, piccolezze del genere), e che la registrazione sarà _dopo_ la keynote.

Ci mettiamo a aspettare, io comincio a dire a tutti quelli che passano "entrate, vi registrate dopo", e verso le 9.30 Marty sale sul podio e dice un po' di inutilia. Finalmente si fa avanti Allison (non l'avevo riconosciuta… e dire che l'ultima volta che l'ho vista è stato solo due anni fa) e ci racconta "lo stato della carota" (la cipolla l'ha già presa Larry).

Perché carota? "What do you get if you cross a CAmel with a paRROT?" il talk è farcito di battute di questo genere (per fortuna un paio non le capisco…) Niente di non noto: ci sono state un sacco di release (compreso Perl 1), Ponie va avanti bene, fra un mesetto potremmo anche avere un compilatore Perl6 che almeno ha una grammatica vera.

Registrazione e coffee break (lunghi), talk da 40 minuti. BooK era mezzo disperato perché gli serviva la rete per il suo talk (HTTP::Proxy), e non funzionava nulla... in effetti solo dopo mangiato la rete ha preso a funzionare davvero.

Inviato da dakkar alle 16:16 | Commenti (0)

Segnalazione della Code Jam

Punto Informatico ha inserito la Italian Code Jam in una segnalazione di iniziative su Linux in Italia, insieme a "LinuxWorldExpo Italia", "Un network per Linux" e "Linux è". I dettagli su Punto Informatico

Ciao
--bronto

Inviato da bronto alle 12:00 | Commenti (0)

mod_perl vs PHP

Su use Perl, nel journal di Joe Johnston, c'è un interessante confronto tra mod_perl e PHP, in particolare dal punto di vista della difficoltà di deployment.

Mi ricorda certe discussioni che avvengono ogni tanto su #nordest.pm, e che ogni volta mi riprometto di pubblicare in qualche modo, per farle uscire dal vivace ma ristretto ambiente della chat. Sarebbe bello, forse utile e probabilmente poco impegnativo pubblicare gli estratti più interessanti dei log.

Inviato da larsen alle 13:13 | Commenti (1)

Nascondiamo gli hidden

Ultimamente stavo riflettendo su uno dei comuni problemi di sicurezza sulla gestione di informazioni nascoste nei form html. Come ben saprete i campi "hidden" danno la possibilità di inserire all'interno di un form html dei campi nascosti non visibili dall'utente, ma inviati al server quando si invia il form.

Il problema che nasce da questa tecnica, è la possibilità da parte di un utente smaliziato di salvare la pagina sul suo sistema locale, modificare questi campi, e reinviare la pagina.

Ecco l'idea!

Ovviamente nel mio caso, che riguarda lo sviluppo del mio FrameWork per IsoGest (www.isogest.org) dove ho la gestione completa del modulo che genera i form, la cosa e di facile implementazione. E' infatti sull'ambiente e i metodi del FrameWork di Isogest che si basa l'esempio sotto riportato. Ma sono certo comunque che l'idea potrebbe essere applicata in qualsiasi situazione.

Attraverso il framwork di Isogest un form tipico è generato dal seguente codice:


FormHead( name=>'provaform',
cgiaction=>'nuovadata' );
Input ( type=>"hidden",
name=>"action1",
value=>'123');
Input ( type=>"hidden",
name=>"action2?,
value=>'321');
Input ( show=>$lang{insert_new_data},
type=>"date",
class=>"totalarea",
name=>"newdate");
Input ( type=>"submit",
value=>$lang{confirm},
onclick=>'self.close()');
FormFoot ();

come è facilmente intuibile il form generato comprende due campi hidden "action1" e "action2" che non verranno visualizzati dal browser, ma che serviranno ipoteticamente al cgi per qualche azione da svolgere con il campo "newdate" che verrà inserito. Se pero' andiamo a visualizzare il codice html generato troviamo i tag relativi ai due campi hidden, e come detto sopra possiamo modificarli a piacere "disorientando" il cgi.

Se invece, senza modificare il codice sopra, quindi in modo trasparente per lo sviluppatore, modificassimo i metodi FormHead e Input in modo che:

- creino un file temporaneo con un nome univoco magari dato dall'id di sessione, dove scrivere tutte le coppie chiave (nome) valore dei campi hidden o memorizzino tali coppie in uno "spazio" relativo alla sessione aperta.

- passassero alla pagina html solo un tag del tipo <input type="hidden" name="myhiddens" value="fd3fd2jf4dgfdgf4dgfd3gf2s2sd2"> (dove "fd3fd2jf4dgfdgf4dgfd3gf2s2sd2" equivale al nome del file temporaneo generato). O non passare alcunchè basandosi esclusivamente sull'ID di sessione aperta.

In questo modo basterebbe modificare il mio metodo ReadParse (che si occupa di prelevare le informazioni dai campi del form) per far in modo che:

- controlli l'esistenza del file temporaneo "fd3fd2jf4dgfdgf4dgfd3gf2s2sd2" o l'esistenza nello "spazio" della sessione di dati inerenti il post o in alternativa avvisi di un possibile tentativo di hacking.

- faccia il parsing del contenuto del file temporaneo o dello spazio della sessione, mettendo a disposizione dello svilupparore (in modo trasparente) il contenuto dei campi hidden.

Tale soluzione apporta al sistema anche un ulteriore miglioria oltre a quella del passaggio dei campi hidden. Infatti abbiamo detto che il metodo FormHead, comunque genera un file temporaneo che è controllato poi da ReadParse al recupero dei dati del form. Questo permette di fare il Parsing solo di form veramente generati dallo script, e non di form magari creati a mestiere dall'utente smaliziato.

Devo ancora implementare l'idea sul mio FrameWork, con l'occasione attendo qualche feedback a conferma condivisione e miglioramento di quanto scritto.

[LucaS]

Inviato da LucaS alle 12:53

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google