{"id":446,"date":"2015-01-14T09:00:43","date_gmt":"2015-01-14T08:00:43","guid":{"rendered":"http:\/\/kalb.it\/simone\/?p=446"},"modified":"2015-01-14T13:17:32","modified_gmt":"2015-01-14T12:17:32","slug":"i-10-strumenti-indispensabili-per-uno-sviluppatore-ios","status":"publish","type":"post","link":"https:\/\/kalb.it\/simone\/2015\/01\/i-10-strumenti-indispensabili-per-uno-sviluppatore-ios\/","title":{"rendered":"I 10 strumenti indispensabili per uno sviluppatore iOS"},"content":{"rendered":"<p><a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/iOS_Development_tips.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-463\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/iOS_Development_tips.png\" alt=\"iOS_Development_tips\" width=\"590\" height=\"272\" srcset=\"https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/iOS_Development_tips.png 590w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/iOS_Development_tips-300x138.png 300w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/iOS_Development_tips-500x230.png 500w\" sizes=\"(max-width: 590px) 100vw, 590px\" \/><\/a>La pigrizia degli sviluppatori (e cos\u00ec la mia) \u00e8 abbastanza proverbiale.<br \/>\nEssi tendono\u00a0a riusare il codice quante pi\u00f9 volte\u00a0possibile e spesso cercano degli strumenti che consentano di rendere il proprio lavoro meno tedioso. Per quanto riguarda la piattaforma per cui mi capita principalmente di sviluppare software (iOS, il sistema operativo dell&#8217;iPhone per chi non fosse pratico), devo dire che esiste un sottobosco di utility, applicazioni e tweaks mica da ridere.<br \/>\n<!--more--><\/p>\n<p>Ecco un piccolo estratto di quelli che comunemente dovrebbero essere installati nel Mac di ciascun sviluppatore di app per iOS (con, in\u00a0caso, qualche nota sull&#8217;installazione).<\/p>\n<ol>\n<li><a href=\"http:\/\/cocoapods.org\" target=\"_blank\">CocoaPods<\/a> (Free)<a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.35.17.png\"><img loading=\"lazy\" class=\"alignleft wp-image-455 size-full\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.35.17.png\" alt=\"Schermata 2015-01-14 alle 12.35.17\" width=\"179\" height=\"38\" \/><\/a>Senza CocoaPods non siete nessuno.<br \/>\nCocoaPods \u00a0\u00e8 &#8220;IL&#8221; sistema di gestione delle librerie esterne\u00a0per i progetti di iOS.<br \/>\nS&#8217;installa sulla vostra macchina da riga di comando con:<\/p>\n<pre>sudo gem install cocoapods<\/pre>\n<p>e sar\u00e0 subito accessibile da riga di comando.<br \/>\nTramite un semplice<\/p>\n<pre>pod search nomelibreria<\/pre>\n<p>sarete in grado di sapere se la libreria che cercate \u00e8 presente nel DB di CocoaPod e tramite un file di configurazione\u00a0chiamato <em>Podfile<\/em>, con una sintassi molto semplice, si inserisce il nome e la versione della libreria che si intende utilizzare.\u00a0Baster\u00e0 a questo punto un:<\/p>\n<pre>pod install<\/pre>\n<p>per configurare il progetto con le librerie esterne. Basta riaprire il progetto dal file .xcworkspace ed il gioco \u00e8 fatto. Potrete istanziare le librerie esterne con un semplice <em>#include<\/em>. Nulla di pi\u00f9 semplice.<\/li>\n<li><strong><a href=\"http:\/\/afnetworking.com\" target=\"_blank\">AFNetworking<\/a><\/strong>\u00a0(Free)<a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.29.00.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-454 size-full\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.29.00.png\" alt=\"Schermata 2015-01-14 alle 12.29.00\" width=\"676\" height=\"233\" srcset=\"https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.29.00.png 676w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.29.00-300x103.png 300w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.29.00-500x172.png 500w\" sizes=\"(max-width: 676px) 100vw, 676px\" \/><\/a>S\u00ec, d&#8217;accordo, direte voi AFNetworking non \u00e8 uno strumento, ma una libreria.<br \/>\nPer\u00f2 se per scrivere un&#8217;app non usi AFNetworking sei un pazzo.Per chi non fosse al corrente stiamo parlando della libreria di terze parti pi\u00f9 utile sulla faccia della terra. Gestisce per noi tutte le richieste asincrone (e sincrone, ma voi utilizzerete pi\u00f9 che altro le seconde), in maniera trasparente e tramite dei metodi che gestiscono il GET\/POST il l&#8217;invio multipart, insomma tutte le menate di cui avete bisogno se la vostra applicazione ha una parte di rete (e 99 su 100 l&#8217;avr\u00e0), per cui affrettatevi ad inserire<\/p>\n<pre>pod 'AFNetworking', '~&gt; 2.0'<\/pre>\n<p>nel vostro PodFile e dare<\/p>\n<pre>pod update<\/pre>\n<\/li>\n<li><strong><a href=\"https:\/\/github.com\/CocoaLumberjack\/CocoaLumberjack\" target=\"_blank\">CocoaLumberJack<\/a><\/strong> (Free)<br \/>\n<a href=\"https:\/\/github.com\/CocoaLumberjack\/CocoaLumberjack\" target=\"_blank\"><br \/>\n<\/a><a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/LumberjackLogo.png\"><img loading=\"lazy\" class=\"alignleft wp-image-453 size-thumbnail\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/LumberjackLogo-150x150.png\" alt=\"LumberjackLogo\" width=\"150\" height=\"150\" srcset=\"https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/LumberjackLogo-150x150.png 150w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/LumberjackLogo.png 200w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a>Anche CocoaLumberJack \u00e8 uno di quei tool (in realt\u00e0 una libreria) davvero utile e che pu\u00f2 essere installata con CocoaPods.Consente di gestire in maniera capillare, infatti, i livelli di logging della vostra app assegnando diversi profili a seconda del profilo\u00a0che state eseguendo (per esempio se l&#8217;app gira in release oppure in debug) ed assegnare diverse\u00a0funzioni per ciscun tipo di log, anche con colori diversi.Io ad esempio utilizzo diversi colori per i diversi tipi di gravit\u00e0 dei log (banalmente rosso per gli errori, giallo per i warning e cos\u00ec via).Al solito la documentazione sul sito \u00e8 ottima.<\/li>\n<li><strong><a href=\"https:\/\/www.testflightapp.com\" target=\"_blank\">Testflight <\/a><\/strong>(Free)\n<p>Anche se \u00e8 stata acquistata da Apple in tempi recenti ed il suo sistema di test delle build in beta \u00e8 stato spostato completamente lato <a href=\"https:\/\/itunesconnect.apple.com\" target=\"_blank\">iTunes Connect<\/a> e l&#8217;app omonima\u00a0su <a href=\"https:\/\/itunes.apple.com\/us\/app\/testflight\/id899247664?mt=8\" target=\"_blank\">AppStore<\/a>, rimane il sistema pi\u00f9 utilizzato per il testing delle app in beta tramite invito pi\u00f9 importante per uno sviluppatore la cui app \u00e8 ancora &#8220;legacy&#8221;.Tramite un\u00a0semplice sistema di notifiche tutti i tester vengono avvisati via mail della nuova build disponibile da parte degli sviluppatori e possono installare l&#8217;app direttamente sul proprio device e testarla senza nessun intervento esterno. Possono altres\u00ec fornire dei feedback agli sviluppatori rispondendo direttamente alla mail di notifica.<img loading=\"lazy\" class=\"size-full wp-image-456 alignleft\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.36.52.png\" alt=\"Schermata 2015-01-14 alle 12.36.52\" width=\"284\" height=\"95\" \/><\/p>\n<p>Sebbene TestFlight sia in via di dismissione e sia stato gi\u00e0 rimosso il supporto per Android gi\u00e0 da qualche tempo (Google ha rimediato a questo) potete anche usare app simili come <a href=\"http:\/\/hockeyapp.net\" target=\"_blank\">HockeyApp<\/a>\u00a0(che ho appena scoperto esser stata acquistata da Microsoft) e <a href=\"https:\/\/deploygate.com\" target=\"_blank\">DeployGate<\/a>\u00a0 che hanno prezzi che variano dai $10\/month ai $45\/month.<\/li>\n<li><strong><a href=\"http:\/\/bohemiancoding.com\/sketch\/\" target=\"_blank\">Sketch<\/a><\/strong>\u00a0(\u20ac 99.00)\n<p><a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-13-alle-19.26.07.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-457 size-large\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-13-alle-19.26.07-1024x640.png\" alt=\"Sketch\" width=\"584\" height=\"365\" srcset=\"https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-13-alle-19.26.07-1024x640.png 1024w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-13-alle-19.26.07-300x187.png 300w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-13-alle-19.26.07-480x300.png 480w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-13-alle-19.26.07.png 1440w\" sizes=\"(max-width: 584px) 100vw, 584px\" \/><\/a> Anche se questo non \u00e8 proprio\u00a0un tool per programmatori, forse \u00e8 meglio che iniziate ad usarlo. Sketch ha soppiantato nel giro di poco tempo tutti i tool (anche piuttosto blasonati) di grafica, per via della sua impostazione app-friendly.<\/p>\n<p>Difatti fornisce una serie di tools e componenti gi\u00e0 pronti per creare la UI della vostra app. Inoltre la comunit\u00e0 ha riempito i siti\u00a0specializzati di plugin per le varie esigenze di design.Inoltre Sketch fornisce dei tool per l&#8217;esportazione rapida di assets con le varie grandezze gi\u00e0 pronte da inserire nel vostro .xcassets.<\/li>\n<li><strong><a href=\"http:\/\/www.paintcodeapp.com\" target=\"_blank\">PaintCode<\/a><\/strong> (\u20ac 99.00)\n<p><a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.50.11.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-458 size-large\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.50.11-1024x640.png\" alt=\"Schermata 2015-01-14 alle 12.50.11\" width=\"584\" height=\"365\" srcset=\"https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.50.11-1024x640.png 1024w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.50.11-300x187.png 300w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.50.11-480x300.png 480w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.50.11.png 1440w\" sizes=\"(max-width: 584px) 100vw, 584px\" \/><\/a>PaintCode \u00e8 un software unico nel suo genere.<br \/>\nConsente infatti di &#8220;disegnare&#8221; il codice.Tramite l&#8217;ausilio di\u00a0un interprete, infatti genera del codice che disegna i vostri file di tipo PSD e SVG che importerete nel programma (o genererete al suo interno).<\/p>\n<p>Il prezzo \u00e8 un po&#8217; alto effettivamente ma la sua peculiarit\u00e0 \u00e8 dovuta al fatto che che i simboli generati (ad esempio bottoni o tasti) verranno inclusi in una classe con dei metodi che possono\u00a0essere poi riutilizzati diverse volte, in parti differenti del vostro elaborato (<em>StyleKit<\/em>).<\/li>\n<li><strong><a href=\"http:\/\/asciiwwdc.com\" target=\"_blank\">ASCIIWWDC<\/a><\/strong>\u00a0(Free)\n<p>Anche se non fondamentale, ho comunque voluto mettere in evidenza questa idea un po&#8217; fuori di testa. Alcuni sviluppatori hanno recuperato tutti i video delle conferenze WWDC degli ultimi 4 anni e ne hanno\u00a0indicizzato i sottotitoli in modo da poter\u00a0rintracciare semplicemente un determinato video a partire da una o pi\u00f9 parole chiave.Dato che molto spesso le conferenze WWDC risolvono o spiegano dei concetti fondamentali durante lo sviluppo, la possibilit\u00e0 di avere a portata di mano diversi video d&#8217;interesse indicizzati in questo modo costituisce sicuramente un valido apporto per lo sviluppo nonch\u00e9 alla nostra crescita professionale.<\/li>\n<li><strong><a href=\"http:\/\/alcatraz.io\" target=\"_blank\">Alcatraz<\/a><\/strong> Xcode Package Manager (Free)\n<p><a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.55.07.png\"><img loading=\"lazy\" class=\"alignleft wp-image-459 size-medium\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.55.07-300x298.png\" alt=\"Schermata 2015-01-14 alle 12.55.07\" width=\"300\" height=\"298\" srcset=\"https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.55.07-300x298.png 300w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.55.07-150x150.png 150w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.55.07-301x300.png 301w, https:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Schermata-2015-01-14-alle-12.55.07.png 364w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Alcatraz \u00e8 un semplice tool che consente di installare sul nostro Xcode tutte le estensioni pi\u00f9 famose e utili, in un semplice click del mouse.Possiamo\u00a0inserire nuovi temi, avere delle piccole estensioni o amenit\u00e0 varie, come la sincronizzazione degli snippets con un repository Git, oppure di postare un gist direttamente da Xcode o ancora meglio per eliminare i Derived Data (tanto odiati). Infine possiamo dare uno sguardo all&#8217;effetto del plugin prima d&#8217;installarlo. L&#8217;installazione \u00e8 semplice ed indolore:<\/p>\n<pre>curl -fsSL https:\/\/raw.github.com\/supermarin\/Alcatraz\/master\/Scripts\/install.sh | sh<\/pre>\n<p>Davvero notevole.<\/li>\n<li><strong><a href=\"https:\/\/github.com\/magicalpanda\/MagicalRecord\" target=\"_blank\">Magical\u00a0Record<\/a><\/strong> (Free)<br \/>\n<a href=\"https:\/\/github.com\/magicalpanda\/MagicalRecord\" target=\"_blank\"><br \/>\n<\/a><a href=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/awesome_logo_small.png\"><img loading=\"lazy\" class=\"alignleft wp-image-460 size-full\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/awesome_logo_small.png\" alt=\"awesome_logo_small\" width=\"75\" height=\"71\" \/><\/a>Avete mai avuto a che fare con Core Data?Beh, se la risposta \u00e8 si vi sarete accorti di come in alcuni casi sia veramente complicato\u00a0doverci lavorare.Magical Record fa un&#8217;opera veramente magistrale e vi fornisce i tools per scordarvi la complessit\u00e0 di Core Data, mantenendo la possibilit\u00e0 di avere tutti i suoi\u00a0strumenti a disposizione, nascondendo per noi la complessit\u00e0 e fornendoci delle API davvero semplici da usare per accedere e modificare il nostro DB SQLite.Anche in questo caso si tratta di una libreria che pu\u00f2 essere installata da CocoaPods aggiungendo le righe:<\/p>\n<pre>pod 'MagicalRecord', '~&gt; 2.2'<\/pre>\n<p>al vostro Podfile.<\/li>\n<li><strong><a href=\"https:\/\/try.crashlytics.com\" target=\"_blank\">Crashlytics<\/a><\/strong> (Free)<br \/>\n<img loading=\"lazy\" class=\"alignleft size-full wp-image-461\" src=\"http:\/\/kalb.it\/simone\/wp-content\/uploads\/2015\/01\/Crashlytics.png\" alt=\"Crashlytics\" width=\"207\" height=\"126\" \/><\/a>Crashlytics \u00e8 un tool che tramite un plugin s&#8217;installa nell&#8217;app e fornisce un monitoraggio remoto davvero formidabile, riscontrando crash e dati di utilizzo della stessa.Inoltre fornisce informazioni addizionali sulla posizione dei crash a livello di codice, per ottenere tempi di fio molto pi\u00f9 bassi e grafici dell&#8217;andamento dell&#8217;utilizzo dell&#8217;app\u00a0su base giornaliera ( e funziona anche su Android).Infine integra un servizio per la distribuzione delle beta on-the-fly, alla stregua delle app gi\u00e0 menzionate precedentemente.<\/li>\n<\/ol>\n<p>Sono molte altre le automazioni disponibili per Xcode e gli strumenti che ci rendono il suo utilizzo poco meno frustrante rispetto ad altri IDE, ma avevo premura d&#8217;individuare solo i primi dieci che utilizzo quotidianamente.\u00a0E voi, che altri tools di sviluppo accessori usate?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La pigrizia degli sviluppatori (e cos\u00ec la mia) \u00e8 abbastanza proverbiale. Essi tendono\u00a0a riusare il codice quante pi\u00f9 volte\u00a0possibile e spesso cercano degli strumenti che consentano di rendere il proprio lavoro meno tedioso. Per quanto riguarda la piattaforma per cui &hellip; <a href=\"https:\/\/kalb.it\/simone\/2015\/01\/i-10-strumenti-indispensabili-per-uno-sviluppatore-ios\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,122],"tags":[70,34,123],"_links":{"self":[{"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/posts\/446"}],"collection":[{"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/comments?post=446"}],"version-history":[{"count":12,"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/posts\/446\/revisions"}],"predecessor-version":[{"id":468,"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/posts\/446\/revisions\/468"}],"wp:attachment":[{"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/media?parent=446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/categories?post=446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalb.it\/simone\/wp-json\/wp\/v2\/tags?post=446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}