Late as usual!

venerdì, maggio 27, 2005

Appunti da una Riunione


it
Originally uploaded by magomarcelo.
..di qualche tempo fa..

mercoledì, maggio 25, 2005

OpenSource anch'io: First Italian OpenOffice.org Community Conference 2005

Venerdì ho bigiato al lavoro ed ho partecipato alla prima conferenza organizzata dal PLIO, il gruppo di localizzazione italiano di OpenOffice.org: First Italian OpenOffice.org Community Conference 2005.

martedì, maggio 24, 2005

Library/PreferencePanes/MenuMeters

MenuMeters è una piccola ma indispensabile utility che fornisce sulla barra dei menu di Mac OS X una serie di indicatori sull'uso di disco, memoria, CPU e network.

Si installa come pannello nelle Preferenze di Sistema, da cui è possibile impostare una serie di parametri di configurazione, come quali menu attivare ed opzioni di visualizzazione varie.

Dalla versione 1.2 contiene una localizzazione in italiano realizzata da me nei soliti cinque minuti che una tale operazione richiede su Mac OS X.


mac os x, l10n, italian

mercoledì, maggio 18, 2005

Dei due uno

Come già fatto in occasione dell'aggiornamento da Jaguar a Panther, anche per Tiger non mi sono arrischiato ad installare tutto sul disco del mio PowerBook con il pericolo di rendere tutto inutilizzabile, ma ho sfruttato il mio fido iPod 1G come boot disk ed ho messo tutto su quello. Così quando l'iPod è attaccato via FireWire sono su Tiger, se invece faccio reboot senza sono su Panther. Piano piano, non appena verifico che tutte le mie brave applicazioni girano per bene, faccio il passo definitivo. Per ora ottime impressioni, Tiger è ancora più veloce, posso rimandare ancora l'acquisto del portatile e se tutto va bene riesco anche ad evitarmi figuracce degne di Bill Gates quando porto la presentazione già fatta per il Java User Group Milano alla Java Conference...

Peccato però che ora quando provo a metterci su anche Linux con il fantastico iPod-Linux installer - che fa contento anche il buon randomaze visto che permette di leggere i file audio OGG - il programmino si rifiuta e mi dice che sull'iPod non si può installare null'altro finché c'è un Mac OS X sopra (e lo so, l'ho fatto io!). Ed io che volevo già provare la funzione di registratore con le cuffie come indicata nella sezione iPod di Hack a Day.

Ma perché tutto questo? Non avete idea della soddisfazione nel giocare a scacchi in metropolitana per arrivare a lavoro, quando tutte le cuffiette bianche del resto del treno ti guardano!
Anch'io quando voglio so essere un vero imbecille.

martedì, maggio 10, 2005

Bloody Screen Of Death

Joi Ito's Web: BSOD upgrades to RSOD in Longhorn: nella prossima versione di Windows la temuta schermata blu diventa rossa per i problemi critici, bentornata Guru Meditation!

giovedì, maggio 05, 2005

Tiger Developer Briefing, Milano, 2004-12-09

Qualche tempo fa, esattamente il 9 dicembre 2004, ho partecipato ad un evento organizzato da ADC (Apple Developer Connection) per la presentazione in anteprima di Mac OS X 10.4 Tiger agli sviluppatori italiani, presso l'Enterprise Hotel a Milano.

Al termine dell'evento, peraltro in maniera molto informale secondo lo stile con il quale tutto si era svolto fino a quel momento, ci viene detto che quanto abbiamo visto è da considerarsi coperto da NDA e sfuma così la possibilità di mettere gli appunti presi sul weblog appena possibile. Non del tutto, perchè l'appena possibile sommato alla mia abituale pigrizia mi porta giusto giutso ad oggi, con Tiger rilasciato e piena libertà di scriverne. Tanto meglio perchè in realtà non avevo neanche preso in considerazione l'ipotesi di dovermi limitare a parlarne, e visto che ultimamente Apple ha perso l'abitudine delle buone maniere probabilmente ho anche fatto bene ad aspettare...

In ogni caso, questo è ciò che avevo scritto in quell'occasione, ovviamente il passare del tempo non può che aver migliorato il tutto... :D

Introduzione
Quando arrivo è appena terminato l'intervento dello speaker di Apple Italia ed il palco è tutto per Paul Burford ed Etienne Vautherin, responsabili delle Developer Relations per l'Europa, i quali si alterneranno nelle spiegazione delle diverse nuove feature della nuova release del sistema operativo.

Il motto della presentazione è un programmatico:
the power of unix, the simplicity of a mac


Subito dopo questo si va in dettaglio sulle direzioni nelle quali si muove questo aggiornamento.
Innanzitutto il tradizionale faster applications on older processors che rappresenta sempre una forte spinta per decidere se aggiornarsi o meno. Quindi un supporto ai 64bit più capillare, con possibilità di indirizzare fino a 16EB di RAM e di gestire all'interrno di uno stesso file eseguibile (fat binary) versioni a 32 e 64bit.
Inoltre viene indicato come elemento di innovazione - forse per mettere le mani avanti rispetto alle criticihe che vedono una Apple che ruba idee dai produttori di applicazioni terze parti - il vantaggio derivante dallo spostamento di funzionalità applicative a livello del sistema operativo, argomento estremamente delicato.

File System
La gestione dei permessi sui file cambia radicalmente e raggiunge la flessibilità di quanto disponibile su Windows. Si passa da un'impostazione per utenti e gruppi Unix ad ACL (Access Control List) associate ai singoli file. Ogni ACL è composta a sua volta da un insieme di ACE (Access Control Entry) contenenti impostazioni per singolo gruppo o utente.

Rendezvous
Al tempo TIBCO non era ancora passata dalle minacce ai fatti, per cui Rendezvous non era ancora stato rinominato in Bonjour per non contrastare il loro omonimo prodotto.
Viene sottolineata l'intenzione di Apple di rendere disponibile questa tecnologia ben oltre i confini di OS (non solo Mac), rete (non solo LAN ma anche Internet via .Mac), linguaggio (non solo Objective-C), in pratica il messaggio è: we don't wanna do it like Apple did it 10 years ago..., chissà a cosa si riferiscono ;)

Spotlight
La ricerca integrata nel Finder grazie a Spotlight si arricchisce in modo tale da diventare un'interfaccia utente alternativa.
Spotlight è un motore di indicizzazione estensibile, funziona sui dischi locali ma non richiede un filesystem adhoc, in quanto memorizza i propri indici in modo indipendente nella Libreria dell'utente.
Non implementa una ricerca fulltext, ma lavora su attributi associati ai file, ovvero metadata, visibili da Inspector ma non modificabili, sui quali si può lavorare tramite una vera e propria Query API, che poi è la stessa utilizzata dai vari iTunes, iPhoto, Mail, con tutte le caratteristiche del caso come operatori, parentesi, wildcard ed escaping.
A livello di Finder ci sono anche gli Smart Folder, cartelle virtuali che nascondono una ricerca sui metadata associati ai file ed ora la ricerca incrementale viene dotata di possibilità di raggruppare i risultati in base a tali metadata.
SpotLight è uno di quegli oggetti che aumentano di valore in base al numero di applicazioni che si integrano con esso, infatti fornisce un SDK per sviluppare plugin in modo che le applicazioni possano definire i propri metadata sui quali effettuare la ricerca: tali plugin vanno a finire nella cartella MDImporters all'interno della Libreria, sia essa dell'utente o del sistema. Esiste inoltre una utility da linea di comando per lanciare l'importer in modo indipendente dall'indicizzatore automatico a tempo di Spotlight.
Un'ultima nota della serie diamo credito a chi se lo merita: l'idea di SpotLight viene da BeOS e chi ne ha curato l'implementazione in Mac OS X è proprio lo stesso ingegnere, ora in forze presso Apple.

Grafica
La nuova libreria Core Image permette di applicare alle immagini 2D effetti in realtime paragonabili a quanto possibile fare con Photoshop, ma ancora una volta con la pervasività di una funzionalità spostata a livello di sistema operativo.
La libreria implementa anche un color space indipendente dalla scheda grafica ed un kernel di funzionalità di shading comuni, inoltre effettua un'ottimizzazione della filter chain che ricompone una sequenza di effetti in modo da essere il meno pesante possibile per la scheda grafica, ne è però richiesta almeno una a 64MB.
Ci sono già pronti più di 80 filtri, ma anche qui abbiamo un SDK per sviluppare filtri aggiuntivi che finiscono nella cartella Graphics/Image Units all'interno della Libreria. Viene fatto notare come ci sia una sovrapposizione con quanto disponibile nelle opzioni ColorSync di stampa (il filtro seppia, B/N, ecc.), ma viene spiegato come a tendere queste ultime spariranno a favore dei filtri Core Image. Per compatibilità le relative API rimangono comunque in Tiger, ma sono implementate su Core Image aggiungenfo uno strato in più.
Il supporto PDF integrato e l'applicazione Anteprima ora gestiscono sia link che encryption, rendendo Acrobat Reader sempre più superfluo, mentre Safari avrà un plugin per visualizzare i PDF al proprio interno.
La nuova versione di QuickTime aggiunge il codec ad alta qualità H264, sfruttato anche da iChat AV per una resa migliore del video con minor banda.

Cocoa
In Cocoa, il toolkit RAD per sviluppare applicazioni su Mac OS X ereditato da NeXTStep, viene rinforzato il paradigma di programmazione MVC con l'introduzione di Core Data, che rende più facile lo sviluppo della parte Model della nostra applicazione, ovvero i dati. A naso si può intuire che la V di View corrisponda alle interfacce generate con Interface Builder, mentre la C di Controller ai Cocoa Bindings che legano gli eventi dell'interfaccia utenti alle rispettive funzioni di gestione.
Core Data fornisce inoltre una serie di funzionalità per la persistenza dei dati del modello su XML, file binari e database SQLLite.
Neanche qui ci viene risparmiata la solita frasetta ad effetto:
This is the so-called No Code Effect: the only line of code that is bug-free is the one you don't write!

Il formato XML diventa sempre più presente nel sistema operativo ed ora da Cocoa è possibile accedere direttamente ad API per XSLT, XPath e XQuery utilizzando funzionalità presenti in libxml2, libxslt e tidy.

XCode
La nuova versione 2.0 di XCode integra funzionalità di modeling UML, con costruzione dei diagrammi da zero, via reverse engineering di codice esistente o da documenti XML.

Java
La versione 1.5 di Java al tempo era disponibile come preview sulla developer connection, non ci sono particolari innovazioni specifiche di Apple, a parte i necessari bugfix, il supporto a rendezvous (ora bonjour) ed una maggiore integrazione con il sistema operativo, ad esempio ora i certificati sono registrati nel Portachiavi ed i cookie sono gestiti da WebCore. Nessuna novità sul fronte J2ME, a parte la conferma di discussioni in corso fra Apple ed i produttori di telefoni come Nokia per ottenere un porting degli emulatori e delle parti non Java degli SDK.

Dashboard
Ad occhio Dashboard sembrerebbe una chicca alla Exposé per stupire gli amici, ma esattamente come Exposé non è solo fumo, anche se quello non manca di certo. Dashboard si presenta come un layer con Exposé activation via tasto F12 il quale ospita i widget: piccole applicazioni o complementi ad applicazioni esistenti, sviluppabili in HTML, CSS e JavaScript che possono accedere direttamente a script di shell Unix o a Cocoa tramite un bridge JavaScript-Cocoa. Supportano la localizzazione ed utilizzano feature non disponibili in WebCore, come lo sfondo PNG sagomato, elementi di GUI Cocoa, aree attive tramite attributi CSS custom come apple-dashboard-region o ancora l'oggetto canvas disegnabile come un'area gestita da CoreImage, utilizzando ad esempio per le lancette del widget dell'orologio.
Quando vengono aggiunti alla Dashboard i widget si animano con un effetto a goccia su pelo dell'acqua (poi rimosso nella versione finale) ed hanno un menu accessibile sul retro in maniera simile alla finestre che si ribaltano nel desktop 3D Java Project Looking Glass di Sun.

Automator
Automator sembrerebbe a naso uno strumento visuale per creare script con AppleScript, pensato per un utenza meno tecnica, da affiancare allo Script Editor o a XCode che già svolgono questo compito. In realtà è un oggetto più interessante, perchè di fatto serve a memorizzare flussi di lavoro, quindi delle macro a livello di sistema, identificando in modo molto semplice i parametri modificabili. In particolare anch'esso è associato ad un SDK per costruire Automator Action, ovvero singoli blocchi del flusso di lavoro, pubblicati dalle singole applicazioni in modo dinamico, come già avviene per i Servizi. Da questo punto di vista è uno strumento davvero potente, il cui valore incrementa man mano che le applicazioni lo supportano rendendo disponibili le proprie Action, e ovviamente anch'esse sono pilotabili via AppleScript.

In conclusione un evento interessante e ben organizzato, con contenuti ad alta qualità... rimane la curiosità su quanti dei presenti sviluppino su tecnologie specifiche Mac per lavoro e su cosa si produca in Italia, a parte il sottoscritto che si diverte a fare localizzazioni di software mac a tempo perso...

mac os x, tiger

mercoledì, maggio 04, 2005

Ok, ci abbiamo provato...

...ad installare Java 1.5 o J2SE 5.0 o Tiger o comestrac@#% lo vogliamo chiamare su Mac OS X Panther (10.3.9) anche se Apple era stata molto chiara a riguardo: Tiger va solo su Tiger.

Epperò visto che a qualcuno era andata bene al giro passato e l'installazione di Java 1.4 su Jaguar (10.2.x) era riuscita nonostante non fosse ufficialmente supportata, ho pensato bene di seguire il vecchio esempio secondo quanto riportato su ResExcellence, adattandolo alle nuove esigenze.

Quello che segue è la cronaca di un insuccesso.

Step 1. Scarico il file DMG dell'installazione Java15Release1.dmg e monto l'immagine disco.
Step 2. Copio il file PKG Java15Release1.pkg sulla Scrivania in modo da poterlo modificare.
Step 3. Dal menu contestuale apro il contenuto del pacchetto e cerco il file VolumeCheck, lo apro con un editor come vi e modifico opportunamente il controllo sulla versione dell'OS:

# If system version is less than than 10.4 show error
if (CheckVersion("$SYSTEM_VERS", "10.4", "ProductVersion", "<" )) {


Step 4.
Aggiungo un symlink da Terminale per correggere una differenza nel percorso per Java 1.4 che l'Installer si aspetta con i seguenti comandi:

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo ln -s 1.4.2 1.4


Step 5. Lancio l'installer, tutto sembrerebbe andar bene, incrociamo le dita...
Step 6. Provo a lanciare Java 1.5 da:
/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Commands/java
Niente da fare, ottengo il messaggio già visto con gli errori nell'aggiornamento 10.3.9 di Panther:
HotSpot not at correct virtual address. Sharing disabled.
Provo la stessa risoluzione, aggiornamento prebinding + rigenerazione Java Shared Archive:

sudo update_prebinding -root / -force
sudo /System/Library/Frameworks/JavaVM.framework/Versions/1.5/Commands/update_sharing 1.5

Drammatico Epilogo Rilancio Java, tutto uguale a prima, guardo il resoconto della Console e ahimè trovo un messaggio che non lascia scampo, Java 1.5 utilizza API non esistenti su Panther:

dyld: java Undefined symbols:
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libawt.jnilib undefined reference to _kCTForegroundColorFromContextAttributeName expected to be defined in ApplicationServices
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libawt.jnilib undefined reference to _NSAccessibilityTopLevelUIElementAttribute expected to be defined in Cocoa
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libawt.jnilib undefined reference to _NSAccessibilityInsertionPointLineNumberAttribute expected to be defined in Cocoa

Faccio un ultimo tentativo a lanciare java 1.5 con il parametro che mi permette di ignorare il java shared archive:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
alias java='$JAVA_HOME/bin/java -Xshare:off'
java


Effettivamente qui il messaggio di errore è sparito, mi perdo l'ottimizzazione dello sharing, ma forse qualcosa funziona... passo allora alla prova di qualche applicazione, NetBeans, Eclipse, jEdit o qualcos'altro senza interfaccia grafica come Ant, Tomcat... insomma le prime non funzionano, le seconde invece sembrerebbe di si, Contrordine, Eclipse va! A a naso tutto quello che usa java.swing sembrerebbe da evitare, il che ha anche una logica perché nella JVM Apple Swing dovrebbe essere basata su Cocoa. É forse giunto il momento di lanciarsi su SWT? Filippo ne sarebbe contento ;)

Ma vale la pena tutta questa fatica? Forse si, forse no.
In realtà il problema è un altro: Java su Mac sarà anche una delle migliori implementazioni disponibili, ma rimane comunque soggetta ai diktat di Apple, cosa che per gli sviluppatori può diventare un serio problema. Il ritardo nell'implementazione della versione 1.5 da parte di Apple è un fatto, ma ora che con J2SE 6.0 Mustang, la prossima versione di Java, il processo di release di Java sta diventando sempre più aperto da parte di Sun, diventa sempre più rilevante per chi sviluppa poter utilizzare anche le daily build pubblicate su java.net, cosa che su Mac sembrerebbe assolutamente non fattibile. Speriamo in meglio, visto che anche James Gosling ha il suo bravo PowerBook...

Risultato finale.
Mentre mi arrovello in questi pensieri, per ora vado a comprarmi Tiger, anche se delle 200+ feature di Panther tante ne devo ancora scoprire ed invece ora mi tocca aggiungerne altre 200+ alla lista...