Categoria: Programmazione

  • Generatore di password via command line

    Ogni tanto serve generare un po’ di password casuali, questo è un metodo rapido e, si spera, efficace.

    Tutto quello che serve è un *NIX e un /dev/urandom con una ragionevole entropia, magari aiutato da un software come haveged.

    Questa è l’invocazione per richiamare 1024 byte di password casuali (deve essere scritta su una riga sola, vado a capo per praticità):

    strings /dev/urandom |
    tr -c -d '\!-~' |
    dd bs=1 count=1k 2>/dev/null |
    sed -r 's/(.{12})/\1\n/g' ;
    echo

    Quello che fa questa command line è prendere da /dev/urandom solamente i gruppi di byte che corrispondono a caratteri stampabili (prima riga), filtrarli secondo un range ASCII (seconda riga), fermarsi a 1024 caratteri (terza riga), visualizzarli su righe di 12 caratteri l’una (quarta riga) e andare a capo dopo l’ultima password (ultima riga).

    Il range sulla seconda riga è uno dei più ampi possibile nel set ASCII stampabile perché lascia fuori solamente lo spazio e può essere modificato a piacere, ad esempio se si vogliono solamente lettere minuscole e numeri la seconda riga diventa

    tr -c -d 'a-z0-9' |

    Sulla quarta riga si può variare il numero 12 per avere password di lunghezze differenti o sostituire \n con \t per avere le password incolonnate separate da tab.

  • Jurassic news, Back to the 80′

    Issue_46.jpg

    Era una sera dove, come spesso avrei dovuto fare un sacco di cose, ma altrettantemente non avevo voglia di fare un bel niente. Mentre vagavo astrattamente su alcuni siti, non so come e non so perché mi si è materializzata una immagine di una vecchio computer di cui ricordavo con precisione il nome e l’aspetto, e che ai suoi tempi, non ero mai riuscito ne a toccare ne a vedere dal vivo. E’ rimasto per sempre una specie di chimera. Tale computer si chiamava New Brain ed aveva un display VFD alfanumerico con un paio di righe per una manciata di caratteri e una piccola tastiera.

    Ho quindi concentrato le mie forze al fine di trovare un po’ di informazioni su quel computer, per vedere quale sia stata la sua sorte e quali erano le sue caratteristiche.
    Googla… Googla… ed arrivo ad un sito che mi attira particolarmente, lo studio meglio e non riesco più a staccarmi. Il sito in questione si chiama Jurassic News e come tanti altri siti è orientato al retrocomputing, con però una marcia in più.

    Il sito gestito da un gruppo di appassionati di lunga data, che grazie alla loro esperienza e passione cercano di mantenere attivo un patrimonio che è in via di estinzione
    attraverso delle ben fatte fanzine gratuite che ad ogni numero tratta in modo dettagliato una serie di dispositivi che vanno dalle prime schede di sviluppo con microprocessori tipo Z80, 6502, 6800, ai veri e propri computer sia piccoli HP41C che più grandicelli CRAY.

    Una delle cose che più mi ha colpito è la precisione e il dettaglio tecnico con cui vengono presentati i dispositivi. E’ evidente che chi scrive gli articoli sa bene di cosa si sta parlando.

    Inoltre vengono trattati corsi di linguaggi di programmazione estinti, curiosità ed aneddoti vari, vengono presentate le più diffuse testate dell’epoca, interviste a personaggi che diedero il loro contributo in quegli anni e molte altre cose ancora tutte succulente e curiose.

    Leggendole si viene letteralmente proiettati in periodi i quali per me, come per molti di voi, sono stati tra i più belli dell’incalzare del mondo dei computer.

    Questa estate mi sono farcito il mio tablet di tutti i numeri e mi sono fatto una full immersion avendo proprio l’impressione in alcuni momenti di essere tornato indietro nel tempo. Il sito offre anche un interessante archivio di riviste dell’epoca oramai estinte.
    Per certi versi è stato per me come aver trovato una macchina del tempo.
    Consiglio a tutti quelli che come me quando avevano 16 o 17 anni passavano i pomeriggi alla GBC smanettando sui PET e sui VIC20, diventando a lungo andare promotori involontari (e non stipendiati) della GBC.

    Buona immersione su JURASSIC NEWS

  • Introducing Roll It, a Chrome Experiment

    http://www.youtube.com/watch?v=_4RFIcuuHBE

  • Movies {as code}

    moviesascodeMovies {as code} è un sito creato da Ben Howdle con una raccolta di film e telefilm raccontati attraverso vari linguaggi di programmazione.

    Il concetto di “linguaggio” è molto elastico perché si va da C al CSS.

    Ci sono delle idee veramente geniali, ne riporto di seguito alcune, ma il sito merita davvero una visita.

    Il sito permette, ovviamente, di proporre delle proprie versioni dei film.

    public final class EpisodeVI {
      public static Movie theJedi;
      public Movie starWars() {
        return theJedi;
      }
    }

     

    .titanic {
        float: none;
    }

     

    var name = ["James","Bond"]
    alert(name[1]+', '+name[0]+' '+name[1])

     

    man tail

    (altro…)

  • I/O 2013

    Per chi si fosse perso l’evento, questa settimana dal 15 al 17 si è tenuta l’edizione 2013 del Google I/O.
    Si tratta della conferenza denominata appunto “Innovation in the Open”, dedicata agli sviluppatori interessati alle tecnologie di Google e Android.

    Un po’ come le presentazioni dei prodotti Apple, la I/O è una conferenza sempre piuttosto interessante per gli argomenti discussi. A volte presenta buchi nell’acqua clamorosi – come il quasi defunto Google Wave, appunto presentato qui nel 2009 – ma è sempre un importante forum di discussione nel campo della tecnologia IT a cui vale la pena prestare attenzione.

    Per chi non si fosse interessato alla conferenza in diretta, segnalo qui di seguito qualche link utile.
    La pagina ufficiale dell’evento è https://developers.google.com/events/io/ mentre TechRadar ci presenta un esaustivo post riassuntivo sulle novità, con link a dettagli per ogni argomento.
    Qui di seguito incorporo il video del keynote di apertura.

  • SimplePie

    SimplePieGoogle ha annunciato la chiusura di Google Reader, il servizio di lettura online di feed RSS.

    Costruire un proprio lettore di feed RSS con un linguaggio per il web non è un’impresa titanica e potrebbe anche essere l’occasione per approfondire la conoscenza di un linguaggio.

    Noi che siamo geek e programmatori quando ci serve una procedura la scriviamo, non ci lamentiamo perché non esiste.

    Se si protegge la procedura con una password di accesso e, magari, dietro un server https (con un certificato auto-emesso o con quelli che si comperano a 10 dollari l’anno), si ottiene un po’ più di tutela della privacy rispetto ad un servizio online. Senza contare che non si dipende più dai tagli dei costi di chi offre il servizio.

    Volendo fare un reader in PHP e SQL (ma il SQL non è obbligatorio, se non lo si conosce potrebbe bastare un file di testo salvato sul file system e caricato in un array), si può immaginare una struttura testata-dettaglio a tre livelli (categoria, feed, articolo).

    L’acquisizione dei dati da un feed RSS è la parte più pallosa, quindi meglio delegarla ad una libreria già fatta, come l’ottima SimplePie, che si smazza tutta la burocrazia del caso e gestisce anche una cache locale per ottimizzare i tempi di download.

    (altro…)

  • Poi non date la colpa al malware

    Spesso 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.

    (altro…)
  • Programmare è un’arte?

    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.

    (altro…)
  • Metadati

    I metadati sono le informazioni che descrivono un insieme di dati.

    Detta così, è una definizione che crea più dubbi di quanti non ne risolva. Prendiamo ad esempio una lettera scritta con un elaboratore di testi. Il contenuto e la formattazione della lettera sono l’insieme di dati, il nome del file, la data e ora di creazione e di ultimo aggiornamento sono i metadati.

    Nell’informatica per anni i metadati sono stati largamente ignorati, sia perché i programmi non li gestivano sia perché non si sentiva la necessità di utilizzarli.

    Quando la mole di documenti informatici è iniziata a diventare cospicua (vuoi per l’accumularsi dello storico, vuoi per l’uso preponderante del computer) è diventata sempre più pressante la necessità di catalogare i documenti elettronici in un modo tale da rendere semplice reperire un’informazione specifica.

    (altro…)

  • MySQL: dimensioni delle tabelle e degli indici

    Una semplice query per tenere d’occhio la situazione delle tabelle e degli indici di MySQL.

    SELECT CONCAT(table_schema, '.', table_name) db_table,
    CONCAT(ROUND(table_rows/1000000, 2), 'M') rows,
    CONCAT(ROUND((data_length+index_length)/(1024*1024), 1), 'M') size,
    CONCAT(ROUND(data_length/(1024*1024), 1), 'M') data,
    CONCAT(ROUND(index_length/(1024*1024), 1), 'M') indx,
    ROUND(index_length/data_length, 2) ratio
    FROM information_schema.TABLES
    ORDER BY data_length + index_length DESC;

    (via Boris Huisgen)

  • Verifica dei certificati SSL

    Uno studio ha dimostrato che non è una bella idea verificare i certificati con chiamate alle librerie, ma è meglio delegare il compito a chi lo sa far bene, come il browser.

    Il problema risiede nel modo in cui vengono utilizzate le API delle librerie, non si tratta, quindi, di una vulnerabilità intrinseca delle librerie medesime.

    Secondo lo studio citato, le diverse API SSL espongono funzioni di basso livello e non offrono la possibilità di chiamare una serie di funzioni cappello con pochi e chiari parametri che permettono di effettuare la verifica di un certificato in maniera affidabile. Spesso i programmatori, vuoi per leggerezza, vuoi per poca informazione, interpretano male la documentazione delle funzioni e finiscono per commettere errori che espongono gli applicativi a vulnerabilità serie.

    Un’ipotesi formulata dalla pubblicazione è che in almeno un caso, quello dell’applicazione Android di Chase Bank, la vulnerabilità introdotta a livello applicativo sia il retaggio di un codice di test che bypassa la verifica del certificato rimasto per errore anche nel codice finale. (via Bruce Schneier)

  • Un linguaggio senza ‘if’

    Vanno bene i concetti di no frills e low cost, ma ci dovrebbero essere dei limiti ragionevoli.

    Questa mattina ho rinnovato un account di mail che devo avere per rispetto della legge e che acquisto dal fornitore che fa il minor prezzo. Insomma: la mailbox PEC per la mia società.

    Una volta confermati i dati anagrafici e selezionata l’offerta desiderata (3 anni per la PEC meno cara) mi si è presentata davanti una videata di cui riproduco a fianco un pezzo.

    Sfido qualsiasi programmatore a riuscire a far passare un software con un output simile senza essere, giustamente, coperto di insulti.