Mac OS X 10.6.3 finalmente tra noi (e VirtualBox 3.1.6)

Beh, immagino che se non ve ne siete ancora accorti da soli, l’avrete sicuramente letto su qualche sito di notizie Apple: Mac OS X 10.6.3 è stato rilasciato sia nella versione Aggiornamento che in Aggiornamento Combinato (la mia preferita, per evitare rogne).

In realtà ne avevo già parlato, ma in altra sede. Anzi, vi ricordo che per quanto riguarda le notizie “dure&pure” scritte da me, le trovate su XcodeItalia 🙂

In tema di aggiornamenti, non scordatevi di aggiornare la vostra versione di VirtualBox per OS X alla 3.1.6, anche se in seguito al MacUpdate Promo ho migrato la mia VM con Windows 7 x64 su Parallels. Ne parlerò in futuro.

Annunci

Recensione “Cocoa Programming – A Quick Start Guide for Developers”

Beh, magari chiamarla “recensione” è un po’ altisonante, non sono ancora ai livelli di dispensare perle di saggezza, però diciamo che “penso quindi sono” e, in qualità di non-sprovveduto, fornisco la mia personale opinione su questo libro pubblicato da Pragmatic Programmers (http://pragprog.com).

Mi sono imbattuto in questa casa editrice al WWDC09, grazie a @Geppy e a @Vicente, e sono rimasto “conquistato” da una scelta editoriale che reputo molto innovativa: è possibile acquistare i libri prima che vengano pubblicati, in versione digitale, ricevendo delle versioni “beta” man mano che l’autore prosegue nella stesura e nella rilettura, oltre che nella correzione degli errori (anche grazie proprio alle segnalazioni dei lettori!).

Fin dal momento dell’acquisto, anche qualora il libro sia ancora nelle prime versioni, è possibile “prenotare ” la versione cartacea (oltre a quella digitale in formato pdf, epub, mobi) che verrà spedita una volta che sia stata rilasciata la versione definitiva (ovvero, quando il libro va appunto “in stampa”).

Non c’è nemmeno da chiedere in che lingua siano le pubblicazioni: ovviamente solo in Inglese, lingua nella quale tutt’oggi rimangono la maggior parte dei libri dedicati alla programmazione per Objective-C/ Mac OS X / iPhone OS (salvo alcune eccezioni) .

Veniamo a noi: in qualità di programmatori “pragmatici”, andiamo direttamente al punto della questione: il libro “Cocoa Programming – A Quick Start Guide for Developers” si propone come il primo libro con cui confrontarsi per un aspirante programmatore nel “mondo Mac”. Cocoa è infatti il framework, scritto in linguaggio Objective-C, sul quale si basano Mac OS X e (nella sua “declinazione” Cocoa Touch) iPhone OS.

Per dirla con parole Apple,

Cocoa is an application environment for both the Mac OS X operating system and iPhone OS, the operating system used on multi-touch devices such as iPhone and iPod touch. It consists of a suite of object-oriented software libraries, a runtime, and an integrated development environment.

(Tratto da “Cocoa Fundamentals”, lo trovate a http://developer.apple.com/mac )

Il problema di questo libro (o forse il pregio, dipende da cosa state cercando) è che è appunto focalizzato su Cocoa e su tutti gli aspetti legati a questo framework, tanto da portare esempi al limite dell’inutile pur di mostrare tutte le feature messe a disposizione da questo ambiente. Intendiamoci: i Cocoa Bindings, Key-Value Observing e Key-Value Coding sono temi che torneranno molto cari in futuro, i capitoli relativi a Core Data hanno una grande importanza (anche nell’ottica di iPhone OS), senza contare inoltre che questo libro è stato scritto “a cavallo” del WWDC09 in cui sono state rivelate nuove e importanti feature per Mac OS X 10.6 quali Blocks, Grand Central Dispatch e OpenCL (quest’ultimo però non è trattato nel presente libro) e nelle 15 (quindici!) versioni beta che sono state rilasciate c’è stato modo di inserire dei capitoli dedicati ad esse.

Insomma, la chiave di lettura di questo libro sta in quelle due parole “quick start” del titolo: se credete di potervi trovare un modo per iniziare immediatamente a programmare, magari guidati passo-passo nella realizzazione di alcune applicazioni che abbiano un immediato utilizzo e riscontro, qui potreste rimanere delusi. Cocoa Programming è in effetti un “tour de force” di tutto quanto può mettervi a disposizione Cocoa (ed è davvero tanta roba!) ma non vi porterà in un cammino verso delle applicazioni con dei veri e propri risvolti pratici (per lo meno finchè non affronterete il discorso Core Data, in cui avrete la possibilità di avere anche dei dati salvati in locale…).

Per il resto, il libro si concentra molto sulle differenti vie che possono essere adottate per ottenere le soluzioni più efficaci nelle implementazioni del software, in particolare mettendo in risalto le potenzialità dei binding ottenute tramite Interface Builder, opposte alla scrittura di righe di codice per ottenere le stesse funzionalità con minore efficacia e soprattutto introducendo maggiori possibilità di errore. Sicuramente permette di apprezzare tutto quanto potrete apprendere in seguito, con quelli che rappresentano invece i libri più “didattici” come iPhone SDK Development o Beginning Mac Programming, anche se chi sta cercando un modo per ottenere risultati immediati rimarrà probabilmente deluso.

Dopo i primi capitoli, in cui viene mostrato come realizzare un browser funzionante in pochi semplici click del mouse, si passa a capitoli che forniscono una introduzione degli oggetti, delle classi, dei metodi, dei parametri e delle variabili di istanza; sono fondamentali ma sono accompagnati da esempi abbastanza intricati e con pochi risvolti pratici. Questo stesso approccio rimane in tutta la parte centrale del libro, in cui quanto si apprende viene applicato ad una ipotetica applicazione che permette di visualizzare l’icona dei programmi che avviate o chiudete sul vostro Mac, in vari modi. In seguito, quando si arriva ai capitoli dedicati a Core Data, si è ridestata la mia speranza di poter vedere qualche caso reale, ma dopo un paio di versioni di una ipotetica “Libreria” (classico esempio per rappresentare relazioni tra delle entità) si torna sull’esoterico con Blocks, le Operations e le Dispatch Queues. Interessanti da leggere, un po’ meno da studiare per chi si imbatte per la prima volta con certi concetti.

Il ritmo degli esempi è tutto sommato accettabile: inizialmente si viene guidati “passo-passo” nella realizzazione delle interfacce e di ogni riga di codice che si va a scrivere, passando poi a degli esercizi con relativa soluzione, con un passaggio più o meno graduale verso maggiore indipendenza. Tranne alcuni esempi un po’ ostici (alcuni dei quali ono stati risolti grazie ai forum del sito PragProg), la scelta si rivela nel complesso discreta. È comunque possibile scaricare per intero i file del progetto di Xcode di ogni esempio presentato, in modo da poter avere sotto controllo ogni particolare, anche quelli che vengono tralasciati nelle soluzioni stampate.

Una nota in chiusura: l’autore del libro, Daniel H. Steinberg, che può risultare sconosciuto ai più, è una figura molto attiva nell’ambiente riguardante Objective-C/Cocoa, collabora con PragProg e altri editori, e tiene il proprio blog al sito http://dimsumthinking.com/.

L’approfondimento relativo all’autore mi ha dato la chiave di lettura del libro che ho cercato di trasmettere in questa recensione: è una introduzione al mondo Cocoa, che contiene al suo interno concetti necessari per i principianti ed altri decisamente più ostici e che, in casi estremi, forse non saranno neanche mai affrontati da alcuni programmatori; non aspettatevi però di avere in mano, al termine di questo libro, alcuna applicazione con applicabilità al mondo reale: per quelle ci sono altri libri oppure altri podcast su iTunes U.

Cosa ha di speciale un Mac?

Stasera, sarà che mi sono imbattuto in questo post di Pollycoke o che parlando con mia cugina mi è stata posta la domanda “Ma che differenza c’è tra Mac e Windows?”, mi sento in dovere di buttare lì due righe a riguardo della domanda “Ma cosa ha di speciale un Mac?”.

Iniziando a rispondere alla domanda riguardante la differenza tra Windows e Mac (che già è sbagliata di fondo perchè la differenza sta tra un PC e un Mac e tra Windows e Mac OS X, ma parlerò essenzialment del secondo aspetto), innanzitutto ho chiarito che si può parlare di aspetti puramente tecnici/tecnologici (a livello di kernel, linguaggi di programmazione, etc) e poi di aspetti legati all’uso e all’interfaccia.

A riguardo dell’interfaccia quindi ho fatto notare la coerenza tra le applicazioni, le minori “strade alternative” per ottenere determinati risultati (un esempio: aprire le proprietà del sistema da Windows), la presenza di punti di riferimento fissi (ad esempio la Menu Bar in alto) che non disorientano l’utente.

Poi sicuramente mi è venuto in mente di citare il fatto che Apple realizza Mac OS X in base al proprio hardware mentre Windows deve costantemente confrontarsi con migliaia (solo?) di configurazioni hardware diverse tra loro. Da qui spiegato il perchè Mac OS X “Just Works”, nel senso che il legame hardware-software è fortissimo in casa Apple.

Ed infine, la summa di questi pensieri: Mac OS X (o se vogliamo, “Il Mac”) ha il pregio di astrarre il software dalla “macchina” sottostante. Oltre a conoscere la quantità di ram installata e lo spazio su disco, ben pochi altri aspetti hardware sono presentati all’utente Mac. Quando dovete scegliere il vostro Mac su Apple Store, il masterizzatore è un generico “SuperDrive” e del processore viene citata solo la velocità (niente numeri di serie, codici identificativi, etc.), tanto per fare un paio di esempi.

Quando usate un Mac, raramente verranno citate le caratteristiche hardware del computer perchè… funziona e basta! 🙂

Perfino uno smanettone di lunga data come me, che da sempre (e tutt’ora) ha assemblato PC con l’attenzione ad ogni minimo particolare, passando a Mac OS X si “dimentica” del processore che ha installato, si disinteressa della frequenza delle memorie o alla velocità del disco perchè il Mac è una “scatola magica” (e dall’aspetto decisamente piacevole!) che fa quello che gli dico io. Non è un “computer”, che lo si associa a pezzi sparsi, silicio, chip, schede logiche e plastica: il Mac è un “oggetto”  che svolge il mestiere per il quale è stato progettato, cioè far girare i nostri programmi per renderci la vita (sperabilmente) più semplice.

In base a quanto detto, quando qualcuno vi chiederà “ma cosa ha di speciale un Mac?”, la vosta risposta sarà sempre la stessa di prima: “È un Mac.“.

Con la differenza che ora sapete spiegare da dove viene 😉

MacUpdate Promo Spring Bundle 2010 – 11 Great Apps for $49.99

Volevo solo segnalarvi (grazie Stefano 😉 ) la presenza di questo “bundle” in offerta sul sito di MacUpdate. Assomiglia, concettualmente, a quello da poco conclusosi tenuto da MacHeist anche se qui sul piatto della bilancia c’è un totale decisamente più impegnativo: 429$ di totale che diventano 49,99$ grazie alla presente offerta.

MacUpdate Promo Spring Bundle 2010 – 11 Great Apps for $49.99.

Personalmente sono solleticato solo da Hydra (software per creare foto in HDR) e da Timeline 3D, oltre che dal fatto che Parallels da solo costerebbe più dell’intero bundle quindi varrebbe quasi la pena di acquistarlo solo per quello 😉 Da buon utente VirtualBox non dovrei dire questo, ma visto che non si scorgono all’orizzonte compatibilità con il suono o con Aero su Windows 7, forse potrebbe essere un’occasione per cambiare…

Per il resto, le altre applicazioni mi sembrano solo uno spreco di risorse per i nostri Mac…

Good Design Rules

10 Rules of Good Design by Dieter Rams

1. Good design should be innovative

2. Good design should make a product useful

3. Good design is aesthetic design

4. Good design will make a product understandable

5. Good design is honest

6. Good design is unobtrusive

7. Good design is long lived

8. Good design is consistent in every details

9. Good design should be environmentally friendly

10. Good design is as little design as possible

Interface Builder: Issue: This window’s content rectangle does not lie entirely on the screen with the menu bar and may not be completely visible for all screen resolutions and configurations.

Possibile warning di Interface Builder:

Object: Window
ID: 21
Type: Illegal Configuration
Issue: This window’s content rectangle does not lie entirely on the screen with the menu bar and may not be completely visible for all screen resolutions and configurations.

Soluzione (molto semplice): spostate la posizione iniziale della finestra all’avvio della applicazione! 🙂

Potete farlo dall’inspector, spostando la posizione iniziale della finestra lontano dal margine sinistro.

Vari comandi per riavviare il Dock, la Barra del Menu

Nel caso capiti di avere la “spinning beach ball”, classico esempio di applicazione Mac “freezata” su Dock, oppure Finder, oppure Menu Bar (la barra dei menu in alto), potete provare i seguenti comandi:

Finder:
killall -KILL Finder
(funziona anche aprire la finestra di Chiusura forzata applicazioni con ALT+Command+ESC)

Dock:
killall -KILL Dock

Spaces:
killall -KILL Dock

Barra dei menu:
killall -KILL SystemUIServer

Un grazie a: http://www.thxbye.de/mac/mac-restarting-the-mac-os-x-dock-finder-spaces-or-menubar.html