Article
1 comment

MacOS Notepad

Kennt ihr das? Es gibt so Dinge, die man alle paar Monate mal braucht, aber nie merken kann? So geht es mir mit MacOS “Spezialitäten” an der Kommandozeile. Deshalb sammle ich hier so Kleinigkeiten, die man immer mal wieder brauchen kann. Vielleicht hilft es ja einem meiner Leser weiter …

ISO Image auf USB Stick “brennen”

Zuerst muß man die Datei ins IMG Format wandeln, dann den Stick unmounten, aber nicht auswerfen und schließlich das IMG binär auf den Stick kopieren. Im wesentlichen entspricht diese Anleitung der auf der Ubutu-Downloadpage.

ISO Images in IMG Dateien wandeln

Wer ab und zu ein ISO Image auf einen USB Stick kopieren möchte, sollte das Image zuvor ins IMG Format gewandelt werden. Das geht mittels:

hdiutil convert quelle.iso -format UDRW -o ziel.img

Gemounteten USB-Stick ausfindig machen

Disk0 ist im allgemeinen die interne Festplatte/SSD des Mac. Um heraus zu bekommen, welchen Devicenamen der USB-Stick hat, gibt man ein:

diskutil list

USB-Stick unmounten

Jetzt müssen wir den Stick unmounten, damit wir ihn beschreiben dürfen. Aber nicht “auswerfen”/”ejecten”, sonst kommt das Betriebssystem nicht mehr an die Hardware.

diskutil unmountDisk /dev/diskN

Image kopieren

Das IMG Image kopieren wir mit dem Diskdoubler dd auf den Stick. Die Parameter bedeuten: if=In-File, of=Out-File, bs=Block-Size (schön groß, damit es schnell geht):

sudo dd if=/path/to/downloaded.img of=/dev/rdiskN bs=1m

“rdiskN” ist hierbei das raw device derselben Platte wie “diskN”. Laut Ubuntu Webpage gehts damit manchmal schneller …

USB-Stick auswerfen

Jetzt können wir den Stick richtig auswerfen, damit man ihn ziehen kann:

diskutil eject /dev/diskN

Article
0 comment

Wie man einen Novell iPrint Drucker manuell auf einem Mac installiert

Die nachfolgende Anleitung habe ich erst einmal als Gedankenstütze für mich selbst zusammen gestellt, weil ich mit Sicherheit morgen schon vergessen habe, wie das ging. Aber vielleicht hilft sie ja auch jemand anders weiter …

Das Netz ist voll von Fehlermeldungen und Hilfeanfragen zu dem Thema, wie man einen per Novell iPrint angebundenen Netzwerkdrucker an einen Mac anbinden kann.
Eigentlich sollte das ganz einfach sein, weil der jeweils zuständige iPrint Server eine Webseite besitzt, auf der alle Drucker gelistet sind. Wenn man den gewünschten Drucker anklickt, geht ein Popup auf, das fragt, ob man den Drucker installieren möchte. Wenn man dann “Ja” sagt, kommt … eine Fehlermeldung, daß die iPrint Library keinen passenden Druckertrieber aufweise, weil der “Administrator” keinen hinterlegt hätte.
Man kann jetzt, wenn man ganz sicher weiß, daß die Netzwerkverbindung zum Drucker steht (alle passenden Ports offen etc.) den Drucker auch von Hand installieren. Dazu geht man wie folgt vor:

  1. Druckertreiber des Herstellers installlieren (bei mir war das ein Dell D3130cn)
  2. iPrint Client von der Novellseite runter laden (dazu braucht man ein kostenloses Login) und installieren
  3. Die Druckerliste des iPrint Servers im Browser anzeigen, also sowas wie http://<Servername>/ipp

Ganz hinten in der Liste gibt es einen Infobutton für jeden Drucker, das sieht etwa so aus:
Bild 1

 

 

 

Den klickt man an, dann sieht man ein Popup mit den Deitailinfos zu diesem Drucker. Das wiederum sieht etwa so aus:
Bild 2

 

 

 

 

 

 

 

 

 

 

 

Jetzt markiert man mit der Maus den Servernamen inklusive Queuename, aber ohne das Protokollpräfix ipp://, so wie der rote Kasten das zeigt und kopiert sich den Vogel in die Zwischenablage.

  1. Jetzt geht man in den System Preferences des Mac in die Druckerverwaltung und klickt auf das Plus-Icon zum hinzufügen eines Druckers. In dem aufgehenden Popup stellt man sicher, daß man oben in der Leiste mit den möglichen Protokollen ein “Erweitert” oder “Advanced” sieht. Sollte das nicht der Fall sein: rechte Maustaste in der Zeile, “Symbolleiste anpassen” und das “Erweitert”-Zahnrad in die Iconzeile ziehen, “Fertig” klicken.

  2. Nun klickt man, wie wohl zu erwarten, auf “Erweitert”, dann sucht der Mac eine Zeit lang Drucker im Netz, wird aber wahrscheinlich nichts finden. Nun bekommt man einen Dialog wie den folgenden:
    Bild 3

Obwohl der iPrint-Server ja ipp-Protokoll spricht, wählt man im “Typ” Dropdown “Internet Printing Protocol (iprint)” (1.). Dann pastet man den eben kopierten Servernamen inklusive Queue in das “URL” Feld direkt hinter iprint://. Die letzte Amtshandlung ist, über das unterste Dropdown den passenden Druckertreiber, den man hoffentlich vorher installiert hat, auszuwählen.

  1. Meist versucht der Mac noch herauszufinden, welches Hardwarezubehör installiert ist (Speicher, Papierkassetten, Festplatte, Duplexeinheit). Sollte er das nicht schaffen (was meist der Fall ist), kann man die entsprechenden Features von Hand wählen und den Drucker hinzufügen.

  2. Jetzt sollte alles funktionieren und man kann ein Probedokument ausdrucken …

Article
0 comment

Mac App für Entwickler: qPHP

Heute möchte ich kurz eine kleine App meines Kollegen Dean Tomasevic vorstellen, die eine fantastische Hilfe bei der täglichen Arbeit mit PHP sein kann. qPHP ist ein kleines Tool, daß man im App Store erwerben kann.

qPHP_Browser

Das Tool besteht aus einem Fenster mit 2 Bereichen, einem Input-Feld in der oberen Hälfte und einem Output unten, dieser mit zwei Tabs für eine HTML gerenderte Ausgabe und als reiner Konsolentext.

qPHP_Code_Console

Zusätzlich gibt es natürlich einen “Execute” Knopf, der den Code ausführt und – besonders interessant – ein Dropdown zur Auswahl einer PHP Version. Momentan werden die Versionen PHP 5.3, 5.4 und 5.5 zur Verfügung gestellt. Das spannende ist: man muß die PHP Interpreter nicht selbst installieren, die kommen mit der App!

Anders als bei der App “Quick Programming” muß man keine PHP Processing Instructions (<?php und ?>) mit angeben, das weiß die App von selbst (was soll man auch sonst eingeben, wenn nicht PHP Code?). Man kann das aber doch machen, dann stellt die App das fest und ergänzt den Quellcode nicht intern um die Instructions. Dieser Automatismus ist sinnvoll, man kann nämlich auch mittels CMD-O ein beliebiges PHP-File öffnen und in der App ausführen. Und die enthalten ja nun meistens die PIs.

Sehr schön ist auch, daß das App-Fenster fast beliebig in Größe und Aufteilung zwischen den beiden Bereichen variierbar ist. Klingt normal, kann aber nicht jeder.

Alles in allen eine klare Kaufempfehlung für PHP Entwickler auf dem Mac!

Article
0 comment

Virtual LAMP develop environment with vagrant on a Mac

Sometimes its preferable to have a controlled development environment. One way to do so is using a virtualization. One of those is Oracle’s VirtualBox. To use it seamlessly in a Mac based development setup there is a way to boot a VirtualBox headless, that means without a GUI. To make life a bit easier some really smart ruby guys have developed Vagrant, a system to build and control headless VirtualBox installations.VirtualBox also supports port forwarding (for ports >1024, we come to that later) so we’re able to access the services inside the box from the Mac outside. It also supports sharing directories, so we also can access the project files from both sides of the box.
Fortunately Vagrant provides a Ruby config file to setup both sharing and port forwaring in a totally easy way. To get started, please install VirtualBox and Vagrant as described on the respective web sites.
We now need to supply a prebuilt Debian Squeeze box. Graeme Mathieson was so kind to supply it here. We follow his instructions and install tha base debian using a

vagrant box add debian_squeeze_32 http://mathie-vagrant-boxes.s3.amazonaws.com/debian_squeeze_32.box

To start now we need a project directory. I keep all my Vagrant projects in a special directory ~/vagrant. Therein I created a project directory called debian_squeeze since I’m going to create a Debian Squeeze box. In this directory we create a Project using vagrant init debian_squeeze_32. This creates project file named Vagrantfile which is already preconfigured to use our Debian box.. Open that with the editor of your choice and add two lines of port forwarding below the one commented out as anexample:

  config.vm.forward_port “http”, 80, 8080
  config.vm.forward_port “mysql”, 3306, 3306

This will forward the MySQL standard port and the web server port 80 to external 8080. In addition I would like to share a directory, where all my web roots will reside. So please go the comment block below the forwarding examples which presents an example for a share_folder function call and enter the following line:

  config.vm.share_folder “opt-sites”, “/opt/sites”, “/opt/sites”

This means: name this share “opt-sites” and link the internal /opt/sites to the Mac directory /opt/sites. Note that both directives are simple ruby function calles and in both the first parameter is a custom string to identify the share / forwarding internally. And please replace my /opt/sites with the paths you like.
Close the editor and fire up your installation with vagrant up. Log into your box with vagrant ssh You will be logged in as user vagrant who is allowed to administer the system with sudo. Now we can install all the needed PHP5 and MySQL packages. The Debian packaging system will ensure that the services will also be started up so we are ready to proceed.
Log out from the system with CRTL-d and test the web server installation and forwarding by pointing your browser to http://127.0.0.1:8080 You s.hould see the default Apache web page. Now if you’re like me you would like to get rid of that 8080 port. On a mac you can do so by reconfiguring the ipfw firewall with an additional local transparent proxy rule. Luckily a user over at ServerVault called Sammy has done this for a slightly different port setup. Since I don’t like to set up the rule on the command line I installed WaterRoof, a GUI for ipfw. Start WaterRoof and add a rule containing

fwd 127.0.0.1,8080 tcp from 127.0.0.1 to 127.0.0.1 dst-port 80

My rule has the rule no. 1000. This is only for the sequence of execution. With that in effect, you now can access your debian web server with http://127.0.0.1 And y.ou can install some MySQL client tool and access the MySQL server on localhost:3306.
One last note of cation: please don’t use vagrant destroy on your project since that deletes any Debian package installed into your Squeeze box and lets you start with a brand new naked box. Hope you enjoyed and happy hacking.

[Update]
To use the port forwarding on the command line, please use:

sudo /sbin/ipfw -q add fwd 127.0.0.1,8080 tcp from 127.0.0.1 to 127.0.0.1 dst-port 80