2021-03-26

Il problema dei chip ethernet con Big Sur

 Ad una parte dei possessori di computer della Mela con uscite USB-C o Thunderbolt 3 capita di volersi connettere ad una rete cablata: talvolta il wifi ha un livello troppo basso o manca del tutto. È d’obbligo quindi un adattatore ethernet connesso alle USB-C del Mac.

Purtroppo, con il passaggio a macos 11 Big Sur alcuni di questi adattatori hanno smesso di essere affidabili: appena connessi va tutto bene, possono funzionare per ore con un uso normale di internet; poi c’è la necessità di una video conference (nel periodo attuale, quasi sempre e magari più ore al giorno) e a metà della conference (o subito, o alla fine, o magari dopo tre collegamenti perfetti) tac... Meet avvisa che non sei collegato ad internet!

Se sei fortunato, stacchi il dispositivo ed il Mac gira sul wifi e dall’altra parte non se ne accorge nessuno; se però esiti per più tempo o non c’è wifi disponibile... il collegamento è andato. L’unica cosa da fare è staccare il dispositivo (che potrebbe anche essere un hub, con magari collegato un hard disk - con conseguenti lamentele da parte di macos “come ti permetti di togliermi un disco senza avvisarmi?” o con l’iPad, da dove stavi facendo vedere uno schizzo a mano libera - e allora lì se ne accorgono tutti). Riconnettendo il dispositivo la rete torna e probabilmente darai la colpa al router, allo switch, al provider internet ed altri. Nessun reset invece, se stacchi solo il cavo ethernet.

Poi ti capita la stessa cosa fuori casa e arriverai a pensare che le porte del Mac sono difettose o che il dispositivo non funzioni più. Io ho acquistato un altro hub per questo motivo, per poi trovarmi nella stessa situazione. Soliti test: collego il tutto alla porta dall’altra parte del Mac, provo a togliere l’ad-block, controllo sul log del dhcp, controllo nel log di sistema... nulla.

Allora ti butti a cercare sulla rete: Google, Bing, Duckduckgo. Il risultato alla fine è persino semplice: il driver di Apple (nuovo in Big Sur) attivato dal dispositivo ha un baco: quando il traffico comincia a farsi pesante (come in una video-call) può incappare in un overflow e andare in crash! E lì c’è poco da fare: per il dhcp non esisti più, perché dovrebbe spedirti segnali? Ed ecco anche spiegato perché staccando e riattaccando la rete torna: alla nuova connessione il driver viene ricaricato e tutto funziona, fino al prossimo crash.

La prima soluzione è che Apple corregga il problema: sperabile ma non probabile! Il baco esiste dalla prima versione di Big Sur a settembre 2020: se dopo sei mesi è ancora lì, non ci sono grandi speranze; inoltre l’adattatore di Apple funziona (dicono).

L’altra soluzione è di armarsi di santa pazienza... Prima cosa: scoprire il tipo di chip che gestisce l’ethernet su vostro dispositivo. Semplice: tenere premuto Option, menu Mela, Informazioni sul computer. Vi si apre una panoramica di tutto quello che c’è nel macbook; con il dispositivo collegato, selezionare USB dalla lista a sinistra; nella lista che compare a destra cercate USB 10/100/1000 e selezionatelo. Nel mio caso, Realtek, con ID 8153. Dalla ricerca in rete abbiamo visto che è proprio uno dei modelli incriminati...

Quando si parla di fortuna: ho acquistato due hub, entrambi con lo stesso chip... Va beh! Andiamo sul sito di Realtek e cerchiamo il driver adatto (in questo momento questo è il link): deve coincidere ovviamente il numero del chip ed il sistema operativo. In questo caso viene giù un dmg con un installer... Fermi! Niente doppio click! Il problema è che macos 11 ha un ulteriore strato di protezione, chiamato SIP (System Integrity Protection), che non lascia installare nulla silenziosamente nelle cartelle di sistema, anche se firmato dallo sviluppatore.

Da qui in poi, attenzione: non mi prendo responsabilità per quello che può accadere sul vostro computer: dobbiamo andare all’interno di macos!

Quindi, stacchiamo il dispositivo; ora occorre far ripartire il mac in Recovery Mode, dove abbiamo accesso di amministrazione a cose nascoste (e pericolose da modificare!). Quando ci siamo, apriamo il Terminale usando uno dei menu e dentro scriviamo

csrutil disable

seguito da invio. Abbiamo appena disabilitato le sicurezze! Dal menu Mela riavviamo il Mac e, una volta ripartito, finalmente installiamo il driver (se ce n’è più di uno, nel mio caso ho scelto quello che nel nome ha la parola ethernet). Durante l’installazione chiederà la password di amministratore e potrebbe anche chiedere di approvare l’estensione nelle preferenze di sistema (come anche Catalina ci aveva abituati). Ora proviamo ad attaccare il dispositivo ethernet, apriamo nuovamente le informazioni sul computer: vediamo che quello che compariva come un generico usb-ethernet ora ha il nome del produttore del chip (Realtek)! Significa che è stato caricato il nuovo driver, che infatti vediamo in figura in Nome Kext.


Bene! Ora dobbiamo rimettere a posto le sicurezze. Stacchiamo l’apparecchio e riavviamo nuovamente in Recovery Mode, apriamo il terminale e scriviamo, ovviamente

csrutil enable

Nuovo riavvio. Se connettendo il dispositivo, questo compare con il nome Realtek, siamo a posto! Se invece compare come scheda generica USB 10/100/1000, allora è stato nuovamente caricato il driver Apple e quello nuovo è stato bloccato dalle sicurezze.

Allora, sempre dalle Informazioni sul sistema, scegliamo la voce “Software disabilitati”: di sicuro ci troveremo il nostro driver, con una denominazione importante (riporto il mio caso):

ZYM2ETK3E7 com.realtek.driver.AppleRTL815XEthernet

Il primo codice è quello che ci interessa: è l'identificazione dello sviluppatore. Ora ritorniamo in Recovery Mode, apriamo il terminale e controlliamo che non esista ancora un record per questo sviluppatore (il comando fa una lista dei codici ammessi):

spctl kext-consent list

Solo se la risposta è vuota oppure non contiene "ZYM2ETK3E7", possiamo aggiungere l’eccezione:

spctl kext-consent add ZYM2ETK3E7

Naturalmente, se stiamo lavorando per un'altra estensione di altro produttore, dovremo inserire il codice di quel produttore.

Non stiamo aprendo il nostro Mac a malintenzionati, stiamo solo dicendogli che quello sviluppatore è noto: ci sarà sempre bisogno di autorizzare un eventuale software. Ora riavviamo, controlliamo per scrupolo che connettendo il dispositivo parta sempre il software Apple (compare come generico fra le schede di rete), quindi apriamo il Terminale e scriviamo

sudo kextload -b com.realtek.driver.AppleRTL815XEthernet

Il comando prova a caricare il nuovo driver e ci avvisa, tramite terminale (ma anche con un dialogo) che l’estensione è stata bloccata e bisogna autorizzarla dalle Preferenze di Sistema. Se infatti apriamo le Preferenze e andiamo nella sezione Sicurezza e Privacy, tab Generali, troveremo una scritta che chiede di autorizzare la nuova estensione. Dopo aver sbloccato la finestra con un click sul lucchetto e fornito la password, possiamo autorizzarla e quando collegheremo nuovamente il dispositivo, questa volta verrà caricato il nuovo driver e non quello generico: il problema è risolto! Posso affermarlo perché è una settimana che la rete cablata è connessa tutto il giorno, con grossi carichi (più video chiamate al giorno)!

C'è anche da notare che, nel caso di un MacbookPro, chiudendo il lid e mandando il computer in stop, l'interfaccia si spegne, permettendo al Mac di passare in modalità sleep! Cosa che con il driver di Apple non succedeva!

2015-01-17

Spotlight delle mie brame...

Tutti gli utenti Mac conoscono Spotlight: di solito non è altro che un'icona a forma di lente che se ne sta nella zona dei menu, in alto a destra; di solito silenzioso, quando abbiamo bisogno di trovare un file (di cui spesso abbiamo solo una vaga idea del contenuto, figuriamoci se ricordiamo il nome del file...), non dobbiamo fare altro che premere Cmd-Spazio ed ecco che compare, pronto a dirci dove si trova, o almeno a mostrarci una serie di possibily match della nostra ricerca. Quando non trova nulla, fa come Siri e ci chiede se vogliamo cercare nel Web.
Il diavoletto di Spotlight può essere usato per lanciare le app, senza doverle andare a cercare nella Launchpad e materialmente cliccandoci sopra (a questo proposito, ci sarà a breve una nuova utility con funzionalità aggiuntive rispetto a Spotlight, ma questa sarà tutta un'altra storia...)

Qualche volta, becchiamo Spotlight "con le braghe in mano": quando l'apriamo ci mostra una bella progress bar ("Sto indicizzando"): proprio un attimo prima ha scoperto che qualcosa non è aggiornato, per cui cui sta aggiornando il proprio indice interno. Spesso, anche in questa occasione ci fornisce dei risultati, ma questi potrebbero non essere completi: forse, se aspettiamo qualche secondo, ci potrà dare risultati migliori.

Qualche volta però, il succitato diavoletto comincia a fornire risultati cervellotici: non trova alcune applicazioni, oppure nemmeno alcuni file, nonostante siano stati appena salvati. Questo è un buon indizio della necessità di ricostruire l'indice!
La ricostruzione dell'indice può essere fatta utilizzando apposite utility (p.es. Onyx), ma lo stesso risultato può essere ottenuto con un semplicissimo comando da terminale:
sudo mdutil -E /Volumes/nomeDisco
Alla richiesta, inserire la password di amministratore. Questo comando distruggerà l'indice attuale, che verrà ricostruito da Spotlight stesso non appena ne avrà voglia (va beh, diciamo che lo farà quando penserà di non essere utilizzato, in modo da non dare fastidio all'utente). Ce ne accorgeremo dalla presenza della progress bar nella sua finestra.

Un'altra possibilità da Terminale è l'impedire l'indicizzazione di un disco esterno. Questo sarebbe possibile anche senza entrare nel Terminale, usando l'apposita lista Privacy nelle Preferenze di Sistema, ma ho verificato che non sempre il sistema si ricorda di questa impostazione, per cui conviene usare il seguente comando:
sudo mdutil -i off /Volumes/nomeDiscoEsterno
Da quel momento in poi, l'indice del volume indicato non verrà più aggiornato; se vogliamo che scompaia del tutto, facciamolo seguire dal comando indicato sopra, che cancellerà appunto il file di indice, che non verrà più costruito.
Se in seguito dovessimo cambiare idea e volessimo tornare all'indicizzazione, non dovremo fare altro che digitare da Terminale il comando opposto:
sudo mdutil -i on /Volumes/nomeDiscoEsterno
e alla prima occasione l'indice verrà ricostruito; da notare che la ricostruzione è un processo a bassa priorità, per cui potrà essere posticipata nei casi in cui Spotlight pensa di dare fastidio. Se proprio vogliamo che succeda velocemente... lasciamo il Mac da solo per qualche minuto!

2014-05-11

Nuova vita ai "vecchi" MacBookPro

Il mio MacBook Pro (modello 4,1) ha un po' di annetti; il modello è chiamato "Early 2008", da cui si capisce che ha 6 anni di onorata carriera, ma non solo: in mezzo è avvenuta la rivoluzione degli Unibody e recentemente dei Retina Display.
Sì che ho ancora funzionante un Powerbook G4 del 2003, che di anni ne ha 11, ma se lo scopo è lo sviluppo, allora i modelli invecchiano un po' più velocemente della media dei Mac.
Che fare? L'acquisto di un nuovo Mac è sempre una cosa che da un lato dà soddisfazioni, ma dall'altro lascia il portafoglio vuoto.

Alternative? Dopo aver girato un po' sui forum e sulle riviste web specializzate, viene fuori l'idea: sostituire l'hard disk attuale (250 GB, 5400 rpm) con una SSD.
Finora non avevo mai considerato questo aggiornamento: l'HD originale funziona bene, è abbastanza silenzioso, non si fa sentire con click continui e così via. In più il modello 4,1 ha un bus SATA II limitato alla velocità del SATA I, per non dare problemi al lettore di DVD, che si trova sullo stesso bus. Dato che oggi ormai si trovano solo SSD con SATA III, sembrava uno spreco di soldi montare una cosa da 6Gb su una linea che ne accetta non più di 1.5Gb.
E infatti in giro per il web alcuni dicevano che si vedeva la differenza, altri che non era il caso di cambiare per un piccolo aumento della velocità.

In più, c'era anche il fatto psicologico del numero massimo di cicli di lettura/scrittura di una SSD: in effetti, anche un HD rotante fornisce un numero massimo di letture, oltre il quale in media si rompe qualcosa di meccanico o magari di elettronico, ma siamo abituati a pensare comunque che l'HD meccanico duri quasi all'infinito.

Alla fine ho rotto gli indugi: oggi un SSD di capacità normale si presenta con dei prezzi abbastanza normali. Non ho voluto andare sui top di gamma tanto, mi son detto, con un bus da 1.5Gb è inutile.
Per cui mi sono orientato su un SanDisk, SATA III, da 250 GB, praticamente un copione dell'HD originale. Su Amazon veniva offerto con il 40% di sconto (per quel che vuol dire: sembra che a prezzo pieno non ce ne siano, per cui il riferimento alla fine è il prezzo scontato!). E comunque SanDisk non è una marca da buttare, anzi.

Non prevedevo di aver problemi con lo smontaggio/montaggio: avevo già dovuto aprire il Mac per cambiare la ventola destra, diventata rumorosa; l'HD è solo dalla parte opposta, ma sempre ben raggiungibile. Solo due difficoltà: a) alcuni connettori che passano sopra l'HD e devono essere scostati con attenzione; b) avere un cacciavite Torx, altrimenti non si possono svitare i supporti dell'HD da inserire sulla nuova SSD. In tutto: mezz'ora di lavoro (grazie ad iFixit!).

Avevo preferito fare un backup completo prima di estrarre l'HD, ma senza clonare nulla: sempre meglio partire da un'installazione fresca (anzi: è l'occasione per eliminare cose mai usate!).

Quindi, accensione, collegamento ad un HD esterno dove avevo preventivamente scaricato dal Mac App Store l'ultima versione di Mavericks. Tutta l'installazione avviene normalmente con i soliti tempi ed anche il setup di OS X non è indicativo, dovendo inserire tutti i dati di configurazione. Fine. Pronti all'avvio, cronometro in mano... (il tempo da battere è di 90 secondi con Mavericks; da nuovo si avviava in 40 secondi con Leopard [10.5]).

Boing... mela grigia... rotellina... eccolo! Richiesta password: Urca! 16 secondi!!!
Inserita la password, passano circa 2 secondi per avere il desktop pronto, con tutti i menu extra visibili e possibilità immediata di aprire finestre o lanciare programmi!
Allora era tutta questione di hard disk!
Faccio la classica prova ammazza-computer: vado sul dock col mouse e in sequenza veloce faccio partire le prime 5 applicazioni da sinistra, tra cui Safari. Ognuna di loro si apre con un "salto" solo e in circa 5 secondi sono tutte pronte a ricevere comandi, compreso quell'elefante di Safari!

L'entusiasmo mi fa cercare immediatamente in rete gli accorgimenti per mantenere in buona salute la SSD (in pratica per evitare scritture inutili, soprattutto quelle ripetute):

  1. attivazione del TRIM: con i dischi non originali OS X non lo attiva. Scaricare TRIM Enabler oppure Chameleon SSD Optimizer.
  2. spegnere il sensore di movimento improvviso, che proteggeva le parti meccaniche dell'HD. Si tratta di un comando da terminale, spiegato qui dalla stessa Apple.
  3. disabilitare il Safe Sleep, che fa scrivere l'immagine della RAM sul disco, utile in caso di batteria quasi scarica. Evitiamo così una scrittura pari alla dimensione della RAM ad ogni stop del Mac. Comando da terminale, spiegato qui. Se si trattasse di uno degli ultimi modelli, bisogna disabilitare anche un'altra regolazione, ma per il 4,1 non esiste.
  4. disabilitare la registrazione dell'ultima data di apertura di ogni file, anche questa fonte di scritture inutili (la data di modifica sarà comunque registrata). Questa è una procedura un po' più complessa, ma fattibile, spiegata qui, dove c'è anche un riassunto degli altri punti.
  5. se usiamo Time Machine, attiviamolo ma poi disattiviamo i backup periodici in locale, fatti quando il disco di TM non è collegato: oltre a fare un backup ogni ora, porta via spazio prezioso. Anche qui, comando da terminale (spiegato qui).
Personalmente, ho usato TRIM Enabler per attivare il TRIM e Chameleon per impostare le altre cose (escluso il noatime, punto 4, che deve essere fatto a mano).
Ci sarebbe ancora un altro punto, che però è controverso: si può decidere di disattivare il journaling. Questa caratteristica è utile per mantenere coerenza nei dati del disco in caso di interruzione improvvisa, come mancanza di corrente (per i sistemi desktop) o freeze o kernel panic del Mac. In questi casi, il journaling permette di ricostruire le operazioni lasciate a metà e quindi di ricuperare al riavvio senza intervento i dati che potevano andare persi.
Consiglio: se vivete pericolosamente, cioè scaricate anche versioni beta dei software, peggio ancora nel caso dei driver, se cioè vi capita ogni tanto di dover spegnere forzatamente il Mac, allora il journaling vi è necessario. Se invece lo usate normalmente, con software standard affidabili e non vi è mai capitato di doverlo spegnere con l'interruttore, allora potreste pensare di disabilitare il journaling (ma poi non accusatemi se vi succede di perdere un file importantissimo!). La disattivazione può essere fatta da Utility Disco.

Ormai sono 10 giorni da quando ho effettuato l'installazione e da allora non ho mai visto la famosa spinning wheel colorata, che mi faceva andare in bestia e mi spingeva a pensare ad un nuovo Mac. Inoltre, il Mac è diventato silenziosissimo! Alla sera, nel silenzio, non esce il minimo rumore (le ventole provocano soltanto un lieve soffio). Ho poi scoperto che scalda meno (quindi ventole al minimo quasi sempre) e, cosa piacevole, ha guadagnato tra i 30 e 50 minuti in più di batteria: alla fine, l'HD richiedeva un motore, l'SSD no!

Con i costi attuali e se non c'è necessità di avere grande spazio disco, la sostituzione con una SSD può darvi l'impressione di avere per le mani un computer nuovo!

2014-03-24

Le animazioni scomparse

Dopo l'ultimo aggiornamento a iOS 7.1, il mio iPad sembrava essere diventato meno responsivo. Alcune animazioni sembravano scomparse, in particolare le quattro dita per la schermata multitasking sembravano bloccarlo per un tempo brevissimo, dopodiché la lista delle applicazioni compariva, ma senza animazione. Lo stesso era per il ritorno alla schermata standard. All'accensione, le icone comparivano all'improvviso, senza alcuna fluidità. Anche lo sblocco non era bello a vedersi.
Ora, siamo d'accordo che le animazioni non hanno una grande utilità: l'azione avviene comunque! Tuttavia, la presenza delle animazioni e soprattutto la loro fluidità migliorano notevolmente l'esperienza d'uso, dando l'impressione di notevole facilità e velocità, verificando immediatamente l'effetto del comando dato.
Quindi volevo indietro le mie animazioni!

La prima azione da informatico è stata ovviamente il riavvio, cosa che faccio solo per gli aggiornamenti! Nessun risultato.
La seconda azione, sempre da lista standard, è stata di chiedere aiuto al signor Google, dove ho scoperto di non essere l'unico: molti altri utenti si trovavano in astinenza da animazioni iPad! Giravano molti consigli (misti a curiose domande, tipo "cosa te ne fai delle animazioni?", a cui ho risposto sopra).

Alla fine, mettendo insieme i consigli e sfrugugliando nelle impostazioni, ho scoperto che l'aggiornamento a iOS 7.1 reimposta alcune preferenze, tra cui quelle relative alle animazioni. Preferenze, a dir la verità, mai cercate ed utilizzate; per cui le riporto qui sotto e sono ovviamente valide anche per disabilitarle, se qualcuno così preferisce.

È sufficiente aprire Impostazioni, scegliere Generali nella lista alla sinistra e toccare Accessibilità (nel secondo blocco di preferenze). Nel secondo blocco della sezione Vista è riportata la voce Riduci movimento: toccandola si presenta una riga sola On/Off, con la spiegazione "riduci la velocità di movimento dell'interfaccia utente, compreso l'effetto parallasse delle icone e degli avvisi". Spostiamo l'interruttore su Disattivo se vogliamo indietro le animazioni, oppure su Attivo se non le vogliamo.

Ora però questa azione ha riattivato anche l'effetto parallasse (quella cosa divertente a vedersi, ma divoratrice di batterie, secondo cui quando muoviamo l'iPad si ha l'impressione che le icone delle app si muovano rispetto allo sfondo, come se queste fossero ad una certa distanza dallo sfondo stesso). C'è la possibilità di mantenere le animazioni, ma di eliminare questo effetto: basta tornare nelle Impostazioni, scegliere Sfondi e Luminosità, selezionare lo sfondo della schermata Home e, in basso a destra, impostare Zoom prospettiva a NO, toccando la voce. Poi tocchiamo Schermata Home per salvare quanto fatto.

Riassumendo: avremo di nuovo un iPad con animazioni ma senza il consumo di batteria richiesto dall'effetto parallasse.

2013-12-11

Sistemi intelligenti e sistemi più intelligenti


Negli ultimi anni si è molto parlato di sistemi intelligenti e la parole d’ordine è spesso stata “semantica”.
Un sistema semantico sarebbe in grado di interpretare il significato di una frase, anche se si utilizzano parole diverse. Per esempio, le due frasi:
  • Vediamoci domani alla stazione alle 12:30
  • Troviamoci alla stazione domani alla mezza
per un sistema semantico significano la stessa cosa, mentre un sistema tradizionale potrebbe rispondere in modo diverso o addirittura non capire la richiesta.

Tra i vari tentativi di portare sul mercato un simile sistema, probabilmente Siri (il sistema di Apple) è forse il più vicino a quanto si cerca; tuttavia si tratta di un sistema generalista che, installato su telefoni e tablet, è mirato agli usi previsti su tali dispositivi (chiamate, messaggi, appuntamenti, appunti, ecc…).

Si sta però pensando ad un modo per portare la duttilità generalista di Siri (magari anche superandola) ad altri campi, tramite un nuovo concetto: conoscenza come servizio.

Le applicazioni di questo tipo, che possono essere chiamate “applicazioni cognitive”, potrebbero essere in grado di conversare con l’utente, fornire risposte, ecc… La novità è che il motore di conoscenza si troverà nella nuvola e sarà gestito da terze parti: in questo modo esisteranno le società che svilupperanno app di nuova concezione ed altre che forniranno la base del funzionamento alle prime.
Siamo distanti dal computer dell’Enterprise o da HAL di 2001 Odissea nella spazio, ma quel che è certo che le nuove app saranno molto più intelligenti di quelle attuali o comunque così sembreranno.

Il posizionamento dell’intelligenza nel cloud porterà quindi app diverse a comportarsi diversamente ma comunque utilizzando la stessa conoscenza e questo permetterà specializzazioni anche sottili.

Giusto per fare un esempio, IBM ha annunciato il mese scorso che metterà a disposizione tramite API l’accesso al suo computer cognitivo Watson, in questo anticipando niente meno che Microsoft e Amazon. Se teniamo conto che quel software in due mesi ha raggiunto la conoscenza/intelligenza di uno studente di medicina del secondo anno, ci rendiamo conto di quali orizzonti si potrebbero aprire.

Un altro esempio è Alme, di Next IT, che ha sviluppato un assistente per la gestione delle malattie croniche, in grado di rispondere alle domande dei pazienti e ora stanno pensando di fornire un accesso esterno.

Naturalmente è prevedibile che passerà poco tempo perché Google e Apple creino ambienti in cui questi servizi siano a disposizione degli utenti mobile. Tuttavia, è probabile che i gestori di questi ambienti cognitivi siano terzi rispetto ai fruitori come Google e Apple; addirittura potremmo anche pensare a cloud open source, a disposizione di chiunque li interroghi nel modo giusto.

Estendendo il concetto, potremmo anche pensare a sistemi operativi che, collegandosi al cloud, possano fornire questi servizi alle app che girano al loro interno; addirittura gli elettrodomestici potrebbe essere più intelligenti e magari talvolta anche diventare piuttosto invadenti, consigliandoci anche un modo migliore per cucinare o per conservare i cibi...

2013-02-09

XCode 4.6, ARC e Snow Leopard


Verso la fine di Gennaio 2013 è uscita la nuova versione di XCode, la 4.6.
Alcune correzioni e miglioramenti, nessuno molto visibile; un grosso problema, visibile solo a chi ne ha bisogno...
Apple sta consigliando di passare al sistema ARC (Automatic Reference Counting) di gestione della memoria; è un sistema molto semplice, per il quale in sostanza ci si dimentica di gestire la memoria. Durante la compilazione, LLVM si occupa di esaminare il codice e di aggiungere vari comandi retain e release, senza dover essere noi a pensarci; ogni oggetto viene rilasciato immediatamente quando non serve più, con minore occupazione di memoria. Il programmatore ha comunque sempre i mezzi per intervenire e dire al compilatore di gestire in modo diverso.
È un ulteriore passo avanti rispetto alla GC (Garbage Collection), che rilasciava gli oggetti solo in determinati momenti; qui ora può capitare che un oggetto che non viene usato venga distrutto appena creato.
Ok, tutto molto bello. Inoltre, il codice così scritto è indistinguibile da un codice di tempo fa, dove era il programmatore a rilasciare gli oggetti: la sola differenza è che tali istruzioni vengono inserite dal compilatore e non dal programmatore. La stessa Apple invita a non utilizzare più la GC, indubbiamente meno efficiente. Allora, visto che il codice è indistinguibile, un'applicazione compilata in questo modo può girare anche su Snow Leopard (MacOS X 10.6).

Figuratevi la mia sorpresa quando, con XCode 4.6, ho riaperto una app compilata a Dicembre 2012, modificata e, per scrupolo, provata sul 10.6: non partiva nemmeno! Crash immediato!
Ok, torniamo al codice di Dicembre... crash!
Provati un numero innumerevole di esperimenti: nulla! Dato che l'ultimo XCode funzionante su 10.6 era il 4.2 (che però non funziona su MacOS X 10.8, dove gira la versione 4.6), ho collegato i due Mac, aperto da XCode 4.2 il progetto di XCode 4.6 (con un po' di accorgimenti)... il debug diretto non aiutava, anzi: i crash avvenivano in punti diversi ogni volta, come quando c'è un problema nel caricamento dell'interfaccia, che però non aveva senso.
A quel punto è sorto il sospetto: facendo in modo che un oggetto dove avveniva il crash fosse escluso dalla gestione ARC, il crash avveniva in altro oggetto, che, una volta escluso dall'ARC, funzionava.

A quel punto, il sospetto si ingrandiva e potevo fare una ricerca più mirata su Google: eureka!!!
La versione 4.6 si porta dietro un baco (voluto o casuale? Mah...) che impedisce il funzionamento delle app su Snow Leopard!!!
Questo per tutti coloro che vogliono mantenere la compatibilità con Snow Leopard (gli utenti professionali tardano ad aggiornare i loro sistemi, in attesa che tutte le applicazioni acquistate funzionino sul nuovo), si vedono costretti a modificare il codice per tornare al MRC (vedi nota).
La conferma è su questo thread, recentissimo.

Soluzione? Per ora, per quanto ne so, una sola: entrare nel proprio account developer, scaricare XCode 4.5.2 e sostituire con questa l'ultima versione. Appena fatto e tutto funziona.
Ah, sì: fare una segnalazione di baco ad Apple!

EDIT: la nuova versione di Xcode (4.6.1) ha corretto il baco e tornata alla normalità

2012-11-02

Produttività: Pages

È fuori di dubbio che un utente di Word al primo approccio con Pages non si troverà a proprio agio: comandi dall'effetto identico hanno nomi diversi, alcuni risultati si ottengono con procedure molto diverse, ecc... È comunque difficile affermare che uno dei due sia il migliore: Mentre da un lato Word è molto approfondito e permette di definire tutto nei minimi particolari, Pages fornisce qualche libertà in meno ma presenta al contrario una maggiore facilità di apprendimento per la maggior parte degli usi comuni.

Dalla sua prima uscita, Pages Mobile ha guadagnato molte funzionalità, diventando uno tra i migliori software di elaborazione testi disponibili sull'iPad, naturalmente considerando le ovvie limitazioni di un tablet rispetto ad un sistema desktop.
Le funzionalità sono sempre disponibili con l'iPad in orizzontale che in verticale. Personalmente preferisco la composizione verticale, nella quale è visibile più testo, ma chi preferisce la tastiera più grande può lavorare anche in orizzontale senza perdite di funzionalità.

In alto, il righello comprende i comandi di formattazione più usati (font, dimensioni, allineamento, rientri e abbellimenti). Rispetto alle prime versioni, sono disponibili molti font, anche i più strani: suppongo fosse un problema delle scorse versioni di iOS, più che di Pages. Un buon miglioramento è l'accesso immediato al righello, a scelta sempre visibile in alto o richiamabile con un click. Sul righello è semplice impostare i rientri destro e sinistro e inserire punti di tabulazione  (destro, sinistro, centrato, numerico): un touch per creare, drag per spostare (un popup mostra la posizione in centimetri), un doppio click su un tab esistente ne cambia il tipo, un drag fuori dal righello lo elimina.

Come sulla versione desktop, sono disponibili gli stili, ma qui non sono modificabili. Intendiamoci: possiamo dare a qualunque parte del testo un qualunque formato, ma non possiamo aggiungere stili a quelli già presenti nel modello usato o modificarli. Per esempio, possiamo applicare la formattazione del titolo, ma se la vogliamo uguale per tutti i titoli dobbiamo cambiarla ogni volta: gli stili sono definiti dal modello scelto. Per superare questa limitazione si può usare il procedimento (disponibile anche nella versione desktop) di copia del formato, qui chiamata "copia del righello" per avere lo stesso stile in più punti del documento. Se invece ci serve avere una serie di stili personalizzati e ben definiti, la soluzione è di creare o modificare il documento con Pages sul Mac, trasportandolo sull'iPad con uno dei metodi possibili. La stessa cosa dovrebbe essere fattibile creando il documento iniziale su Word (desktop) e importandolo su iPad, badando che il documento non abbia una impaginazione complicata.

Nel righello troviamo anche i margini di pagina, la spaziatura righe, numero di colonne, stili elenco. Da un altro menù del righello è possibile aggiungere oggetti: varie forme di vario colore, bordi e riempimenti, tra cui anche connettori tra oggetti, che permettono per esempio di inserire uno schema a blocchi; tutti questi oggetti possono contenere del testo.
Sono presenti anche i riquadri di testo, che possono essere posizionati ovunque sulla pagina; a differenza della versione desktop, non è possibile far scorrere il testo da un blocco all'altro tramite un legame. Anzi, importando un documento dal desktop, si viene avvertiti che lo scorrimento sarà congelato alla situazione attuale ed i collegamenti interrotti, rendendo quindi il passaggio virtualmente irreversibile (mantenendo comunque la stessa impaginazione). A mio avviso, questa è una mancanza di rilievo, anche se sarà notata solamente dai pochi che preferiscono dare importanza alla disposizione grafica.

Tabelle
di vario tipo e grafici 2 e 3D possono essere inseriti facilmente da menù, a ciascuno è possibile applicare una formattazione speciale (p.es. tipo foglio di carta con bordi, ombreggiature, ecc...). Una possibilità notevole è l'inserimento di figure o fotografie, da file o via clipboard: l'attuale versione di DocumentsToGo (DataViz) per iPad non lo permette! Il testo può essere fatto scorrere attorno alla figura, oppure la figura può essere posta in linea col testo: in pratica tutto quello che si può fare con la versione desktop.

Molto semplice l'impostazione della pagina: tramite menù viene mostrata la pagina a schermo intero e da lì è possibile cambiare i margini (tramite trascinamento) e impostare intestazione e piè di pagina (comprese eventuali figure), con facilitazione per l'inserimento dei numeri di pagina. Purtroppo non si possono inserire altre informazioni in modo codificato (per esempio il titolo del documento o della sezione): sono tutte cose che debbono essere fatte su Pages per Mac. Niente bordi di paragrafo; possono però essere simulati inserendo righe di testo all'interno degli oggetti grafici (proprio come la versione desktop).
Tramite un ulteriore comando, è poi possibile attivare o meno, il conteggio delle parole del documento, il controllo ortografico e la visualizzazione delle linee di controllo, sia al centro che ai bordi.

I documenti sono normalmente mantenuti in locale ma, se attivato, sono copiati sul proprio account di iCloud, da cui possono essere recuperati tramite Pages dal Mac (ma ci vuole Mountain Lion) o tramite accesso web su iCloud stesso, seguito da un download (da qualunque sistema). Un'altra possibilità è la condivisione tramite protocollo webDav. Da notare che un documento locale può essere portato in una delle altre posizioni tramite il comando Condividi e Stampa, in cui si può anche creare una mail con il documento in allegato. Dallo stesso menù Strumenti si arriva anche all'Aiuto in linea, sufficientemente completo: se non si trova quello che si cerca vuole dire che non è supportato!

Ho scritto questa piccola recensione proprio usando Pages su iPad, per capire pregi e difetti e per confrontare con la versione per Mac, che uso regolarmente.
La mia impressione, come anticipato, è di un'ottima usabilità e buone caratteristiche, sempre che non stiamo cercando una copia perfetta di Word: se questo è lo scopo, meglio attendere che Microsoft sbarchi su iOS. Teniamo anche conto che anche Microsoft dovrà in qualche modo ridurre le funzionalità: dopo tutto siamo su un tablet! Se invece vogliamo scrivere e impaginare su iPad, Pages vale il costo richiesto (7,99 €) e se come desktop usiamo un Mac, possiamo anche superare i limiti (abbastanza giustificati) della versione iOS. Ultimamente, Pages riesce a leggere bene documenti Word anche non elementari, ma qualche problema può ancora esistere con documenti molto complessi.

In seguito proverò a fare qualche confronto con altri software.

2012-08-12

25 anni di HyperCard


Nel "lontano" 1987, l'11 di agosto, all\'uscita del System 6, il sistema operativo dei Mac di allora, si scoprì sui dischetti di sistema uno strano software chiamato HyperCard. Sconosciuto ai più, veniva aperto all'inizio solo per curiosità dai più smanettoni. Una volta aperto, mostrava una scheda a tutto schermo, con all'interno qualche pulsante, indicati con la loro funzione: agenda, contatti,... L'autore, all' inizio sconosciuto, venne poi indicato in Bill Atkinson
Cliccando su uno di questi, lo schermo veniva occupato dall'oggetto in questione: per la prima volta con un sistema operativo grafico si aveva a disposizione una suite di strumenti per gestire un po' di dati personali. Ciascuna di queste applicazioni era vista piuttosto come una serie di schede (si chiamavano stack), anche se all'utente questa realtà era nascosta, in perfetto stile Apple.
Se si dava il comando da menù Nuovo Stack, si otteneva una scheda bianca... e ci si domandava che fare! Ma presto ci si rese conto che si trattava di un modo di programmare For the rest of us! Bastava infatti entrare un po' più a fondo nel sistema per accorgersi di avere a disposizione un mezzo potentissimo per farsi le proprie applicazioni: bastava inserire un oggetto (per esempio un pulsante), doppio click per aprire il suo contenuto e si incominciava a scrivere codice. Il bello era che chiunque con un minimo di conoscenza della logica poteva scrivere script in HyperTalk, anche per azioni complesse: bastava conoscere l'inglese e si era a posto! Per esempio, supponiamo di voler cercare un appuntamento nello stack agenda, chiedendo all'utente il nome dell'appuntamento; bastava scrivere nello script del pulsante:

on mouseUp
    Ask "Inserisci il nome da cercare"
    if it is empty then go home
    else
        put it into ricerca
        set cursor to watch
        mark cards where card field "nome" is ricerca
    end if
end mouseUp

Dopo poco tempo, cominciarono a comparire miriadi di nuovi stack, spesso gratuiti in quanto scritti da non sviluppatori per propria utilità e messi a disposizione della comunità: tool di statistica, database per svariati usi, comandi di apparecchiature esterne via interfaccia seriale, addirittura primi programmi per la scrittura di pagine web e persino giochi!
È incredibile pensare alla potenza disponibile su un computer con al massimo 1 MB di RAM; nel momento del suo massimo fulgore, HyperCard con gli stack di base stava su 2 dischetti da 800kB!
Sembra che Atkinson avesse fornito HyperCard ad Apple con l'indicazione che dovesse restare gratuito ed infatti così fu per un po' di tempo. Poi arrivarono i Mac a colori(HyperCard restò sempre ufficialmente in bianco e nero, usando un ottimo dithering per rappresentare le immagini - esistevano alcuni stack che fornivano una sorta di strato colorato agli oggetti, con ottimo risultato, ma nulla più), i sistemi di programmazione web... ma questa è storia recente. Nel 2004 Apple annunciò ufficialmente che HyperCard non sarebbe più stata né fornita ne sviluppata (in realtà lo sviluppo era fermo da tempo).
Oggi, a 25 anni di distanza, esistono ancora gruppi di utenti che utilizzano gli stack, per l'estrema semplicità d'uso e la facilità con cui si possono apportare modifiche alla logica. Purtroppo occorre avere un computer ancora con il vecchio sistema operativo (oppure usare Sheepsaver su MacOSX!). Altri sono passati a sistemi alternativi, come SuperCard, PythonCard o Revolution.