Categoria: Programmazione

  • Tetяis in 140 caratteri

            function(a,b,c,d,e){return d+=c,
            e=a|b<<d,d<0|a&b<<d&&(a=e=
            parseInt((a|b<<c).toString(d=32)
            .replace(/v/,""),d),b=new Date%2?1:3),
            [a,b,d,e]}

    Questa funzione JavaScript di 140 caratteri scritta da Martin Kleppe è un piccolo Tetris giocabile.

    Il codice è disponibile in versione commentata per poter capire cosa c’è dietro quei 140 byte.

    Questo progetto fa parte di 140byt.es, un sito che promuove la creazione di frammenti JavaScript funzionanti che possono stare in un twit. (via Slashdot)

  • code.NASA

    La NASA ha lanciato il progetto Code.

    Il progetto serve da punto di riferimento per tutte le iniziative open source della NASA. Oltre ai progetti attualmente in corso, sono disponibili le linee guida per creare altri progetti open.

    Lo scopo finale del progetto, di cui sono previste varie fasi, è di avere una robusta piattaforma aperta per nuovi progetti open hardware e software e per il passaggio alla formula open dei progetti attuali.

    L’ente spaziale americano si unisce, quindi, al coro di coloro i quali credono nella validità dei progetti aperti, in cui tutti quante le persone interessate offrono il loro contributo, anche se infinitesimo, per migliorare il progetto.

    Godspeed code.NASA!

  • L’applicazione web più brutta che abbia mai visto

    Questa mattina credo di aver visto l’applicazione web a pagamento più brutta degli ultimi anni.

    È sviluppata da una software house non piccola ed è pensata per la Pubblica Amministrazione (PA), di più non posso dire per ragioni professionali.

    È scritta in ASPX, ma il linguaggio non è la causa della pessima implementazione.

    Ad ogni discesa di menu (incluso il passaggio dal login al menu principale) si apre una nuova finestra del browser.

    Ogni menu ha uno stile grafico completamente differente. Alcune pagine sembrano fatte con un RAD o similare.

    I menu sembrano scritti da un programmatore COBOL o CICS.

    Se faccio copia/incolla di un URL applicativo dopo l’autenticazione senza aver fatto l’autenticazione, anziché essere ridiretto sulla pagina di login appare un errore ASPX con i dettagli di debug, inclusi i path dell’applicazione.

    Le stampe sono in RTF e vengono richiamate (con apertura in una nuova finestra, ovviamente) passando nell’URL il path completo del file system locale del template utilizzato. Se metto al posto del path del template il path di C:\WINDOWS\NOTEPAD.EXE , mi viene inviato l’eseguibile del Notepad con qualche modifica, probabilmente fatta dal sistema di stampa che ha tentato di interpretare un eseguibile come un template.

    Mi fermo qui per rispetto verso i lettori.

  • AccaTiEmmeElle quanto?

    Una notizia che ha recentemente fatto scalpore anche sui media generalisti è quella che Adobe ha deciso di abbandonare lo sviluppo della versione per dispositivi mobili di Flash player.
    Non è una novità che questo componente software sia quasi ubiquo sui sistemi desktop, ma fortemente avversato da due importanti attori nel campo mobile come Apple e Microsoft, mentre Google ha sempre fatto un vanto di poter lavorare a stretto contatto con Adobe e RIM aveva rilasciato dichiarazioni simili al lancio di del PlayBook, tanto che questo prodotto ha tra i suoi punti di forza proprio un perfetto supporto di Flash.

    Alcuni analisti hanno commentato che questa potrebbe essere la pietra tombale sopra Flash: eliminarlo dai dispositivi mobili potrebbe significare il primo passo verso la sua eliminazione tout court, prolungando semplicemente l’agonia per le versioni Windows, Linux e MacOS. (altro…)

  • Normalizzare i dati

    Sto scrivendo una procedura di gestione la cui base dati verrà convertita da una esistente scritta… in un qualche modo.

    Molto probabilmente la procedura esistente non è stata scritta da un programmatore (è un banale master/detail in Access creato con i wizard), lo si capisce dal fatto che i dati non sono normalizzati.

    Un esempio per tutti. Un campo deve contenere un dato che può assumere quattro valori: generale, locale, locale/generale, blank. Questi sono i valori che mi sono trovato nei campi attuali:

    Generale Locale Locale/Generale
    GEN LOC G/L
    GEN? LO LOC/GE
    G LOCPC L/G
    GE LOCO GEN/LOC
    LO0C
    LOCALE
    LOC.

    Finché il campo ha solamente un valore descrittivo, ogni variante, anche fantasiosa, di una codifica standard potrebbe essere ammessa, in quanto il campo stesso non deve subire nessuna elaborazione.

    Il problema si complica quando, a posteriori, vengono richieste elaborazioni, come contare i record che hanno come valore uno di quei tre gruppi. Se l’input non viene controllato e i dati non sono normalizzati, nell’archivio non avrò delle informazioni, ma solamente un’accozzaglia di valori mal gestiti.

  • La tecnologia condivisa si moltiplica

    Non è il testo di un Bacio Perugina per geek, ma un incontrovertibile dato di fatto che le leggi di alcuni Paesi tentano ancora di negare nel nome della difesa di presunti diritti industriali.

    Nintendo con il Wiimote e Microsoft con il Kinect sono due esempi di come gli smaettoni riescano ad utilizzare interfacce hardware/software in modi che l’ideatore non aveva lontanamente immaginato.

    Il tutto avviene in due fasi: la prima (quella che rasenta o viola la legalità in alcuni Paesi) consiste nel fare reverse engineering della tecnologia per comprenderne il funzionamento e  la seconda adatta la tecnologia di cui si è acquisita la padronanza per gli scopi più diversi. Il risultato è che la tecnologia in questione amplia il suo raggio d’azione e ne beneficiano più persone. Questo tema è trattato dal racconto disponibile gratuitamente I, Robot di Cory Doctorow.

    Poche settimane fa è stato scoperto il protocollo di Siri e poco tempo dopo plamoni ha scritto un proxy per utilizzare Siri non come vuole chi lo distribuisce, ma come desidera chi ha pagato per averne una copia legittima.

    In sostanza, questo software permette di fare in modo che Siri risponda a comandi prestabiliti di cui ciascuno può scrivere il codice di gestione.

    L’analogia con i computer dell’Enterprise e con altre storie fantascientifiche adesso è più calzante, in quanto Siri passa da interfaccia per i motori di ricerca (sto semplificando, ma non troppo) a vera interfaccia vocale che ubbidisce ai comandi che prevede chi ha approntato il proxy per Siri.

    Dustin Webber ha scritto una serie di routine che si interfacciano al proxy per Siri per chiedere lo stato della sicurezza della sua rete. Questo video vale più di mille parole per descrivere il risultato.

    [vimeo http://vimeo.com/32712939 w=480]

  • Space Ipsum

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam luctus volutpat tellus.

    In molti conoscono l’uso di questo testo come riempitivo. Esiste anche un sito che genera per voi il testo della lunghezza richiesta.

    Se non volete utilizzare il classico testo in latinorum, Space Ipsum è il sito che fa per voi.

    Al posto di parole latine assemblate a caso, Space Ipsum utilizza frasi tratte dai momenti storici del volo spaziale. (via BoingBoing)

  • TCPDF

    TCPDF è una libreria per PHP scritta dall’italiano Nicola Asuni per creare documenti PDF.

    Uno dei punti di forza di TCPDF, oltre alla sua incredibile versatilità, è che non richiede nessun software installato sul server: il file PDF viene creato tutto all’interno della libreria. Servono solamente le librerie GD se si vogliono fare operazioni di elaborazione sulle immagini, come il ridimensionamento.

    Un’altra comoda caratteristica è la possibilità di dare in pasto a TCPDF del testo con codici di formattazione HTML.

    È anche possibile includere nei documenti molti tipi di codici a barre monodimensionali e bidimensionali, incluso il QR Code.

    Tutti i metodi sono ampiamente documentati e sono disponibili moltissimi esempi con il codice sorgente commentato e il PDF risultante.

    Decisamente LA libreria per creare i PDF!

  • Dennis M. Ritchie (1941 – 2011)

    UNIX is very simple, it just needs a genius to understand its simplicity.

    First edition

    E’ probabile che molti “programmatori” non sappiano di chi si stia parlando, ma allo stesso tempo è più che probabile che abbiano avuto tra le mani la “bibbia” del linguaggio C, ossia “The C Programming Language” da molti chiamato il “K&R“. Ecco… la ‘R’ è proprio quella di Dennis M. Ritchie, considerato l’inventore del linguaggio e uno dei più attivi sviluppatori del sistema operativo UNIX.

    Il C, volenti o nolenti, ha segnato una svolta nella programmazione e lo stesso modello del C ha permesso poi lo sviluppo di ulteriori evoluzioni e linguaggi. L’ho imprato quando approdai su Unix, dopo aver imparato il Basic (ma era il Vic-20) e il Pascal (sul CP/M).
    Il libro forse ce l’ho ancora.

    Dopo Steve Jobs, ci lascia un’altra pietra miliare dell’informatica.
    printf(“Goodbye Dennis.\n”);

  • Trello

    Trello è un sito social per organizzare l’elenco delle cose da fare all’interno di gruppi di lavoro.

    La società che ha creato questo sito è la Fog Creek cofondata da Joel Spolsky, che è stato, tra le altre cose, program manager per Excel presso la Microsoft.

    Lo scopo del sito è anche quello di rimpiazzare bigliettini, muri di Post-It, lavagne riscrivibili, pareti magnetiche e altre amenità simili del mondo reale.

    Uno degli scopi di Trello è per il programmatore avere una lista chiara delle cose da fare e per il coordinatore avere la situazione sotto controllo su chi sta lavorando a cosa.

    Il tool è scritto da programmatori professionisti (anche) per programmatori, con tutte le features del caso e merita senza dubbio un’occhiata. (via Joel on Software)

  • RegEx live

    Non sono un grande fan delle espressioni regolari.

    Ogni tanto, però, servono e risolvono dei problemi. Per evitare mal di testa e debugging infiniti ho trovato un sito che permette di verificare in tempo reale le espressioni regolari.

    Oggi mi ha fatto veramente risparmiare un sacco di tempo. E di mal di testa.

  • BOM!

    Quei tre caratteri strani all’inizio dell’SMS sono il Byte Order Mark (BOM).

    Il BOM è obbligatoriamente la prima sequenza di byte di un file di testo e ha due scopi: indica il tipo di ordine di byte (endianness) e in quale delle varie forme di Unicode è codificato il file di testo.

    Purtroppo non tutti gli editor supportano il BOM o sono configurati per farlo.

    Se, poi, il file di testo viene trattato da programmi o piattaforme che non necessitano o non supportano il BOM, il risultato è quello che si vede nell’immagine.