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
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 »
Riuscire a monetizzare i propri sforzi nello sviluppo delle applicazioni mobile è, sicuramente, il principale obbiettivo di chi si è avventurato in questo mondo. La vendita delle applicazioni è, spesso, il primo approccio a venire in mente. Purtroppo non è sempre quello più proficuo, la maggior parte degli utenti spesso segue un percorso a scalare partendo con il testare le applicazioni gratuite e solo in un secondo tempo opta per quelle a pagamento. Ma anche per le applicazioni gratuite la possibilità di recuperare economicamente i propri investimenti esiste, basta ricorrere al sistema dei banner pubblicitari di cui AdMob è di sicuro uno dei rappresentanti principali.
AdMob è il circuito pubblicitario che Google ha riservato ai propri annunci su dispositivi mobile. Esso, dall’anno scorso, permette di visualizzare non solo gli annunci del circuito, ma anche quelli del più vasto AdSense. In questo modo le applicazioni riescono a visualizzare un numero di banner molto più elevato ed avendo anche una maggiore varietà permetteranno di avere un riscontro economico maggiore.
La procedura di inserimento di un banner all’interno di un’applicazione Android è relativamente semplice, essa può avvenire sia tramite codice Java che attraverso XML implementando il descrittore dell’interfaccia dell’activity che desideriamo adoperare, in questo articolo mi occuperò del secondo metodo.
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 »
Durante una delle pause caffè di ieri parlavo ai miei colleghi delle evoluzioni a cui sto sottoponendo RSReport e delle modifiche che ho intenzione di apportarvi nel breve e medio termine. Come sempre le battute fioccavano, ma tra queste, poichè i miei colleghi sono persone molto competenti, diverse considerazioni, soprattutto in merito al Cloud Computing mi hanno dato da pensare.
Alcuni colleghi indicavano come scelta preferibile l’elaborazione e la generazione del report lato server anche a fronte degli investimenti nell’ambito Cloud da parte delle principali multinazionali nell’ambito IT.
Ieri, mentre aggiornavo RSReport (disponibile qui) con una nuova classe, mi son chiesto quanto questo framework abbia senso nell’essere adoperato e sviluppato. Da quel momento mi si sono affacciate alla testa tutta una serie di informazioni e nozioni accumulate in questi anni.
Continue reading »
E’ un periodo particolarmente effervescente per quanto riguarda il framework RSReport. Sono già diversi gli aggiornamenti che hanno visto coinvolto uno dei primi motori di reporting integrato per i dispositivi iOS.
Nei giorni scorsi ho avuto modo di iniziare la scrittura della wiki attraverso la quale ottenere tutta la documentazione necessaria per poter creare i tuoi report nelle applicazioni per iPhone ed iPad.
Oggi è stata aggiunta un’ulteriore nuova classe particolarmente utile nel caso si voglia associare un’immagine ad un record. La classe in oggetto è la RSMOImageItem.
In tutte le classi di RSReport la presenza delle lettere maiuscole MO indicano che la classe è specializzata nell’accesso ai dati dei Managed Objects di CoreData. Tutte queste classi presentano na specifica proprietà denominata attribute nella quale inserire il nome dell’attributo, rispettando maiuscole e minuscole, da cui ottenere l’informazione da stampare.
Alcune classi, come ad esempio RSMOTextItem, prelevano il contenuto dell’attributo e lo stampano così com’è senza effettuare alcun parsing su di esso.
Continue reading »
Ieri è stato rilasciato un nuovo update della libreria RSReport per iOS. L’update ha visto l’introduzione di una nuova classe la RSMOLookupArray.
Il compito di questa classe, costituita da un elemento stampabile, è quello di stampare una stringa, selezionata all’interno di un array, in base al valore dell’attributo specificato e contenuto nell’entità corrente.
L’uso di questa classe è utile nei casi in cui un attributo dell’entità sia adoperato come flag, ma il significato di tale flag è trattato esclusivamente da codice e non è rappresentato da un record equivalente sul database.
Continue reading »
La necessità di comunicare con servizi presenti su Internet è presente in quasi tutti le applicazioni in forma sia diretta che indiretta. Anche se l’SDK di iOS mette a disposizione diversi metodi nativi, la necessità di dover scrivere il codice per usarli, spesso, si traduce nella scrittura di codice ripetitivo ed in una discreta perdita di tempo. Fortunatamente sono disponibili diversi framework che possono semplicifare tale compito. Tra questi uno dei più promettenti è AFNetworking.
Fino all’anno scorso una delle librerie principali adoperate per inviare e ricevere dati verso i servizi presenti su internet (anche webform o stream dati) era la libreria ASIHTTPRequest di Ben Copsey, purtroppo lo sviluppatore ha deciso di fermare lo sviluppo della libreria dopo il rilascio della versione 1.8.1 e, ad oggi, nessuno sembra aver raccolto il testimone per garantirne gli aggiornamenti.
Ma, si sa, morto un Papa, per quanto buono, se ne fa un altro. Tra i vari framework che sono emersi due sono particolarmente degni di nota: RestKit ed AFNetworking entrambi presentano punti di forza e debolezza, ma sono, de facto, la scelta obbligata per chi vuole comunicare con servizi Web e non vuole riscoprire l’acqua calda.
Continue reading »
oggi vorrei parlarti della possibilità di accrescere i dati all’interno di un’applicazione iOS adoperando i servizi presenti su un server e come protocollo per il flusso dati il formato JSON.
Qualche anno fa, con l’arrivo degli smartphone ad uso massivo, l’uso dei servizi web ha avuto un incremento notevole. I protocolli adoperati erano, però, studiati per sistemi dotati di potenza e scopi differenti.
Fondamentalmente si delinearono due tipi di flussi usati in maggioranza, quello adoperante il protocollo XML generico e quello adoperante la sua specializzazione, il protocollo SOAP. Essendo flussi nati per contenere non solo il dato ma anche la tipologia dello stesso (o quantomeno una sua descrizione) la quantità di dati trasmessa tra il server ed il client risultava ben maggiore del dato stesso.
Inoltre, essendo entrambi i protocolli basati su stringhe, una volta giunto il flusso al dispositivo mobile, l’elaborazione degli stessi risultava particolarmente onerosa. Attualmente questi flussi dati sono comunque molto usati nell’ambito dello scambio di informazioni attraverso i servizi, nel frattempo è emerso però un nuovo tipo di flusso denominato JSON (Javascript Object Notation). Punto di forza di questo protocollo è la sua semplicità (anche se il dato non è in grado di autodescriversi) e l’estrema semplicità nell’essere trattato tramite il linguaggio Javascript, infatti il suo principale uso è proprio nello scambio dati secondo il protocollo AJAX.
Continue reading »




