Category: software

  • Ksplice: aggiornare il kernel di Ubuntu senza riavviare

    Segnalo che con Ksplice (ora Oracle) è possibile applicare gli aggiornamenti di sicurezza (in particolare quelli del kernel) senza dover riavviare. Un’opportunità davvero interessante per tutti i server che devono mantenere un certo uptime e che, di conseguenza, non possono essere riavviati facilmente. Il servizio è disponibile a pagamento per le versioni di Ubuntu server, mentre è gratuito per le versioni desktop. Ecco come installarlo:

    1. Richiedere una chiave di accesso che vi verrà recapitata via email
    2. Loggatevi come utente root, e create il file /etc/apt/sources.list.d/ksplice.list
    3. Incollate nel file le seguenti direttive che servono ad aggiungere le sorgenti dei pacchetti da installare:
      deb https://www.ksplice.com/apt oneiric ksplice 
      deb-src https://www.ksplice.com/apt oneiric ksplice
    4. Lanciate i seguenti comandi, che servono ad installare i pacchetti di Ksplice:
      apt-get install ca-certificates
      wget -N https://www.ksplice.com/apt/ksplice-archive.asc
      apt-key add ksplice-archive.asc
      apt-get update
      apt-get install uptrack
    5. Modificate il file /etc/uptrack/uptrack.conf impostando l’opzioneautoinstall al valore yes
    6. Lanciate il comando uptrack-upgrade -y

    Tutti gli updates di sicurezza  del kernel verranno quindi installati automaticamente, senza dover riavviare. Comodo, vero? Dal 2005 al 2008, Ksplice ha applicato con successo 64 patch senza dover riavviare.

    Per i più curiosi: come funziona Ksplice? Il segreto sta nel fatto che Ksplice aggiorna dinamicamente il kernel, direttamente in memoria, grazie ad un confronto sugli oggetti ELF allocati in memoria. Questo processo è di per sé rischioso e deve essere fatto con la massima attenzione: prima di fare un patch “a caldo” di un oggetto, viene freezata l’esecuzione del processo che accede a tale oggetto, sostituita la chiamata ai vecchi oggetti con la chiamata ai nuovi oggetti, e viene quindi ripresa l’esecuzione.

  • Summify: un riassunto personalizzato delle notizie a cui siamo interessati

    Grazie anche al fenomeno dei social media, stiamo sperimentando una rivoluzione dei contenuti: sempre più  il cosiddetto information overload è sempre più dietro l’angolo. Le fonti di informazione che utilizzo sono:

    Summify è un aggregatore di notizie simile a Flipboard, ma che si basa su un meccanismo sociale: le notizie che i nostri amici condividono sui social network. Il presupposto fondamentale è che sui nostri profili di Facebook, Twitter, LinkedIn aggiungiamo contatti che hanno i nostri medesimi interessi, e di conseguenza il flusso di notizie generato dai nostri contatti sarà personalizzato in base ai nostri interessi. Le notizie selezionate vengono poi incr

     

    ociate con le notizie più condivise (globalmente, su tutti i social network) per ordinarle in base alla popolarità.

    Mentre con Flipboard le notizie sono in formato pull (l’utente deve accedere all’app per leggere le notizie), Summify gestisce le notizie in formato push: all’ora specificata il servizio vi invierà una mail contenente gli articoli selezionati per voi (oppure aggiornerà il feed RSS corrispondente).

    Summify è davvero un servizio interessante che permette di avere a colpo d’occhio la lista delle notizie più interessanti, personalizzate in base ai nostri interessi. Grazie a Flipboard, è un modo comodo e veloce per combattere l’information overload.

  • Ninite: installare (o aggiornare) velocemente tutti i programmi che vi servono (su Windows e Linux)

    Se siete alle prese con la desolante frustrazione di avere appena reinstallato il sistema operativo e non avere programmi per fare quello che vi serve, date un’occhiata a Ninite: con pochi click si selezionano i programmi che ci interessano e si scarica un file eseguibile che si occuperà di installare tutti i programmi che abbiamo selezionato, senza alcun intervento da parte nostra.

    ninite

    Il procedimento è analogo per aggiornare i programmi che avete già installato. E funziona anche con Linux!

  • Stampare da iPhone/iPad tramite AirPrint (su una stampante condivisa da Windows)

    Con le ultime release di iOS, Apple permette ai possessori di iPhone e di iPad di stampare qualsiasi documento utilizzando il dispositivo Apple e una stampante compatibile con le specifiche di AirPrint, senza l’ausilio di un computer. Per chi invece ha già una stampante condivisa da Windows, è possibile fare in modo che la stampante sia compatibile con AirPrint seguendo dei semplici passi:

    1. Installate iTunes;
    2. Scaricate AirPrint.zip e scompattatelo in C:\Programmi
    3. Avviare il servizio AirPrint tra i servizi di sistema:

      sc.exe create AirPrint binPath= “C:\Program Files\AirPrint\airprint.exe -s” depend= “Bonjour Service” start= auto
      sc.exe start AirPrint

    4. Stampare il documento (usate la stampante che si trova sulla stessa rete wireless del vostro iPad/iPhone)
  • iTunes: come ascoltare tutti i podcast senza interruzioni

    A differenza di quanto accade su iOS, iTunes (OSX) non esegue un ascolto continuo dei podcast disponibili: al termine del podcast che si sta ascoltando, bisogna manualmente fare il play del prossimo episodio. Questa limitazione si può risolvere creando una smart playlist con le seguenti caratteristiche:

    • Media kind: Podcast
    • Play count: 0

    itunes_podcast

    Il risultato è una playlist di tutti i podcast non ancora ascoltati che potremo ascoltare senza interruzioni. Ovviamente potete customizzare la lista ordinandola per data di pubblicazione, come ho fatto io nell’immagine.
  • gitignore: un filtro per escludere i file da non versionare in un repository git

    Prima di fare un push su un repository git è importante avere configurato il gitignore, ovvero specificare quali files non devono essere versionati in un repository git. A titolo di esempio: i file .pyc, o più in generale i prodotti della compilazione di un qualsiasi file di sorgente; versionare questi files, infatti, non ha senso.

    Per fare in modo che git eviti di versionare certi tipi di files, creiamo un file .gitignore dentro la nostra $HOME, ed  il gioco è fatto. Se volete partire da un esempio già realizzato, includo qui il mio gitignore.

    michele@delta:~ % cat ~/.gitignore
    # Compiled source #
    ###################
    *.com
    *.class
    *.dll
    *.exe
    *.o
    *.so

    # Packages #
    ############
    # it’s better to unpack these files and commit the raw source
    # git has its own built in compression methods
    *.7z
    *.dmg
    *.gz
    *.iso
    *.jar
    *.rar
    *.tar
    *.zip

    # Logs and databases #
    ######################
    *.log
    *.sql
    *.sqlite

    # OS generated files #
    ######################
    .DS_Store*
    ehthumbs.db
    Icon?
    Thumbs.db

  • VMware Fusion 4: aggiornate la compatibilità delle virtual machines

    Dopo aver aggiornato VMware Fusion alla versione 4, ricordatevi di aggiornare la compatibilità di tutte le vostre virtual machines alla versione 4 (Settings -> Compatibility -> 4). Dovrete reinstallare i VMware tools, ma vista la notevole velocità d’esecuzione che si guadagna, è caldamente consigliato l’aggiornamento.

  • Framework, Library, Toolkit: facciamo chiarezza

    Nella terminologia informatica si sente spesso parlare di framework, library (libreria) e toolkit: erroneamente, i concetti vengono confusi tra loro, generando una notevole confusione tra gli addetti ai lavori.

    Facciamo un po’ di chiarezza:

    rubyonrails

    • un framework: è una collezione di librerie che fornisce le “fondamenta” per lo sviluppo di un’applicazione. È un componente più complesso e comprensivo dei toolkit e delle librerie. Fornisce, infatti, un’architettura standard e incoraggia il programmatore a seguire un paradigma di sviluppo per le applicazioni. Tutto il control flow è già inserito nel framework: rispetto ad una libreria o a un toolkit, un framework utilizza l’inversione del controllo (IOC): il programmatore si deve occupare di inserire la logica in parti ben definite indicate dal framework (via subclass o inserendo classi ad hoc).

      Il framework si occuperà poi di chiamare il codice custom quando si verificheranno determinati eventi (Hollywood Principle: “Don’t call us, we’ll call you”). Questo limita la flessibilità e forza il programmatore a seguire il design pattern definito dal framework.

      Lo scopo di usare un framework è quindi quello di permettere al programmatore di concentrarsi solamente sulla risoluzione del problema, ricercando la massima velocità di sviluppo dell’applicazione.In definitiva, un programmatore deve soltanto effettuare un override di alcuni metodi in un framework e fornire il proprio codice; sarà poi cura del framework chiamare il codice custom scirtto dal programmatore. Alcuni esempi di framework: Django, Ruby on Rails.

    • ajaxuna library (libreria): è un set di funzioni, organizzate in classi e package, che il programmatore può chiamare e riusare. Ogni chiamata esegue del codice e il controllo ritorna al programma chiamante. Le librerie non impongono alcun design o politiche di chiamate, nè standard di sviluppo da seguire. Il programmatore sceglie e chiama esplicitamente quali metodi della libreria uitlizzare, avendo piena flessibilità nella scelta di quali parti di libreria usare. Un esempio: le librerie Ajax.
    • gwt

    • un toolkit: un toolkit è un kit di strumenti adatti a risolvere un set di problemi di un dominio specifico, e quindi può essere composto da più librerie. La differenza tra toolkit e librerie è davvero sottile: un toolkit, come le librerie, non contiene design e logica dell’applicazione, ma offre al chiamante alcune funzionalità da poter sfruttare. Un esempio: Google Web Toolkit (GWT) (che permette di sviluppare applicazioni JavaScript scrivendo del codice Java), e il toolkit Dojo.
  • Aprire il Finder nel path corrente (wd) dal Terminale

    Semplice ma utilissimo: se vi trovate nel terminale di OSX (o nella sua migliore alternativa), potete aprire un’istanza del Finder nella directory in cui vi trovate con il comando ‘open .’

    Questa funzionalità è molto utile specialmente su Lion, per quando dobbiamo avventurarci nelle directory Library/ e Application Support/

    osx open

    Della mia shell (zsh) e del relativo prompt (PS1) ne parleremo più avanti.

  • iftt (if-this-then-that): scatena un’azione al verificarsi di un evento, graficamente

    Ho scoperto un interessante servizio online: if-this-then-that (ifttt). Si tratta di un servizio che vi permette di definire una serie di regole basate su eventi (“se qualcuno tagga una mia foto su Facebook…“) che scatenano altre azioni (“… allora salva la foto su Dropbox“).

    Creare una regola è molto semplice: iftt vi guida graficamente selezionando le condizioni e gli eventi da scatenare. È importante autorizzare iftt ad accedere ai vari servizi (es. Google, Dropbox, Twitter, etc.): niente paura, iftt vi guiderà anche in questo!

    I servizi a disposizione sono molteplici (e vengono chiamati channels):

    Ifttt   Channels

    Inoltre è possibile definire una recipe, ovvero: quando create un task da eseguire, potete decidere di condividere la “ricetta” con gli altri utenti, partecipando alla classifica delle recipes più utilizzate.

    Ho creato 3 iftt recipes che ho condiviso con gli utenti del sito:

    Ifttt   mbologna s recipes

    Ecco invece i task (= recipes personalizzate con i vostri account) che ho abilitato:

    Ifttt   Tasks

    Infine: il servizio è in BETA, ma funziona molto bene. Non ho mai riscontrato errori durante l’utilizzo. La vera preoccupazione è che iftt ha potenzialmente accesso ad alcuni miei account; cosa succederebbe se qualcuno riuscisse ad ottenere un accesso a tutti gli account di iftt?