Navigare il file system del nostro iPhone con iPhoneBrowser per Windows
Sui nostri iPhone con jailbreak spesso capita di dover scaricare delle app o dei tweak abbastanza corposi. Fino a qualche giorno fa ho utilizzato le librerire OpenSSH installate da Cydia per poter accedere al file system del mio Melafonino con un client FTP via Wi-Fi. E’ una bella soluzione ma a volte è scomoda specialmente se la linea è lenta e si perde la connessione durante il trasferimento dati. Detto questo mi sono messo a cercare un metodo alternativo perchè volevo copiare degli .ipa da dare in pasto ad Installous e ho trovato questo iPhoneBrowser. Si tratta di un tool gratuito che permette, una volta collegato l’iPhone al PC provvisto di Windows, di esplorarne il file system, modificare, copiare o cancellare file. In questo modo si riescono a manipolare tutte le cartelle via USB, comprese quelle di Cydia e di Installous.
Enjoy!
Galaxy Nexus: ricalibrare la batteria può aiutare la durata!
Si, sono tornato ad Android! Però non ho abbandonato il buon vecchio iPhone che mi accompagna ancora in molte avventure, in particolare mi aiuta con i test delle mie app su iOS. E comunque non parlo di un droid qualunque perchè ho per le mani un Galaxy Nexus con ICS 4.0!!!
Come tutti gli smartphone recenti la batteria di questo Googlefonino non dura un gran ché, si arriva difficilmente alla giornata completa di autonomia. Considerando che monta un processore dual core e che lo schermo è un Amoled HD tutto sommato non è male ma in molti si lamentano. Io ovviamente non mi sono accontentato ed ho quindi indagato in lungo e in largo la rete per trovare una soluzione che portasse a qualche ora di autonomia in più. Ho fatto principalmente due considerazioni di partenza:
- non si può tener conto della durata della batteria durante i primi giorni di utilizzo: di solito all’inizio, avendo un telefono nuovo e “pulito” per le mani, si scaricano e installano un milione di tool e app per cui si usano moltissimo la connessione Wi-Fi e quella 3G;
- quando si parla di “uso intenso” in realtà bisogna considerare che quando si lavora o si è occupati in altre attività il telefono non viene usato e quindi in quel frangente la batteria non è in uso se non per piccoli processi in background. Questo significa che se il telefono lo si usa nel restante tempo della giornata, probabilmente a sera in qualche maniera ci si arriva con una sola carica.
Detto questo mi sono concentrato sullo schermo, seguendo molte delle considerazioni lette sui forum: possibile che sempre almeno il 50% della batteria sia risucchiata dall’Amoled? La risposta è no! Le percentuali indicate nel dettaglio di Android (Impostazioni > Batteria) andrebbero a mio avviso lette come unità di tempo e non come unità di carica consumata. Lo schermo è ciò che rimane attivo per più tempo durante l’utilizzo, dall’inizio alla fine delle operazioni, quindi viene giustamente segnalato come il maggiore utilizzatore. Come tutti gli smartphone connessi a Internet ciò che mangia la batteria è in realtà la connettività Wi-Fi e 3G che sul Galaxy Nexus è particolarmente sollecitata. Infatti basta avere la lettura delle mail attiva una volta ogni ora , l’update dei post Twitter e Facebook, il sync con Google ecc. per non riuscire più a raggiungere le 7 ore di utilizzo.
Oltre a questi fattori ho valutato anche la calibrazione della batteria dopo aver letto un post esplicativo sul suo funzionamento. Android al primo avvio crea un file batterystats.bin che contiene le statistiche sulla carica e l’utilizzo della batteria. Se il file viene creato quando la carica non è completa, è possibile che questa ne risenta. Per curiosità ho provato a cancellare questo famigerato .bin con un app disponibile sull’Android Market, Battery Calibration, dopo aver ottenuto però i permessi di root sul Nexus (prossimamente scriverò una guida su come fare). Il file è stato quindi rigenerato da Android ed effettivamente nei giorni successivi all’operazione ho notato un netto miglioramento della durata della batteria che ha quasi del tutto annullato quel senso di insoddisfazione mista a delusione. Mediamente, partendo alle 7 di mattina con il 100% della carica, si arriva alle 7 di sera con ancora il 50 – 40% di batteria. Operazioni ordinarie: almeno 5 aggiornamenti di stato Facebook e almeno 10 su Twitter; 2 o 3 foto caricate su entrambi; almeno 2 video su YouTube; Internet per 10 minuti con il browser integrato; almeno 30 SMS. Soddifacente, che dite?
Enjoy!
Password di default per l’account Administrator di Windows 7 (Sette)
Alcune versioni di Windows 7 non permettono di impostare gli account User (limitati nei privilegi) per il login durante la prima installazione del sistema. Capita con le versioni piratate attivate tramite i consueti loader o atri tool simili. In pratica dopo l’installazione ci si trova con un solo account Administrator che non richiede la password all’accesso.
A molte persone però è capitato di vedersi richiedere le credenziali di amministrazione accendendo normalmente il proprio PC, pur non avendone impostata una o non avendo svolto attività particolari di modifica degli account. Pare che capiti in seguito ad installazioni di programmi o configurazioni di sistema che normalmente richiederebbero i privilegi di amministratore e può succedere sulle versioni di Windows dalla 2000 in poi. Senza complicarsi la vita con strumenti di cracking delle password o altri workaround particolari, vi confido un segreto: la password di default dell’account Administrator è “seven“. Sembra troppo semplice eppure è così, grazie agli hacker che hanno modificato e crackato Windows per poi distribuirlo sulle reti P2P con una password standard! Potrete quindi riaccedere alla vostra macchina e riprendere le normali attività. Personalmente consiglio di creare degli account User standard concendendo eventualmente a quelli più importanti i diritti di amministratore, inoltre conviene sempre impostare una password! Anche se non utilizzati, fungeranno sempre da backup!
Enjoy
Limitare le query MySQL in sleep
Da qualche tempo ho notato con i miei colleghi di lavoro che molti nostri applicativi web PHP + MySQL hostati su una virtual machine Linux (Red Hat) erano diventati parecchio lenti nonostante la continua manutenzione. Per giorni abbiamo provveduto ad ottimizzare tutte le tabelle di tutti i database, a fare check sull’integrità dei dati e sulla qualità degli indici ma più di una volta siamo arrivati al collasso del servizio MySQL con poco traffico da parte dei navigatori. Avviando una delle nostre interfacce di gestione del DBMS abbiamo notato che molte query, specialmente quelle successive al login (sono molto pesanti perchè includono molte tabelle di più servizi) rimanevano in sleep per periodi di tempo molto elevati, allungando di molto la coda delle query che rimanevano “in canna”. Nello stesso momento l’utilizzo della CPU da parte del processo mysqld era molto elevato proprio per questo motivo.
Mi sono quindi informato sullo stato di sleep e ho scoperto che in PHP avviene perchè si apre una connessione persistente con il database attraverso una mysql_pconnect(). Con quella funzione PHP si collega al database, esegue le query, rilascia l’autenticazione sulla connessione ma la tiene aperta. Inoltre tutti i buffer rimangono in memoria fino a quando i relativi thread non muoiono. Per evitare questo dispendio di risorse e il conseguente facile collasso del servizio ho trovato un parametro globale che dice a MySQL ogni quanti secondi al massimo deve eseguire il kill delle query in stato di sleep. Si tratta del wait_timeout (@@global.wait_timeout). Lo si può variare all’interno del file
/etc/my.cnf
il quale contiene tutte le global vars. Se si vuole agire a livello di specifico server invece bisognerebbe cercare in
/var/lib/mysql/my.cnf
Il primo file va più che bene ed è più comodo se non si hanno hostati sulla stessa macchina applicativi con diverse esigenze. Se non c’è già, scriviamo la seguente riga nella sezione [mysqld] del file:
wait_timeout = 60
In questo modo tutte le query che rimarranno in sleep per più di 60 secondi andranno in kill automaticamente. Ovviamente bisogna valutare bene le tempistiche a seconda dell’applicativo web, quasi sempre c’è un motivo se è stata usata una connessione persistente!
A questo punto da terminale basta riavviare il servizio MySQL per caricare la nuova configurazione:
service mysqld restart
Enjoy!
iBlacklist: blocco automatico delle chiamate e degli SMS in entrata su iPhone con jailbreak
Possiamo dire senza ombra di dubbio che i cellulari sono uno strumento utilissimo per agevolare la comunicazione tra persone. In molti sicuramente hanno sentito meno la distanza fisica con i propri cari e gli amici, in fondo basta una chiamata o un SMS per tenersi in contatto! Questo mezzo però ha portato per qualcuno anche l’isteria, l’ansia di doversi sentire, di dover comunicare: non a caso i telefoni sono il primo strumento utilizzato da chi perde la testa e finisce per molestare e fare quello che oggi chiamiamo ‘stalking’. Poteva mancare su iPhone un app per il blocco automatico di chiamate e messaggi? Ovviamente no! Per i Melafonini sbloccati tramite jailbreak è disponibile su Cydia il package iBlacklist.
E’ un app a pagamento ma si trova crackata su diversi repository e permette di definire una lista nera di numeri (presi dalla rubrica, definiti a mano o da altre fonti) di cui bloccare gli SMS e le eventuali chiamate in entrata. Si possono disattivare solo l’una o l’altra funzione separatamente ed è molto interessante e utile la possibilità di definire come il numero verrà riattaccato: si può ad esempio impostare la segreteria piuttosto che il segnale di numero occupato. Allo stesso modo si può settare una risposta automatica ai messaggi.
iBlacklist offre inoltre la possibilità di mantenere un registro degli eventi e di avvisare con badge numerici, suoni e vibrazioni i blocchi effettuati. Disabilitando tutte queste funzioni di notifica non ci si accorgerà di nulla e si eviteranno tutti i problemi legati ai “rompi scatole” che vivono utilizzando il cellulare 24 ore su 24, senza dover cambiare numero, operatore o cambiare abitudini!
Modifica della console Wii 4.3E: come ottenere i giusti GameID per far partire tutte le ISO
Qualche giorno fa ho acquistato una console Wii per capire come funziona la modifica software che permette di caricare la maggior parte delle immagini ISO dei giochi reperibili sui canali P2P. Curioso di studiare questa mod ho iniziato a smanettare e sono riuscito ad ottenere ottimi risultati e molte nuove conoscenze che voglio condividere con voi.
La modifica
Come tutte le modifiche software l’hack della Wii avviene sostituendo alcuni file del sistema operativo che permettono l’esecuzione di codice detto “homebrew” sulla console, previa aggiunta di un cIOS (Custom Input/Output System o Custom Internal Operating System). Si tratta di piccoli applicativi scritti da programmatori indipendenti che permettono di sfruttare funzioni o eseguire operazioni che normalmente non sarebbero possibili con i software originali. Per poter fare tutto ciò sulla versione 4.3E del firmware della Wii è stato sfruttato l’exploit LetterBomb il quale si basa su una falla trovata nel sistema di messagistica della console. Da un messaggio sulla bacheca personale viene eseguito del codice arbitrario, caricato precedentemente sulla scheda SD, il quale installa un nuovo canale nella schermata principale chiamato Homebrew Channel. Fatto questo la Wii permette l’esecuzione di tutti i software indipendenti tra cui anche il Configurable ISO Loader che serve a far partire le ISO da un’unità esterna USB.
Hard disk esterni
La versione 70 – r249 del Cfg ISO Loader permette di caricare le immagini dalla cartella wbfs disposta nella root dell’unità. potrebbe essere un Hard Disk oppure una chiavetta purché siano formattati in FAT32, NTFS o WBFS. Il primo file system non supporta file più grandi di 4.36 GB, mentre WBFS va gestito con dei programmi appositi (ad es. WBFS Manager) perchè non supportato da alcun sistema operativo. Personalmente ho optato per una partizione NTFS su un Hard Disk Verbatim da 500 GB, per di più creata e gestita con Mac tramite il wrapper NTFS-3G (Mac OS X di default non gestisce questo tipo di file system che è un formato proprietario di Microsoft). Le dimensioni del disco poi non fanno molta differenza… Aluni conoscenti mi avevano accennato al fatto che qualche disco da 1 TB non permetteva di avviare tutte le ISO che si trovano in rete ma ho poi scoperto che il problema in realtà era un altro…
ISO e GameID
Cfg ISO Loader funziona molto bene ed è di una semplicità disarmante: carica in velocità le ISO dei giochi che come accennavo vanno inserite in una sub-directory wbfs dell’unità USB. Altro requisito fondamentale è che non contengano caratteri speciali o di punteggiatura / separazione. Inoltre devono contenere un GameID racchiuso tra parentesi quadre: si tratta si un codice alfanumerico che identifica univocamente il gioco e che permette al loader di caricarne le copertine previo download da Internet (per la precisione da www.gametdb.com). Faccio un esempio di nome file valido:
D:\wbfs\LEGO Harry Potter Anni dal 5 al 7 [SLHPWR].iso
L’inico handicap che potrebbe mandare in tilt il loader potrebbe essere un GameID della ISO diverso da quello specificato nel titolo del gioco, il che genererebbe l’errore “ID discordanti: [IDERRATO] [IDCORRETTO]“. In realtà questa cosa ci viene in aiuto: non significa che il gioco non funziona, bisogna semplicemente rinominare il file della ISO con il codice giusto! A questo punto abbiamo due possibilità:
- testare l’avvio del gioco e cambiare il codice con quello che il loader ci suggerisce (dobbiamo però scollegare e ricollegare ogni volta l’unità)
- reperire il GameID direttamente dallo stesso sito da cui scarica le cover, ossia www.gametdb.com, e cambiarlo a priori.
MACSpoof 1.0 – Spoofing del MAC address su OS X Lion
Avevo già scritto un Apple Script (qui) che permetteva lo spoofing del MAC address della propria scheda Airport su Mac OS X Snow Leopard. Ho testato lo stesso script su Lion e poi l’ho parametrizzato per poterlo gestire da interfaccia. Ho quindi creato una pratica Cocoa Application che esegue l’operazione in un click semplicemente indicando il nuovo indirizzo MAC e l’interfaccia (BSD name) sulla quale agire. Ho deciso di distribuirla liberamente per dare a tutti l’opportunità di approfondire l’argomento ed effettuare test di rete.
Resizr è stata approvata da Apple: ora sono sull’AppStore!
La mi app Resizr per iPhone è stata finalmente approvata da Apple ed è ora distribuita a $ 0.99 sull’App Store. Resizr permette di ruotare e ridimensionare, mantenendo le proporzioni o con scale arbitrarie, le proprie immagini salvandone la copia modificata all’interno del proprio Camera Roll! Potete trovarla anche al link http://itunes.apple.com/us/app/resizr/id480519582?mt=8.
Seconda revisione per Resizr
Nel frattempo che scrivo sto eseguendo il secondo upload della mia prima app per iPhone, Resizr, dopo che è stata rifiutata da Apple. Eh si, perché ogni app, anche la più sciocca che si vuole vendere sull’App Store deve prima passare una complessa analisi da parte della Mela. In particolare il mio primo tentativo è stato rifiutato perché ho utilizzato delle icone e delle immagini che sebbene fossero royalty-free raffiguravano delle foto Polaroid, tra l’altro la casa avrebbe già reclamato in altre app la proprietà del marchio e del suo utilizzo.
Tutto il processo ha richiesto una settimana e mezza, ora molto probabilmente dovrò aspettare ancora prima che la messa in produzione sull’App Store venga portata a termine. Un lato positivo c’è in fondo: non hanno detto ancora nulla su codice che probabilmente è scritto bene rispettando gli standard Apple. In ogni caso se la mia app non dovesse passare la nuova revisione, la porterò su Cydia gratuitamente mettendola a disposizione di tutti gli iPhone con jailbreak! Sarà anche vero che il mondo Apple è così prestante e stabile per la perfezione che ha raggiunto dal punto di vista della programmazione e dei contenuti, però rifiutare un applicativo discreto per delle idiozie trascurabili come un’icona simil-polaroid è eccessivo e disincentivante per qualunque programmatore!
Nuovi snippet Objective-C in arrivo
Nelle ultime settimane mi sono dedicato full time allo studio dell’Objective-c e dell’ambiente di sviluppo XCode di Apple. Per lavoro ho scritto il prototipo di una learning app per iPad e nel tempo libero (praticamente la notte) ho creato una piccola app per iPhone che si occupa del ridimensionamento e la rotazione delle immagini. Prossimamente caricherò un po’ di snippet di codice così da creare una sorta di piccola libreria Obj-c, con codice testato e utile ad utilizzare al meglio i componenti del framework Cocoa.

