Ciao, questa sera ho rilasciato la versione 0.5.2 di RSReport.
Le novità di questa versione sono abbastanza limitate, questo perché seguirà, a breve, una versione che porterà numerose innovazioni nel motore di reportistica.
Prima di spiegare le modifiche di questa versione è bene però ricordare in cosa consiste RSReport.
RSReport è un framework per sistema operativo iOS il cui scopo è permettere la creazione di report in formato PDF direttamente sui dispositivi Apple senza richiedere l’accesso a server esterni e senza adoperare connessioni internet.
La versione attuale di RSReport fornisce le capacità per stampare report sfruttando l’accesso ad entità CoreData o, in alternativa, a vettori di dictionary. Il framework è progettato, però, per garantire la massima flessibilità allo sviluppatore che può integrare facilmente altre sorgenti dati pur di implementare correttamente le debite interfacce.
La versione 0.5.2 non aggiunge, in pratica, una sola funzionalità, ovvero la proprietà easyReading all’interno della classe RSBodySection.
Il flag, di tipo BOOL, se impostato a YES farà si che al momento della stampa, quando nel ciclo vengono stampate le righe pari del report, venga inserita una banda del colore specificato nella proprietà easyReadingColor sullo sfondo della riga per tutta la sua dimensione. Se nessun colore è specificato verrà adoperato il grigio chiaro.
E’ cosi possibile ottenere una differenziazione delle righe stampate in modo automatico permettendo così all’utente dell’applicazione di distinguere rapidamente i dati.
RSReport è disponibile sotto licenza GPL a questo indirizzo.
Arrivederci al prossimo articolo,
Roberto
Anche quest’anno Apple annuncia le date della conferenza dedicata agli sviluppatori, la famosa WWDC 2013 (WorldWide Developer Conference) si terrà a San Francisco dal 10 al 14 giugno del 2013, anche quest’anno l’argomento principale sarà probabilmente iOS ed in particolare la versione 7 e l’attesa svolta che molti di noi attendono.
I prezzi, come sempre, non sono per tutte le tasche, l’importo infatti è di 1599 dollari per partecipante ed ogni azienda potrà inviare un massimo di 5 partecipanti. I posti come sempre sono limitati.
Per partecipare è necessario essere già iscritti ad uno dei programmi per sviluppatori a pagamento di Apple, le iscrizioni saranno aperte dalle ore 10:00 (orario PDT) del 25 Aprile e, se andrà tutto come negli anni scorsi, i posti saranno terminati dopo pochi minuti.
Per noi ovviamente oltre al costo del biglietto di partecipazione si aggiunge anche quello del viaggio e del vitto/alloggio, diciamo che l’investimento da sostenere è pari a circa 5000 dollari/euro.
Ma vale la pena effettuare questo investimento?
A parer mio se si è sviluppatori per piattaforme Apple e si ritiene che esse possano produrre un ritorno economico valido, la risposta non può essere altro che si, almeno una volta nella vita un investimento del genere andrebbe affrontato.
Continue reading »
Ciao, oggi voglio parlarti di ABPrint una piccola utility per dispositivi iOS disponibile su AppStore.
I dispositivi iOS mettono a disposizione molti modi per accedere ed effettuare una copia di backup dei dati della rubrica. A volte però questo non basta, o comunque si desidera poter accedere ai propri dati in una forma più classica, magari cartacea. Incredibilmente una delle cose più complesse da fare è ottenere una copia stampata/stampabile della propria rubrica almeno senza passare per il proprio Mac/PC.
ABPrint si propone proprio di colmare questa lacuna permettendo di ottenere una copia PDF dei numeri telefonici, indirizzi email o indirizzi classici. Il PDF così ottenuto potrà quindi essere inviato direttamente ad una stampante AirPrint, via posta elettronica, aperto in iBook o in qualsiasi software che supporti il formato PDF in ingresso.
L’applicazione permette di generare un file PDF di tutta la rubrica o dei soli contatti selezionati.
Continue reading »
Ciao, come hai avuto modo di sentire in questi giorni un’applicazione abbastanza famosa, AppGratis, è stata rimossa dall’AppStore di Apple in conseguenza della violazione di due paragrafi contrattuali:
2.25 tutte le applicazioni che visualizzano le app di altri per l’acquisto o per la promozione in modo da assomigliare o essere confuse con l’App Store saranno eliminate.
5.6 le applicazioni non possono utilizzare le notifiche push per inviare pubblicità, promozioni o marketing diretto di qualsiasi tipo.
Insieme ad essa sono state rimosse altre applicazioni della stessa natura altre, sempre della stessa natura, invece sono rimaste.
Anche in questo caso il problema è scaturito da un presunto comportamento scorretto di Apple, ovvero la cancellazione dell’applicazione è avvenuta dopo la sua approvazione (mesi dopo) e senza alcun preavviso nei confronti dello sviluppatore che nel frattempo, sue dichiarazioni, aveva raggiunto la ragguardevole dimensione di oltre 40 dipendenti ed una decina di ingegneri costantemente al lavoro sul miglioramento dell’applicazione stessa, ed aver ricevuto un cospicuo finanziamento (13,5 milioni di dollari) dalla Iris Capital.
Continue reading »
A distanza di alcuni mesi dall’ultimo rilascio sono finalmente riuscito a rendere disponibile la versione 0.5.0 di RSReport, un framework in grado di produrre dei report in formato PDF direttamente sui dispositivi iOS senza dover ricorrere all’uso di server esterni.
Nel caso non lo conoscessi posso dirti che RSReport è uno dei pochissimi framework nativi per iOS in grado di produrre stampe PDF basandosi sul concetto di bande e componenti. In pratica, inserendo le bande appropriate ed i relativi elementi all’interno puoi ottenere dei report in PDF scorrendo una sorgente dati che, fino a ieri, era di tipo CoreData.
Infatti la più grande novità di RSReport 0.5.0 è proprio nell’introduzione della possibilità di avere sorgenti dati differenti da CoreData in grado di alimentare il proprio Report. Per ottenere questo tipo di evoluzione l’impatto sul codice è stato non indifferente, fortunatamente, in termini di performance non vi è stato alcun calo, in compenso la flessibilità è cresciuta notevolmente.
Continue reading »
Ciao, nell’articolo precedente ti ho mostrato un’alternativa all’uso dell’UDID rimaneggiando quanto indicato da Apple come sostituiti possibili al posto dell’UDID ormai in pensione. Hai però compreso che esistono diversi punti deboli nell’adozione dei sistemi indicati da Apple, e le relative manipolazioni fruibili, ad esempio il ripristino del dispositivo annulla i precedenti UUID registrati, così come il backup su un dispositivo ed il restore su un altro può comportare la copia dell’UUID memorizzato. Esistono altri identificativi univoci presenti sui dispositivi iOS per accedere ai quali, però, è necessario lavorare ad un livello più basso, anche se comunque legale. Tra questi vi è il codice IMEI (che però non è necessariamente disponibile su tutti i dispositivi), il numero di serie ed infine il MAC Address argomento di questo articolo.
Una definizione valida di MAC Address può essere trovata su wikipedia a questo indirizzo. Leggendo la definizione emerge chiaramente che il MAC Address è assegnato in modo univoco dal produttore dell’interfaccia di rete in sede di fabbrica, ma che può essere modificato via software (anche se sui dispositivi iOS è un’operazione sicuramente più complicata rispetto alla semplice lettura), resta però un parametro identificativo univoco che contrariamente al UUID assegnato al venditore non cambia in caso di reset del dispositivo.
Non essendo questo un parametro standard che uno sviluppatore comune dovrebbe normalmente adoperare (in realtà esistono decine di casi in cui conoscere il MAC address di una interfaccia di rete è utile per effettuare meccanismi di protezione e controllo) non esiste una API specifica che permetta di accedere a questo dato del dispositivo, bisogna quindi scendere di livello e lavorare cone le librerie C a nostra disposizione.
Continue reading »
In questi giorni si è verificato uno degli eventi più temuto dagli sviluppatori iOS anche se ampiamente previsto ed annunciato tempo addietro da Apple stessa, dal primo maggio non sarà più possibile sottoporre applicazioni per l’approvazione, siano esse nuove o semplici aggiornamenti, che fanno uso dell’UDID del dispositivo e, per quanto riguarda l’iPhone, non supportano il display da quattro pollici e le visualizzazioni retina. Nel caso non si rispettino queste regole l’applicazione verrà automaticamente scartata.
Mentre per il secondo caso (il supporto ai nuovi display ed alle elevate risoluzioni) la soluzione è relativamente semplice, il problema dell’UDID mette decisamente in difficoltà tutta una serie di applicazioni che adoperavano questo identificativo per tenere traccia e riconoscere rapidamente il dispositivo in modo univoco.
L’UDID, se non lo sai, è una stringa alfanumerica identificativa assegnata in modo univoco ad ogni singolo dispositivo iOS. Si può tranquillamente paragonare ad un numero di serie, ma lunghezza e complessità lo rendono anche più sicuro in quanto relativamente poco accessibile, il suo uso più comune è quello di registrarlo nel Device Portal come dispositivo su cui effettuare i test in quanto è adoperato per firmare i certificati di debug in modo che un’applicazione sia abilitata a funzionare su uno specifico dispositivo.
Continue reading »
Quali sono le performances dell’iPad 4? Quanto risulta essere migliore, a livello di calcolo puro, rispetto ai modelli precedenti?
Queste sono le domande che mi sono posto dopo l’annuncio di Apple circa un mese fa. Fin dai primi test sull’iPhone 5 era risultato che il processore A6 risultava essere il doppio più veloce del precedente A5 e, per estensione, il chip A6X risultava avere il doppio della velocità rispetto al processore A5X.
Per velocità non mi riferisco alla frequenza, bensì alla capacità che ha il sistema di eseguire le operazioni in modo più efficiente e quindi più rapido.
Ultimamente, però, mi sono ritrovato a leggere degli articoli che, confrontando iPad 3 ed iPad 4, dal punto di vista del rendering di una pagina Web (ed altri compiti simili) risultava un GAP decisamente più ridotto, anzi, in alcuni casi iPad 3 risulta essere migliore dell’iPad 4.
Personalmente sono rimasto alquanto perplesso da quanto riportato dagli articoli, questo perchè non è chiarito se la pagina Web è residente sul dispositivo, il tipo della pagina Web, se non residente su quale server risieda, il tipo di connessione, il traffico e gli utenti connessi al momento del test, la tecnologia che produce la pagina web, la larghezza di banda, ecc. ecc.
Questo perchè nel mondo Web basta pochissimo affinchè vi siano risultati differenti nell’analisi della velocità e se il test non è effettutato in condizioni più che controllate, non ha senso neanche parlarne, a meno che non si proceda empiricamente ed i test vengano eseguiti un numero sufficientemente elevato di volte per ottenere, alla fine, una media attendibile.
Continue reading »
Ciao, l’aggiornamento di RSReport procede sempre più alacremente. Anche grazie ai suggerimenti degli utenti (a proposito, grazie Sergio), si sta delineando sempre di più un percorso evolutivo che porterà al rilascio della versione 1.0.0 nel primo trimestre del 2013.
L’aggiornamento di oggi vede l’inserimento di alcune proprietà all’interno delle classi specializzate nella stampa.
Le tre classi con maggiori modifiche sono RSCurrencyItem, RSAvgItem ed RSSumItem. In tutte e tre è stata aggiunta la proprietà locale che, se valorizzata, permetterà di definire il formato in cui una valuta dovrà essere stampata in base alla nazione definita. Nel caso in cui la proprietà sia posta a nil viene adoperato il locale del dispositivo.
Continue reading »
Ieri notte ho rilasciato una nuova versione di RSReport che arriva, così, alla release 0.4.0.
Questa nuova versione è principalmente un refactoring del lavoro svolto finora, sono state eliminate due classi la RSMOImageItem e la RSMOTextItem, le loro funzionalità sono state incorporate, rispettivamente, in RSImageItem ed RSTextItem.
Le classi che si occupano di accedere ai dati e che iniziavano con la sigla RSMO ora iniziano semplicemente con RS.
La scelta di questo refactoring è dovuta, essenzialmente, alla necessità di recuperare flessibilità nell’engine.
Un errore di progettazione che si stava trascinando da tempo, ormai, prevedeva l’inserimento della proprietà attribute all’interno delle classi che accedono a CoreData per recuperare le informazioni.
Continue reading »



