La volontà è tutto…

2009/10/10 20:42

« Se non riuscite a eccellere con il talento, trionfate con lo sforzo. » Dave Weinbaum

No Comments

Passaggio a Snow Leopard: scordatevi i database

2009/09/09 10:37

La mia copia gratuita di Snow Leoprd era appena arrivata, non vedevo l’ora di installarlo. Preoccuparsi del backup dei dati importanti è inutile, tanto mamma Apple non sbaglia un colpo da anni, perché dovrebbe comincare ora?

Per mia fortuna il ragionamento che ho fatto non è stato proprio questo. Un backup con i dati sensibili va fatto in ogni occasione, specialmente prima di modifiche pesanti al sistema.

Non avevo pensato però a fare un backup di componenti indipendent dal sistema come i database.

In passato mi ero trovato costretto a disinstallare la versione a 64 bit di MySQL per una incompatibilità con la gemma di Ruby che permette di interfacciarvisi da Rails. La versione a 32 bit non è però compatibile con Snow Leopard.

Il risultato del mio upgrade è stato una perdita della maggior parte dei database sul mio server locale. Niente di grave se non fosse per il fatto che ho perso ore a ripristnarte tramite i dump fatti qualche giorno prima i 6GB di dati che avevo.

Disistallare MySQL, che anche non funzionante continuava a essere presente sulla mia macchina, non è una cosa banale. Questo meraviglioso giocattolo ha la brutta abitudine di abbandonare decine di file che possono confondere le librerie in giro per il sistema.

Una volta disinstallato è necessario procedere all’installazione della versione 5.1 a 64 bit, quella per Mac OS X 10.5 x86_64 funziona perfettamente. Non ho ancora avuto modo di provare la 5.4.

Affinchè Rails torni a funzionare è bene disinstallare la gemma di MySQL e procedere all’installazione della nuova con il flag per i 64 bit.

Disinstalliamo la gemma attuale:

sudo gem uninstall mysql

Facciamo un aggiornamento generale:

sudo gem update --system

Installaimo la nuova specificando l’architettura corretta:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql --
--with-mysql-config=/usr/local/mysql/bin/mysql_config

Infine spendiamo la nostra ora a ripristinare i database su cui state lavorando con i dumb di backup che avete fatto ieri sera. Perché li avete fatti vero?

Riferimenti:

No Comments

La gemma di MySQL non funziona!

2009/09/01 22:39

Rails 2.2 vuole una gemma per collegarsi a MySQL ma questa gemma sembra non abbia alcuna intezione di funzionare. E io come diavolo lo testo il mio progetto?

A partire dalla versione 2.2 Rails sposta all’esterno il codice di interfacciamento con MySQL. Su Leopard è però necessario specificare alcuni parametri a gem affinchè installi la versione corretta con i parametri adeguati inoltre funziona solo con la versione a 32 bit del DBMS.

Per prima cosa deve essere installato il server nelle versione x86, la versione x86_64 non viene supportata da Leopard e deve essere quindi rimossa. Per rimuoverla sono necessari due passi.

Servizi:
modificare /etc/hostconfig (servono i permessi da amminstratore) ed eliminare la riga

MYSQLCOM=-YES-

File:

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm /etc/my.cnf

Una rimosso il 64 bit e installato il 32 si può procedere all’installazione della gemma, i parametri sono i seguenti:

sudo env ARCHFLAGS="-arch i386" gem install mysql -- \
  --with-mysql-dir=/usr/local/mysql \
  --with-mysql-lib=/usr/local/mysql/lib \
  --with-mysql-include=/usr/local/mysql/include

Con questi parametri tutto torna a funzionare.

Riferimenti:

No Comments

Fare è meglio che parlare

2009/08/26 14:16

« Le persone che hanno successo nella vita sono quelle che si alzano e cercano le circostanze che vogliono. E se non riescono trovarle, le creano. » George Bernard Shaw, premio Nobel per la letteratura 1925

No Comments

Interfacciare la CLI di PHP con MySQL

2009/08/19 18:45

Stavo scrivendo un demone in PHP, attivato tramite la CLI, che doveva loggare delle informazioni su MySQL ma mi trovavo sempre di fronte allo stesso errore…

Can’t connect to local MySQL server through socket ‘/var/mysql/mysql.sock'

Il problema rigurda le impostazioni di default presenti nel php.ini che per MacOS X sono differenti infatti il socket viene creato in /tmp/mysql.sock. Le soluzioni sono due.

Creare un link simbolico che reindirizzi la chiamata dal socket errato a quello corretto:

su -
mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

oppure modificare all’interno di php.ini la riga:

mysql.default_socket = /tmp/mysql.sock

Per fare in modo che le modifiche abbiano effetto è necessario riavviare Apache.

Riferimenti

No Comments

TextMate e le sue espressioni regolari

2009/07/26 18:32

Eravamo io, un MacBook Pro e un file di testo da 95.000 righe in cui erano nascosti 15.000 lemmi di un dizionario, con relative descrizioni, che io dovevo individuare e sparare in un database…

TextMate sta prendendo piede come editor ufficiale per gli utenti Apple. Naturale compagno di Ruby on Rails risulta efficace anche con molti altri linguaggi.

Una delle caratteristiche che preferisco è l’implementazione delle sue espressioni regolari: davvero notevole rispetto ad altri editor.

http://manual.macromates.com/en/regular_expressions

No Comments

MySQL: un DBMS per lo sviluppo

2009/06/16 18:25

Ero alla ricerca di un DBMS supportato da PHP che non richiedesse alcun tipo di autenticazione sicura o altre cazzate che rallentassero il test della mia applicazione…

Chi sviluppa per il web non può ignorare MySQL. Nonostante non sia sempre stato un prodotto eccellente e pecchi tuttora per qualche difetto, si tratta del DBMS più diffuso sui server web.

Per installare MySQL 5.1 su Leopard è disponibile un comodo installer scaricabile dal sito ufficiale. E’ disponibile sia per piattaforma Intel che PowerPC: http://dev.mysql.com/downloads/

Devono essere installati in sequenza: il server, l’utility di gestione e il pannello delle preferenze presenti nel pacchetto .dmg scaricato.

La cartella dove viene posizionato il motore è

/usr/local/mysql/

Mentre quella dove vengono memorizzati i database è

/usr/local/mysql/data/

L’utenza di default ha username: root con password vuota.

Al termine dell’installazione è bene aggiungere la seguinte riga al file .bash_login per poter utilizzare MySQL anche in linea di comando:

export PATH="$PATH:/usr/local/mysql/bin"

Riferimenti

No Comments

Esperienza e competenza

2009/05/23 07:03

« L’esperienza non aveva nessun valore etico; non era altro che il nome dato dagli uomini ai propri errori » Oscar Wilde, Il ritratto di Dorian Gray, 1890

No Comments

Ruby e le sue gemme

2009/05/05 20:12

Mi ero messo in testa di provare Ruby on Rails ma non sapevo se potevo farlo e, anche potendo, non avevo idea di come fare…

Anche Ruby è già presente in Leopard, la versione è la 1.8.6 e funziona benissimo. Ruby Gems è in versione 0.7.2 e, per chi sviluppa, è troppo vecchia. Lo stesso discorso vale per Rails, presente  in versione 1.2.3.

Per aggiornare Rails dovrebbe bastare:

sudo gem update rails

Ma spesso non fuziona perchè RubyGems non è aggiornato.

In questo caso è necessario aggiornare anche RubyGems. Con il codice seguente viene aggiornato RubyGem, tutte le gemme presenti, e viene installata anche una gemma che sembra indispensabile per Rails che non è presente di default: ActiveSource:

sudo gem update --system
sudo gem update
sudo gem install activeresource

Le versioni installate sono rispettivamente la 1.0 (per RubyGems) e la 2.0.2 (per Rails).

Per creare lo scheletro di una nuova applicazione seguire le seguenti istruzioni:

rails path/to/your/new/application
cd path/to/your/new/application
ruby script/server

N.B. Nel caso il comando sudo non sia abilitato si può abilitare l’utente di root e utilizzare il comando su -

Riferimenti

No Comments

Alla Apple preferiscono PHP in versione slim…

2009/04/01 18:32

Stavo riguardando i miei vecchi progetti e avevo problemi con il caricamento delle immagini, sembrava che le libreirie GD fossero sparite…

PHP è già presente il versione 5.2.5 anche se non è attivato all’interno di Apache come modulo. Si tratta di una versione senza supporto a PEAR e alle librerie GD. Si può attivare decommentando in /private/etc/apache2/httpd.conf la riga:

#LoadModule php5_module libexec/apache2/libphp5.so

Se invece è necessario il supporto a PEAR o alle GD2 conviene installare la versione di Entropy.ch. http://www.entropy.ch/software/macosx/php/

Si scarica un pacchetto autoinstallante (la versione attuale è la 5.3) e si aggiunge in /private/etc/apache2/httpd.conf la riga:

LoadModule php5_module local/php5/libphp5.so

Per bypassare la versione di PHP della Apple (che rimane comunque presente nel sistema e viene periodicamente aggiornata) anche in linea di comando si può modificare il file .bash_login per fare in modo che cerchi prima in /usr/local/php5 che in altre directory.

export PATH="/usr/local/php5/bin:$PATH:/usr/local/mysql/bin"

Così facendo saranno disponibili PHP 5.3.0, PEAR e le librerie GD2.

Riferimenti

No Comments