Nel bosco
Ieri mattina sono andato a passeggio nel bosco! Mentre mi rilassavo camminando e respirando l’aria densa dei profumi autunnali, mi sono imbattuto in alcune situazioni che hanno attirato la mia curiosità fotografica. Di seguito trovate una piccola gallery dell’evento. Ovviamente sempre pellicola Ilford Delta 100 Pro e Sviluppo Rodinal 1+25 per 9 minuti.
Buona visione.
(Studiando cocoa) Lo schema di progettazione MVC
Con questo articolo parte una mini serie dedicata allo studio dell’ambiente di sviluppo per Mac Os X e iPhone os che sto iniziando ad intraprendere in questi giorni. Man mano che vado avanti farò il resoconto di quello che ho studiato. Anche perché questo è uno dei metodi migliori per imparare. Fermo restando che non sono completamente a digiuno di objective-c, in questo articolo vedremo il tutorial proposto dalla Apple: The Essence of Cocoa. Ovviamente man mano che andrò avanti cercherò di approfondire e capire i vari aspetti anche del linguaggio Obj-c.
MVC o Model View Controller è lo schema di progettazione principale dell’ambiente di sviluppo cocoa, esso deriva da smalltalk-80. Questo schema propone tre tipi di oggetti in una applicazione, separati da limiti astratti e allo stesso tempo collegati fra loro proprio attraverso questi limiti. La figura chiarisce meglio il concetto.
L’oggetto Model
Gli oggetti di tipo Model contengono i dati e le operazioni che si possono svolgere su questi. Ad esempio in una applicazione gestionale supponiamo di avere un oggetto “Clienti” che contiene i dati relativi ai clienti come ad esempio il loro nome. Ecco questo è uno oggetto Model perchè contiene i dati di ciò che rappresenta e i metodi per accedere agli stessi.
L’oggetto View
L’oggetto View rappresenta l’interfaccia grafica con cui vengono presentati i dai all’utente. Normalmente l’oggetto View non conosce la fonte dei dati che rappresenta sullo schermo. L’Application Kit che è uno dei framework che compongono l’ambiente cocoa contiene numerosi oggetti comuni per le viste come finestre, pulsanti, barre di progressione etc. E’ comunque sempre possibile costruirne di personalizzati.
L’oggetto Controller
Questo oggetto esplica una mediazione fra l’oggetto Model e l’oggetto View, praticamente mette in comunicazione gli altri due trasferendo le informazioni. Ad esempio può mostrare il nome di un cliente in uno specifico campo di testo nella finestra dell’applicazione.
Lo schema MVC, se bene possa essere alla base di molte applicazioni non deve essere necessariamente seguito alla lettera. In alcuni casi particolari come per esempio applicazioni molto semplici e possibile inserire il controller nel model.
Ho trattato prima di tutto questo argomento perché seguendo i tutorial proposti da Apple vi troverete difronte a questo schema quasi sempre. In effetti solo dopo aver letto la documentazione su MVC ho capito meglio alcuni passaggi.
Il prossimo articolo vedremo il tutorial sul currency converter.
Il porto di Giulianova
Una piccola galleria fotografica sul porto di Giulianova realizzata con la Eos 300V analogica, il 50 mm f 1,4 e la pellicola Ilford Delta 100 Professional.
Dati sullo sviluppo:
- Sviluppo Agfa Rodinal
- Diluizione 1+25 per 9 minuti
- Agitazione 30 secondi all’inizio e poi 10″ ogni minuti
- Fissaggio Agfa Agefix
I negativi sono stati scansionati con un Epson 1660 Photo.
Statale 17 – storie minime transumanti di Barbara Summa
Segnalo con molto piacere l’uscita del libro di Barbara, che durante le nostre vacanze olandesi ci è stata di grande aiuto logistico. Barbara vive in Olanda da molti anni ma è di origini Abruzzesi o meglio Aquilane. Oggi vi presento il suo libro “Statale 17 – storie minime transumanti” appena pubblicato.
“La Statale 17 corre in Abruzzo tra la conca aquilana e il piano di Navelli. Ricalca un antico tratturo e rivela una storia stratificata e complessa.
Questo è un libro di storie e rivelazioni.
Da noi si dice che la robba de campagna
è di Dio e di chi se la magna.
La casa di Ofena è di chi ci ha vissuto.
Il terremoto è di chi lo ha subìto.
Le storie sono di chi me le ha regalate e mie
che le ho prese, e vostre, se le volete ascoltare.”
Potete acquistare il libro in diversi modi:
- A Roma presso le librerie Arion
- In Abruzzo e Marche del sud nelle librerie La Nuova Editrice
- Dall’Italia in proprio o per farlo ordinare da qualsiasi altro posto, direttamente da Maura: www.exormaedizioni.com
Se volete conoscere meglio Barbara andate di corsa sul suo blog mammamsterdam.
Buona lettura
iPhone OS 3.1 e la batteria, che bordello!
L’ultimo aggiornamento di iPhone OS, ovvero la versione 3.1, di cui ho parlato qualche tempo fa in occasione della sua prima beta prometteva diversi miglioramenti soprattutto in termini di velocità e durata della batteria. Non ho verificato se in effetti ci siano miglioramenti sulla velocità ma una cosa è certa: l’autonomia della batteria più che aumentare è drasticamente diminuita!
Almeno questo è ciò che è accaduto sul mio iPhone 3G e non so se la stessa cosa accade sui modelli 3GS e EDGE.
Per testimoniare quanto ormai sia davvero quasi al limite dell’utilizzabilità il mio telefono, ho scattato una serie di screenshot ogni 2 ore circa dopo aver azzerato le statistiche sull’utilizzo. Ovviamente durante l’intero test non ho collegato il telefono al mac. Il test è stato effettuato con le impostazioni che normalmente uso cioè: controllo automatico della mail ogni 30 minuti e 3G attivato. Durante la giornata ho usato il telefono così come lo uso sempre, quindi ho ascoltato un pò di musica sul treno ed ho visto qualche pagina web, i feed con doppler radio, facebook, il meteo e eurosport. Di seguito le immagini principali.
Come è possibile vedere alle ore 22:25 era rimasta meno del 20% di carica con:
- 16 ore e 21 minuti di standby
- 3 ore e 19 minuti di utilizzo
- 17 minuti di chiamate
- 13,2 Mb di dati
Bhè che dire! Davvero misera come durata tenendo presente i soli 17 minuti di chiamate e i pochissimi dati scaricati da internet. Non ho purtroppo un simile test con il 3.0 per poter fare un raffronto vero e proprio ma vi assicuro che ho fatto questo test perché ho proprio avuto la netta sensazione del calo di prestazioni della batteria. Potrei dire che con il firmware 3.0 sarei arrivato alle 22 con un buon 20% in più di batteria.
Attivando le notifiche push o semplicemente il controllo push di gmail, recentemente introdotto, la cosa diventa davvero insostenibile. Nella stessa giornata tipo alle 15 di pomeriggio, lo stato della batteria era già agli sgoccioli. Ho eseguito il test con la sola mail push attiva e le notifiche push disattivate, alle 15:25 ho dovuto interrompere e ricaricare il telefono poiché la serva dovevo andare fuori.

Alcuni screenshot durante il test per la batteria (push mail)
Notate che nonostante non abbia, così intensamente, usato il dispositivo, il contatore dell’utilizzo segna 3 ore e 23 minuti già alle 15:35. Effettivamente io non ho usato il dispositivo per ascoltare musica o vedere internet se non per pochi minuti, lo testimoniano i pochi dati ricevuti, quindi l’utilizzo così elevato è dovuto praticamente al servizio di mail push che di fatto prosciuga la batteria. Purtroppo per il momento non posso usare questa funzionalità davvero comoda e tanto attesa.
Insomma il melafonino ha sempre avuto il suo tallone d’Achille nella batteria e nonostante le promesse di Apple la situazione non è mai sostanzialmente migliorata. Pochi giorni fa è arrivata la notizia che Apple sta investigando in modo intensivo sul problema, speriamo che presto si trovi una soluzione anche se io resto scettico, perché secondo me il limone è bello che spremuto rimangono solo le goccioline.
Il consiglio per ora è di disabilitare sia le notifiche push sia la mail push nelle impostazioni.
Ciao
Aggiornamenti sito
Ho completato un pò il sito, ho scritto finalmente la pagina info con la mi vita così potete conoscermi meglio e ho creato una pagina foto che raccoglie tutti i post con le fotografie.
Ho installato il plugin NextGEN Gallery per gestire le gallerie fotografiche, adesso potete vedere le foto dell’Olanda e delle prossime gallerie più grandi e in modo più comodo. Grazie a Marco per la dritta.
Sto facendo delle piccole ricerche sulla durata della batteria dell’iPhone con l’ultimo aggiornamento 3.1 appena concludo pubblico il risultato.
Ciao
Nuova grafica per il sito
Come vedete ho aggiornato la grafica del sito installando un tema gratuito fornito da NeoEase, http://www.neoease.com/ che ho leggermente modificato.
Ho cambiato anche l’impostazione del sito eliminando le pagine che non ho ma completato e lasciando solo i link e una pagina per gli archivi del blog dettagliati. Tutti gli articoli quindi saranno pubblicati sul blog.
Spero che la nuova veste grafica vi piaccia.
Ciao
Caratteri, capiamoci qualcosa!
Sposto sul blog questo vecchio articolo che avevo pubblicato un pò di tempo fa!
Uno dei problemi che spesso si incontra sviluppando pagine web con PHP e MySLQ è quello dei caratteri, soprattutto quelli accentati o quelli aprticolari come l’euro €.
Il tutto dipende da errori di conversione fra diversi charset, infatti, spesso inconsapevolmente, il programmatore principiante non presta attenzione a questo aspetto durante lo sviluppo lasciando le impostazioni di default che spesso non coincidono.
Il database MySQL per esempio imposta come charset di default il latin1 mentre il web server solitamente utilizza utf-8. Durante questa conversione si possono creare delle imprecisioni che portano alla mancata visualizzazione dei caratteri.
Come risolvere il problema?
Semplice basta impostare tutto come utf-8 che è il charset consigliato dal w3c.
Allora per prima cosa impostate il vostro editor per scrivere con il charset utf-8.
Inserite in ogni pagina html, xhtml quale charset viene utilizzato con la seguente direttiva:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Quando create il database MySQL specificate come default charset utf-8 e come collation utf-8_general_ci.
Bisogna poi infine fare attenzione ad un aspetto critico. MySQL usa come default charset latin1 anche per il client e la connessione, queste opzioni sono configurate nelle variabili del server.
Potete procedere in due modi:
- Modificate i valori di default del server MySQL ma fate attenzione perché ciò influisce sui database e le applicazioni precedenti.
- Eseguire seguenti due query subito dopo la connessione:
SET NAMES utf8
SET CHARACTER_SET utf8
Assicuratevi che anche il web server utilizzi il charset uft-8.
Ho fatto svariate prove e non ho avuto problemi con moltissimi caratteri sia in inserimento sul database che il lettura, se avete ulteriori informazioni per completare questo piccolo articolo inviatemele pure e le pubblicherò col vostro nome.
Installiamo php 5.2.10 su Snow Leopard
Eh si! Con Snow Leopard viene fornito a corredo il php 5.3 cioè l’ultima versione disponibile. Il problema è che php 5.3 apporta delle modifiche sostanziali a linguaggio ed elimina alcune funzioni, che poi da diversi anni si chiedeva di non usare più dichiarandole “Deprecated”, che di fatto impediscono il funzionamento di alcuni dei software open-source più comuni fra cui zen-cart, magento, joomla etc. Poiché sono uno sviluppatore che opera principalmente con questi software era per me impossibile mantenere il php 5.3 quindi piano piano sono riuscito a compilare il php 5.2.10 e farlo funzionare con Snow Leopard.
Riporto di seguito la procedura così come l’ho eseguita, è piuttosto lunga e un pò snervante e richiede un minimo di dimestichezza con la shell Unix. Alla fine otterrete una versione di php piuttosto completa, volendo potete aggiungere o togliere le estensioni, e completamente stand-alone che funziona a 64 bit correttamente con web server apache installato di default con Snow Leopard.
Installate prima di tutto mysql prelevando l’ultima versione dal sito www.mysql.com, ovviamente prendete quella per 10.5 x86_64
Prepariamo le directory necessarie:
sudo mkdir /usr/local/php5.2
mkdir ~/src
cd src
installare prima le librerie necessarie in /usr/local/php5.2/
installazione t1lib
curl -O ftp://sunsite.unc.edu/pub/linux/libs/graphics/t1lib-5.1.2.tar.gz
tar xzf t1lib-5.1.2.tar.gz
cd t1lib-5.1.2
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make without_doc
sudo make install
cd ..
installazione lib jpeg
curl -O http://www.ijg.org/files/jpegsrc.v7.tar.gz
tar -xzf jpegsrc.v7.tar.gz
cd jpeg-7/
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..
installazione lib png
Scaricatela da http://www.libpng.org/pub/png/libpng.html e mettela dentro ~/src curl non funziona con sourceforge
tar -xzf libpng-1.2.40.tar.gz
cd libpng-1.2.40
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
sudo make install
cd .
installazione libmcrypt
scaricatela da http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download e mettela dentro ~/src curl non funziona con sourceforge
tar -xzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..
installazione libxml2
curl -O ftp://xmlsoft.org/libxml2/libxml2-2.7.4.tar.gz
tar -xzf libxml2-2.7.4.tar.gz
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..
installazione gettext
curl -O http://gd.tuwien.ac.at/gnu/gnusrc/gettext/gettext-0.17.tar.gz
tar -xzf gettext-0.17.tar.gz
cd gettext-0.17
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..
installazione di curl e lib curl
curl -O http://curl.haxx.se/download/curl-7.19.6.tar.gz
tar -xzf curl-7.19.6.tar.gz
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..
e finalmente prendiamo php
curl -O http://uk.php.net/distributions/php-5.2.10.tar.bz2
tar xfz php-5.2.10.tar.bz2
cd php-5.2.10
in questa versione di php cè un piccolo errore in un file che va corretto prima di tutto altrimenti non si compila un bel niente
aprite con un editor di testo (io ho usato xcode) il file
~/src/php-5.2.10/ext/iconv/iconv.c
alle riga 196, 197, e 198 trovate
#ifdef HAVE_LIBICONV
#define iconv libiconv
#endif
correggete con
#ifdef HAVE_LIBICONV
#define iconv iconv
#endif
prepariamo il configure
CFLAGS="-arch x86_64 -I/usr/local/php5.2/include/" LDFLAGS="-L/usr/local/php5.2/include/" ./configure --prefix=/usr/local/php5.2 --disable-dependency-tracking --with-apxs2=/usr/sbin/apxs --with-config-file-scan-dir=/usr/local/php5.2/php.d --with-openssl=/usr --with-zlib=/usr --with-zlib-dir=/usr -with-xpm-dir=/usr --with-gd --with-ldap --with-xmlrpc --enable-exif --enable-soap --enable-sqlite-utf8 --enable-wddx --enable-ftp --enable-sockets --with-bz2=/usr --enable-zip --enable-pcntl --enable-shmop --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-mbstring --enable-bcmath --with-libxml-dir=/usr/local/php5.2 --with-xsl=/usr/local/php5.2 --with-gettext=/usr/local/php5.2 --with-png-dir=/usr/local/php5.2 --with-jpeg-dir=/usr/local/php5.2 --enable-gd-native-ttf --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mcrypt=/usr/local/php5.2 --with-iconv --disable-xmlreader --with-t1lib=/usr/local/php5.2 --with-curl=/usr/local/php5.2
ok c’è un altro bug
aprite sempre con xcode
~/src/php-5.2.10/Makefile
il Makefile appena generato, cercate
EXTRA_LIBS =
seguito da una serie di opzioni, aggiungete per prima
-lresolv
salvate e chiudete, compiliamo!
make
bene il php è compilato ora facciamo il backup del php di snow leopard altrimenti viene sovrascritto
sudo mv /usr/libexec/apache2/libphp5.so /usr/libexec/apache2/libphp5.so.snow_leopard
sudo make install
spostiamo modulo appena generato e ripristiniamo il php di snow leopard (opzionale)
sudo mv /usr/libexec/apache2/libphp5.so /usr/local/php5.2/libphp5.so
sudo cp /usr/libexec/apache2/libphp5.so.snow_leopard /usr/libexec/apache2/libphp5.so
Modifichiamo il file
/etc/apache/httpd.conf
commentando la riga
#LoadModule php5_module libexec/apache2/libphp5.so
e aggiungendo la riga
LoadModule php5_module local/php5.2/libphp5.so
Riavviamo apache
sudo apachectl restart
Ok ora avete il vostro php 5.2.10 funzionante potete tranquillamente continuare a sviluppare in attesa della prossima compatibilità de vari software. Bella fatica eh! io sono impazzito 2 giorni pieni pieni, sperò che possa essere d’aiuto a qualcun altro. Se seguite questa guida e qualcosa non vi torna o semplicemente riuscite lasciatemi un commento, sarò felice di aiutarvi o di esservi stato d’aiuto.
Ciao






Commenti recenti