L’incantato del presepe

Tra le statuine del presepio, ce n’è una molto curiosa. La chiamano “il pastore meravigliato” o “l’incantato“.
Rappresenta un fanciullo con le mani vuote, le braccia aperte e il viso che
esprime meraviglia.

Un giorno le statuine del presepio se la presero con l’Incantato perché non
portava nessun dono a Gesù.
Gli dicevano:
“Non hai vergogna? Vieni a Gesù e non gli porti niente?”.

“L’Incantato” non rispondeva: era totalmente assorto nel guardare il Bambino.
I rimproveri si fecero più fitti.

Allora la Madonna intervenne: “Incantato non viene a mani vuote! Non vedete che porta al mio Gesù la sua meraviglia, il suo stupore! L’amore di Dio fatto bambino lo incanta”.

Quando tutti compresero, la Madonna concluse:

“Il mondo è pieno di meraviglie, ma gli uomini hanno perso la meraviglia.
Peccato! Perché è lo stupore che fa crescere il voltaggio dell’anima e la
ingentilisce.

E’ lo stupore che fa crescere giovani!”

Foto di un presepe scattata a Napoli - Dicembre 2012

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/12/29/lincantato-del-presepe/.

[iOs] Il Logging nelle nostre app con le Preprocessor Macros

Prima di un rilasciare una app iOS su Apple Store, è buona prassi fare un pò di pulizia dei log sparsi nel codice. Molti sviluppatori, infatti, sono restii all’utilizzo del debug e preferiscono utilizzare, man mano che sviluppano, la classe NSLog e farsi stampare gli output sulla console. Dunque, i nostri progetti rimangono pieni di NSLog che, tuttavia, è meglio non rilasciare sulle app in esercizio. Il motivo è dovuto al fatto che la scrittura dei log è onerosa e potrebbe ridurre le performance della nostra app. Inoltre, anche se la console del device è nascosta all’utente, potremmo dimenticare di loggare informazioni sensibili … e ciò è “no buono”.

Ho letto un pò di articoli a riguardo, tra cui i seguenti:

Ecco la procedura che ho seguito, utilizzando le Preprocessor Macros. L’idea è quella di inserire un flag (-DDEBUG) nella configurazione di DEBUG del nostro progetto e importare nelle nostre classi un log “custom” (DLog oppure ALog).

  • Per prima cosa, inserite un file Log.h nel vostro progetto con il seguente contenuto:
#ifdef DDEBUG

#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

#else

#   define DLog(...)

#endif

// ALog always displays output regardless of the DEBUG setting

#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
  •  Poi spostatevi nella configurazione del vostro progetto (click sulla root di progetto, selezionate Targets e poi spostatevi nella scheda Builds Settings). Qui, cercate la voce “Other C Flags” e inserite il flag -DDEBUG in corrispondenza della configurazione di DEBUG.

  • NOTA. Il punto precedente non è necessario se in Log.h si va a controllare il valore del flag nativo DEBUG (che è true se siamo in ambiente di debug, false quando si è in modalità Release/Ad Hoc), anzichè DDEBUG (che è una nostra variabile “custom”)
    #ifdef DEBUG
  • Importate l’interfaccia Log.h nel file di progetto <YourApp>_Prefix.pch, in modo da rendere visibile la macro in tutte le classi (senza importare esplicitamente la macro ogni volta). Nel mio caso, ecco il contenuto del .pch:
#import <Availability.h>
#import "Log.h"

#ifndef __IPHONE_5_0
#endif

#ifdef __OBJC__
	#import <UIKit/UIKit.h>
	#import <Foundation/Foundation.h>
#endif
  • Infine, potete utilizzare i log “custom” normalmente come fareste con NSLog, come segue:
 DLog(@"Logging %d con %@",1, @"DLog");
 ALog(@"Logging %d con %@",2, @"ALog");

Eccovi l’output di esempio delle precedenti righe di log:

2012-12-25 15:03:16.276 MyApp [4451:907] -[AppDelegate application:didFinishLaunchingWithOptions:] [Line 33] Logging 1 con DLog
2012-12-25 15:03:16.281 MyApp [4451:907] -[AppDelegate application:didFinishLaunchingWithOptions:] [Line 34] Logging 2 con ALog

DLog e ALog, per come sono stati configurati nel Log.h, stampano anche il nome della classe, il metodo e la riga di codice in cui si trovano. ALog stampa anche se non siamo in DEBUG (quindi, come NSLog, loggherebbe anche quando abbiamo rilasciato l’app su Apple Store o con una distribuzione “ad hoc”).

Quindi, lanciando la vostra app in DEBUG (sia sul Simulatore che sul device) vi troverete i log stampati sulla console. In Release (sia su App Store che su una distribuzione “ad hoc” dell’IPA) non verrà loggato nulla sul device dell’utente, se avete utilizzato DLog (e non ALog oppure NSLog).

I webinar di Dati.gov.it: due nuovi seminari online sui dati aperti

I webinar di Dati.gov.it: due nuovi seminari online sui dati aperti

Pubblicato il: Ven, 07/12/2012 – 18:15 su DataGov.it – (LINK)

Chiudiamo questo primo anno solare di attività con due nuovi webinar dedicati, come sempre, ai temi dell’open government e i dati governativi aperti. Nelle prossime due settimane avremo modo di approfondire: i formati più evoluti con cui le PA possono rilanciare il loto patrimonio informativo aperto; e quali saranno gli obblighi normativi a cui gli enti pubblici dovranno rispondere dal 1 gennaio 2013 in tema di trasparenza e opendata.

Come di consueto i seminari si svolgeranno di giovedì dalle 12.00 alle 13.30, sono gratuiti e aperti a tutti (fino ad esaurimento posti) e –  a seguito di ogni webinar – i materiali e le registrazioni saranno rese disponibili su Innovatori PA – Gruppo Dati aperti. Di seguito il programma dei prossimi due webinar:

  • 13/12/2012 – Linked open data nella pubblica amministrazione. Uno degli aspetti più importanti della pubblicazione dei dati aperti da parte di una PA risiede proprio nella qualità del dati, finalizzata soprattutto a rendere quegli stessi “appetibili” per un riutilizzo creativo da parte degli sviluppatori. Nel corso del seminario online vedremo quali sono le caratteristiche principali dei LOD e come una ente pubblico può organizzarsi per esporre i propri dati in formato linked.  Relatori: Silvia Mazzini (Regesta.exe) Ginaluca Vannuccini (Comune di Firenze)
  • 20/12/2013 –  Nuovi obblighi per la PA in tema di trasparenza e open data. Seminario on line si concentra sui nuovi obblighi di trasparenza e di pubblicazione dei dati della PA in vista dell’approvazione del decreto Crescita2.0, delle modifiche introdotte sul CAD e, contestualmente, approfondisce da un punto di vista operativo come gli enti pubblici possano intervenire per adeguarsi. Relatori: Ernesto Bellisario (Associazione Italiana per l’Open Government ) e Roberto Scano (IWA)

Iscriversi ai webinar

L’iscrizione ad uno o più webinar può essere effettuata compilando questo modulo online. Trenta minuti prima dell’orario di inizio verrà inviata un’email a tutti gli iscritti con le istruzioni per accedere al Webinar.

Come si partecipa

I Webinar si svolgono su una piattaforma per la formazione a distanza che permette la comunicazione in modalità sincrona, l’interazione tramite chat, la condivisione di documenti, la visualizzazione di slide.
Per partecipare è necessario disporre di un collegamento a Internet, un browser (Internet Explorer, Firefox o altro), una versione aggiornata di Adobe Flash Player e una cuffia. Per verificare che il proprio computer sia correttamente configurato per il collegamento alla piattaforma di collaborazione a distanza, prima del Webinar è possibile eseguire un rapido test di connessione. In caso di esito negativo della verifica, vengono fornite delle semplici istruzioni per risolvere gli eventuali problemi riscontrati.

Per informazioni

È possibile richiedere maggiori informazioni riguardo ai webinar sull’open data attraverso il form Scrivi alla redazione.

Il Tag Cloud: dai blog al Big Data

Ultimamente si parla molto del tag cloud (o word cloud), uno strumento che sta diventando particolarmente utile nell’ambito della data analysis. Basta guardare il grande successo di Expert Systems, nell’ambito appunto dell’analisi semantica di varie fonti online (Expert Systems Rassegna Stampa). Ma il tag cloud c’è da un bel po’: nei blog, per esempio, esiste dalla notte dei tempi, e nell’era del Big Data e dell’Internet of Things ha acquisito la sua giusta notorietà, visto come uno strumento utile per filtrare un bel po’ di informazioni e concetti sulla miriade di contenuti sparsi in rete.

Il Tag Cloud non è altro che una rappresentazione visiva di concetti, detti keyword metadata (tags), ricercati su fonti online e visualizzati sotto forma di testo semplice. I tag sono solitamente parole singole e l’importanza di ognuno di essi è mostrata con un font di dimensione diffente e/o uno specifico colore. Avere una rappresentazione “a nuvola” ci aiuta ad estrapolare meglio i concetti del dominio di analisi e a navigarlo (magari associando ai singoli tag anche dei link ipertestuali agli articoli/fonti da cui sono stati estratti).

Solitamente i tag cloud si basano sul concetto di “frequency“, ossia associano a ciascun tag una frequenza, il numero di volte in cui quel tag è stato “rintracciato” in un singolo item (articolo, pagina web o fonte) e, dunque, sulla “popularity” di quel concetto sulla rete.
Esiste anche un modo per “categorizzare” i tag, con i cosiddetti tag cluster (clustering): i tag che si riferiscono allo stesso contesto (categoria o tassonomia) possono essere classificati in “sotto-nuvole”, dette appunto cluster. La categorizzazione avviene spesso applicando algoritmi di similarità semantica (Natural Language Processing) o statistici.

Sui blog, questa categorizzazione di informazioni viene generata dagli utenti mediante l’utilizzo di parole chiave (o tag) scelte liberamente, e si parla di Folksonomie. Vi invito a leggere l’interessante articolo: “Folksonomy: questione di semantica“.

Vi riporto ora delle librerie che ho studiato e utilizzato per la realizzazione di una tag cloud:

 

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/12/06/il-tag-cloud-dai-blog-al-big-data/.

[iOS] Apps that are not very useful – Guidelines reject (2.12 – App Store Review)

Il più frustrante punto di violazione delle Apple Store Review Guidelines (tradotte anche su questo blog al Luglio 2012) è il seguente:

2.12. Apps that are not very useful, unique, are simply web sites bundled as Apps, or do not provide any lasting entertainment value may be rejected

Solitamente la motivazione che viene riportata, dal team di review di Apple nella mail di risposta, è la seguente:

2.12

We found that your app only provides a very limited set of features. While we value simplicity, we consider simplicity to be uncomplicated – not limited in features and functionality

We understand that there are no hard and fast rules to define useful or entertaining, but Apple and Apple customers expect apps to provide a really great user experience. Apps should provide valuable utility or entertainment, draw people in by offering compelling capabilities or content, or enable people to do something they couldn’t do before or in a way they couldn’t do it before.

We encourage you to review your app concept and evaluate whether you can incorporate additional content and features to be in compliance with the Guidelines. For information on the basics of creating great apps, watch the video The Ingredients of Great Apps. If you feel we didn’t understand the features of your app, or that we missed key functionality, and your app was incorrectly rejected, you may appeal to the  App Review Board.

 

Definire questo punto “frustrante” è dir poco, visto che non è una “bocciatura” a cui si può mettere una “pezza” (tecnicamente parlando). Apple ci fa semplicemente capire che la nostra app non serve a nulla o è troppo semplice, dove la linea di “confine” per definire il concetto di semplicità – spiega Apple – non è definibile con regole rigide.

Come si risolve?

Potrei scrivere qui dei suggerimenti, ma dipende dalla vostra app e dall’utilità che offre, visto che ad Apple “sta a cuore” che sia utile e trasmetta agli utenti una “grandiosa esperienza”. La vostra app deve dimostrare che ci sia un lavoro “complesso” dietro: in poche parole, una app con poche funzionalità e con una grafica poco curata, ha bassa probabilità di superare la review.

Arricchitela con maggiori funzionalità: magari una galleria fotografica e video (vedi Three20), più tabelle con contenuti magari scaricati da un server (vedi chiamate asincrone su iOS). Per la parte grafica, rispettate le risoluzioni delle immagini per ciascun device (vedi Custom Icon & Image Creation Guidelines) e le iOS Human Interface Guidelines.

Ecco altro materiale, suggerito da Apple, e che vi consiglio di vedere:

 

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/12/03/apple-review/.