La volontà è tutto…
2009/10/10 20:42« Se non riuscite a eccellere con il talento, trionfate con lo sforzo. » Dave Weinbaum
Life of a Mac Web Developer
« Se non riuscite a eccellere con il talento, trionfate con lo sforzo. » Dave Weinbaum
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 mysqlFacciamo 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:
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:
« 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
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
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.
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
« 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
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 railsMa 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
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.soSe 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.soPer 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