Piero V.

3: come eliminare i problemi di roaming o di mancanza di copertura

Recentemente è capitato che un mio amico si lamentasse di non prendere da giorni la rete 3G di Tre, nonostante io la prendessi al massimo e già da parecchio tempo si lamentava che gli capitava frequentemente che il suo telefono si connettesse alla rete 2G di TIM (quella in sostituzione alla copertura di 3) facendogli spendere parecchi soldi.

La soluzione che vi propongo può apparire abbastanza banale, però a me funziona bene.

Ogni telefono ha un’opzione per decidere la tipologia di rete a cui connettervi. C’è anche nel mio vecchio Nokia 5800, in Impostazioni → Connettività → Rete, e di sicuro c’è anche in Android, anche se non ricordo più dove, perché lui ha un LG Optimus 9.

Le opzioni saranno modalità automatica o duale, modalità GSM, oppure una terza modalità chiamata o UMTS, o 3G, o con altri nomi ancora. Voi selezionate solo quella.

In questo modo non vi connetterete mai più alla rete TIM. Potrà capitare che non ci sia copertura 3, e in quel caso non c’è proprio niente da fare per avere internet, ma, abilitando di nuovo entrambe le modalità, potrete avere servizi come chiamate o SMS, se c’è copertura TIM. Vi consiglio, però, di rimettere solo le reti 3G terminata l’”emergenza”.

Io mi sono accorto che avevo questa impostazione da mesi solo qualche giorno fa, quando questo mio amico aveva i problemi e in effetti gli veniva fuori I TIM sul gestore. Comunque ho sempre potuto fare tutto senza problemi, anche inviare messaggi e chiamare.

Penso che a volte ci sia copertura 3 ma che quella di Tim semplicemente prevalga come potenza. Questo è l’unico modo per risolvere il problema.

C++ Logger

Ultimamente non stavo più andando avanti con progetti di programmazione, ma, riprendendo, ho sentito la necessità di fare un buon sistema di logging basato sugli stream di C++.

In passato avevo già affrontato l’argomento, ma questa è stata una sfida per vedere se riuscivo a fare tutto da capo e da solo. Ce l’ho fatta, così ho deciso di pubblicare qui i risultati.

Come requisiti ho tenuto in mente la versatilità e la sicurezza per l’uso con i thread.

La versatilità l’ho ottenuta mediante la divisione per modulo (per esempio networking, audio etc…) e livello (errore, informazione…). A coordinare tutto c’è il Log Manager, una classe che coordina i vari log. È un singleton (ottenuto tramite la mia classe allegata), e ritorna degli stream, uno per ogni coppia modulo-livello (che insieme fanno il LogId), assicurandosi che queste istanze siano uniche. Inoltre dispone di una funzione per mandare direttamente in output una stringa, dove in più si può specificare anche il file e la linea, magari usando le macro __FILE__ e __LINE__.

Ho pensato come vari output lo standard output e error, in più un file e un’eventuale consolle interna al programma, configurabili per ogni log, con una questa priorità: LogId > Modulo > Livello > Configurazione globale.

Come dipendenze ha gli smart pointer e i mutex/recursive mutex di Boost. Comunque se preferite e potete, C++11 ha integrato tutti questi componenti nella libreria standard, quindi potete usarli da là, ma sinceramente non ho provato a farlo.

Mancano, volendo, una funzione per impostare la configurazione “grezza” tramite gli enum e l’operatore OR e un controllo nei metodi overflow, xputn e sync della classe LogStreamBuf che ritornino subito se l’output è disabilitato, senza fare movimenti di memoria.

Ho fatto un paio di test anche con dei thread e non ho avuto problemi.

Non mi metto a scrivere tutte le funzioni perché mi pare siano già abbastanza spiegate nell’header 😉 .

Rilascio il materiale sotto il pubblico dominio.

Download: cpp_logger.tar.gz

Ulteriore, deludente sperimentazione sul DSL-504T

Ultimamente non ho molto tempo da dedicare ai miei progetti perché sono stato assorbito da altre attività. Il miller è fermo ormai da inizio novembre, anche se spero in dei progressi durante le festività, e dei progetti a computer non ne parliamo neanche. L’unica cosa cui ho dedicato un po’ di tempo domenica scorsa e un po’ ieri, è stato cercare di riciclare il DSL-504T di cui avevo già parlato per usarlo almeno come router insieme all’altro che ho.

Il mio chiodo fisso è quello di avere un ruoter con l’ottimo firmware libero OpenWRT per godere di funzionalità altrimenti possibili solo con router di livelli più alti. Tra queste ci sono IPv6, supportato nativamente dal mio provider, ma anche DNS interni, configurazioni avanzate di ogni servizio dovute all’accesso completo al router.

Tempo fa avevo già cercato di usarlo autonomamente, sfruttando quindi il modem ATM incluso nel dispositivo, senza tuttavia avere successo. Forse perché, come ho scoperto solo ieri, le informazioni del wiki di OpenWRT si applicano solo alla seconda generazione del 504T, la revisione C, mentre il mio è una versione A1. … [Leggi il resto]

GNOME 3.8: gli screenshot

Finalmente, con un bel po’ di ritardo, mi sono preso del tempo per creare degli screenshot per far vedere GNOME 3.8 al buon Lantaca 😊 .

In realtà presto c’è già GNOME 3.10 ma ho voluto fare lo stesso la mia selezione di funzionalità, anche per spiegare un po’ meglio le novità che avevo segnalato precedentemente.

Torno a GDM

Da molto tempo in alcuni computer sto utilizzando LightDM anziché GDM.

Entrambi sono due gestori di display, ovvero permettono il login grafico e controllano il server X. Il primo è nato con lo scopo di essere leggero, permette una personalizzazione in HTML ed è diventato la scelta predefinita di Ubuntu già da alcune versioni, il secondo è quello ufficiale di GNOME.

Su Debian GDM3 è ancora il DM predefinito per chi ha GNOME, però mi sembrava lento all’avvio, perciò avevo deciso di cambiarlo.

Da tempo, però, pensavo di tornare a GDM perché non mi sembrava più così male come tempi d’avvio, inoltre non era stato rimosso dall’avvio e ad ogni boot veniva fuori il messaggio che era disabilitato.

Una cosa che poi mi seccava parecchio, riguardo LightDM, era che ad ogni aggiornamento dovevo ripristinare l’opzione di visualizzare la lista degli utenti anziché mettere lo username ogni volta, anche se magari esisteva un modo per fare file di configurazione separati dal resto.

Negli ultimi tempi ho avuto qualche problema con GNOME: non si montavano le unità di massa automaticamente e come ultimo bug non funzionavano più l’arresto del sistema o lo standby da parte dell’utente. … [Leggi il resto]