MonoTouch ha delle caratteristiche che lo differenziano rispetto agli altri framework per lo sviluppo su iPhone / iPad: vediamo quali sono, che vantaggi ci possono dare e in che modo possono rivelarsi più divertenti :), in particolar modo nell'ambito delle applicazioni LOB (Line of Business).
Anche se MonoTouch non è direttamente cross-platform, cercheremo inoltre di dare uno sguardo a come organizzare i nostri progetti in modo tale da farli girare anche su altri device, in particolare Android, Windows Phone 7, e perché no, desktop e netbook, col minor sforzo possibile.
Lo scorso anno abbiamo iniziato ad esplorare MonoTouch come strumento per lo sviluppo di applicazioni Line of Business (LOB) su iPad ed iPhone, tenendo in particolare considerazione la possibilità di far girare gran parte del codice, in particolare la logica di business, su altre piattaforme (mobile, ma anche desktop e server).
Ad un anno di distanza possiamo fare un resoconto dell'esperienza (ancora in corso) avuta con questo tool, vedendo alcune ricette pratiche che consentano di utilizzarlo in modo più efficiente e discutendo insieme su quando ha effettivamente senso sceglierlo, evitarlo o addirittura affiancarlo rispetto ad altri strumenti e tecnologie, tra cui ovviamente quelli basati su HTML5.
Introduzione ad Android del 14.10.2015 per la settimana della programmazione #codeweek2015.
La presentazione descrive il percorso migliore per iniziare lo sviluppo Android. Presentato anche Android Studio, l'IDE ufficiale della piattaforma. Consigli sulle librerie da utilizzare
Creffields supplies fire proofed timber boards and plywood, these fire retardant boards are used in film studios, conferences and many other areas that require fire retardant licenses.
Ecco le slide di Davide Cini di Linkness, per il laboratorio di Sive Formazione. Si parla di PC, tablet e smartphone, di come dall'acquisto di moda sia possibile passare all'utilizzo vantaggioso e al pieno sfruttamento delle potenzialità di questi strumenti, accessori tecnologici non solo legati ad un trend momentaneo, ma in grado di semplificarci la vita, anche professionale, organizzare e rendere più efficiente il nostro tempo.
Lo scorso anno abbiamo iniziato ad esplorare MonoTouch come strumento per lo sviluppo di applicazioni Line of Business (LOB) su iPad ed iPhone, tenendo in particolare considerazione la possibilità di far girare gran parte del codice, in particolare la logica di business, su altre piattaforme (mobile, ma anche desktop e server).
Ad un anno di distanza possiamo fare un resoconto dell'esperienza (ancora in corso) avuta con questo tool, vedendo alcune ricette pratiche che consentano di utilizzarlo in modo più efficiente e discutendo insieme su quando ha effettivamente senso sceglierlo, evitarlo o addirittura affiancarlo rispetto ad altri strumenti e tecnologie, tra cui ovviamente quelli basati su HTML5.
Introduzione ad Android del 14.10.2015 per la settimana della programmazione #codeweek2015.
La presentazione descrive il percorso migliore per iniziare lo sviluppo Android. Presentato anche Android Studio, l'IDE ufficiale della piattaforma. Consigli sulle librerie da utilizzare
Creffields supplies fire proofed timber boards and plywood, these fire retardant boards are used in film studios, conferences and many other areas that require fire retardant licenses.
Ecco le slide di Davide Cini di Linkness, per il laboratorio di Sive Formazione. Si parla di PC, tablet e smartphone, di come dall'acquisto di moda sia possibile passare all'utilizzo vantaggioso e al pieno sfruttamento delle potenzialità di questi strumenti, accessori tecnologici non solo legati ad un trend momentaneo, ma in grado di semplificarci la vita, anche professionale, organizzare e rendere più efficiente il nostro tempo.
MR:ROBOT è un robottino open source tutto da realizzare con le stampanti 3D, negli “Atelier Creativi” delle scuole e in tutti i FabLab o Maker Space. Gli studenti delle scuole possono cimentarsi con la modellazione 3D, con il making attraverso Elettronica e Stampa 3D, infine con il cooding. Il progetto è nato grazie alla sperimentazione degli studenti con il progetto MrNone (arToys Open Source). Nasce infatti dall’idea di inserire un arduino dentro il toys e rendendolo così programmabile.
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
Le applicazioni mobili sono osservati speciali. Ma come decidere se sviluppare un'App Nativa o un'App Ibrida e quali sono i costi da sostenere? Questo ed altro è stato discusso a SMAU Milano 2016.
Nel corso di questo webinar apprenderemo le basi necessarie per sviluppare un'applicazione Microsoft Windows Phone: quali tool di sviluppo utilizzare, cosa ci mette a disposizione l'SDK, come è strutturato un progetto.
Steps to develop apps for mobile that access internet realted contents.
It simply explores basic concepts of developmnet. Written in italian.
---
Espone i passi necessari a sviluppare un app mobile in grado di accedere a contenuti su web. Espone i concetti basilari del processo di sviluppo.
Flutter: Google alla conquista del mobile multi piattaformaCommit University
Nell'ultimo decennio, lo sviluppo software è diventato trasversale anche e sopratutto nel campo mobile.
Le piattaforme ed i frameworks utili a tale scopo sono diversi, con i loro pro e contro.
Tra tutti spicca Flutter, un nuovo framework made by Google,
che riesce brillantemente ad unire la versatilità della programmazione ad alto livello, senza rinunciare alle performances che solo il codice nativo può raggiungere.
Il tutto "servito" per iOS ed Android.
Come organizzare un evento in cui nessuno sia escluso (versione ICM Summit)Stefano Ottaviani
Negli ultimi anni si è molto parlato di come rendere le community e gli eventi più inclusivi nei confronti di quelle che di volta in volta, in base al contesto, possono essere considerate delle minoranze. Non si è ancora discusso a sufficienza, invece, di come far sì che persone che hanno molto interesse e piacere a partecipare possano farlo agevolmente, senza scontrarsi contro barriere che rendano loro difficile o impossibile farlo. Barriere che possono essere fisiche o, in questo periodo di eventi online, anche virtuali. Non solo vedremo come l'applicazione di certi accorgimenti possono rendere possibile la partecipazione anche da parte di persone con disabilità, ma soprattutto scopriremo come in realtà tutti i partecipanti ne possono trarre giovamento. Anche perché come ha detto qualcuno, in fondo, tutti prima o poi siamo disabili, almeno un po'.
More Related Content
Similar to Programmiamo iPhone e iPad (e non solo!) con MonoTouch
MR:ROBOT è un robottino open source tutto da realizzare con le stampanti 3D, negli “Atelier Creativi” delle scuole e in tutti i FabLab o Maker Space. Gli studenti delle scuole possono cimentarsi con la modellazione 3D, con il making attraverso Elettronica e Stampa 3D, infine con il cooding. Il progetto è nato grazie alla sperimentazione degli studenti con il progetto MrNone (arToys Open Source). Nasce infatti dall’idea di inserire un arduino dentro il toys e rendendolo così programmabile.
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
Le applicazioni mobili sono osservati speciali. Ma come decidere se sviluppare un'App Nativa o un'App Ibrida e quali sono i costi da sostenere? Questo ed altro è stato discusso a SMAU Milano 2016.
Nel corso di questo webinar apprenderemo le basi necessarie per sviluppare un'applicazione Microsoft Windows Phone: quali tool di sviluppo utilizzare, cosa ci mette a disposizione l'SDK, come è strutturato un progetto.
Steps to develop apps for mobile that access internet realted contents.
It simply explores basic concepts of developmnet. Written in italian.
---
Espone i passi necessari a sviluppare un app mobile in grado di accedere a contenuti su web. Espone i concetti basilari del processo di sviluppo.
Flutter: Google alla conquista del mobile multi piattaformaCommit University
Nell'ultimo decennio, lo sviluppo software è diventato trasversale anche e sopratutto nel campo mobile.
Le piattaforme ed i frameworks utili a tale scopo sono diversi, con i loro pro e contro.
Tra tutti spicca Flutter, un nuovo framework made by Google,
che riesce brillantemente ad unire la versatilità della programmazione ad alto livello, senza rinunciare alle performances che solo il codice nativo può raggiungere.
Il tutto "servito" per iOS ed Android.
Similar to Programmiamo iPhone e iPad (e non solo!) con MonoTouch (20)
Come organizzare un evento in cui nessuno sia escluso (versione ICM Summit)Stefano Ottaviani
Negli ultimi anni si è molto parlato di come rendere le community e gli eventi più inclusivi nei confronti di quelle che di volta in volta, in base al contesto, possono essere considerate delle minoranze. Non si è ancora discusso a sufficienza, invece, di come far sì che persone che hanno molto interesse e piacere a partecipare possano farlo agevolmente, senza scontrarsi contro barriere che rendano loro difficile o impossibile farlo. Barriere che possono essere fisiche o, in questo periodo di eventi online, anche virtuali. Non solo vedremo come l'applicazione di certi accorgimenti possono rendere possibile la partecipazione anche da parte di persone con disabilità, ma soprattutto scopriremo come in realtà tutti i partecipanti ne possono trarre giovamento. Anche perché come ha detto qualcuno, in fondo, tutti prima o poi siamo disabili, almeno un po'.
La scrittura di test automatici nello sviluppo software è ormai di fondamentale importanza, in quanto permette di:
1. Individuare e correggere molto prima, già in fase di sviluppo, i bug.
2. Sviluppare e testare più velocemente il codice, riducendo di molto le volte in cui bisogna ricorrere al debugger.
3. Essere molto più confidenti che una modifica fatta ad un "vecchio" pezzo di codice non "rompa" tutto il resto e non funzioni più niente (ovviamente scoprendolo quando ormai si è rilasciato in produzione!).
Questi sono "solo" 3 di una quindicina di benefici che sono riuscito ad elencare, ottenibili utilizzando una pratica durante lo sviluppo del codice: la scrittura di test automatici.
Con questo workshop vogliamo introdurre gli sviluppatori ai test automatici, una pratica purtroppo non ancora conosciuta e utilizzata quanto meriterebbe, che può cambiare radicalmente il modo con cui scriviamo il codice, portandolo verso un approccio più "ingegneristico".
Faremo una panoramica sulle varie tipologie di test e sui benefici che possono portare, approfondendo in particolare i test unitari (unit test) e d'integrazione (integration test).
I test automatici sono un argomento trasversale ai linguaggi di programmazione, perciò potrete seguire il workshop a prescindere da quale linguaggio utilizziate.
Il percorso di MilanoTechScene e DevMarche, due "aggregatori" di community locali: perchè e come si sono formati, i benefici ottenuti e le sfide ancora da affrontare
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformStefano Ottaviani
Durante la conferenza Build, Microsoft ha presentato interessanti novità sullo sviluppo mobile e cross-platform. Alcune di queste riguardano gli sviluppatori iOS e Android, che avranno ulteriori strumenti a disposizione per aumentare la diffusione delle proprie app, riutilizzando il codice già scritto nativamente per queste due piattaforme (in Objective-C, Java, e magari in futuro anche Swift).
Alla luce di queste novità, faremo il punto della situazione sullo sviluppo mobile, discutendo le strategie per scegliere quale tecnologia usare per la nostra prossima app, tra sviluppo nativo o con tool come Xamarin e Apache Cordova.
5. Quale sarà il futuro di MT?
All
technology
roadmaps
remain
intact
2
6. Quale sarà il futuro di MT?
All
technology
roadmaps
remain
intact
2
7. Quale sarà il futuro di MT?
Can
we
con;nue
working
with
MonoTouch?
All
technology
roadmaps
remain
intact
You
should,
yes.
It
will
be
compa;ble.
2
8. Quale sarà il futuro di MT?
No P anic
Can
we
con;nue
working
with
MonoTouch?
All
technology
roadmaps
remain
intact
You
should,
yes.
It
will
be
compa;ble.
2
11. Conosciamoci un po’
• Chi utilizza già MonoTouch?
• Chi ha idea di cosa si tratta?
3
12. Conosciamoci un po’
• Chi utilizza già MonoTouch?
• Chi ha idea di cosa si tratta?
• Chi conosce già Objective-C?
3
13. Conosciamoci un po’
• Chi utilizza già MonoTouch?
• Chi ha idea di cosa si tratta?
• Chi conosce già Objective-C?
• Chi conosce già .NET Framework?
3
15. Chi sono?
• Dev / SEng @ KILOG Srl
‣ Da Palm OS a iPad, passando per Windows CE / Mobile
(C++, .NET CF)
4
16. Chi sono?
• Dev / SEng @ KILOG Srl
‣ Da Palm OS a iPad, passando per Windows CE / Mobile
(C++, .NET CF)
• Communities
‣ DotNetMarche, XPUG Marche
4
17. Chi sono?
• Dev / SEng @ KILOG Srl
‣ Da Palm OS a iPad, passando per Windows CE / Mobile
(C++, .NET CF)
• Communities
‣ DotNetMarche, XPUG Marche
• Contatti
‣ steott@gmail.com
‣ @ste8
4
‣ blogs.ugidotnet.org/ste8
19. Cosa devo sviluppare? (1/2)
• App LOB (Line of Business)
‣ Online e soprattutto OFFLINE
✴Non si vive di soli servizi!
5
20. Cosa devo sviluppare? (1/2)
• App LOB (Line of Business)
‣ Online e soprattutto OFFLINE
✴Non si vive di soli servizi!
• Device:iPhone e iPad come riferimenti
‣ ma ci sono anche Android, WP7, netbook
5
21. Cosa devo sviluppare? (1/2)
• App LOB (Line of Business)
‣ Online e soprattutto OFFLINE
✴Non si vive di soli servizi!
• Device:iPhone e iPad come riferimenti
‣ ma ci sono anche Android, WP7, netbook
• UX usabile e attraente!
5
23. Cosa devo sviluppare? (2/2)
• Performante
‣ L’exe non deve essere per forza piccolo
6
24. Cosa devo sviluppare? (2/2)
• Performante
‣ L’exe non deve essere per forza piccolo
• Controllo sul deploy dell’app
6
25. Cosa devo sviluppare? (2/2)
• Performante
‣ L’exe non deve essere per forza piccolo
• Controllo sul deploy dell’app
• Ridurre potenziali problemi x sviluppo
‣ No puntatori & rilascio memoria
6
26. Il layer UI va cmq rifatto (1/5)
Esempio MIX11 App
http://tinyurl.com/442vt3t
iPhone
7
27. Il layer UI va cmq rifatto (2/5)
Esempio MIX11 App
http://tinyurl.com/442vt3t
WP7
8
28. Il layer UI va cmq rifatto (3/5)
Esempio MIX11 App
http://tinyurl.com/442vt3t
Android
9
29. Il layer UI va cmq rifatto (4/5)
Ipse dixit: Martin Fowler
http://martinfowler.com/bliki/CrossPlatformMobile.html
To summarize:
• Don't use cross-platform toolkits
• For maximum reach: built a web app that looks
like web app
• To appeal to a particular platform: build a native
app 10 that platform, with a experience design
for
based on that platforms interaction style
30. Il layer UI va cmq rifatto (5/5)
Ste dixit: ma almeno riutilizziamo la
logica di business e di accesso dati...
... soprattutto in app offline!
Riscrivere il codice in linguaggi
diversi per ogni piattaforma è
11
molto costoso!
32. Che strumenti abbiamo?
• Objective-C
‣ learning curve ulteriore x il linguaggio
‣ target: “solo” iPhone, iPad, Mac OS X
12
33. Che strumenti abbiamo?
• Objective-C
‣ learning curve ulteriore x il linguaggio
‣ target: “solo” iPhone, iPad, Mac OS X
• HTML + JavaScript
‣ attenti alle diverse modalità!
‣ indicata se già li conosciamo
12
34. Che strumenti abbiamo?
• Objective-C
‣ learning curve ulteriore x il linguaggio
‣ target: “solo” iPhone, iPad, Mac OS X
• HTML + JavaScript
‣ attenti alle diverse modalità!
‣ indicata se già li conosciamo
• MonoTouch & Co.
12
37. Cos’è MonoTouch? (1/3)
• Come Mono... ma diverso!
‣ Suite per portare C# e .NET su iPhone!
• Alcune limitazioni da ambiente Apple
‣ Usa compilazione statica (AOT, Ahead of
Time) invece che a runtime (JIT)
• http://www.mono-project.com/AOT
‣ No generazione codice
• Reflection.Emit, DLR, Generic Virtual
13
Methods
46. Soddisfa i miei bisogni? (1/3)
• App LOB (Line of Business)
‣ Online e soprattutto OFFLINE
- Non si vive di soli servizi!
✴Si... e fa molto altro!
16
47. Soddisfa i miei bisogni? (1/3)
• App LOB (Line of Business)
‣ Online e soprattutto OFFLINE
- Non si vive di soli servizi!
✴Si... e fa molto altro!
• Device:iPhone e iPad come riferimenti
‣ ma ci sono anche Android, WP7, netbook
✴Posso condividere BIZ e DAL!
16
49. Soddisfa i miei bisogni? (2/3)
• UX usabile e attraente!
✴Stesse possibilità di Objective-C (IB)
17
50. Soddisfa i miei bisogni? (2/3)
• UX usabile e attraente!
✴Stesse possibilità di Objective-C (IB)
• Performante
‣ L’exe non deve essere per forza piccolo
✴Compilazione “nativa”, LLVM compiler
✴iCircuit test: http://news.ycombinator.com/item?id=2557047
17
51. Soddisfa i miei bisogni? (2/3)
• UX usabile e attraente!
✴Stesse possibilità di Objective-C (IB)
• Performante
‣ L’exe non deve essere per forza piccolo
✴Compilazione “nativa”, LLVM compiler
✴iCircuit test: http://news.ycombinator.com/item?id=2557047
• Controllo sul deploy dell’app
17
✴Stesse possibilità di Objective-C!
53. Soddisfa i miei bisogni? (3/3)
• Ridurre potenziali problemi x sviluppo
‣ No puntatori & rilascio memoria
✴C# e Garbage Collector => No puntatori!
✴Non è tutto oro...attenti ai memory leak!
✴Profiler in arrivo??
18
56. Risorse per iniziare
• 2 Video da NDC 2010
‣ http://tekpub.com/conferences/ndc2010
• Stack Overflow / Mailing List
19
57. Risorse per iniziare
• 2 Video da NDC 2010
‣ http://tekpub.com/conferences/ndc2010
• Stack Overflow / Mailing List
• Esempi: TweetStation
19
58. Risorse per iniziare
• 2 Video da NDC 2010
‣ http://tekpub.com/conferences/ndc2010
• Stack Overflow / Mailing List
• Esempi: TweetStation
• Libri
19
66. Configurazione ambiente
• Boot Camp + Parallels =
stessa (ma unica) partizione Windows
• Shortcuts per
‣ Mac OS X
‣ Windows da Parallels
‣ MonoDevelop
‣ Info a breve nel blog
21
68. Visual Studio come IDE (1/2)
• Perchè vorrei farlo?
‣ IDE migliore / Resharper, ...
22
69. Visual Studio come IDE (1/2)
• Perchè vorrei farlo?
‣ IDE migliore / Resharper, ...
• Si può fare! (cit)
‣ o quasi.... solo build, NO RUN
22
70. Visual Studio come IDE (1/2)
• Perchè vorrei farlo?
‣ IDE migliore / Resharper, ...
• Si può fare! (cit)
‣ o quasi.... solo build, NO RUN
• Non solo per progetti BIZ e DAL,
anche per UI
22
71. Visual Studio come IDE (2/2)
• Diverse soluzioni:
‣ https://github.com/jamiebriant/VsMono
• https://github.com/follesoe/VSMonoTouch
‣ http://www.shrinkrays.net/code-
snippets/csharp/monotouch-tips-and-
snippets.aspx
23
79. Window e Views
• Application / AppDelegate
‣ main, ...
‣ 10 secondi per caricare!
26
80. Window e Views
• Application / AppDelegate
‣ main, ...
‣ 10 secondi per caricare!
• Window
‣ 1 sola per App!!! Poi coi ViewControllers...
26
81. Window e Views
• Application / AppDelegate
‣ main, ...
‣ 10 secondi per caricare!
• Window
‣ 1 sola per App!!! Poi coi ViewControllers...
• View (UIView)
‣ Base per UI Controls (Button, Textbox, ...)
26
‣ Base per User Control! No ViewController
82. 1° Demo!
• Usare MonoDevelop (anche più istanze)
• Creare UI con / senza Interface Builder
• Utilizzo di immagini / risorse
• Creazione di custom control con UIView
• Utilizziamo le tabelle
27
85. ViewControllers
• Basato su MVC (o una specie...)
• Creazione di app con più screen
‣ Navigation
‣ Resize, orientamento
28
86. ViewControllers
• Basato su MVC (o una specie...)
• Creazione di app con più screen
‣ Navigation
‣ Resize, orientamento
• “Infrastruttura” per UI Controls
‣ es. TableViewController
28
94. Altri approcci per UI
• Tentativi di MVVM
• DSL? (Domain-specific language)
34
95. Altri approcci per UI
• Tentativi di MVVM
• DSL? (Domain-specific language)
‣ iCircuit:
http://praeclarum.org/post/1520024382/interfaces-
caches-cross-platform
34
96. Altri approcci per UI
• Tentativi di MVVM
• DSL? (Domain-specific language)
‣ iCircuit:
http://praeclarum.org/post/1520024382/interfaces-
caches-cross-platform
‣ Post Antonio Ganci:
http://blogs.ugidotnet.org/AntonioGanci/archive/
2010/04/19/un-approccio-per-ottenere-una-
architettura-malleabile.aspx
34
98. Accesso ai dati locali (1/2)
• SQLite
‣ portabilità in altre piattaforme??
‣ Repository / DAO pattern? ORM?
35
99. Accesso ai dati locali (1/2)
• SQLite
‣ portabilità in altre piattaforme??
‣ Repository / DAO pattern? ORM?
• Tipi di accesso
‣ ADO.NET
‣ API di SQLite dirette
‣ ORM (es. Vici CoolStorage)
35
100. Accesso ai dati locali (2/2)
• Performance Tips
‣ DataReader via GetString, GetInt, ..
http://www.bayshield.com/2010/6/29/monotouch-sqlite-
performance-tip
‣ Uso di transazioni e connection pooling
‣ Quantificazione costi reflection (se usata)
http://praeclarum.org/post/1572668275/quantifying-
reflections-slowdown-in-sqlite-net
36
102. Accesso ai dati remoti
• ASMX Web Service e WCF
come in Silverlight
37
103. Accesso ai dati remoti
• ASMX Web Service e WCF
come in Silverlight
• REST via HttpRequest / Response
37
104. Accesso ai dati remoti
• ASMX Web Service e WCF
come in Silverlight
• REST via HttpRequest / Response
• JSON
‣ https://github.com/chrisntr/Newtonsoft.Json
37
105. IoC / DI
• Diverse librerie
‣ OpenNETCF.IoC
‣ Funq, PicoContainer, TinyIoC
‣ http://monotouch.info/Tags/IoC
38
106. Unit Testing
• Attenti a creare un progetto NUnit
che ne referenzia uno MonoTouch!
• Testare la business logic / DAL
• Testare l’”MVC” Apple:
‣ Supervisor Controller
http://ben.phegan.name/index.php/2011/02/28/
monotouch-and-unit-testing/
39
108. Alcuni framework di supporto
• MonoTouch.Dialog
‣ https://github.com/migueldeicaza/MonoTouch.Dialog
40
109. Alcuni framework di supporto
• MonoTouch.Dialog
‣ https://github.com/migueldeicaza/MonoTouch.Dialog
• MonoCross
‣ Stile MVC di ASP.NET MVC
‣ http://vagabondrev.org/2011/04/20/monocross-the-technology/
‣ http://code.google.com/p/monocross/
40
110. Alcuni framework di supporto
• MonoTouch.Dialog
‣ https://github.com/migueldeicaza/MonoTouch.Dialog
• MonoCross
‣ Stile MVC di ASP.NET MVC
‣ http://vagabondrev.org/2011/04/20/monocross-the-technology/
‣ http://code.google.com/p/monocross/
• ReactiveUX per MonoTouch
‣ http://code.google.com/p/proactive-framework/
40