domenica 28 giugno 2009

Linpus motorizzato Moblin 2

Nuova veste e nuovo motore per Linpus, la distribuzione linux in dotazione agli Aspire One.
La nuova versione è basata su Moblin v2, una piattaforma linux fatta da Intel ed ottimizzata per netbook basati su processori Atom.
Punto di forza della nuova versione sono i miglioramenti di performance e il tempo di boot (15 secondi) che dovrebbe essere migliorato del 26% (stando a quanto affermato dai produttori di Linpus).
Altro punto è sicuramente l'interfaccia utente nuova ed accattivante ripresa direttamente da moblin, con il suo live desktop capace di reperire informazioni ed applicazioni direttamente dal web.

Sicuramente da provare!


lunedì 22 giugno 2009

JavaScript: Array Remove

Lavodando di recente con gli array javascript, ho notato che Array non hanno il metodo remove per rimuovere un elemanto in esso contenuto.

E' possibile estendere il tipo Array aggiungendo il metodo remove con il seguente codice:

<script type='text/javascript'>

Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = (from < 0 ? this.length + from : from);
return this.push.apply(this, rest);
};

</script>

Ecco alcuni esempi di utilizzo:
// Rimuove il secondo elemento dall'array
array.remove(1);
// Rimuove il penultimo elemento dall'array
array.remove(-2);
// Rimuove il secondo e il terzo elemento dall'array
array.remove(1,2);
// Rimuove il penultimo e ultimo elemento dall'array
array.remove(-2,-1);

Riporto di seguito il link al post originale: JavaScript Array Remove di John Resig (JavaScript Evangelist for the Mozilla Corporation)

giovedì 11 giugno 2009

Blogger: ordinare gli "Articoli Correlati" presenti nei post

In un articolo precedente avevamo visto come inserire gli articoli correlati in fondo ad ogni post.
Oggi vediamo come fare in modo che gli articoli correlati vengano visualizzati in ordine alfabetico così da facilitare la lettura da parte dell'utente ed aumentare l'efficacia di questa funzionalità.
Gli step da seguire sono semplici:

  • Nella porzione di codice javascript inserita nella intestazione del blog, bisogna aggiungere due nuove funzioni e modificare la funzione printRelatedLabels(). Le modifiche sono evidenziate in rosso.
    <script type='text/javascript'>
    //<![CDATA[

    Array.prototype.remove = function(from, to) {
    var rest = this.slice((to || from) + 1 || this.length);
    this.length = (from < 0 ? this.length + from : from);
    return this.push.apply(this, rest);
    };

    function sortResult() {
    var tmp = new Array(0);
    var tmp2 = new Array(0);
    var nItems = relatedTitles.length;
    var minItem;
    var minItemIdx;

    for(var j = 0; j < nItems; j++) {
    minItemIdx = 0;
    minItem = relatedTitles[minItemIdx];
    for(var i = 1; i < relatedTitles.length; i++) {
    if(minItem > relatedTitles[i]) {
    minItemIdx = i;
    minItem = relatedTitles[minItemIdx];
    }
    }
    tmp.length += 1;
    tmp[tmp.length - 1] = relatedUrls[minItemIdx];
    tmp2.length += 1;
    tmp2[tmp2.length - 1] = relatedTitles[minItemIdx];
    relatedUrls.remove( minItemIdx );
    relatedTitles.remove( minItemIdx );
    }

    relatedTitles = tmp2;
    relatedUrls = tmp;
    }


    var relatedTitles = new Array();
    var relatedTitlesNum = 0;
    var relatedUrls = new Array();
    function related_results_labels(json) {
    for (var i = 0; i < json.feed.entry.length; i++) {
    var entry = json.feed.entry[i];
    relatedTitles[relatedTitlesNum] = entry.title.$t;
    for (var k = 0; k < entry.link.length; k++) {
    if (entry.link[k].rel == 'alternate') {
    relatedUrls[relatedTitlesNum] = entry.link[k].href;
    relatedTitlesNum++;
    break;
    }
    }
    }
    }

    function removeRelatedDuplicates() {
    var tmp = new Array(0);
    var tmp2 = new Array(0);
    for(var i = 0; i < relatedUrls.length; i++) {
    if(!contains(tmp, relatedUrls[i])) {
    tmp.length += 1;
    tmp[tmp.length - 1] = relatedUrls[i];
    tmp2.length += 1;
    tmp2[tmp2.length - 1] = relatedTitles[i];
    }
    }
    relatedTitles = tmp2;
    relatedUrls = tmp;
    }

    function contains(a, e) {
    for(var j = 0; j < a.length; j++) if (a[j]==e) return true;
    return false;
    }

    function printRelatedLabels() {
    //var r = Math.floor((relatedTitles.length - 1) * Math.random());
    var r = 0;

    var i = 0;
    document.write('<ul>');
    while (i < relatedTitles.length && i < 20) {
    document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a></li>');
    if (r < relatedTitles.length - 1) {
    r++;
    } else {
    r = 0;
    }
    i++;
    }
    document.write('</ul>');
    }
    //]]>
    </script>
  • poi bisogna modificare la porzione di codice aggiunta la volta scorsa :
    <div><span class='post-related-articles'>
    <b:if cond='data:blog.pageType == &quot;item&quot;'>
    <div class='similiar'>
    <div class='widget-content'><br/>
    <h3 style='color:#FF9900;'>Articoli correlati</h3>
    <div id='data2007'/>
    <script type='text/javascript'>
    removeRelatedDuplicates();
    sortResult();
    printRelatedLabels();
    </script>
    </div>
    </div>
    </b:if>
    </span> </div>
  • salvete il nuovo modello
L'elenco degli articoli correlati è in ordine alfabetico.

mercoledì 3 giugno 2009

NTFS - montare un disco esterno in read-write mode - UPDATE

Qualche settimana fà, abbiamo visto come montare in automatico un file system NTFS in modalità Read-Write su un AspireOne configurando il file FSTAB.
Ieri, ho avuto una brutta sorpresa. Collegando il mio disco esterno ho ricevuto un errore (abbastanza generico del tipo Errore, impossibile montare DATA). Insomma, smanettando un pò ho capito che il problema era dovuto all'ultima sessione di lavoro in cui non era stato smontato correttamente il disco, il quale risultava ancora utilizzato. Fra le altre cose ho provato a collegarlo anche ad un pc windows, questo riconosceva il disco e mi dava la possibilità di vedere i dati, ma andando a fare la "Rimozione sicura dell'hardware", per scollegarlo, dava un'errore.
Comunque la soluzione è semplice, basta aggiungere una opzione al file FSTAB.
Quindi cambiate la riga che abbiamo aggiunto la volta scorsa con questa:
/dev/sdb1 /media/DATA ntfs-3g silent,force,users,umask=0,locale=it_IT.UTF-8 0 0
In ogni modo è sempre possibile montare il disco manualmente per sbloccarlo:
mount -t ntfs-3g /dev/sdb1 /media/DATA -o force

lunedì 1 giugno 2009

Blogger: Rimuovere il Blogger Banner (o barra di navigazione)


I blog creati con Blogger hanno una NavBar che consente di contrassegnare, cercare e visualizzare altri blog. Comunque è possibile nascondere questa barra aggiungendo pochissimo codice:


  • fare il log in a Bloger
  • andare alla sezione Layout -> Modifica HTML qui sarà possibile vedere e modificare l'HTML del blog
  • è consigliato fare un backup del modello completo
  • copiare il codice evidenziato in rosso dopo l'intestazione del template
    ...
    <b:skin><![CDATA[/*
    -----------------------------------------------
    Blogger Template Style
    Name: Rounders
    Designer: Douglas Bowman
    URL: www.stopdesign.com
    Date: 27 Feb 2004
    Updated by: Blogger Team
    ----------------------------------------------- */

    #navbar-iframe {
    display: none !important;
    }

    /* Variable definitions
    ====================
    <Variable name="mainBgColor" description="Main Background Color"
    type="color" default="#fff" value="#ffffff">
    <Variable name="mainTextColor" description="Text Color" type="color"
    default="#333" value="#333333">
    ...

  • rimuovere il codice per rivedere di nuovo la navbar