iOS7: impressioni dopo 48h

apple-unveils-ios-7-1
Post veloce che non vuole raccontare per l’ennesima volta quali sono le novità di iOS7, per saperle leggete le recensioni su iSpazio: loro sono molto più precisi e bravi di me.
Scopo di questo post è raccontare le prime impressioni di utilizzo di iOS7.
Questa volta ho aspettato! E ho installato la versione definitiva del nuovo SO di Apple, saltando le fasi beta e GM.
E dopo 48 ore di utilizzo ecco le prime impressioni.

Aspetto grafico
Lo stacco con la precedente è netto. Cambio di stile. Può piacere o non piacere (a me piace) ma è praticamente la prima volta che Apple ridisegna completamente la grafica di iOS. Sempre più uniformata al mondo Windows Mobile, di primo acchito ci si trova un po’ a disagio con le nuove icone. Dopo qualche ora di utilizzo ci si sente a casa.

Control Center e Notification Center
Finalmente anche iOS ha un centro di controllo raggiungibile velocemente che contiene un set di funzionalità utili. Non si comporta esattamente come vorrei, ma non mi dispiace. Inutile il controllo per la musica.
Il notification center è “carino”: avrei preferito la possibilità di personalizzare i widget, mentre questa opzione è limitatissima. Probabilmente preferivo quello della vecchia versione.

Durata della batteria
Con tutte le funzioni che si abilitano di default è praticamente dimezzata. Se si vuole “giocherellare” un po’ con le nuove funzionalità di iOS, vale la pena tenere attiva la possibilità di aggiornamento dei dati, da parte delle applicazioni. Finito il periodo di gioco (a me non è ancora successo 🙂 ) penso si possa disattivare questa funzione che, francamente, consuma batteria senza dare in cambio grossi vantaggi.
A questo link è possibile trovare maggiori informazioni.

Siri
Interfaccia grafica a parte, che secondo me è peggiorata, il motore di Siri è nettamente migliorato. Anche collegato al sistema vivavoce della macchina è un valido aiuto per ascoltare, inviare SMS e email. Oggi anche l’Italiano è ben supportato e non si ha più la spiacevole sensazione di parlare con uno strumento programmato per prenderti in giro e non per aiutarti.

Maps
Mi sembra generalmente migliorato. Sto provando ad utilizzarlo come navigatore per vedere come si comporta.

Multitasking
Finalmente ci siamo riusciti: ci abbiamo messo un po’ ad accorgercene ma alla fine ci siamo persuasi (quelli di Cupertino in modo particolare) che il multitasking dei vecchi sistemi operativi era una roba inutilizzabile.
Scopiazzando da Windows e da Android anche iOS ha una cosa decente e degna di essere chiamata multitasking. Sono servite 7 major version di sistema operativo ma ci siamo riusciti.

Mail
Secondo me è incredibilmente migliorato. Non fa cose spettacolari, ma permette di gestire la propria posta elettronica in maniera comoda.

In generale….
A parte qualche baco, anche serio, ed altri che presumibilmente verranno scoperti mi piace.
Rispetto alle altre versioni è stato stravolto per cui bisogna farci un po’ di abitudine.

iPhone 5 fra polemiche e prove sul campo


Vorrei provare a scrivere un articolo che non sfoci in polemica, vorrei provare a direi veramente quali sono state le impressioni d’uso di iPhone 5, dopo una settimana dall’acquisto.

Siamo tecnici, lasciamo perdere i campanilismi e vediamo veramente la parte tecnologica della novità, tutto il resto lasciamolo a chi non ha altri argomenti.

Look & Feel

Lo spessore diminuito, la scocca in alluminio e il pollice in più di schermo, si fanno sentire. La consultazione del calendario è più agevole e tutto sembra che abbia acquistato più spazio, anche se non è così.

Il peso è notevolmente diminuito. Il telefono, una volta fuori dalla scatola, va messo in una custodia: il retro in alluminio da l’impressione di essere delicatissimo e di graffiarsi al solo contatto della tela dei jeans.

Processore
E’ il piattoforte! Tutto risulta terribilmente veloce e fluido. Di studio ne hanno fatto. Usato in maniera pesante fa crollare terribilmente la durata della batteria.

Mappe
C’è spazio per il miglioramento. Il posizionamento sulla mappa è impreciso, capita facilmente di essere in strada e trovarsi mappati all’interno di edifici. In centri piccoli come il mio, il grado di immaturità delle mappe si fa sentire.
Buona la navigazione turn-by-turn, sostituisce di fatto i vari navigatori.
La visualizzazione in 3D, nelle zone appositamente mappate, è uno spettacolo. Il processore da il meglio di se stesso. Con l’inevitabile conseguenza di vedere drasticamente ridotta l’autonomia della batteria ed incredibilmente aumentato il consumo di traffico dati.

Integrazione con Google
Apple e Google devono aver litigato! Se l’account email è configurato come Google nativo, spariscono completamente le notifiche push sull’arrivo delle email.
Tra le opzioni di recupero delle email, sparisce completamente il recupero in modalità fetch per questo tipo di account!
Soluzione: configurare l’account Google in modalità Microsoft Exchange ed abilitare le notifiche nel centro di controllo.
Come se non bastasse, per qualche giorno i miei google calendar non erano disponibili sul telefono. In questi giorni sono misteriosamente ricomparsi.
C’è sicuramente bisogno di un patch.

Fotocamera
Buona la possibilità di fare foto con scarsità di luce. Non sono ancora riuscito a riprodurre il fenomeno degli aloni viola. Viste le dimensioni dell’obiettivo, non escludo che la cosa possa essere riscontrabile, come poteva del resto esserlo sugli altri telefoni della Apple (e su molti altri).
La qualità fotografica è generalmente migliorata.

Siri
E’ un bel giocattolo. Si intravede la possibilità di fare delle cose interessanti. Scrivere appuntamenti e aggiungere promemoria quando si guida è decisamente comodo. Dettare SMS e email non è così semplice, con un po’ di impegno ci si riesce.

ios-static-libraries: librerie crittografiche pronte all’uso

Stanchi di cercare online le versioni di:

per i vostri progetti sugli iDevices per poi doverveli compilare? ios-static-libraries è il progetto che fa per voi. O meglio questo è il progetto che ha fatto per me 🙂

Il progetto fornisce:

  • uno script per la compilazione delle librerie citate
  • i binari delle stesse librerie pronti per essere utilizzati nei propri progetti

Consumare webservice in ObjectiveC

Scrivendo applicativi per mobile può succedere facilmente di dover accedere a webservice. Nativamente iOS non mette a disposizione primitive ad alto livello per farlo, ma ci sono una serie di librerie sviluppate da terze parti che permettono di utilizzarli senza nessun problema.

Le primitive messe a disposizione dalla Apple sono un po’ troppo a basso livello, sulla rete ci sono molti progetti che le usano per scrivere librerie che permettano allo sviluppatore di accedere ai dati in maniera molto più semplice.

Lo scenario classico è questo: dobbiamo accedere ad un servizio mediante http(s). Il formato di ritorno è un JSON opportunamente formattato.

Per l’esempio possiamo usare i dati prodotti da quest’altro post nel quale si parlava di come fare chiamate REST in PHP.

Iniziamo facendo la chiamata al webservice. Sia che debba fare una chiamata REST, o che ne debba fare una classica passando parametri in GET o POST, normalmente al progetto aggiungo la libreria ASIHTTPRequest che, come dice il nome, permette di fare richieste in HTTP.
A differenza delle primitive messe a disposizione da ObjectiveC, ASIHTTPRequest ne implementa altre a livello più alto che rendono molto più semplice fare request in HTTP.

Tornando al nostro esempio: questa è la chiamata che dobbiamo fare:

1
http://webservices.corradoignoti.it/nomeservizio/showAllArticles

Ammettendo che la risposta sia di solo testo (nel nostro caso è un JSON) e che la velocità di download sia tale da permettere l’esecuzione della request in foreground, questa lo stralcio di codice da usare:

1
2
3
4
5
6
7
8
9
10
- (IBAction)getStringFromURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://webservices.corradoignoti.it/nomeservizio/showAllArticles"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
}
}

Se non si sono verificati errori, alla fine delle chiamata la variabile response conterrà il JSON di risposta del server.
E’ possibile eseguire la stessa chiamata ma in background, utilizzando questo codice:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (IBAction)getStringInBackgroundFromURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://webservices.corradoignoti.it/nomeservizio/showAllArticles"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
NSString *responseString = [request responseString];
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}

La documentazione di ASIHTTPRequest può essere recupera sul sito della libreria, nella sezine “How to use

In entrambi i casi responseString conterrà il JSON di risposta del servizio, per esempio questo:

1
2
3
4
5
6
7
{
"id": "3",
"type_id": "1",
"protocollo": "26137",
"oggetto": "Bando affidamento fornitura carburanti.",
"testo": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper     suscipit lobortis nisl ut aliquip ex ea commodo consequat."
}

Anche per questo compito ci sono mille soluzioni. Nel caso di Tweetee, per fare il parse delle risposte di Twitter, ho optato per json-framework. Libreria molto snella, che permette di accedere alle informazioni contenute in JSON come se si trattasse di dizionari di Objective-C.

Che si traduce in qualcosa di simile a questo:

1
2
3
4
5
6
7
8
9
10
- (NSDictionary *) parseJSONData:(NSData *)data {

SBJSON *jsonParser = [SBJSON new];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSDictionary *dict = (NSDictionary*)[jsonParser objectWithString:jsonString];
[jsonString release];
[jsonParser release];

NSString *testo = [dict objectForKey:@"testo"]
}

iPad 2 per sviluppatori


Come tutti saprete, Apple da oggi vende l’iPad 2 anche in Italia. L’unica cosa che rimane da scoprire è la sensazione che si avrà nell’avere questo nuovo giocattolo fra le mani, per il resto della mirabiglia di Apple ormai sappiamo tutto.

Provo a riassumere le principali caratteristiche interessanti per chi sviluppa per iOS:

  • Aggiunto un giroscopio
  • Le prestazioni del device sono migliorate grazie al nuovo processore A5
  • Aggiunte 2 fotocamere: una davanti e una dietro
  • Aggiunta la possibilità trasmettere vi HDMI l’output video

Le applicazioni scritte per iPad sono totalmente compatibili anche per iPad 2, senza doverle ricompilare. L’aggiunta del gioroscopio e del nuovo processore, fanno del nuovo iPad 2 una bel device sul quale sviluppare giochi.

iOS 4.1 e HDR

Sembra che in questa versione di iPhone e di iOS, Apple, abbia voluto strizzare l’occhio agli appassionati di fotografia e di videomaking.

L’aggiunta della camera a 5 Megapixel (era ora, direi) unita alla possibilità di fare filmati, sono stati un primo passo.

First Commercial Shot on iPhone 4 from FLF Films on Vimeo.

Questo filmato è stato realizzato interamente utilizzando un iPhone 4. Ma gli esempi di questo genere si sprecano.
Nella versione nuova del iOS, la 4.1 è spuntata la possibilità di fare foto in HDR. Il software del melafonino cura tutto: scatta le canoniche 3 fotografie, crea la versione HDR della foto e ne fa il color mapping, mostra quindi la fotografia come se fosse una “normale”.

Da “fotografo” non sono totalmente convinto della scelta, da informatico dico….. figata! Non ho ancora installato la nuova versione dell’iOS sul mio iPhone 4, ma ho visto alcune foto postate dai miei amici: il risultato è sicuramente gradevole. Le fotografie, naturalmente, vengono bene quando c’è tanta luce: in caso di luce scarsa i tempo di esposizione si allungano, rischiamo di muovere la mano e di rendere impossibile il lavoro dell’algoritmo che sovrappone le immagini.

Lo scopo di aggiungere questa opzione, non è sicuramente quello ottenere fotografie surreali come siamo abituati a vedere quando si parla di HDR. Ma è quello di ottenere fotografie correttamente esposte anche in condizioni di luce particolare.

Fatto sto che il risultato si concretizza in immagini correttamente esposte in tutte le parti del fotogramma.

#iPhone 4: impressioni dopo un mese di utilizzo


Nemmeno io ho saputo cedere alla tentazione e, qualche giorno fa, sono finito in un negozio 3 per acquistare il nuovo giocattolino della Apple….. il mitico iPhone 4!

La cosa è nata in modo del tutto casuale: un mio collega che vuole comprarlo, io che vado con lui in negozio per vedere da vicino questo famigerato oggetto del desiderio… io che esco con lo scatolino dell’iPhone 4.

Inutile dire che la scatola è assolutamente ed incredibilmente curata in ogni particolare, tutto è disposto con una cura maniacale.

Aperta la scatola ci si trova: un carica batterie, dalla forma molto meno ingombrante rispetto al precedente, il cavo per connettere il telefono al computer e le cuffie auricolari.

Attesa circa un’ora, il tempo necessario ad aspettare che il mio operatore trasferisse il mio account da una SIM standard a quella micro utilizzata dal nuovo device, ero pronto ad utilizzare il nuovo giocattolo.

Il passaggio dei dati dal vecchio telefono a quello nuovo è stato indolore iTunes ha fatto il suo dovere in maniera egregia.

Il nuovo retina display è entusiasmante: la definizione è spettacolare.

La velocità di reazione del nuovo iPhone impressiona favorevolmente, il passaggio fra le varie schermate e fra i vari applicativi è fluido e veloce al punto giusto.

Un po’ più difficile da digerire la gestione del multitasking: alla fine ti ritrovi con una babele di applicazioni che sembrano aperte ma che in realtà non consumano memoria, in mezzo ad altrettante che invece eseguono dei task in background attingendo, quindi, dalle risorse di sistema. Alla fine della giornata ti ritrovi a passare un po’ di tempi a chiudere tutte le applicazioni che hai usato.
Comoda, comunque, la possibilità di avere client come Nimbuzz in background: dopo qualche giorno mandare SMS sembra una cosa che appartiene al passato!

Personalmente consiglio di chiudere il proprio iPhone in una custodia: io ho scelto questa, la versione trasparente è proprio bella e non sembra nemmeno di averla. D’altronde il cellulare sembra molto più delicato del suo predecessore.

La durata della batteria è soddisfacente: io uso molto il telefono per navigare e controllare la posta, in macchina lo uso per ascoltarci musica o le radio in streaming. Ho sempre i client di skype e nimbuzz in background e la batteria dura tranquillamente un giorno e mezzo.

Sono mancino e anche prima di aver messo la custodia al telefono non ho mai avuto problemi di ricezione, la “presa della morte” non sono riuscito a riprodurla.

Cosa dire… non posso che essere soddisfatto del mio nuovo acquisto!!

#iPad: fu vera gloria…. ai post l’ardua sentenza


Ok, ok il titolo del post è scandaloso, ma penso che contenga un po’ di verità.

Grazie ad un amico, sono riuscito a provare per un paio di giornate una delle nuove tavolette della Apple: l’attesissimo iPad.

Come ogni creazione della casa di Cupertino, il look del device è assolutamente curato, nulla è lasciato al caso. Una volta accesso la prima impressione è di avere per le mani uno strumento performante, l’iPhoneOS è stato perfettamente adattato al nuovo prodotto.

Se siete abituati ad usare l’iPhone, anche con l’iPad vi sentirete a casa: sembra di usare un melafonino con uno schermo molto, molto grosso.

Ottima la durata della batteria: si sa che si quando si ha un giocattolo nuovo lo si usa molto. L’utilizzo poi aumenta a dismisura se il novo giochino tecnologico, viene mostrato ad un’intera compagnia di informatici e di tecnologo-dipendenti. Nel caso dell’iPad le batterie si sono scaricate veramente poco e hanno tenuto “botta”.

Le applicazioni scritte per iPhone “stonano” su uno schermo così grosso, quello ottimizzate per iPad sono veramente belle. Vedere i videopodcast è uno spettacolo, sembra di guardarli su un televisore portatile. L’audio non è per niente male.

La tastiera che compare sullo schermo è delle giuste dimensioni, ancora meglio se si usa il device in landscape.

La versione che ho provato era dotata di sola connettività WiFi, facile l’associazione del dispositivo a qualsiasi access-point, si sente però la mancanza del supporto 3G.

A questo punto viene da chiedersi: a cosa serve tutto ciò? iPad potrebbe essere utilizzato in casa al posto di un computer domestico (per guardare le proprie foto, ascoltare musica, navigare su internet, scrivere e leggere messaggi di posta elettronica). Ma nel mondo business? Il device è troppo grosso per essere utilizzato come telefono (!) e troppo limitato per essere utilizzato come sostituto di un PC. Manca, ad esempio, la possibilità di attaccarlo ad un dispositivo video esterno e nel caso di presentazioni questa è sicuramente una grave mancanza. Personalmente penso che anche l’assenza del supporto per Flash sia una pecca non trascurabile.

Vista la stabilità del prodotto e il suo design penso si possa utilizzare in maniera proficua in molti progetti specifici, ma penso che questo sia un po’ lontano dall’idea di mass-marketing che sta dietro alla vendita dell’iPad. Sono anche conscio del fatto, però, che se all’epoca del lancio dell’iPod avessi scritto un post sul quel dispositivo avrei detto la stessa cosa: <<bello, ma difficilmente impiegabile nella vita di tutti i giorni>>. Con il “senno di poi” mi sarei accorto di aver scritto una grande cretinata!

E allora….. “fu vera gloria…. ai post l’ardua sentenza” 🙂

iPhone e Flash

Attraverso un post sul sito della Apple, Jobs scrive le sue motivazioni per le quali Flash non deve approdare sull’iPhone.

Lo scritto conferma la mia sensazione che i comunicati stampa ufficiali della Apple non corrispondano a verità, nel senso che le cause che hanno portato la casa di Cupertino a prendere questa decisione, non sono (sempre secondo me) quelle scritte nei documenti ufficiali rilasciati dagli uffici stampa.

Cito (senza tradurle) direttamente dal sito Apple alcune frasi che, secondo me, non hanno proprio senso:

“First, there’s “Open”.

Adobe’s Flash products are 100% proprietary. They are only available from Adobe, and Adobe has sole authority as to their future enhancement, pricing, etc.”

Il Signore di prodotti “chiusi” dice che Flash non può andare su iPhone perché proprietario? Infatti tutti sappiamo che ci sono migliaia di siti dai quali è possibile scaricare il codice sorgente di iPhoneOS 🙂

“Third, there’s reliability, security and performance.

Symantec recently highlighted Flash for having one of the worst security records in 2009. We also know first hand that Flash is the number one reason Macs crash

Quindi… cosa facciamo, togliamo il supporto per flash anche dal Mac? No, perché se parliamo di applicativi che mandano in crash i sistemi operativi di casa Apple, dovremmo provare a parlare di ‘Finder’ che non mi sembra un esempio di stabilità!

Alla fine il motivo che sta alla base di questa diatriba e che mi sembra più plausibile è quello contenuto nella ‘Sesta ragione’:

“We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform. […] Flash is a cross platform development tool. It is not Adobe’s goal to help developers write the best iPhone, iPod and iPad apps. It is their goal to help developers write cross platform apps. And Adobe has been painfully slow to adopt enhancements to Apple’s platforms. For example, although Mac OS X has been shipping for almost 10 years now, Adobe just adopted it fully (Cocoa) two weeks ago when they shipped CS5. Adobe was the last major third party developer to fully adopt Mac OS X.”

Ovvero… se scrivi software multi piattaforma utilizzando una macchina virtuale, scrivi qualcosa che inevitabilmente va piano (e su questo posso essere abbastanza d’accordo). Ma Jobs afferma che Adobe non ha fra i suoi obiettivi quello di fare scrivere ai propri sviluppatori del buon software per iPhone. Tant’è vero che Adobe stessa ha scritto codice “pure” per Mac OS X 2 settimane fa, quando ha rilasciato la CS5, dopo aver passato 10 anni a distribuire codice multi piattaforma….. Sembra tanto l’atto stizzito di un bambino che si accorge che i suoi simili non vogliono giocare con le sue macchinine…..

Ancora una volta…. su 600 Euro di telefono, posso decidere cosa cavolo fare girare?

Come dire… alla base di tutta questa operazione ci deve essere qualcosa di diverso….. forse del gianduia?? 🙂


Il multitasking dell’iPhoneOS 4

Una delle funzionalità che più attendevo nel nuovo sistema operativo per melafonino era proprio il multitasking.

Arrivati al 21° secolo era abbastanza ridicolo che un telefono con quelle caratteristiche potesse eseguire un solo applicativo per volta, con l’aggiunta che, ogni volta che l’applicativo veniva chiuso per qualsiasi motivo, se ne perdeva completamente il contesto e si doveva ripartire da capo in quello che si stava facendo. Gli smartphone che usano Symbian come sistema operativo, mettono a disposizione un supporto per il multitasking molto simile a quello presente nei sistemi operativi per PC/server. Pregi: qualsiasi applicativo può essere messo in background. Difetti: visto la limitatezza delle risorse raggiunto un certo numero di task in funzione in background il telefono diventa lento e finita la memoria va in crash!
Chiaramente Apple non può permettersi malfunzionamenti sul proprio telefono, per questo motivo nelle prime versioni del sistema operativo per iPhone veniva disabilitata la possibilità di mandare processi in background.

L’avvento della versione 4.0 di iPhoneOS introduce molte novità, fra le quali il multitasking: chiaramente la tecnica utilizzata non consiste nel mettere in background l’intero applicativo, ma permettere che una parte di esso continui a funzionare. Apple mette a disposizione degli sviluppatori 7 funzioni che permettono di mettere in background alcuni elementi dell’applicazione. In particolare:

  1. audio – potremo ascoltare la musica mentre facciamo qualche altra attività sul nostro telefono
  2. VoIP – programmi come Skype o simili potranno rimanere collegati mentre non sono in primo piano. Questo significa che potranno continuare a ricevere messaggi e chiamate anche se la loro interfaccia non sarà in foreground.
  3. location – per mandare il processo di lettura del GPS in background
  4. push notificiation – ovvero la possibilità del telefono di fare “pop” delle notifiche dai server della Apple.
  5. local push notification – ovvero, a differenza di quanto accade fino alla versione 3.x dell’OS, il telefono potrà connettersi a server fornitori di servizi push, diversi da quello di Apple (finalmente!!)
  6. task completion – l’iPhoneOS lascia agli applicativi il tempo di completare l’ultimo task che stanno eseguendo prima di chiuderli. Esempio se stata facendo l’upload di una fotografia su flickr, attualmente con la versione 3.x dell’OS l’upload verrebbe interrotto, con la nuova versione, l’applicativo, potrà concludere l’upload prima di uscire.
  7. fast app switchng – ovvero la possibilità di passare da un applicativo ad un altro, salvando il context di quello che si sta chiudendo.

A detta di Apple questa implementazione del multitasking dovrebbe garantire un uso delle batterie tale da non pregiudicarne troppo la durata.

Personalmente trovo interessante questo modo di implementare il multitasking, sicuramente le funzionalità di task completion e fast app switching mi mancavano: dover aspettare che il telefonino finisse di “lavorare” prima di metterlo in tasca mi faceva un po’ ridire. Personalmente non ho mai creduto troppo nelle push notification centralizzate, il più delle volte non funzionavano: spesso i messaggi di facebook mi arrivano prima per posta elettronica.

A conti fatti le 7 API (sembra di parlare dei 7 fratelli 🙂 ) possono, se usate congiuntamente ad un proprio server di appoggio, ampliare molto il ventaglio di possibilità per lo sviluppatore.

Chiaramente dovremo modificare le nostre applicazioni per aggiungere il supporto al multitasking.

Unico mi rammarico: l’iPhoneOS 4 non abiliterà il multitasking sugli iPhone 3G. Ammetto che la cosa non mi stupisce molto, l’hardware del 3G è abbastanza limitato.