Maxi Mac Mini

Oggi ho creato il mio Frankenstein… ho preso un disco sata da 500GB, 2 GB di Ram e mi sono avventurato nell’apertura e sostituzione di queste parti nel mio mac mini… ho seguito un po’ di istruzioni on line ed è stato semplice districarmi fra le mille vitine e i pezzi più o meno incastrati.. il momento migliore è stato quando ho notato che il disco che avevo comprato era 2mm più alto di quello presente all’interno… e che problema c’è ^_^ un po’ di lima, pazienza, un paio di tronchesi e tanta voglia di sperimentare, mi hanno fatto modificare lo chassis interno quel tanto che bastava per riuscire a infilare l’hdd grasso… ^_^ ora si sta installando Leopard… e dagli 80GB che avevo prima, mi sto trovando con tanto spazio per la mia amata musica! (evito per scaramanzia di scrivere che “sta andando tutto bene” ^_^ Sono diventato prudente! ^_^)

Configurazione di Apache, PHP5 e MySQL in Leopard

N.B. Il php distribuito con Leopard non è compilato col supporto per gd e mcrypt… O_O …cosa dicevo delle cose fatte a metà? O_O (apt-get install php5-gd ~_^). Ad ogni modo, tocca sporcare l’installazione aggiungendo un php che abbia il supporto alle gd… O_O si, una cosa parallela al php 5.2.4 in bundle, chiamiamolo una ripetizione… non amo le ripetizioni! O_O A presto un how to per coprire questa situazione… ^_^

Apache 2 e PHP 5 sono già inclusi in Leopard, ma non sono automaticamente installati per lavorare insieme (ma dico io, come mai alla Apple mi fanno i lavori a metà! O_O Vabbè), la configurazione è comunque semplice, basta abilitare il modulo php nel file di configurazione (/private/etc/apache2/httpd.conf) di apache e far ripartire il demone, la riga da decommentare è: # LoadModule php5_module libexec/apache2/libphp5.so
PHP non è configurato di default per usare la socket di mysql, vediamo come fare: di solito il file di configurazione di php5 non è attivo, per usarlo, basta copiare quello di default.

sudo cp /private/etc/php.ini.default /private/etc/php.ini

e modificare la linea mysql.default_socket = in mysql.default_socket = /tmp/mysql.sock, l’altra modifica da compiere è sulla linea mysqli.default_socket =, che deve diventare: mysqli.default_socket = /tmp/mysql.sock

A questo punto, basta attivare il server apache dal prefpane: Preferenze di Sistema -> Condivisione -> Condivisione Web.
A questo punto potete provare le capability della vostra installazione MAMP con un semplice script php, create un file di testo nella vostra cartella $HOME/Siti, con all’interno:


<?php
phpinfo();
?>

L’installazione di mysql è già stata trattata nel post Installazione di Ruby on Rails in Leopard

Provate ora lo script indirizzando safari a http://localhost/~vostrousername/info.php (la tilde ~ in MAC si fa con la combinazione di tasti alt + 5)

That’s all folks! ^_^

Installazione di Ruby on Rails in Leopard

Con l’uscita di Leopard, Apple ufficializza il supporto a RoR, inserendolo direttamente nell’installazione base del proprio OS.
Per avere una installazione un po’ più completa, basta aggiungere MySQL, vediamo come rendere la nostra Leopard Box, una perfetta piattaforma per lo sviluppo in RoR.

N.B. Si suppone installato il pacchetto Xcode, installabile dal DVD di Leopard!

Verifica dell’installazione di Ruby e Rails

Per verificare se effettivamente ruby e rails sono installati, basta lanciare questo comando:

ruby -v; rails -v

Che nel mio caso restituisce:

ruby 1.8.6 (2007-06-07 patchlevel 36) [universal-darwin9.0]
Rails 1.2.3

… 1.2.3? … vecchiotto… la stabile è ora la 2.0.2… vabbè, rimediamo, intanto aggiorniamo il sistema gem e poi lanciamo un aggiornamento di tutte le gemme presenti già nel sistema, l’aggiornamento di rails però non installa la nuova gemma, tipica delle installazioni di rails v2, chiamata activeresources, installeremo anche quella:

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

Hmmmm! Manca una gemma che può rendersi molto utile durante lo sviluppo di applicazioni: rmagick! Che però dipende da imagemagick, vediamo come installare entrambi.

Installazione di MacPorts

MacPorts è un grande repository di software Linux portati a Mac, è una risorsa molto potente, in quanto rende disponibile in maniera semplice (e piuttosto familiare per un utente Debian/Ubuntu, anche se concettualmente è più simile al sistema Gentoo) un vastissimo parco di programmi utili, come ad esempio nmap… quale amministratore di rete potrebbe farne a meno? ^_^
Bene, dopo il pistolotto iniziale, installiamo macports scaricando il dmg per Leopard e lanciando la solita installazione… (Ci mette un bel po’, non preoccupatevi, macports si sta compilando per il vostro sistema…).
Per rendere più semplice la navigazione e la scelta dei pacchetti, si può installare anche porticus, una specie di package manager… una GUI per l’accesso al repository di macports.
Ah! non dimenticate di dire a bash dove trovare l’eseguibile di port, pena il dover continuamente dare il percorso completo da riga di comando (I’m so lazy…), quindi aggiungete queste righe al file .bash_profile

export PATH=$PATH:/opt/local/bin
export MANPATH=$MANPATH:/opt/local/share/man
export INFOPATH=$INFOPATH:/opt/local/share/info

E chiudete (Command+q) e riaprite il terminale!

Installazione di Rmagick

Semplice… usate porticus o più velocemente copiate e incollate questi comandi nel terminale:

sudo port install tiff -macosx
sudo port install ImageMagick
sudo gem install rmagick

Anche qui, port non fa altro che rendere abbastanza trasparente la compilazione del pacchetto, preoccupandosi delle fasi preliminari di configurazione della sorgente, questo però implica che l’installazione sia un po’ lunga, in quanto deve compilare anche tutte le dipendenze mancanti nel sistema per quel determinato pacchetto.

Installazione di MySQL

Alla data di questo howto è finalmente disponibile un package DMG ufficiale per Leopard (Mac OS X 10.5), io ho scelto la versione per x86_64, d’altronde questo OS è a tutti gli effetti un OS a 64bit, no? Una volta finito il download, viene montato automaticamente il dmg, presentandoci due pkg (uno è il DB vero e proprio, l’altro è l’aggiunta alle applicazioni in startup automatico) e un prefPane, installiamoli tutti.
MySQL viene installato in /usr/local/mysql, la socket è in /tmp/mysql.sock e lo startup item in /usr/local/MySQLCOM.

L’avvio automatico è affidato a launchctl, perciò, basta creare un file chiamato /Library/LaunchDaemons/com.mysql.mysqld.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>KeepAlive</key>
	<true/>
	<key>Label</key>
	<string>com.mysql.mysqld</string>
	<key>Program</key>
	<string>/usr/local/mysql/bin/mysqld_safe</string>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

Proviamolo lanciando questo comando: sudo launchctl load /Library/LaunchDaemons/com.mysql.mysqld.plist

Ora dovrebbe funzionare, priviamo a riavviare per vedere se parte in automatico!

Sean O’Sullivan consiglia di creare, per comodità, un alias nel file delle risorse della shell, quindi aggiungete queste righe al file .bash_profile (e poi riavviate il terminale):

alias start_mysql="sudo /usr/local/MySQLCOM/MySQLCOM start"
alias stop_mysql="sudo /usr/local/MySQLCOM/MySQLCOM stop"
alias restart_mysql="sudo /usr/local/MySQLCOM/MySQLCOM/MySQLCOM restart"

Come noterete, lanciando il comando mysql, la shell non lo trova, va aggiunto al file delle risorse della shell, in modo che sappia dove trovarlo, questo si può fare con questo comando da, aggiungere al file .bash_profile (e poi riavviate il terminale):

alias mysql="/usr/local/mysql/bin/mysql"
alias mysqladmin="/usr/local/mysql/bin/mysqladmin"

Ed ora installiamo la gemma:

sudo su -
ARCHFLAGS='-arch x86_64' gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
install_name_tool -change /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib /usr/local/mysql/lib/libmysqlclient.15.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle

Annotazione personale… Hmmmmm! A chi mi dice che GNU/Linux è difficile, farò leggere questo paragrafo… O__O Da utente sia MAC che Ubuntu, posso dirvi che nella mia derivata Debian preferita, bastava aprire il gestore di pacchetti, cercare mysql server e installarlo… 3 click… 3 diavolo di click… O_O

And… That’s all folks! ^_^

Trasformare icns in png

Questo oneliner è utile se volete trasformare le belle icone di Mac OS X, in qualche altro formato raster, come ad esempio PNG, JPG, etc.:

sips -s format png HelpViewer.icns --out help_viewer.png

Il realtà sips è un editor di immagini via linea di comando, quindi può fare molte altre cose e maneggiare molti altri formati, ma è l’unico che conosca che riesce a maneggiare il formato icns.

Modificare ricorsivamente l’estensione dei file

Ecco un altro simpatico oneliner di utilità generale, ogni tanto mi capita di dover modificare tutte le estensioni di un certo tipo, per esempio .jpg, in un altro tipo, per esempio .png.

for f in *.jpg; do mv $f `basename $f .jpg`.png; done

Oppure, usando il fidato find (che non so perchè, ma amo tantissimo! ^_^:

find ./ -name '*.jpg' -exec sh -c 'mv {} `basename "{}" .jpg`.png' \;

Da notare l’esecuzione della shell col comando di mv. (occhio che le virgolette intorno al comando basename non sono apici singoli, ma backtick, un modo per dire alla shell: “esegui questo comando e non prenderlo come una stringa”.
Il backtick può essere trovato sulle tastiere italiane con altgr + ‘, oppure alt + 96, mentre nelle tastiere mac è alt + 9 (anche detto options + 9)

Oneliner per cercare ricorsivamente file con un determinato pattern

Gli oneliner sono comandi unix di una sola riga che però permettono di fare cose molto potenti, spesso batch di azioni che sennò sarebbero tediose da gestire cartella per cartella, man mano che troverò oneliner sempre più utili, li segnerò in questo blog (più che altro per ricordarli io stesso! ^_^) nella categoria Oneliner (e spesso GNU/Linux):

Questo comando cerca tutti i file (-type f) che seguano il pattern (-name “._*”), cioè tutti i file che iniziano con ._ (mi capita in osx quando sposto alcune cartelle nelle chiavette usb in FAT32… ma perchè? O_O), è da notare che il parametro -name accetta le classiche wildcard della shell, infine da in pasto al comando rm (-exec rm {}) il file trovato ({}), il comando deve finire con \;

find ./ -type f -name "._*" -exec rm {} \;

Ovviamente senza la parte -exec visualizza a video tutti i file incriminati! ^_^

Il comando find l’ho trovato disponibile su tutti i *nix che ho provato (vari GNU/Linux, vari BSD, Mac OS X compreso!)

Un anno di Mac…

Fra due giorni sarà esattamente un anno che ho iniziato ad usare un mac, da quel giorno la mia vita si è letteralmente riempita di mac (tenendo in conto il poco tempo che è passato), il primo è stato un macbook bianco, ne rimasi davvero soddisfatto, ben fatto come hardware, molto figo da vedere e, per me che venivo da 6 anni di uso quasi esclusivo di GNU/Linux (Debian prima e Ubuntu poi), davvero familiare da usare (mi spaventano i sistemi operativi con una shell poco potente… ^_^), in poco tempo ho imparato a sfruttarlo al massimo anche dal lato interfaccia a finestre… mi piace così, se provo a usare uno strumento voglio imbracciarne appieno la filosofia e il modo di utilizzo, proprio come feci con Debian 7 anni fa uscendo da 5 anni di Microsoft sempre più stretti, quasi soffocanti.
Poi è stata la volta di un macmini che uso collegato al TV come ricevitore digitale terrestre (peccato che il DVB in italia sia ancora in una fase imbarazzante… a proposito, che diavolo di fine hanno fatto MTV e La7? Grrrr!) e audio, video e file server per tutta la casa.
Infine, due mesi fa, ho acquistato il mio secondo macbook, uno nero, il massimo della potenza della serie macbook e anche qui sono rimasto molto contento, la migrazione dal vecchio macbook, che ora usa la mia morosa, è stato un lampo, un cavo firewire e via: utente, documenti e impostazioni erano già li che mi aspettavano al primo login nella nuova macchina, sono tornato operativo, lavorativamente parlando, 30 minuti dopo aver varcato la soglia di casa mia… non male, vero?
Ovviamente abbracciando completamente la filosofia mac ho anche acquistato il mio primo ipod nano, eseguito i miei acquisti su iTunes e, grazie alla rottura del mio access point, anche una Airport extreme (che presto userò anche come print server), una vera full immersion, completamente nel mio stile, non c’è che dire….

Però…

Però GNU/Linux mi manca, lo reputo ancora un sistema superiore, per lo meno come possibilità di personalizzazione, ragionandoci a mente fredda, bhe… tutti e due sono molto simili, sono pur sempre dei *nix e mi ci trovo a casa, le applicazioni che uso in uno o nell’altro si equivalgono, molte sono esattamente le stesse (anche se in Mac devo appoggiarmi al maledetto X11 e perdere coerenza), quindi non c’è una ragione particolare per doverne preferire uno, non fosse per la libertà e il fermento.. una volta che li assapori e ti ci immergi completamente per tanti anni, è difficile farne a meno, è davvero solo una questione di sensazione, come funzionalità per me sono entrambi più che perfetti, ma il mondo GNU/Linux è continuamente in movimento, applicazioni sempre più geniali si affacciano al mondo desktop e mi pare di stare perdendo qualcosa in questa pazza corsa, non fosse altro, ad esempio, per l’inutile, meraviglioso compiz e le implementazioni di software sempre meglio integrati con protocolli alla zeroconf (avahi, bonjour, upnp, …) che rendono i computer di casa un network vivo, vitale nel senso di libertà di scambiare informazioni, di parlare, senza dover impazzire con tante configurazioni.

Chissà, so che ho molto da lavorare, non posso di certo mettermi a installare e reinstallare continuamente sistemi operativi per gioco, però…

Però in un piccolo angolo del mio cervello un’ombra nera urla, un po’ soffocata, ma grida e chissà, prima della fine dell’anno, in un lungo week end di terrore ^_^, un Gibbone Coraggioso potrebbe fare la sua entrata trionfale, scacciando dalla tana una povera Tigre incatenata… magari accompagnato da un fiero Leopardo.

Ormai sembra che debba solo decidere quali tane liberare….