Programmare con la rete

Fino a pochi giorni fa non mi ero reso conto di quanto internet potesse essere utile anche come supporto alla programmazione.
Tutti noi sappiamo che una ricerca su internet spesso è in grado di risolvere in maniera semplice e veloce un problema che affligge il nostro codice, magari da ore: senza reinventare la ruota tutte le volte — o per evitare di spaccarsi la testa su un problema (anche banale) già incontrato mille volte — è sufficiente quasi sempre fare una ricerca su internet e leggere un post su siti come l’ottimo Stack Overflow .
Quello che io personalmente non avevo ancora realizzato è quanto utile possano essere i siti che permettono il sandboxing del codice e il test immediato: voglio parlarvi di due di questi siti che ho iniziato a usare recentemente, nella speranza che siano utili anche a voi.

Non programmo sul web in maniera professionale, si tratta di poco di più di un hobby: quando ho iniziato mi sono rivolto verso ASP.net in maniera abbastanza naturale per poter riciclare le mie competenze in Visual Basic e C♯. Solo dopo un po’ di pratica mi sono reso conto che non avrei potuto prescindere dall’uso di JavaScript per applicazioni client-side versatili e molto pratiche da usare in un sito web.
JS può essere scritto direttamente all’interno di una delle edizioni di Visual Studio, oppure con l’apposito modulo nel IDE open source Eclipse, ma entrambi i prodotti mi danno l’idea di un cannone con cui sparare alla proverbiale zanzara; almeno per quanto concerne il mio caso di applicazioni modeste in lunghezza e complessità.

Uno strumento estremamente più utile e immediato l’ho invece trovato online: si tratta di JSFiddle un tool in cui si può direttamente editare il markup HTML, il codice Javascript e gli stili CSS e vedere immediatamente il risultato nella finestra del browser. Si tratta di un progetto un po’ più recente e meno famoso di JSBin, ma che io trovo più user-firendly.
Con questo strumento si possono salvare i frammenti di codice e condividerli. I vantaggi sono evidenti: è possible pubblicare un semplice permalink non solo al codice, ma a un esempio immediatamente eseguibile e funzionate, tutto questo su Twitter, Faceboook su blog, forum e via dicendo.
E’ uno strumento non solo utile al programmatore per farsi aiutare più semplicemente o per mettersi un po’ in mostra, ma anche alla comunità in generale in quanto consente di condividere codice e conoscenza in maniera veloce e completa. Leggi tutto “Programmare con la rete”

3, 2, 1… #CommonMark

Chiunque operi per lavoro o hobby nel campo dell’informatica, probabilmente condivide lo stesso rapporto di odio e amore verso i file in plain text : hanno innegabili vantaggi come la portabilità, la facile interoperabilità e la semplicità di creazione.
D’altra parte, risultano spesso difficilmente leggibili e poco versatile, non disponendo di opzioni di formattazione, nè quelle basilari come grassetti e sottolineature, nè più sofisticati come ad esempio il supporto di hyperlink.
Questi ultimi rimangono esclusività di editor di testi e di markup più sofisticati.

Negli anni sono stati fatti vari tentativi prendere il meglio di entrambi i mondi e unire la semplicità di file di testo alla versatilità del testo formattato: uno dei più popolari è Markdown, inventato da John Gruber e documentato principalmente in questa pagina.
Dalla sua nascita, Markdown è stato utilizzato in maniera molto ampia: come semplice metodo per pubblicare commenti, per scrivere file ReadMe e per documentare il codice con commenti inline .

Tuttavia questo strumento è oggetto di molte critiche, prima di tutto per alcune sue carenze.
Una parte della sintassi risulta ambigua nella pagina di definizione e l’implementazione originale di un interprete Markdown/HTML scritta in Perl — sempre da John Gruber — è risultato contenere numerosi bug.
Un secondo problema di questo progetto è il modo autoritario e decisamente poco aperto con cui Gruber pretende di gestirlo, con il risultato di avere poco o nessun coinvolgimento della comunità e relativa mancanza di progressi nel migliorare lo standard o il codice della sua implementazione.
Leggi tutto “3, 2, 1… #CommonMark”

Poi non date la colpa al malware

Museo di Iraklio / Heraklion museumSpesso c’è la tendenza ad incolpare il malware per ogni tipo di danno causato ai sistemi informativi o per ogni tipo di furto di informazioni.

Se non si può parlare di colpa di chi scrive il software, certo il programmatore è in molti casi correo colposo (quando non è doloso, ma è un altro paio di maniche) di intrusioni illecite o furti di informazioni.

Negli ultimi anni le cose stanno lentamente cambiando, ma fino a poco tempo fa chi scriveva software era assolutamente inconsapevole dei rischi della sicurezza perché o non se ne curava affatto o pensava che fosse un Problema Altrui.

Scrivere un software che tenga presente i problemi della sicurezza non è semplice, ma sta diventando rapidamente una necessità imperativa se non si vuole fare brutte figure, o peggio.

Leggi tutto “Poi non date la colpa al malware”

Programmare è un’arte?

WHAT IS THE MATRIX?Tom Armitage offre un punto di vista sull’attività di scrivere software.

Chi non si è mai posto il problema di come nasca il software spesso crede che sia un’attività di tipo prettamente tecnico, quasi meccanico.

Chi, sempre esterno al mondo della programmazione, ha visto all’opera alcuni programmatori spesso li definisce artisti, per come riescono ad utilizzare la creatività per risolvere i problemi (è capitato molte volte anche a me di sentirmi definire tale).

Chi scrive software probabilmente non si riconosce in nessuna delle due categorie.

Armitage nella sua trattazione paragona l’attività di programmare a quella dell’architetto, che deve bilanciare la parte ingegneristica-strutturale con quella estetica. Questa definizione probabilmente viene da una concezione piuttosto recente e minoritaria secondo la quale il software debba essere bellodi design prima ancora che utile, sicuro o efficiente.

Leggi tutto “Programmare è un’arte?”

Ma chi vuoi che…

«Sicurezza» sulla rampa di Malpensa / «Safety at Malpensa ramp»«Ma chi vuoi che venga ad hackerare proprio il nostro sito?»

Questa è la reazione di molte persone (indifferentemente singoli cittadini e responsabili di aziende o enti pubblici) che hanno o gestiscono un sito web  quando viene segnalata loro l’importanza della sicurezza. Leggi tutto “Ma chi vuoi che…”

DLL hijacking in azione

(articolo aggiornato dopo la prima pubblicazione)

Sono disponibili alcuni video che dimostrano il DLL hijacking in azione con alcuni programmi di Windows:

Il primo filmato mostra una copia di XP SP3 con MSIE 8 e Flash 10.1.82.76 in cui viene copiato sul desktop un file DLL modificato ad arte e vine avviato Internet Explorer che accede ad una pagina che attiva Flash (non importa quale pagina sia). Il file DLL provoca la chiusura di Explorer e l’avvio di un programma scelto da chi ha creato il file DLL modificato, in questo caso la calcolatrice di Windows.

Gli altri filmati mostrano il medesimo problema di altri file eseguibili.

Avevo parlato del problema del DLL hijacking qualche giorno fa, questo video mostra nei fatti quanto sia facile e fattibile sfruttare questo tipo di vulnerabilità. (via Bugtraq)

DLL hijacking

Ultimamente si parla molto di problemi di DLL hijacking (letteralmente: dirottamento delle DLL), sebbene non sia certo un problema nuovo. La fama degli ultimi giorni è causata da uno strumento in grado di analizzare i programmi per scoprire se siano attaccabili attraverso il DLL hijacking. Ma andiamo con ordine per cercare di capire come funzioni il tutto.

Leggi tutto “DLL hijacking”