Skip to content
accelerando

Tag Archives: Mac OS X

Apple delays Leopard release until October

13-Apr-07

Damn, i was looking forward to install Leopard in my vacancy… But it seems it’s not gonna happen:

“We can’t wait until customers get their hands (and fingers) on it and experience what a revolutionary and magical product it is,” Apple said. “However, iPhone contains the most sophisticated software ever shipped on a mobile device, and finishing it on time has not come without a price — we had to borrow some key software engineering and QA resources from our Mac OS X team, and as a result we will not be able to release Leopard at our Worldwide Developers Conference in early June as planned.”

Apple Insider

Hidden Mac OS X Features

21-Mar-07

Here is a nice article on using the “defaults” command in OS X, check it out:

Top 15 Terminal Commands for Hidden Mac OS X Settings

Universal Binaries mit GCC

19-Jan-07

Nützlich, wenn man ohne XCode unterwegs ist und “nur mal schnell” was kompilieren möchte:

Universal Binaries

Ruby On Rails native MySQL Bindings Vs. RMagick

02-Jan-07

I’m writing this post in english in hope that more people find it useful…

Some times ago i really had bad problems installing the MySQL Gem 2.7 with Ruby 1.8.2 or 1.8.5 in conjunction with Rails 1.1.6 on Mac OS X 10.4

Compilation failed with:

Building native extensions. This could take a while…
mysql.c: In function ‘Init_mysql’:
mysql.c:2015: error: ‘ulong’ undeclared (first use in this function)
mysql.c:2015: error: (Each undeclared identifier is reported only once
mysql.c:2015: error: for each function it appears in.)
mysql.c:2015: error: parse error before numeric constant
mysql.c:2018: error: parse error before numeric constant
make: *** [mysql.o] Error 1
mysql.c: In function ‘Init_mysql’:
mysql.c:2015: error: ‘ulong’ undeclared (first use in this function)
mysql.c:2015: error: (Each undeclared identifier is reported only once
mysql.c:2015: error: for each function it appears in.)
mysql.c:2015: error: parse error before numeric constant
mysql.c:2018: error: parse error before numeric constant
make: *** [mysql.o] Error 1
ruby extconf.rb install mysql — –with-mysql-dir=/usr/local/mysql
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lm… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lz… yes
checking for mysql_query() in -lmysqlclient… yes
checking for mysql_ssl_set()yes
checking for mysql.h… yes
creating Makefile

The gem would then install with Successfully installed mysql-2.7. Creepy!!! But that damn thing just didn’t work.

After quite some googling i found this one:

Running Rails on OS X with MySQL 5.0.24

It’s all about puting a little

#ifndef ulong 
#define ulong unsigned long
#endif

somewhere in “/usr/include/stdlib.h”.

This tipp is still necessary for MySQL 5.0.24+. Thanks again mate!!

But here the trouble starts….

I put the define in a nice little conditional just in case but bah… It would come down to hunt me…

For my project DailyFratze.de i also need RMagick. Again, the gem (1.14.1, 1.14.0 and 1.13) failed to compile but didn’t tell (on runtime it said “require “RMagick” LoadError: No such file to load — RMagick.so” … ) and installation from source did fail as well with:

setup.rb:655:in `command': system("make") failed (RuntimeError)
from setup.rb:664:in `make'
from setup.rb:1258:in `setup_dir_ext'
from setup.rb:1532:in `__send__'
from setup.rb:1532:in `traverse'
from setup.rb:1530:in `dive_into'
from setup.rb:1530:in `traverse'
from setup.rb:1534:in `traverse'
from setup.rb:1533:in `each'
... 8 levels...
from setup.rb:826:in `__send__'
from setup.rb:826:in `invoke'
from setup.rb:772:in `invoke'
from setup.rb:1578
make: *** [all] Error 1

Damn! After banging my head against the walls, reinstalling ImageMagick and all it’s depencies either direct from source, via i-installer and finally as mentioned here i took a break, visited some porn sites and stuff like that and though, hmm… stdlib.h….

I removed the little define and bam! It’s that easy, RMagick compiles just fine…

From the forums i found i guess other people with the same error message may have the same problem as i had…

I really wish installing a ruby on rails environment would be a less pain in the ass…. somewhere near as easy as developing with rails.

Eine handvoll iTunes Tipps

27-Dec-06

Da ich gerade ein Mac OS X neu aufgesetzt habe, ist mal wieder nichts so, wie ich es gewohnt bin. Deswegen zuerst im iTunes die Bedeutung der Pfeile neben Album und Künstlernamen umstellen. Standardmäßig zeigen die nämlich in den iTMS. Das find ich aber ziemlich unnütz.

Mit folgenden Befehl

defaults write com.apple.iTunes invertStoreLinks -bool YES

springen sie in die Musikbibliothek. Wird der Pfeil z.B. neben “Queen” gedrückt, so werden danach alle Titel von Queen angezeigt.
Das ursprüngliche Verhalten erreicht man, wenn man die Wahltaste dabei gedrückt hält.

Rückgängig macht man das durch

defaults write com.apple.iTunes invertStoreLinks -bool NO

Dann habe ich mir auch wieder mein geliebtes Synergy installiert, eine kleine Apple iTunes Fernsteuerung, die zusammen mit Growl iTunes perfekt steuert und den aktuellen Titel wunderhübsch im Musikvideostil anzeigt.
Jedenfalls, worauf ich hinaus will: In einer der letzten Versionen hat Synergy auch gelernt, mit Last.FM umzugehen. Ergo: Man kann sich den unsäglichen neuen Last.FM Player sparen, wenn man dort einen Account hat. Sehr praktisch.

Safe Sleep: Sicherer Ruhezustand

17-Dec-06

Anläßlich dieses Ereignisses bestand Grund nach den Einstellungen für den Ruhezustand von Mac Rechnern zu gucken. Ich weiß nicht mehr bei welcher Generation, aber kurz vor der Intelumstellung konnten die neuen PowerBooks das und mit einem kleinen Hack auch die ältere Generation.

Mit den neuen Mac Books ist das kein Problem. Hier hilft pmset weiter:

sudo pmset -a hibernatemode x

x steht dabei für folgende Optionen:

  1. Die alte Sleep-Variante, in der das RAM über Akku oder Netzadapter mit Strom versorgt wird.
  2. Hier wird das RAM auf die Festplatte gesichert und der Laptop heruntergefahren.
  3. Der Standard-Modus neuerer Laptops vereint Modus 0 und zur Sicherheit Modus 1.
  4. Dieser funktioniert wie Modus 1, aber ist für sicheres virtuelles RAM gedacht, welches in den Sicherheitseinstellungen aktiviert werden kann.
  5. Dieser funktioniert wie Modus 3, ist aber ebenfalls für sicheres virtuelles RAM gedacht.

Klar ist es prima, wenn das Notebook schnell wieder aufwacht, allerdings ist es meines Erachtens praktischer, wenn im Ruhezustand der Akku nicht belastet wird.

Meine Erfahrung mit Safe Sleep: Es funktioniert absolut stabil. Selbst auf älteren Macs ist es mir noch nicht passiert, dass sie nicht mehr aufgewacht sind, im Gegensatz zu vielen PCs.

Apple AFP SharePoints

17-Dec-06

Im Moment baue ich einen Mac Mini Core Solo zum Media und Webserver aus. Für diesen Zweck hat das Gerät eine nette, externe Platte mit hinreichend Platz bekommen.

Hin- und herüberlegt: Wenn ich Samba nutze, müssen die Kennwörter des entsprechenden Accounts “unsicher” gespeichert werden. Das klingt nicht gut. Also habe ich mich für AFP entschieden.

Und da ging der Palaver los: Angemeldet, hmm, wo ist das Laufwerk? Stimmt, es werden immer nur die Homeverzeichnisse geshared. So eine Scheisse. Normalerweise findet man ja überall die Konfigurationsdatei, nicht so in diesem Fall. Und wir mir Tante Google gesagt hat, bin ich nicht der einzige der sie sucht. Hab sie auch nicht gefunden. Wenn das jemand weiß, wo das ist… Bitte eine kurze Email schreiben.

Jedenfalls, geholfen habe ich mir mit Sharepoints von HornWare. Entweder als Standalone oder als Pref Pane nutzbar und voila, externe Laufwerke lassen sich als AFP Sharepoint bereitstellen. Das Ergebnis:

afp

Fantastisch!

Alle sagen immer, der Mac Mini Core Solo wäre langsam, aber das muß man mal in Relation zu einem Mac Mini G4 oder einem PC in der Größe sehen. Das Dingen rockt.

Das fertige Ergebnis:

Apple Mac Mini Core Solo Server

Auf dem Rechner läuft übrigens auch Daily Fratze.

Blöde Kleinigkeit (es sind immer!!! die Kleinigkeiten): Warum hat Iomega nicht die Farbe gescheit hinbekommen? Die Platte (Iomega Minimax) ist sonst absolut super. Man kann sie per FireWire und USB gleichzeitig anschliessen und per DIP Schalter einen Anschluss auswählen. Das hat den Vorteil: Man kann beide Hubs (FireWire und USB nutzen). Das geht bei vielen billigen Platten nicht.

Das schöne an AFP ist, dass es ein sogenanntes transparentes Protokol ist. Das heißt, nutzende Programme bekommen nichts davon mit, dass ihre Dateien janz woanders sind. So kann man z.B. in iTunes beim Start die ALT Taste drücken und eine andere Bibliothek auswählen. Ganz transparent habe ich dann auf jedem Rechner die gleichen Daten. Der Vorteil gegenüber dem Musicsharing via iTunes: Ganz einfach, die Playcounts erhöhen sich, ich kann die Ratings ändern und sogar übers Netz CDs rippen.

Praktischerweise funktionieren so auch alle Skripte fürs Backup, genau wie bisher.

Rails mit FastCGI und Apache unter Mac OS X

28-Jun-06

Die vorherigen Artikel Ruby on Rails mit Mac OS X und Rails: Rolling into production on Mac OS X beschäftigten sich mit der Installation von Ruby on Rails unter Mac OS X bzw. mit der Produktivumgebung von Rails.

Prämisse für mich war jedesmal, dass der eingebaute Mac OS X Apache genutzt wird und nicht ein zweiter Serverprozess.

Heute soll es um die FastCGI Integration gehen. CGI war mir bis jetzt zum Testen nicht zu langsam. Fängt man aber mit AJAX Spielerein an und nutzt Rails mit CGI, kann man das auch getrost ganz sein lassen. Vorweg: FastCGI zu CGI ist ein Unterschied wie Tag und Nacht.

Was braucht man? (Die Links verweisen direkt auf die benötigten Dateien)

Die Installation ist relativ einfach.

FastCGI SDK:

./configure
make
sudo make install

mod_fastcgi

apxs -o mod_fastcgi.so -c *.c 
sudo apxs -i -a -n fastcgi mod_fastcgi.so

Ruby Bindings

ruby install.rb config
ruby install.rb setup
ruby install.rb install

Fast geschafft. Es folgt ein Apache Neustart mit

sudo apachectl graceful

Anschliessend gibt es einen kleinen Pitfall. Man muss zwei Tempverzeichnisse für FastCGI chmoden:

chmod 777 /tmp/fcgi_ipc
chmod 777 /tmp/fcgi_ipc/dynamic

sonst geht es in die Hose.

Anschliessend zur Apache Konfiguration. Diese habe ich wieder auf zwei Dateien aufgeteilt. In der httpd.conf wird das Modul mod_fastcgi geladen. Der Installer hat diesen Eintrag bereits automatisch erzeugt. Wenn nicht, folgende Zeilen ergänzen:

LoadModule fastcgi_module     libexec/httpd/mod_fastcgi.so

Danach den Handler einrichten:

<IfModule mod_fastcgi.c> 
FastCgiIpcDir /tmp/fcgi_ipc/ 
AddHandler fastcgi-script .fcgi 
</IfModule>

und wir sind fast fertig. Die eigentliche Rails Anwendung wird wieder in der Userspezifischen httpd.conf eingestellt, zu finden unter /etc/httpd/users/name.conf:

<IfModule mod_fastcgi.c>
   FastCgiServer "/Users/msimons/dev/rails/test/public/dispatch.fcgi" -
initial-env RAILS_ENV=production -processes 15 -idle-timeout 60
</IfModule>

Die Werte fürs Timeout und die Anzahl Prozesse sind aus dem Buch “Agile Web Development with Rails”.

Die Anwendung nutzt fastcgi, sobald man die entsprechende Rewrite Rule in .htaccess im public folder setzt:

RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

bzw. die ursprüngliche Regel

RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

ändert.

Danach ist ein letzter Apache Neustart fällig und man sieht seine Anwendung auf einmal in einem ganz anderen Tempo.

Rails: Rolling into production on Mac OS X

29-May-06

Damit die

SetEnv RAILS_ENV production

Direktive in der httpd.conf oder einer lokalen .htaccess Datei funktioniert, muss das Modul “env_module” im Apache aktiviert werden. Dies wird unter Mac OS X nicht standardmässig getan.

Folgende Zeilen in der /etc/httpd.conf einkommentieren:

LoadModule env_module         libexec/httpd/mod_env.so
AddModule mod_env.c

Ruby on Rails mit Mac OS X

05-May-06

Nachdem mich die Tutorials bzw. die kurzen Videos auf rubyonrails.org sehr begeistert haben, musste ich natürlich direkt Rails ausprobieren.

Für den Einstieg sind die diversen Tutorials, die man im Netz findet, recht interessant, wirklich gut ist aber das Buch Agile Web Development with Rails. Man sollte darauf achten, dass man die zweite Ausgabe kauft und nicht wie ich die erste über Amazon.

Im Buch steht soweit alles drin, was man tun muss, um unter Mac OS X direkt loszulegen. Seit OS X Tiger in der Version 10.4.6 funktioniert auch die mitgelieferte Ruby Version problemlos mit Rails.

Um Rails zu installieren sind folgende Schritte notwendig:

RubyGems

curl -O http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz
tar xzvf rubygems-0.8.11.tgz
cd rubygems-0.8.11
sudo ruby setup.rb

Rails

sudo gem install rails --include-dependencies

FastCGI bzw. LightTPD habe ich übersprungen, brauche ich zur Zeit nicht. Allerdings muss natürlich eine Datenbank her. Da ich bereits seit langem MySQL auf dem Rechner habe, wollte ich das auch nutzen:

MySQL

MySQL war der einzige Punkt, der etwas kritisch war. Die folgenden Befehle müssen natürlich an den Installationsort von MySQL angepasst werden, in den meisten Fällen wird der MySQL Installer allerdings einen Link nach /user/local/mysql erzeugt haben.

Folgender Befehl versagte bei mir:

sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

Und ich sah die ganze Zeit nur:

no checking for main() in -lm...
yes checking for mysql_query() in -lmysqlclient...
no checking for main() in -lz...
yes checking for mysql_query() in -lmysqlclient...
no checking for main() in -lsocket...
no checking for mysql_query() in -lmysqlclient...
no checking for main() in -lnsl...
no checking for mysql_query() in -lmysqlclient...

Geholfen hat die explizite Angabe der Libraries und Headerverzeichnisse wie folgt:

sudo gem install mysql -- --with-mysql-include=/usr/local/mysql/include/ --with-mysql-lib=/usr/local/mysql/lib/

Danach lief Rails mit dem eingebauten WEBrick problemlos.

Der eingebaute Apache unter Mac OS X

Für fertige Applikationen will ich den eingebauten Apache von OS X nutzen. Auch dazu gibt es einige Tutorials, aber keines alleine führte zu einer funktionierenden, sinnvollen Konfiguration.
Ich bin gewohnt, dass ich meine Seiten auf meinem Rechner unter http://localhost/~msimons/blah erreiche und das wollte ich auch mit den Railsanwendungen können.

Der Mac OS X Apache ist in meinen Augen für einen Rechner, der nicht direkt im Internet hängt, sehr sinnvoll konfiguriert, ich wollte deshalb nicht in der zentralen httpd.conf rumpfuschen. Praktischerweise legt OS X unter /etc/httpd/users/ für jeden OS User eine weitere conf Datei an, die ich entsprechend anpasse. Dazu habe ich mir einen Link auf dieses Datei erstellt und den Eigentümter von root auf mich geändert.

Für eine Beispielapplikation sieht das dann so aus:

Alias /~msimons/test/  "/Users/msimons/dev/rails/test/public/"
Alias /~msimons/test   "/Users/msimons/dev/rails/test/public/"
 
<Directory "/Users/msimons/dev/rails/test/public/">
    Options ExecCGI FollowSymLinks
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

Danach muss die .htaccess Datei im public Verzeichnis der Testanwendung angepasst werden:

RewriteEngine On
RewriteBase /~msimons/test/

Die forwardslashes sind essentiell.

Ich hatte hier Hinweise gefunden, dass man in einigen Verzeichnissen noch Rechte anpassen muss, weil Apache natürlich nicht im Kontext des Benutzers läuft, sondern unter www:

Deswegen:

cd ~/dev/rails/
sudo chgrp -R www Test
cd Test
chmod 0775 db
chmod 0777 log
chmod 0775 public
chmod 0666 log/*.log

Allerdings wurde dabei das tmp Verzeichnis vergessen:

chmod -R 0775 tmp

Nach einem kurzen Apache Neustart über die Systemeinstellungen oder per

sudo apachectl graceful

steht dem Railsvergnügen unter OS X nichts mehr im Wege.

Resourcen

Geholfen haben mir unter anderem:

Gute Bücher gibt es hier: The Pragmatic Programmer. Sehr empfehlenswert Agile Web Development with Rails und Programming Ruby. Wenn man ersteres kauft, gibt es auf jedes Ruby Buch Rabatt. Sehr charmant.

Close
E-mail It