Posts Tagged: friendfeed


12
Jan 11

Greasemonkey e localStorage

Tentando di scrivere una nuova e più completa versione dello script FFHideByKeyword mi sono scontrato con un subdolo e fastidioso bug di Greasemokey, il famoso script engine per Firefox che permette di modificare il comportamento ed il layout di una pagina HTML. Il bug in questione è legato all’utilizzo del localStorage, una tecnologia introdotta con HTML5 alternativa ai vecchi cookie, tecnologia che uso per archiviare le parole chiave indesiderate scelte dall’utente. La tecnologia è supportata dai maggiori browser [è possibile fare un test a questo indirizzo: HTML5 test], fornisce delle API chiare e facili da usare, e mi è quindi sembrato un peccato non sfruttarla.
Ma veniamo al bug. La parte subdola sta nel fatto che non tutte le API sono disponibili, e quella che manca è la proprietà window.localStorage.length, che riporta il numero di coppie chiave/valore presenti nello storage. La proprietà è molto importante, perché in assenza di iteratori conoscere questo valore è l’unico modo pulito per accedere agli elementi, con un classico ciclo for:

1
2
3
4
for (var i = 0; i < window.localStorage.length; i++) {
   k = window.localStorage.key(i);
   myFunction(window.localStorage.getItem(k));
}

Ho usato il termine pulito perché in effetti è si possibile usare un metodo alternativo, ma sinceramente lo trovo brutto e per nulla ottimizzato. Il seguente ciclo potrebbe funzionare, ma non l’ho testato:

1
2
3
4
5
6
7
8
var i = 0;
if (window.localStorage.key(i) != null) {
   do {
      k = window.localStorage.key(i);
      myFunction(window.localStorage.getItem(k));
      i++;
   } while (window.localStorage.key(i) != null);
}

Il bug è facilmente verificabile.
Il seguente codice HTML è funzionante:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
</head>
<body>
<div id="out"></div>
<script language="Javascript">
   var out = document.getElementById("out");
   window.localStorage.setItem("test", "test");
   out.innerHTML += "Getting data: " + window.localStorage.getItem("test") + "<br />";
   window.localStorage.setItem("test1", "test1");
   out.innerHTML += "Total count: " + window.localStorage.length;
</script>
</body>
</html>

mentre il seguente userscript no:

1
2
3
4
5
6
7
8
9
10
11
12
13
// ==UserScript==
// @name           Length Test
// @namespace      me
// @description    A test for localStorage.length
// @include        http://www.google.it/
// ==/UserScript==


var out = document.getElementById("ghead");
window.localStorage.setItem("test", "test");
out.innerHTML += "Getting data: " + window.localStorage.getItem("test") + "<br />";
window.localStorage.setItem("test1", "test1");
out.innerHTML += "Total count: " + window.localStorage.length;

Qui c’è la segnalazione, direi scarsamente considerata, e qui il thread nel Google Group relativo. In attesa di un bugfix, lo sviluppo dello script è interrotto.

Technorati Tags: ,


4
Oct 10

FFHound(roid)! e f2p, il layout della home

La scorsa settimana è stata rilasciata la prima versione di FFHound! per Android, la nota applicazione per l’utilizzo di Friendfeed in mobilità. Dopo qualche giorno di test posso dire questa è LA applicazione per Friendfeed: grafica curata, ottime funzionalità, buona usabilità; e visto che ci tengo, provo ad esporre qualche piccolo cambiamento che apporterei al layout. Prendo come paragone f2p, il servizio mobile favorito fino ad ora.

ffhound, Homef2p, Home

Le due immagini mostrano come si presenta la Home nelle rispettive app.
Io rivedrei sia la dimensione dell’avatar, possibilmente con una opzione che mi permetta di poterlo non visualizzare, sia il posizionamento di alcuni elementi: ad esempio i like sotto l’avatar, e il timestamp in formato HH:MM a fianco del nick; mi piacerebbe inoltre avere una opzione che mi permetta di vedere una preview dei commenti, senza dover aprire il thread: fino a tre commenti, li mostrerei per intero, mentre sopra i tre mostrerei la sequenza primoCommento-> X more comments -> ultimoCommento. L’utilità di questa funzione è quella di avere un riscontro immediato della presenza di nuovi commenti ad un thread in seguito ad un refresh della Home. Poi, l’indicatore che porta alla visualizzazione del thread. Mi viene d’istinto di strisciare il dito verso la direzione indicata [stiamo parlando di dispositivi touch], e non a fare tap sull’icona. E’ forse inutile, ché a livello visivo il thread è già ben delineato e quindi basterebbe un tap sul post per accedervi. Ultimo, vorrei la possibilità di poter aggiungere un commento ad un thread senza doverlo aprire.

“Pignolerie” a parte, l’app è veramente ben fatta e vale di sicuro l’acquisto.


23
Sep 10

#hidebykeyword, la gestione delle keywords

Una breve spiegazione sulla gestione attuale delle keywords.
Per aggiungere una keyword all’elenco di quelle che si vuole nascondere bisogna inserirla nell’apposto campo e premere Hide. Se non c’è il match tra la kw e i post, questa rimane visualizzata nel campo di inserimento, viceversa i post spariscono e la kw appare sotto al campo di inserimento assieme al relativo conteggio. Premendo Unhide i post relativi vengono mostrati, e la kw viene rimossa dall’elenco: a meno di agire dalle impostazioni del browser, questo è l’unico modo per eliminare una kw dalla lista. Ciò significa che le kw sono persistenti. Se non è stato fatto Unhide, ma la kw e il suo conteggio “spariscono”, vuole dire che la timeline attualmente mostrata non contiene più i post incriminati, “passati più in basso” per fare spazio a quelli nuovi. Ma la kw in questione è ancora attiva, e se ad un successivo refresh [o ricezione di nuovi dati] viene rilevata una corrispondenza la kw torna a fare il suo lavoro di pulizia.
Tutto questo, ovviamente, a meno di bug nello script.
In Chrome è possibile visualizzare ed editare l’elenco delle proprie kw tramite -> Strumenti -> Strumenti per sviluppatori -> Storage -> Local storage. La prossima versione dello script consentirà una gestione più flessibile delle kw tramite un mini pannello di controllo a scomparsa.

Technorati Tags: ,


9
Jul 10

FFcity

Ho la mia casetta nella prima periferia di FFcity, e devo ammettere che ci si sta proprio bene, qui. Lontano dal traffico del centro, dagli ingorghi, dal casino. Vedo gente, ogni tanto mi sposto verso il centro della città per qualche evento, ma poi torno qui, nella calma, con i miei amici. Qui c’è calma e tranquillità, e non c’è nemmeno bisogno di chiudere la porta a chiave. Si sta bene, nella periferia di FFcity.


28
May 10

#hidebykeyword v0.7.2.1

“Piccolo” bugfix che dovrebbe far contenti gli utenti Firefox, sembra che lo script sia ora completamente funzionante, risolvendo il problema dei post che non venivano nascosti a fronte di una keyword già presente nello storico, visibile o meno nell’elenco. Ho capito che la gestione delle keyword è un argomento piuttosto sentito, quindi la prossima release sarà dedicata proprio a questo. Allo stato attuale, le keyword vengono registrate nel localStorage, e ci rimangono anche se nessun post le contiene, a meno che non si faccia click su Unhide, nel quel caso vengono eliminate. L’intenzione è di realizzare un’area nascosta per default, che viene mostrata cliccando su “qualcosa” [da definire], e che contiene le keyword archiviate, area nella quale sarà possibile aggiungere/togliere keywords indipendentemente da quelle che vengono già mostrare nella UI attuale. Mi sembra un buon modo per gestirle, ma sono ovviamente ben contento di sentire eventuali altre opinioni. In relazione a questo, volevo ricordare che la pagina dello script su Userscripts.org presenta due utili tab, “Discussions” e “Issues” [vabbè, c'è pure "Fans", ma mi pare eccessivo], che potrebbero [dovrebbero, eh] essere usate per contenere suggerimenti e discussioni circa lo script.

As usual, lo script, su GitHub e Userscripts.

Alla prox

Technorati Tags: , ,