Il php delle nevi: problemini con Snow Leopard per i web developer

Posted on Settembre 2nd, 2009 in Exposé | 5 commenti »

Snow Leopard, il nuovo sistema operativo per Mac - nome ufficiale OS X 10.6 - è uscito da circa una settimana, ma a me è arrivato solo ieri: l’ho ordinato cinque minuti dopo che è stato reso disponibile su Apple Store, ma sono stato taccagno e ho chiesto la spedizione per posta invece di quella per corriere.

La novità di questa versione del sistema è che… non ha novità. Non di facciata, almeno. La vera novità è che è stato ottimizzato, corretto, sistemato, perfezionato, e che quindi una volta installato anziché trovarsi con un computer più lento e meno spazio sul disco, come da mondo è mondo accade quando si installava una nuova versione di un sistema operativo, ci si ritrova invece con un sistema più snello e più veloce. E più stabile.

Ogni tanto giusto per il piacere di farlo “quitto” Mail. Prima ci metteva due o tre minuti buoni a uscire, tanto che spesso “annullava” lo spegnimento del computer a causa del time out. Ora quitta così velocemente che non riesco a togliere il dito dalla “Q” che la lucetta sotto l’icona è già spenta. Che godimento. E riparte quasi altrettanto rapidamente. Wow.

Però, qualche problemino l’ho incontrato comunque. Non tanto problemi del sistema quanto di applicazioni non compatibili (di Little Snitcher ho dovuto installare una beta; Sapiens non funziona più bene; Linotype Explorer mi aveva incasinato le font e ho dovuto toglierlo).

Nel mio caso in particolare l’impatto più grave è stato con il php. Snow Leopard installa la versione 5.3 di php, contro la 5.1 (o giù di lì) che installava Leopard. Già con Leopard era stato un mezzo trauma, perché mi aveva costretto a rendere tutto il mio software php compatibile con php 5.0, mentre fino al giorno prima lavoravo tranquillamente col 4.

Con il 5.3 i signori della Zend hanno deciso di rompere le balle in modo pesante. Hanno deciso per esempio che nel php.ini va inserita una riga che dica date.timezone=”Europe/Rome”, altrimenti ogni volta che viene usata un’istruzione che abbia a che fare con tempo e date ti spara a video un warning, anche coi warning disabilitati.

Ancora meglio, hanno deciso che “split” adesso è deprecata. E perciò ogni volta che c’è split ti viene fuori il messaggio sulla pagina che l’istruzione è deprecata. Puoi usare preg_split se vuoi usare un’espressione regolare, o explode se lo splittaggio è semplice. Split veniva usata in entrambi i casi, quindi non te la cavi con un “cerca e cambia”; devi guardare ogni singola occorrenza e decidere. Ho provato a fare una ricerca con BBEdit nella mia directory dei lavori php e le occorrenze erano più di 2500; tra l’altro anche in software non miei, tipo PhpBB.

Poi hanno deciso che non puoi usare parole chiave come nomi dei metodi. Io in una mia classe fondamentale avevo usato goto, e ora non lo posso più fare. Devo cambiare la classe e andarmi a cercare tutti i posti in cui veniva chiamato quel metodo.

E poi ho trovato anche un buggettino: mysql_num_fields mi ritorna “5000″ invece del corretto numero di campi di una tabella. E il php letteralmente crasha quando il ciclo cerca di accedere al campo successivo all’ultimo. Ci ho messo un po’ a beccare questo problema, perché non dava nessun messaggio d’errore: pura e semplice pagina bianca.

Insomma, grazie, diciamo che ho trovato lo stimolo giusto a patchare il mio software in modo da farlo girare su php 5.3.

iFilmTv, la mia prima web app per iPhone

Posted on Luglio 26th, 2008 in Exposé | 6 commenti »

Lo scorso weekend sono stato preso da una furia programmatoria e ho sviluppato la mia prima web application per iPhone.

Si tratta della versione iPhone del sito di Film.tv.it. Non tutto il sito, ovviamente (che conta una settantina di pagine template che si sviluppano su qualcosa come 1.600.000 pagine di contenuti), ma le cose pratiche e utili che serve avere in tasca, ovvero sul proprio telefono: la guida ai cinema e la guida ai film in tv. Con in più la possibilità di cercare film e attori/registi nel database.

Sviluppare una web app per iPhone non è molto diverso dal creare un sito web, ma ci sono alcune peculiarità. Per esempio, si deve tenere presente che l’iPhone viene usato con le dita: quindi testi larghi e soprattutto link larghi, che siano “centrabili” con ditone.

Impostare un’interfaccia stile iPod rende senz’altro più immediata l’usabilità della web application. Quindi navigazione a schermate successive, con freccione verso destra che indicano il passaggio al maggiore dettaglio. Peccato che Safari per iPhone non implementi delle transizioni tra le pagine, sarebbe stato bello far scorrere le pagine come nelle applicazioni native.

La web app di FilmTV usa anche i link di tipo speciale previsti dall’iPhone: quelli sui numeri di telefono, che sono “cliccabili” e permettono di telefonare al cinema prescelto, e quelli sulle mappe, che permettono di vedere su Maps la posizione del cinema che si vuole raggiungere. Sempre che nel database l’indirizzo del cinema sia scritto in modo intelleggibile da Google Maps; di solito sì, ma non sempre.

Il programma usa un sistema di cookies in modo da ricordarsi la località che è stata scelta. Dopo la prima volta non sarà più necessario indicare la città: verrà selezionata automaticamente.

Ho segnalato il programma al sito Apple, che lo ha inserito nei suoi listati: sia la pagina dei programmi dei cinema che quella dei programmi della tv. Avevo inserito un piccolo abstract in inglese e poi la descrizione in italiano, e loro l’hanno ritradotta (stile Babelfish) in inglese. Curioso. Non ha molto senso che un programma utile solo per gli italiani abbia una descrizione in inglese, a mio avviso, ma contenti loro.

iFilmTV è raggiungibile collegandosi via iPhone o iPod Touch a www.film.tv.it; se volete andarci con un altro dispositivo (o col pc) usate l’indirizzo finale www.film.tv.it/i. Anzi, fatemi un favore: se avete palmari, smartphone, roba Windows Mobile o Symbian, provatelo e ditemi se funziona anche su quei sistemi. Se sì, magari metto la redirezione automatica per tutto cià che è “mobile”.