venerdì 31 agosto 2007

Funzionamento CDT part1

L'acronimo CDT sta per C/C++ Development Tools. E' la plugin di eclipse per lo sviluppo in ambiente C.

La parte sicuramente più importante è il DOM parser che si passa in rassegna tutto il codice dell'utente e ne effettua un'analisi approfondita da cui estrae una struttura dati ad uso interno, indicizzata e facilmente parsabile dal resto della plugin: AST (Abstract Syntax Tree). Questa è un'operazione assolutamente standard per i parser.
La seconda operazione importante effettuata dal DOM parser è creare una seconda struttura dati (credo sia una semplice lista contenente oggetti speciali chiamati "completion nodes") che sarà utilizzata per le proposte di completamento (il cosiddetto "content assist").

Il motivo di tutto ciò è, prevalentemente, l'ottimizzazione. Infatti indicizzare la struttura AST associata al codice sorgente è un'operazione meno pesante che indicizzare _il_ codice sorgente.

Il processo di parsing, in generale, si divide in tre parti: analisi lessicale, sintattica e semantica.
Nel primo si controlla la correttezza dei termini (token) usati nelle espressioni, nella seconda la correttezza delle espressioni formate dall'unione dei token mentre nella fase finale si effettuano controlli più ad alto livello (a livello semantico, per esempio si controlla se sono rispettati i tipi delle variabili, nel dettaglio se una variabile è un intero non si può assegnargli un valore stringa, anche se formalmente sarebbe corretto, cosa che eviterebbe quindi di generare errore ai passaggi precedenti)

Nel secondo post approfondirò la parte di preprocessing

giovedì 23 agosto 2007

Mawk, sine e lo spam sui commenti

Da parecchio tempo ormai il sito mawk è tempestato di spam sui commenti, ma mentre prima avveniva abbastanza sporadicamente, ora è un fenomeno quasi continuo.
La piattaforma su cui si basa il sito è sine cms, un progetto di 2 ragazzi italiani (di cui uno se non sbaglio girava dalle parti di hacker school). Sinceramente non ho usato questo cms a sufficienza da poterne dare un giudizio critico. Per cui mi limiterò all'ambito del problema.

Secondo me, prima di tutto, c'è qualcosa da controllare a basso livello: per esempio se si inserisce un nuovo commento cambiando il parametro hidden dell'id del post, riesco ad inserire un commento su un articolo inesistente, per prova infatti ho inserito come id del post 999. Il risultato è che è stato pubblicato tranquillamente in homepage, tra gli ultimi commenti. Un vincolo referenziale di chiave esterna eliminerebbe rapidamente questo problema delegandone la gestione al dbms, ma basterebbe anche effettuare una query sulla tabella delle news prima di accettare di inserire il commento.

Guardando la struttura del database, si nota una cosa che non mi piace molto: nella tabella dei commenti non viene loggato l'indirizzo ip. Bisognerebbe prima di tutto sapere se c'è una volontà precisa dietro questa scelta o solo una svista, ma il sito ufficiale sine è giù da mooolto tempo. Beh, cmq il modo più efficace per controllare che uno stesso utente non stia spammando è fare dei controlli sul database prima dell'inserimento della nuova entry: controllare se quell'ip ha lasciato un commento da poco tempo (poi c'è il problema di quantificare, ma vabbè)

Un'altra soluzione sarebbe tenere traccia nella sessione utente, ma è aggirabile rapidamente, cancellando i cookie di sessione, ma si può iniziare ad implementare questa per comodità e rapidità di esecuzione. E' sicuramente da valutare.
Sarebbe anche interessante capire con che UserAgent si presentano gli spammer. Su arabianfenix avevo implementato un metodo per bloccare l'inserimento di contenuti da parte di utenti senza javascript attivato, contando di intercettare e bloccare così il software dello spammer. Ma evidentemente in quel caso era un utente particolarmente simpatico che arrivava lì col proprio browser e aggiungeva un commento con decine di link.. che fondamentalmente non può essere bloccato. Invece nel caso di mawk pare più una cosa automatica, anche perchè vengono inseriti una sessantina di commenti a botta, per cui una soluzione di check prima di inserire è assolutamente da introdurre.

Il tutto per tentare di porre limiti all'attività degli spammer, prima di cominciare a mettere gli odiosissimi captcha..

lunedì 13 agosto 2007

Smanettare è un po' come rinascere

Finalmente sono riuscito a ritagliarmi un po' di tempo tra lavoro, tesi, donna, dipendenza da tribes, ripartenza di arabianfenix ed altri impegni minori per smanettare un attimo.

Cazzo mi sento davvero sollevato, è da tantissimo che non mi dedicavo alla sala macchine. La premessa è che in una delle ditte per cui lavoro, dopo aver virtualizzato tutti i computer su due rack fisici messi in farm, abbiamo letteralmente smantellato la sala macchine.

Sono riuscito a portare a casa diversi componenti a prezzi davvero ottimi, e non è detto che la campagna acquisti sia già finita. Per evidenziare la mia passione per il networking, tra le altre cose ora ho 2 ethernet pci, una pci- 802.11g ed un simpatico switch.

Fondamentalmente l'idea è di aggiungere un'interfaccia di rete al barebone su cui gira xen: utilizzare eth0 per la vpn ed eth1 per xen. Così dovrei risolvere i problemi che ho lasciato in sospeso un sacco di tempo fa. Spero così di poter dare accesso dall'esterno via vpn a castor e pollux, le mie debian virtuali :)

Ne approfitto anche per una ridistribuzione più logica delle varie prese di corrente.. non vorrei trovarmi a rimpiangere di non avere in zona un estintore..

venerdì 3 agosto 2007

Le ceneri non sono male, ma risorgere è meglio

Con questo titolo, ci apprestiamo a ricominciare i lavori su ArabianFenix . E' un titolo che mi è venuto senza pensarci troppo, giusto per sostituire il "test" che avevamo prima, eppure mi piace. Forse rende l'idea dello stile ironico e delle posizioni controverse del sito o forse no.. ;)

Da qualche giorno abbiamo cominciato a prendere confidenza con la nuova piattaforma (wordpress) e a sistemare il tema. Abbiamo cercato di sistemare un po' i post con i tag e tutto il resto, ma il lavoro da fare è ancora molto.

Per prima cosa il forum, e poi chissà .. forse trasferiamo anche il dominio su altri lidi..

E' tutto in divenire, ma fa piacere tornare online :)

Soprattutto contando che torna anche il terzo del triumvirato storico di Hacker School :) :)

giovedì 2 agosto 2007

Ma per piacere, Sir John!

Leggevo proprio oggi sul giornale del j'accuse di Sir Elton John verso Internet. Sicuramente una provocazione. E mi aggiungo al coro di reazioni:

Con una serie di luoghi comuni e di frasi già sentite, egli si scaglia contro internet, che non permette la socializzazione. Lui pare essere pubblicamente un tecnofobo, ben lontano quindi dal mondo in cui, in così tanti, ci aggiriamo quotidianamente. E già questo è un segnale che forse non è la persona più adatta a dire una cosa del genere.

Certo, trovo interessante l'idea dell'esperimento di spegnere internet per 5 anni e vedere cosa capita. Chissà. Probabilmente avrei una crisi di astinenza. Certo, so di avere una forma di dipendenza, ma non voglio guarire, per cui sono fermamente contrario a questo ipotetico esperimento. Tanto più che Internet ci permette di tenerci in contatto con le persone, oppure il proliferare di msn et similia è dovuto ad altro?

Poi, come al solito, dipende da come le persone fanno uso di questo strumento. Gli eccessi non sono mai un bene, in nulla.

Ma se la mancanza di socializzazione fosse dovuta solo ad Internet, io conoscerei quasi tutti i pendolari della mia zona.. d'altra parte in treno non c'è segnale, per cui dovremmo tutti chiacchierare amabilmente, no? Eppure la gente magari dorme, legge o peggio, ascolta la musica!! Allora via la musica per 5 anni, vietate autoradio, lettori, walkman, radioline e tutto il resto!

E tu che farai, john, il panettiere? (senza offesa per la categoria, ovviamente)