[iOS] La libreria Three20: navigazione “persistente” e galleria fotografica nelle vostre app

Three20 è una libreria open-source scritta in Objective-C e molto utilizzata e diffusa tra le maggiori app in Apple Store, come Facebook, Posterous, Pulse, Meetup.com e SCVNGR (vedi il seguente link con l’elenco delle app più famose che lo hanno utilizzato: http://three20.info/gallery).

La libreria mette a disposizione un ricco set di view controller come il Launcher, il popolare Photo Browser per la creazione di una gallery, e varie tables concepite per i contenuti Internet.

Altra funzionalità potentissima è quella che permette di accedere alle view delle vostra app tramite delle URL, come se la navigazione avvenisse su un sito web. Tale possibilità è davvero eccezionale, perché senza tale framework siamo costretti a programmare la navigazione con una gestione a stack delle view (grazie al navigation controller), dove il “salto” tra una vista e l’altra può avvenire solo tramite operazioni di push e pop delle stesse. Three20 introduce, quindi, il concetto di “persistenza“: permette di ricordare lo stato dell’app, ovvero ogni pagina (vista) viene “raggiunta” grazie ad una specifica URL. Quando un utente naviga attraverso le viste, Three20 memorizza una history di navigazione e la scrive su disco. Quando l’app viene ricaricata di nuovo, queste URLs vengono rieseguite istantaneamente così che la navigazione inizia dall’ultima vista visualizzata.

La libreria è modulare, ossia è possibile scegliere quali elementi includere nelle nostre app. Ciò fa di Three20 l’unico framework in Objective-C che incoraggia l’utilizzo di quelle che la comunità chiama “extensions“. Il Launcher è un’altra implementazione open-source disponibile in Three20 che emula l’app launcher standard dei dispositivi iOs (ossia il “desktop” con tutte le app installate, detto springboard). Il Launcher permette, dunque, di riordinare e cancellare gli elementi, personalizzare il numero di colonne e righe e di gestire pagine multiple.

Ecco il link al sito ufficiale con la demo delle funzionalità disponibili in Three20http://three20.info

Per una introduzione vi consiglio di leggere il post sul blog di Ray Wenderlich:

http://www.raywenderlich.com/656/introduction-to-three20

Per l’installazione del framework nelle vostre app vi invito a vedere il seguente video:

http://www.youtube.com/watch?v=-0-E-Z0fihg

Il progetto si trova su GitHub e prendi il nome di Facebook-Thre20, perché Facebook lo utilizzò per implementare la sua prima app mobile e lo ha fixato/customizzato nella versione attualmente (1.0.6) più stabile: https://github.com/facebook/three20/

L’installazione di Three20 nelle vostre app è molto semplice. Prima occorre scaricare la libreria a questo link: http://three20.info/roadmap/1.0.6.2 (o da riga di comando con GIT o decomprimendo il .tar). Vi consiglio di mettere la cartella decompressa di Three20 (rinominandola in three20) nella parent directory che contiene il progetto della vostra app. Basta poi digitare da terminale il seguente comando python per procedere all’installazione e configurazione automatica della libreria nella vostra app:

python three20/src/scripts/ttmodule.py -p path/to/myProject.xcodeproj Three20

Vi ritrovate comunque tutti i passi, anche quelli della procedura manuale di installazione, al seguente link: http://three20.info/article/2010-10-06-Adding-Three20-To-Your-Project Dopo l’installazione, nel progetto della vostra app, vi ritroverete (nella cartella Frameworks o Dependencies) i seguenti sottoprogetti (o moduli):

  • Three20Core
  • Three20Network
  • Three20Style
  • Three20UICommon
  • Three20UINavigator
  • Three20UI
  • Three20

Quando compilerete il vost ro progetto, XCode compilerà prima i precedenti sottoprogetti, rendendo disponibili i compilati alla vostra app.

Per realizzare una galleria di foto in una app iPhone/iPad, io ho seguito l’articolo sul blog di Ray Wenderlichhttp://www.raywenderlich.com/1430/how-to-use-the-three20-photo-viewer

Grazie al precedente articolo, ho potuto realizzare le gallery di foto delle mie app iVagabro e LuBannApp.

 

[Liferay&SemanticWeb] La semantica in Liferay con SKOS e Stanbol

Il giorno 11 Giugno 2012 si è tenuto all’Università di Tor Vergata il roadshow di Liferay e faccio qui una sintesi sugli argomenti trattati all’incontro, estratti dal materiale messo online sul portale della didattica di Tor Vergata:

[Materiale Didattico – Roadshow di Liferay – Università di Tor Vergata (Portale della Didattica)]

NOTA. Il materiale viene distribuito nel rispetto delle licenze Creative Commons e citando la fonte e gli autori.

Caratteristiche di Liferay Portal 6. Per quanto riguarda le caratteristiche di Liferay (versione 6), non volendo essere troppo prolissi, possiamo subito rispondere alla domanda sul perché conviene utilizzarlo. Innanzitutto perché è un progetto open-source, che consente un notevole risparmio in termini economici e tempi ristretti per l’installazione e la configurazione di una architettura Portal di tipo Enterprise.

Allo stato attuale, sono stati effettuati circa 6 milioni di download dei Liferay e il numero è destinato a crescere. Grazie ai connettori standard di cui Liferay è fornito, è possibile integrare il Portal con sorgenti esterne eterogenee, dai social network come (Facebook, Twitter e tanti altri che aderiscono allo standard Open Social) a sistemi legacy, repositories esterne e content store (tramite SOAP, Web Services, strumenti di Enterprise Integrations o servizi REST). Inoltre, può essere depiloyato sui maggior web containers diffusi nell’ambito J2EE (JBoss, Tomcat, ad esempio), si connette con i database più diffusi (come MySQL, PostGRESql, Oracle, ecc) e, grazie alla JVM, si può configurare su vari sistemi operativi.

Tra gli Enterprise Portal, secondo Gartner, Liferay si colloca al terzo posto con il 47%, dietro colossi commerciali come Oracle e Microsoft e collocato nel primo quadrante (Leaders e Visionaries) degli Horizontal Portal:  http://blogs.perficient.com/portals/2011/10/31/gartner-magic-quadrant-for-horizontal-portals-2011/

In Italia esistono già molti centri di competenza (localizzati prevalentemente al nord e qui a Roma), che creano quello che è detto Liferay Italian Partner Ecosystem.

Ma come meglio si adatta Liferay? Si può utilizzare per vari scopi:

  • piattaforma per la gestione di siti
  • sistema di gestione documentale
  • sistema per la gestione di contenuti web
  • piattaforma di produttività aziendale
  • piattaforma di sviluppo, integrazione e deploy

Inoltre, sono disponibili strumenti di social collaboration (per aumentare la produttività), che consentono ad un team di cooperare alla stesura di documenti condivisi, formare veri e proprio gruppi di progetto e condividere agevolmente documentazione e informazioni di lavoro.

Caratteristica importante è quella del supporto nativo migliorato per i dispositivi mobile, con un layout grafico che si adatta alle dimensioni dei dispositivi, tramite riconoscimento WURFL.

Altre caratteristiche avanzate di Liferay e nuove funzionalità introdutte nella versione 6, le potete leggere direttamente dalle slide del ROADSHOW. [ROADSHOW_LIFERAY_11062012 – Slides]

Continua la lettura

[Security] OAuth: siamo noi ad autorizzare l’accesso ai nostri dati

Cosa accade quando sui social network, come Facebook o Twitter, diamo l’autorizzazione alle applicazioni di accedere ai nostri dati (profilo, info, foto, ecc.)? Semplicemente è come se gli lasciassimo la porta di casa aperta, senza chiuderla a chiave. Infatti, dietro viene utilizzato spesso un protocollo che è chiamato OAuth (open authorization) e di cui descrivo il flusso operativo, senza entrare troppo in dettagli tecnici.

Facebook ha già implementato il protocollo OAuth 2.0 e Twitter, fino a poco tempo fa, usava OAuth 1.0a (definito da RFC 5849). Comunque, il paradigma di autorizzazione è uguale per entrambe le versioni e riguarda lo scambio di informazioni (chiamato spesso “dance“) tra una applicazione client che necessita di accesso ad una risorsa protetta su un server provider e un utente finale (end-user), che ha bisogno di autorizzare l’accesso alle sue risorse protette a tale applicazione client (senza condividere username e password).

OAuth fornisce, dunque, un modo per autorizzare una applicazione ad accedere ai dati che sono stati memorizzati su un servizio online, senza fornire username e password personali. La specifica IETF OAuth 2.0 Protocol descrive il meccanismo di autorizzazione come segue:

  •  l’end-user autorizza l’accesso ad una applicazione (client) ad alcuni dati (scope) gestiti da un servizio web (resource owner)
  • Invece di chiedere le credenziali, il client ridireziona l’end-user verso il resource owner e l’end-user autorizza uno scope direttamente al resource owner: il client identifica se stesso con un client identified univoco e l’end-user lo autorizza;
  • assumendo che l’end-user abbia autorizzato il client, il client notifica e manda un authorization code di conferma all’end-user di avvenuta autorizzazione dello scope; c’è un problema: l’identificatore inviato dal client non è necessariamente segreto, dunque un client malintenzionato potrebbe avere fraudolentemente identificato se stesso e mascherarsi da client autorizzato (trusted publisher);
  • Il client presenta l’authorization code insieme al proprio identificativo e il corrispondente client secret al resource owner e riceve indietro un access token. La combinazione di client identifier, client secret e authorization code assicura che quel resource owner possa positivamente identificare il cliente e autorizzarlo. Questo access token può opzionalmente avere vita breve ed essere refreshato dal client.
  • il client usa l’access token per fare richieste fino a quando l’access token non viene revocato (dall’end-user) o scade.

OAuth permette, dunque, anche di revocare da parte di un end-user l’autorizzazione al client.

Continua la lettura

[SemanticWeb] Apache Stanbol: la semantica nei content management systems

Apache Stanbol è un progetto open-source che fornisce uno stack software modulare e un set di componenti riusabili per la gestione semantica dei contenuti.
L’iniziativa è dell’European R&D project IKS (Interactive Knowledge Stack for small to medium CMS providers). La “mission” di IKS è quella di portare le tecnologie semantiche come componenti open-source integrate nei piccoli e medi CMS provider. Infatti, abbiamo applicazioni di tale tecnologia in Alfresco e Liferay.

Apache Stanbol automatizza l’identificazione (detection) delle “named entities” (persone, luoghi e organizzazioni, nonchè link verso risorse esterne, come DBpedia). Il processo di estrazione di queste informazioni (detto di “enhancement“) è ad uno stato abbastanza maturo, infatti le sue caratteristiche di base sono già impiegate dai CMS più utilizzati allo stato attuale (Liferay e Alfresco, come già detto in precedenza).

I componenti di Apache Stanbol sono accessibili tramite interfacce RESTFul e mettono a disposizione servizi semantici per gestire i contenuti. E’ possibile estendere i sistemi tradizionali di content management (CMS) con questi servizi semantici (interni ed esterni). Il core di Stanbol è scritto in Java e si basa sul component framework OSGi.

Le principali caratteristiche di Stanbol sono:

  • Arricchimento semantico dei contenuti: i servizi di Stanbol aggiungono informazioni semantiche a parti di contenuto “non semantico”
  • Reasoning: i servizi sono capaci di ritrovare informazioni semantiche nel contenuto
  • Knowledge Models: i servizi vengono utilizzati per definire e manipolare i data model (ad esempio, le ontologie) che sono usati per memorizzare le informazioni semantiche

Le caratteristiche messe a disposizione da Apache Stanbol sono accessibili, direttamente dai CMS, con interfacce utente avanzate.
La demo online (di base) è disponibile a questo link: http://stanbol.demo.nuxeo.com/

Documentazione di Apache Stanbol: http://incubator.apache.org/stanbol/docs/trunk/index.html

Integrazione di Apache Stanbol con un CMS. Basta connettere il proprio CMS via HTTP ad una istanza di Apache Stanbol, oppure usando un CMS adapter component che faccia da bridge tra un CMIS/JCR compliant content repositories e il repository di metadati semantici presente in Apache Stanbol.

Ecco i vari servizi offerti da Stanbol ai CMS che lo integrano:

  • Basic Content Enhancement: analisi testuale dei contenuti, con estrazione delle named entities (person, place, organization), link suggeriti verso sorgenti open-data
  • Definizione di “local” entities: uso di entità “locali” (come Thesaurus) per rappresentare il contesto di una organizzazione (grazie al suo componente Entityhub). Questo aspetto è particolarmente importante poichè i servizi potrebbero non essere necessariamente esternalizzati su Internet, ma l’organizzazione potrebbe impiegarli nella propria rete aziendale
  • Supporto multilingue: la ricerca testuale del contenuto avviene in più lingue (EN, DE, SV, DA, PT e NL)
  • Ricerca semantica nel Portale: memorizza e indicizza gli item dei contenuti, migliorando la ricerca semantica nell’applicazione
  • Refactoring Enhancements for SEO: “refactor” dei risultati estratti, collegandoli alla propria ontologia
  • Trasformazione della struttura del repository del CMS in vere e proprie ontologie
  • Inserimento di altre repository come thesaurus o ontologie di dominio

Apache Stanbol usa una interfaccia stateless per permettere agli utenti di inviare contenuto agli Enhancement Engines (i motori di cui è composto Stanbol e ottenere risultati (enhancements) in formato RDF (Resource Definition Framework), senza memorizzare nulla sul server.

Inoltre, mette a disposizione un meccanismo per lavorare con vocabolari in linguaggi standard come dataset codificati in SKOS (Simple Knowledge Organization Systems) o RDF. Il componente Entityhub di Stanbol crea e gestisce gli indici estratti da questi dataset e i vari Enhancement Engines li usano durante il processo di “enhancement“.

Gli Enhancement Engines sono diversi e suddivisi in categorie (Preprocessing, Natural Language Processing, Linking Suggestions, PostProcessing/Other):

  • Preprocessing: Language Identification Engine, Tika Engine e Metaxa Engine (effettuano l’identificazione linguistica del contenuto testuale, l’estrazione di testo e metadati da vari formati documentali con Apache Tika)
  • Natural Language Processing: Named Entity Extraction Enhancement Engine (NLP processing con OpenNLP Engine e identificazione di persone, luoghi e organizzazioni), KeywordLinking Engine (NLP processing con OpenNLP, supporto multilingue, identificazione delle occorrenze di entità non tipate, come concetti, tassonomie locali, …)
  • Linking Suggestions: Named Entity Tagging Engine (suggerimenti di link da fonti dette Linked DataSources, come DBpedia), Geonames Enhancement Engine (suggerimento di link usando geonames.org e organizzazione gerarchica dei link per le locations), OpenCalais Enhancement Engine (integra servizi da Open Calais), Zemanta Enhancement Engine (integra i servizi di Zemanta)
  • Postprocessing/Other: CachingDereferencerEngine (deprecato, ma ritrova contenuti addizionali per la presentazione degli enhancement results), Refactor Engine (trasforma i risultati –enhancements– in accordo con l’ontologia target)

Le named entities estratte (persone, luoghi e organizzazioni) sono strutturate secondo un grafo RDF, particolarmente comodo per utilizzare le informazioni all’esterno del motore, per descrivere l’intera repository e ricercare i risultati.

 ————————————————————————

Appuntamento al LIFERAY ROADSHOW a ROMA:

Vi segnalo l’incontro a Roma per il prossimo 11 Giugno 2012: LIFERAY ROADSHOW ROMA, in cui si parlerà dell’ Integrazione di Liferay con la piattaforma Apache Stanbol per la gestione semantica dei contenuti.

DOVE? Università di Tor Vergata
Sala Congressi Facoltà di Ingegneria
Via del Politecnico, 1
00133 Roma

QUANDO? 11 GIUGNO 2012 – ore 14,00 – 17,30

INFORMAZIONI: Per partecipare all’evento, totalmente gratuito, é richiesta la registrazione tramite il portale Liferay. Per maggiori informazioni contattate ufficio.marketing@smc.it

————————————————————————

Articoli utili: