ott 09

Una delle cose che mi fanno amare particolarmente lo sviluppo del software su Mac OS X sono XCode e Cocoa che rendono davvero facile il lavoro allo sviluppatore!

Cio che rende Cocoa un framework tanto fantastico è il fatto che ti permette di concentrarti appieno sul progetto a cui stai lavorando in quanto ti astrae totalmente dai livelli più bassi del sistema mettendoti a disposizione classi e funzioni che semplificano e velocizzano enormemente il processo di sviluppo.

Per esempio è possibile creare un browser web scrivendo una sola linea di codice sorgente (ed ovviamente disegnando la GUI usando Interface Builder):

[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: [urlText stringValue]]]];

Io credo che sia una cosa davvero fenomenale! Per esempio… se si stesse lavorando ad un aggregatore RSS basterebbe concentrarsi sul “core-task” dell’applicazione senza perdersi in mille problemi sviluppando anche tutto il motore di rendering delle news!

Il codice sorgente del browser dell’esempio può essere scaricato qui: ibrowser.zip

mag 25

cocolife-logoIn questi giorni, ispirato da un articolo sul “Gioco della vita” del matematico inglese John Conway ho deciso di realizzare CocoLife. 

Il programma (per Mac OS X), che implementa per l’appunto il gioco sopracitato, ha un mondo a matrice con 4 possibili configurazioni: 50×50, 100×100, 250×250 e 500×500 (quest’ultima ha un carico elaborativo particolarmente alto per la CPU). CocoLife permette in oltre di configurare il colore dello sfondo del mondo e degli automi e la velocità di esecuzione del programma (controllabile tramite la barra a scorrimento in basso che varia il tempo tra una transizione ed un’altra). Tramite il menu in alto alla voce “Matrice” è possibile attivare l’editor che permetterà di crearsi le proprie configurazioni (normalmente viene generata una configurazione random). A differenza di molte implementazioni di questo gioco i bordi del mondo sono connessi uno con l’altro… cioè se un automa sfora a destra comparirà a sinistra, altrettanto con l’alto ed il basso. Il programma è scritto in Objective-C usando il framework Cocoa di Mac OS X.

Il programma ed i relativi sorgenti sono scaricabili nella sezione portfolio di questo sito.

coco-screen

nov 15

shapeimage_2Dopo l’articolo “12 giorni con Leopard”, che descriveva la mia user-experience con il nuovo felino di Apple, ho deciso di scrivere questo per parlare della mia developer-experience. 

Con Leopard si sono rinnovati XCode (che giunge alla versione 3.0) ed Interface Builder, in particolare quest’ultimo ha subito migliorie radicali che lo rendono finalmente un’ottimo software di sviluppo per OS X (prima, per quanto fosse utile, aveva qualche grossa mancanza come l’impossibilità di inserire NSToolBar con un semplice drag & drop), e sono arrivati anche nuove utilities come Instruments che permette di passare ai “Raggi X” la propria esecuzione monitorandone praticamente ogni aspetto… dell’utilizzo delle risorse al singolo accesso a dati tramite Core Data.

Interface Builder, tra le varie, ha ampliato tantissimo l’elenco di oggetti che è possibile utilizzare (giò per i bottoni è possibile scegliere almeno tra 5 o 6 modelli differenti), è ora inoltre possibile creare finestre HUD (quelle nere semitrasparenti) semplicemente selezionandole dal menu e la ToolBar può essere aggiunta alle finestre e modificata semplicemente trascinandole dal menu laterale fin sulla finestra. Le modifiche sono anche altre ma non è mia intenzione fare una lista una per una di tutte le sue nuove feature (tra l’altro c’è anche il nuovo pannello per le impostazioni Core Animation). In assoluto è migliorato molto dal punto di vista sia dell’immediatezza che della completezza!

XCode ha avuto “improvement” minori (anche perché era già buono com’era) ma qualcuno c’è stato… ad esempio adesso spostando il mouse su aree di codice racchiuse da parentesi queste vengono evidenziate rispetto al resto del sorgente.

Parlando invece delle tecnologie messe a disposizione per lo sviluppatore le novità che ci sono state sono notevoli… tanto per cominciare è stato introdotto Objective-C 2.0 con Garbage Collector! Per chi non lo sapesse il Garbage Collector (che è abilitabile opzionalmente sulle proprie applicazioni… quindi non è bbligatorio usarlo) è un sistema che si occupa di gestire la memoria dell’applicazione al posto del programmatore: Garbage Collector (tecnologia che tra l’altro è già utilizzata in Java) viene avviato come un thread secondario dell’applicazione e si occupa di deallocare gli oggetti non più utilizzati liberando così memoria (capitava spesso di trovare applicazioni che di per se non avrebbero dovuto avere grosse richieste di memoria occupare megabyte su megabyte inutilmente a causa di una cattiva gestione).

Non è stato solo il linguaggio ad essere aggiornato… ma anche la libreria… tanto per dirne una adesso per chi volesse cambiare l’icona dell’applicazione nel dock, o volesse aggiungervi una badge, invece che “perdere” tempo prezioso a scriversi classi apposite può limitarsi a scrivere il seguente codice usando la classe NSDockTile:

NSDockTile *dock = [NSApp dockTile];
[dock setBadgeLabel: @"Quello che vuoi"];
[dock display];

Le novità sono ancora moltissime e per avere una panoramica più completa vi invito a visitare http://developer.apple.com

Mi scuso con i miei lettori per l’essenzialità del post ma purtroppo l’imminenza delle prime sessioni d’esami (prove in itinere) mi tengono molto occupato!