The Blog

Cpu al 100% e non trovate il motivo? Eccone uno

29 Apr 10

Premetto che parlo da profano e quello che scriverò in quest’articolo potrebbe essere errato però io ho risolto il mio problema nel modo che andrò scrivendo perciò voglio raccontarvelo.

Cominciamo con il dire che ho avuto non pochi problemi con la riproduzione di video in alta qualità. Infatti, video in 720p erano diventati off-limits per me. Iniziai a pensare che il problema fosse relativo alla scheda video, che per inciso ha subito un operazione di esportazione della sua ventola di raffreddamento, perciò come prima soluzione logica andai subito in uno store e comprai una ati qualsiasi ( Tanto per quello che ne devo fare io ).

Una volta tornato a casa e dopo aver montato la scheda rimasi sorpreso come nulla cambiò. Perciò dopo essermi masturbato la mente con qualche pippa mentale arrivai alla conclusione che forse il mio pc era infetto da qualche virus che oltre ad infettare rompesse le palle alla cpu.

La soluzione fù quella di scaricare avg free e far partire una scansione che ovviamente diede risultati ( in tempi epici ) deludenti: Nel senso che non trovai nulla  di particolarmente significativo.

Perciò, rassegnato e con la convinzione di aver bisogno di un bel upgrade hardware spesi circa 450euro di nuovo hardware ( Per la cronaca: intel i5 750 , Asus P7H55-M Pro , Corsair 3x2GB 1600Mhz ).

Ma nel frattempo il mio pc diventava sempre più lento e inutilizzabile perciò decisi di comprare una bombola di aria compressa per pulirlo un po’ da quella polvere che nel tempo si accumula inesorabilmente sulle ventole e i dissipatori dei nostri pc.

Torno a casa , lo pulisco, lo riaccendo ed ecco che si presenta la sorpresa…. Quasi subito mi accorgo della differenza di velocità. Ora non solo posso guardare i video in 720p . Ma posso guardarne 3 contemporaneamente senza rallentamento alcuno … perciò ecco la spiegazione che mi sono dato:

Considerato il fatto che la polvere aveva fatto delle mie ventole e dissipatori la sua nuova casa,  le vie resipiratorie della cpu erano praticamente inesistenti e portavano i due core a temperature veramente impraticabili; quest’innalzamento della temperatura della cpu probabilmente causava uno scaling forzato della frequenza di clock ( Effettuato automaticamente dall’hardware nel tentativo di ridurre la temperatura della cpu ) . Perciò il mio pc, operando su ben altre frequenze da quelle alle quali ero abituato , era divenuto lentissimo.

Conclusione:

Prima di comprare del nuovo hardware, date una pulita a quello che avete già . Potrebbe, incredibilmente, aumentare le prestazioni del vostro pc.

Come configurare Nginx davanti ad apache per ottimizzare e velocizzare il caricamento dei vostri siti web

07 Apr 10

Per prima cosa dovete aver già installato nginx e spostato apache su un altra porta/ip. Una volta fatta questa procedura bisognerà semplicemente configurare nginx in modo da istruirlo sul da-farsi.

Premetto che su quest’esempio che porterò ho spostato apache vero in localhost 127.0.0.1. Il mio obiettivo era quello di utilizzare nginx per servire tutte le immagini e apache per servire le richieste dinamiche in php o altro.

Perciò , facendo risiedere nginx e apache sulla stessa macchina, ho potuto evitare di utilizzare il modulo di caching di nginx ( dato che accederà direttamente ai files tramite il filesystem ).
[CODE]
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
large_client_header_buffers 4 8k;
client_header_buffer_size 4k;
keepalive_timeout 65;
#proxy_cache_path /tmp/nginx levels=1:2:2 keys_zone=cache:100m max_size=1024m;

server {
listen 123.123.123.123:80;
server_name www.example.com;
error_log /usr/local/nginx/logs/error_example.log;

location ~* ^.+.(jpg|jpeg|gif|png|ico|css|txt|js)$ {
root /var/www/example.com/web;
}
location / {
#proxy_cache cache;
#proxy_cache_valid any 1m;

if ($http_user_agent ~* .*(Android|2.0\ MMP|240×320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile|iPhone|iPod|KYOCERA/W$
rewrite ^(.*)$ http://m.example.com$1 permanent;
}
proxy_buffer_size 8k;
proxy_pass http://127.0.0.1:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}
}
}
[/CODE]

Come potete vedere la configurazione è abbastanza semplice. Una piccola nota: Le righe con il # sono dei commenti. Li ho volutamente lasciati perchè quelle direttive, qualora decommentate, abiliterebbero il caching dell’intero sito tramite il modulo di nginx.

Ho lasciato anche uno statement condizionale che verifica se la richiesta proviene da un browser mobile . In quel caso nginx effettua un redirect a m.example.com. Ho pensato di lasciarlo perchè a qualcuno potrebbe effettivamente servire una configurazione simile.

Tuttavia c’è un altro problema che ho dovuto risolvere. Infatti apache deve essere in grado di riconoscere l’ip del visitatore e non l’ip del proxy nginx. Il motivo ? Alcuni programmi come vbulletin fanno alcuni controlli di sicurezza sugli ip.

Questo problema l’ho risolto installando su apache un modulo chiamato rpaf che fa proprio al caso nostro. Ovviamente in questo howto non spiegherò come installarlo ma vi darò la mia configurazione corretta per nginx 🙂

[CODE]LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 123.123.123.123
RPAFheader X-Forwarded-For
[/CODE]

L’unica direttiva alla quale stare attenti è sicuramente RPAFproxy_ips dove dovete specificare tutti gli ip del vostro proxy nginx 🙂

I risultati

I risultati sono sbalorditivi, utilizzando Apache Benchmarking ( ab in console ) con 2000 richieste ( 100 concorrenti ) il numero di richieste al secondo completate raddoppia passando da 5000ca a 11000ca. Senza contare che il footprint di memoria utilizzato da nginx è veramente più basso.

Vale la pena provarlo 😉

Come Controllare se datePicker di jQuery è caricato

06 Apr 10

Penso sia più di una vita che non scrivo un articolo di programmazione.

Beh oggi, per lavoro, ho dovuto scrivere del codice javascript e per motivi che trascendono dallo scopo di quest’articolo ho dovuto , ad un certo punto della programmazione, controllare se datePicker era caricato.

Ci sono dei casi, infatti, che il javascript viene caricato da altri javascript e non sempre abbiamo la certezza ( Sopratutto cross-browser ) di sapere se il file js caricato progrmamaticamente è stato effettivamente “accettato” dal browser o meno.

Perciò mi son dovuto armare di pazienza e trovare un modo per vedere se datePicker era caricato o meno.

Per completezza, nel momento in cui scrivo, ho utilizzato il datepicker v2 che trovate a questa pagina.

Ebbene, il barbatrucco è contenuto nella seguente riga di codice:

[javascript]
function startX() {
if ( typeof jQuery().datePicker != ‘function’) {
setTimeout(‘startX()’, 200);
return;
}
// Altro codice da inserire in caso datePicker sia stato correttamente caricato

}
[/javascript]

Ebbene, non faccio altro che controllare ogni 200 ms se datePicker è stato correttamente caricato e in caso positivo eseguo il codice dopo l’if.

Simple Gps Info for Android

20 Mar 10

Simple Gps Info is a simple android application that would help you know and share your gps coordinates with your android smartphone. The code is really fast and efficient and the app consist on a simple to understand layout without any kind of menu.

Once started, Simple Gps info for Android will start automatically your android gps ( Even if it’s disabled by you ) and then it will start seeking for a gps-fix.

In the meanwhile you could also look at the radar that would rotate following  the north pole. You can try and see where is the north-pole by simply rotating your smartphone. Furthermore the radar will show you the satellites you’re smartphone is receiving.

When the Gps sensor get the fix you’ll start to see the coordinates changing and you’ll be able to share your location with your android phone.

In order to accomplish this task you’ve to push the bottom-placed button and then choose how to share it.

Right now Simple Gps info will support the following way to share the location:

  • Facebook
  • Twitter
  • Sms
  • Gmail
  • Others activity implementing text/plain content-type intent receiver.

Here are some screenshots of the first version. ( Now improved with better graphics )

If you’ve installed Barcode Scanner on your android phone you can scan this:

Il Vincitore di Xfactor preannunciato da Google

02 Dic 09

Come feci qualche anno fa per le elezioni italiane, mi ritrovo qualche ora prima dell’annuncio del vero vincitore di xfactor a fare una previsione sul candidato papabile.. come? E’ semplice: Uso google.

Come moltissimi di voi sapranno, google è il motore di ricerca più utilizzato al mondo. Questo permette a google di prevedere cose semplicemente analizzando il trend delle ricerche effettuate attraverso il suo box di ricerca.

Ebbene, nel momento in cui scrivo, 23.23 di mercoledi 2 dicembre, google fornisce questi dati:

xfactor-previsione-google

marco mengoni, yavanna, giuliano rassu

Il grafico sopra potrebbe apparire un pochino illeggibile . Partiamo con lo spiegare i colori:

  • marco mengoni
  • yavanna
  • giuliano rassu

Intuitivamente, per chi non sa leggere questo tipo di grafici, abbiamo sull’asse orizzontale il tempo e su quello verticale un numero indicativo che suggerisce il volume di ricerca su google per quella kw.

Detto questo è facile intuire che marco mengoni sia quello che desta più interesse su google.

Conclusioni

La mia previsione, basandomi sui dati di google, è ovviamente la vincita di marco mengoni. Basta aspettare qualche altro minuto per vedere se avevo ragione.

Come creare una richiesta di scambio link efficace

02 Ott 09

scambio-link

Esiste un modo, una forma, un modello per creare delle richieste di scambio link più efficace? La risposta è Si.

Premetto con il dire che non ho alcun test, ne alcuna statistica che supporti le mie teorie, però per esperienza personale alcune richieste che ricevo non le leggo nemmeno e altre invece le valuto con maggiore interesse e attenzione. Perchè?

Normalmente, infatti, le richieste di scambio link che mi arrivano assomigliano a qualcosa tipo:

Ciao,

mi piacerebbe scambiare un link con te.

Alcuni addirittura si dilungano con lo spiegarmi che fare queste procedure di scambio link mi faranno salire maggiormente nei motori di ricerca.. ( LOL 🙂 ).

Ebbene, queste richieste, un po’ piatte nel loro essere, le boicotto senza nemmeno andare a vedere il sito richiedente.

Esistono invece delle richieste meglio formate, delle richieste che leggo volentieri e che sono molto più propenso nell’accettare.

Pensieri e teorie assolutamente riconosciute ma che vanno riportate:

1. Fattore : scrivere il nome del sito o considerazioni di questo nel testo

Ho osservato, un po per caso, che le richieste che mi destavano maggiore interesse erano quelle che riportavano il mio nome o che scrivevano qualcosa che centrasse con il sito dove ricevevo la richiesta.

Infatti, inserire il mio nome o qualcosa che mi facesse capire che la richiesta non era automatizzata mi dava un impressione del tipo:

Cazzo, questa persona ha perso veramente del tempo sul mio sito e se mi scrive significa che le è piaciuto il contenuto

La differenza dalle richieste piatte e senza nome riportate ad inizio articolo e queste è proprio la percezione che ha il destinatario che si sente, in qualche modo, veramente preso in causa e capisce che il mittente è in qualche modo realmente interessato al proprio sito.

2. Fattore: Oggetto con il mio nome e nome del sito

Anche questo è un fattore riconosciuto nell’e-mail marketing. Scrivere il nome della persona da contattare ( se lo si conosce ) oppure il nome del sito internet nell’oggetto dell’e-mail aumenta positivamente non solo la risposta delle persone, ma anche porta molte più persone a compiere una determinata azione. ( in questo caso effettuare uno scambio link)

Una richiesta fatta bene.

Tenendo a mente quanto detto fin’ora vorrei analizzare il corpo di un e-mail che mi è arrivata di richiesta dove il soggetto conteneva il mio nome e il body delle-mail era circa questo:

Ciao, ho visto il tuo sito internet e lo trovo veramente interessante. Complimenti !

Volevo proporti uno scambio link con il mio sito. Nel frattempo ti ho già inserito nel mio sito a questa pagina : http://www……

Nell resto dell’articolo spezzo in parti il precedente messaggio e lo analizzo in alcuni dettagli:

Normalmente le richieste che si ricevono, essendo piatte, non inducono nessuna “sensazione” nel lettore; questa proposta, invece, è completamente differente e induce nel lettore, in questo caso io, una sensazione di debito . Il messaggio in questione può essere suddiviso in 3 parti diverse:

1. Parte smielosa ( ma che non fa mai male )

Ciao, ho visto il tuo sito e mi pare interessante.

Scrivendo questa semplicissima frase, peraltro comune per tutte le richieste di scambio link, si cerca di portare il proprio apprezzamento al destinatario che probabilmente gradirà maggiormente la parte restante del messaggio aumentando in questo modo le possibilità di scambio link 🙂

2. Il nocciolo della questione

Volevo proporti uno scambio link con il mio sito.

Questa parte della richiesta non credo necessiti ulteriori approfondimenti 🙂

3. Il vero trucco

Nel frattempo ti ho già inserito nel mio sito a questa pagina : http://www……

Questa frase è proprio una bomba atomica secondo me e vi voglio spiegare perchè:

Ormai il 90% dei proprietari di siti internet hanno un idea, più o meno vaga di come sia importante sviluppare la sfera off-page dei fattori seo. 9 volte su 10 quando richiederete uno scambio link il destinatario conoscerà già dei mezzi per comparare  l’importanza del vostro sito e quindi sarà in grado di capire se la vostra richiesta possa effettivamente portargli dei benefici.

Appurato che quando andiamo a scrivere una richiesta di scambio link ci troveremo di fronte qualcuno che sa di cosa parliamo e come comportarsi, la frase sopracitata è un barbatrucco per indurre queste persone a pensare che sono in debito con voi. Per fare questa piccola mossa astuta basta fare il primo passo e inserire il link del destinatario precedentemente all’invio della mail dando loro anche la possibilità di controllare l’effettivo inserimento (inserendo il link ).

Il destinatario, pensando di essere in debito con voi,  sarà maggiormente portato a contraccambiare il vostro link ( magari anche di pagerank/trustrank maggiore).

Conclusioni

Se dovete fare una campagna di scambio link, utilizzare dei mezzi automatici potrebbe non rendere quanto spendere del tempo per ogni sito target e creare una richiesta ad hoc per ogni sito web.

PS: Tutte le riflessioni e le considerazioni riportate in quest’articolo sono mie e non hanno base scientifica e/o statistica. Mi pareva giusto condividere con quei pochi che mi leggono le mie riflessioni! 🙂

Nuovo strumento Seo: Il link semi-reciproco


Alcuni giorni fa, forse settimane, ho ricevuto una richiesta di scambio link apparentemente corretta.

Il ragazzo che proponeva lo scambio link mi aveva addescato con una frase del tipo:

Ciao, ho visto il tuo sito e mi pare interessante.

Volevo proporti uno scambio link con il mio sito. Nel frattempo ti ho già inserito nel mio sito a questa pagina : http://www……

Secondo la mia visione della SEO un link reciproco non ha moltissimo senso negli ultimi tempi, però ho deciso di valutare lo stesso la richiesta e verificare  se effettivamente mi aveva inserito effettivamente nella pagina linkatami. ( e poi mi sono anche accorto perchè mi sono interessato particolarmente a questa richiesta).

Una volta entrato nel sito mi sono meravigliato del fatto che il link al mio sito effettivamente era presente ma qualcosa mi suonava strano così ho deciso di indagare a fondo sul sorgente della pagina se percaso il link aveva un bel rel=nofollow; purtroppo la mia sensazione ( un po diffidente ) era del tutto sbagliata..

Dopo alcuni minuti mi sono deciso a navigare il link senza il supporto al javascript ed ecco che l’arcano era svelato! nessun link presente nella pagina senza il supporto al js.

In questo modo , un utente un po’ meno attento, poteva essere indotto a pensare che il link fosse effettivamente presente nella pagina e quindi portato a “restituire il favore” inserendo quel bel sito in una blogroll “normale” . Il risultato? Era un link diretto al sito web.

Eh già.. nonostante google abbia affermato e confermato che riconosce un link generato in javascript (con particolari parametri), questo non era sicuramente uno di quei casi, dato che il link era estrapolato dai feed json della blogroll di delicious.

A questo punto, vi sarà chiaro il perchè del nome “Link semi reciproco” 🙂

Come mettere in piedi un sistema di link semi-reciproco?

Lungi da me darvi il codice javascript per creare questo barbatrucco. Vi basti sapere che il tutto può essere messo in piedi con una 20na di righe js/jquery e un file txt(se proprio si vogliono fare le cose fatte bene 🙂  ).

Una volta fatto il codice js che prende il contenuto del txt, vi basterà lanciare la vostra funzioncina js alla fine del caricamento della pagina. Meglio ancora se si utilizza la funzione .ready()  di jQuery .

Conclusioni:

Penso che questi trucchetti da strapazzo possano aiutare a far salire nelle serp un sito ( sopratutto se i siti scelti come “vittime” sono coerenti con il target del sito ) , ma sicuramente fanno perdere un botto di reputazione… Ne vale la pena? Può essere 🙂

Dopo tutta questa storia, c’è anche la componente marketing che però ho deciso di dividere in un secondo post disponibile qui:

http://www.andreabaccega.com/seo/come-creare-una-richiesta-di-scambio-link-efficace/

Google Analytics Bridge for Android developers

23 Ago 09

Google Analytics Bridge is a java library for android ( Soon to be Open Source licensed ) that will help developers understand what the user interaction with their own application.

Google Analytics Bridge is really easy to setup and it runs on a separate thread. This is do to the problem with the internet request sometime freezing the UI and setting off the hated message:

“The Application xyz is not responing”

With the two choises :

  1. Force Close
  2. Wait

Since The Google Analytics Bridge runs on a different thread to avoid this error.

First Setup

Download and import the jar file to the application you want use the Google Analytics Bridge on. The setup is a fast one-line command but you need the following information:

  • Google Analytics Tracking Code ( EX: “UA-123123123-1” )
  • The Domain Name

Set up a brand new Google Analytics Profile

you will need to set up a new Google Analytics Profile or use an existing one. You will need to open a new website profile on google analytics.

The procedure is fast and simple but it does require The domain name.

In that field you can specify whatever you want, but i suggest something like:

track.your-application-name.com

After creating the new profile, copy the UA-XXXXXX-Y code for a further usage.

The Constructor

Once you’ve done all of step one it’s time to create our constructor.

In the onCreate routine place the following code:

[JAVA]new AnalyticsBridge(this.getApplicationContext(),”UA-XXXXXX-Y”,”track.your-application-name.com”);[/JAVA]

You don’t need to create an AnalyticsBridge object , after this line you will call the methods in a static way.

NOTE: You should call the constructor once per application lifetime.

Public Methods

_trackPageview(String pageTitle)

If you’ve some experience integrating google analytics on your own website you’ll also remember what this method will do.

_trackPageview method on the web it’s used for logging a new page View by the user. Similarly calling this static method on android will generate a google analytics request that will log a new Activity View.

Lets say you’ve a lot of activity, and some of theese will show the same content but in a different way, then i would put the following code on each onCreate Subroutine:

[JAVA] /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

AnalyticsBridge._trackPageview(this.getClass().getName());

}[/JAVA]

This code will log each opened activity to google analytics.. Isn’t it easy? 🙂

_trackEvent(String category, String action)

_trackEvent method is the same used on the web google analytics apis. I made this bridge because you should want to track some event made by the user.

Let suppouse you want to track a button click event on your user interface – this could help you understand how the user interact with your user interface – then you simply write the following statement on your View.OnClickListener implementation:

[JAVA] Button loginbutton=new Button();
loginbutton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
AnalyticsBridge._trackEvent(“Click”, “Login Button”);

}
});[/JAVA]

That code will track the event of category “Click” and action “login Button”.

Download:

Right now the library is quite stable . You can download it here

Thanks

Thanks to barakinflorida who corrected my bad english 🙂

Dove concentrarsi per il Seo Turistico

16 Ago 09

image_hotel_exterior_entrance_1-704242Lavorando in stretto contatto con questo target di siti web ho imparato alcune cose nel tempo e sono arrivato a delle conclusioni anche condivise da altri siti del settore che voglio scrivere e condividere quì con chi mi leggerà :).

viz

hotel,obama,berlusconi

Come sapete, una delle maggiori fonti di guadagno nel web, come dimostrato dall’immagine a destra, è il campo turistico perciò imparare e capire dove concentrare i propri sforzi per quanto riguarda l’ottimizzazione di siti di hotels

In particolare io lavoro con siti di hotels e quindi ho avuto modo e analizzando il traffico proveniente da google sono stato in grado di differenziare tre tipologie di ricercatori nel web:

1° Tipologia “Starter Searcher”:

Gli starter Searchers solitamente sono le persone che sono agli inizi della loro progettazione della vacanza. Inoltre solitamente sono persone che stanno cercando un hotel o quant’altro in una località mai visitata o poco conosciuta.

La stringa di ricerca utilizzata da questi visitatori è prevalentemente formata dalla composizione di :

Location + Hotel

Con questa stringa di ricerca gli starter searchers stanno praticamente effettuando il cosiddetto exploratory search , ovvero non hanno esattamente un idea precisa di quello che vogliono e quindi sono in cerca di qualcosa di generico.

2° Tipologia “Discerning Searcher”:

In questa tipologia sono comprese le persone che invece hanno già un idea chiara su ciò che vogliono. Ad esempio un discerning searcher potrebbe essere colui che per necessità ha bisogno di un hotel in un particolare punto della città, oppure il business man che ha bisogno della sala meeting e ancora la famiglia che preferirebbe un hotel con la piscina.

Di questa tipologia di utenti c’è solamente da aspettarsi che non si accontenteranno di visionare il primo risultato di ricerca per decidere dove prenotare. Al contrario essendo questi utenti delle persone con le idee ben chiare è logico pensare che siano meticolosi nella scelta e nel confronto di varie strutture ricettive perciò non si fermeranno al primo risultato utile ma si concentreranno nel confrontare le varie proposte dei vari risultati.

3° Tipologia “Buying Searcher”:

Dal nome sono quelli che ovviamente tutti vorrebbero concentrarsi ma per essere classificati buying searchers ovviamente hanno delle caratteristiche molto differenti dalle prime due tipologie.

I visitatori che si possono classificare in questa tipologia sono quelli che conoscono il vostro brand-name.  La maggior parte di questi utenti utilizzano la keyword:

Brand Name + Location

Ovviamente per utilizzare la precedente stringa di ricerca i visitatori devono avere già in mente il vostro brand name e quindi possono essere in una di queste tre tipologie di utenti

  • Sono ex clienti che hanno già visitato la struttura  (Ed è piaciuta)
  • Hanno visitato un sito di reviews che parlava bene di voi e gli è rimasto in testa.
  • Hanno sentito parlare di voi da amici o familiari.

In questa precedente suddivisione non abbiamo preso in considerazione gli utenti provenienti dalla tipologia 2 che potrebbero essersi segnati il vostro brand name insieme a quello di altri hotels concorrente per confrontare la vostra struttura con la nostra.

In quest’ottica, questa tipologia di visitatori, è chiaramente quella che genererà maggiori conversioni poichè un utente ricercherà il vostro brandName solamente se ha avuto un feedback (sia diretto che indiretto) positivo.

Vodafone Widget Android

17 Lug 09

vodafoneWidgetBitberzerkir sul forum di androidiani, e in seguito integrato con nuove funzionalità ( per ora ancora in beta ) da Andrea Baccega ( me ).

Il programma lo potete scaricare direttamente dal market e per ora suppora la visualizzazione di tre widges :

  • Infinity Sms
  • Traffico Resituo
  • Iphone DataPack

Vediamo un attimo più in dettaglio queste funzionalità

Infinity Sms

Il widget degli infinity sms per android è un widget rosso diviso in 3 righe:

  • Titolo : La dicitura “Infinity Sms”
  • Residuo : mosta gli sms inviati confronto al massimo inviabile giornalmente
  • Tempo : mostra l’ora di aggiornamento del widget

Questo widget è utilissimo per coloro che fanno un uso veramente massiccio degli sms, e quindi averlo sott’occhio può aiutarvi a non sforare la soglia giornaliera 🙂

Read More