seeseekey.net - Invictus Deus Ex Machina

Seit ein paar Tagen ist es mög­lich mit den frei ver­füg­ba­ren Unity Ver­sio­nen auch Android und iOS Builds zu bauen. Wenn man nun also anfängt und das aktu­elle Android SDK her­un­ter­lädt und anschlie­ßend ver­sucht in Unity einen Android Build zu erzeu­gen wird man fest­stel­len, das dass ganze nicht funk­tio­niert. Statt­des­sen bekommt man für einen kur­zen Moment die Meldung:

Error building Player: Exception: android (invokation failed)

zu sehen. Der Grund für die­sen Feh­ler ist dabei recht sim­pel. Unity arbei­tet im Moment noch nicht mit der aktu­el­len SDK Ver­sion (r22) von Android zusam­men. Hier muss auf die ältere r21 Ver­sion umge­stie­gen wer­den, damit Unity funk­tio­niert. Diese gibt es für Linux, Mac OS X und Win­dows.

Sel­ten gab es einen Embed­ded Com­pu­ter so güns­tig wie den Raspberry Pi, also was liegt da näher sich einen sol­chen für den Hei­m­ein­satz zu besor­gen. Wenn man sich anschaut bei wel­chen Prei­sen Air­play Boxen anfan­gen, wird man mer­ken das ein Raspberry Pi mit einem ent­spre­chen­den WLAN Stick und einem Boxen­sys­tem immer noch güns­ti­ger ist. Airplay-Boxen wel­che im Han­del erhält­lich sind begin­nen ab 200 € mit einer nach oben offe­nen Grenze.

Für einen Raspberry Pi, Air­play Ser­ver benö­tigt man:

  • einen Raps­berry Pi
  • ein Gehäuse für den Pi
  • einen WLAN Stick
  • ein paar Boxen

Im ers­ten Schritt sollte man sich eine Raspberry Pi Dis­tri­bu­tion her­un­ter­la­den, in die­sem Fall wird Ras­pian benutzt. Dazu wird das Image her­un­ter­ge­la­den und ent­packt. Anschlie­ßend hat man auf dem Rech­ner eine .img Datei. Diese muss nun auf die SD Karte geflasht wer­den. Um her­aus­zu­fin­den, wel­ches Volume nun geflasht wer­den muss, kann man sich auf dem Ter­mi­nal unter Mac OS X mit­tels „df -h“ anschauen wel­ches Gerät dazu­kommt. Eine andere Mög­lich­keit ist es die Karte über den Namen zu iden­ti­fi­zie­ren, wel­cher bei neuen Kar­ten meist „NO NAME“ oder „Untit­led“ sein sollte.

Wenn das pas­sende Gerät iden­ti­fi­ziert wurde, sollte die gemoun­tete Par­tion mittels:

diskutil unmount /dev/disk2s1

wie­der frei­ge­ge­ben wer­den. Nun wech­selt man im Ter­mi­nal in den Ord­ner in wel­chem die Image­da­tei liegt und gibt dabei fol­gen­des ein:

sudo dd bs=1m if=raspbian.img of=/dev/rdisk2

Zu beach­ten ist dabei das aus „disk2s1“ -> „rdisk2“ wird, womit das Gerät direkt ange­spro­chen wird. Theo­re­tisch würde auch „disk2“ funk­tio­nie­ren, aller­dings geht die Über­tra­gungs­ge­schwin­dik­eit hier­bei dras­tisch in den Kel­ler. Nach dem flas­hen der Karte wird das Gerät mittels:

diskutil eject /dev/rdisk2

aus­ge­wor­fen. Die Karte kann nun in den aus­ge­schal­te­ten Pi gelegt wer­den und die­ser mit Strom ver­sorgt wer­den. Beim ers­ten Start wird man vom Kon­fi­gu­ra­ti­ons­menü „raspi-config“ begrüßt. Hier kann man das Tas­ta­tur­lay­out, den SSH Ser­ver und andere Dinge ein­stel­len. Wir stel­len ein deut­sches Tas­ta­tur­lay­out ein und akti­vie­ren den SSH Ser­ver. Des­wei­te­ren sollte man das Pass­wort für den Nut­zer Pi ändern und die root Par­tion auf den gesam­ten Bereich der SD Karte aus­deh­nen. Anschlie­ßend kann man den Pi neustarten.

Für das draht­lose Netz wird der WLAN Stick an den Raspberry Pi ange­schlos­sen. Wenn man dies im lau­fen­den Betrieb macht kann es pas­sie­ren das der Pi anschlie­ßend neu­star­tet. Das ganze sieht etwas nach einer Brow­nout Detec­tion aus, sprich der Raspberry hat für einen Moment zu wenig Strom und star­tet neu.

In der Kon­sole kann man nun mit­tels „ifcon­fig“ fest­stel­len ob ein wei­te­res Netz­werk­ge­rät hin­zu­ge­kom­men ist. Dort soll­ten die Geräte „eth0“, „lo“ und „wlan0“ auf­tau­chen. Nun geht es an die Kon­fi­gu­ra­tion des WLANs. Dazu wird die „/etc/network/interfaces“ mit­tels „nano“ aufgerufen:

sudo nano /etc/network/interfaces

Dabei wer­den einige Ände­run­gen in der Datei vor­ge­nom­men. Anschlie­ßend sollte die „inter­faces“ Datei wie folgt aussehen:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -B w -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Nun geht es an die Kon­fi­gu­ra­tion der „/etc/wpa_supplicant/wpa_supplicant.conf“ Datei. Diese sollte nach der Kon­fi­gu­ra­tion in etwa so aussehen:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
  ssid="WLAN"
  scan_ssid=1
  proto=RSN
  key_mgmt=WPA-PSK
  pairwise=CCMP
  group=CCMP
  psk="geheim"
}

Im vor­lie­gen­den Bei­spiel wurde ein WPA 2 ver­schlüs­sel­tes WLAN ein­ge­rich­tet. Bei einem Neu­start sollte das WLAN anschlie­ßend ver­füg­bar sein. Ist dies nicht der Fall, so kann der Pro­zess mittels:

sudo wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -d

manu­ell akti­viert wer­den. Dabei sieht man dann auch ent­spre­chende Feh­ler­mel­dun­gen, wel­che auf Pro­bleme hin­wei­sen kön­nen. Wenn die WLAN Schnitt­stelle aktiv ist, kann man auf einem ande­ren Ter­mi­nal mit­tels „iwcon­fig“ sehen ob die Schnitt­stelle funk­tio­niert. Dies ist dann gege­ben wenn die Schnitt­stelle nicht mehr als „unas­so­cia­ted“ mar­kiert ist.

Der letzte Punkt der jetzt noch fehlt ist die Unter­stüt­zung für Air­play. Hier­für wird Shair­port instal­liert. Dazu wer­den im ers­ten Schritt die not­wen­di­gen Biblio­the­ken instal­liert, sowie der Quell­code von Shair­port und dem SDP Modul auf den Pi geholt:

sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl
git clone git clone https://github.com/njh/perl-net-sdp.git
git clone git://github.com/abrasive/shairport.git

Bevor Shair­port kom­pi­liert wird, muss das SDP Modul instal­liert wer­den. Dazu wech­seln wie in den Ord­ner und geben dort fol­gen­des ein:

perl Build.PL
sudo ./Build
sudo ./Build test
sudo ./Build install

Danach wech­seln wir in den Shair­port Ord­ner und geben dort „make“ ein. Anschlie­ßend kön­nen wir ganze mit­tels „perl shairport.pl“ star­ten und einen ers­ten Test vor­neh­men. Nun müs­sen wir noch dafür sor­gen das Shair­port beim Start des Pi auch gestar­tet wird. Außer­dem soll der Emp­fän­ger noch einen ordent­li­chen Namen bekom­men. Dazu geben wir im Shair­port Ord­ner fol­gen­des ein:

sudo make install
sudo cp shairport.init.sample /etc/init.d/shairport
cd /etc/init.d
sudo chmod a+x shairport
sudo update-rc.d shairport defaults
sudo nano shairport

Nach­dem wir die Datei „shair­port“ in „nano“ geöff­net haben, ändert wir dort den Namen z.B. in Schlaf­zim­mer oder Wohn­zim­mer. Damit bekommt der Emp­fän­ger einen ein­deu­ti­gen Namen. Nach einem Neu­start oder einem manuellen:

./shairport start

ist der eigene Air­Play Emp­fän­ger fertig.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://wiki.ubuntuusers.de/WLAN
http://wiki.ubuntuusers.de/WLAN/wpa_supplicant
http://netz10.de/2010/02/13/wlan-wpa2-mit-psk-manuell-konfigurieren/

Bei ALSA han­delt es sich um die „Advan­ced Linux Sound Archi­tec­ture“. Diese sorgt dafür das es unter Linux auch etwas für die Ohren gibt. Manch­mal ist es nötig die Ver­si­ons­num­mer der aktu­ell instal­lier­ten Ver­sion zu ermit­teln. Dies kann man auf der Kon­sole mittels:

cat /proc/asound/version

bewerk­stel­li­gen. Die Aus­gabe sollte dann in etwa so aussehen:

Advanced Linux Sound Architecture Driver Version 1.0.25.

Möchte man unter Linux eine PDF kom­pri­mie­ren, so kann dies rela­tiv unkom­pli­ziert auf der Kon­sole erle­digt wer­den. Dazu gibt man ein­fach fol­gende Zeile ein:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=output.pdf input.pdf

Ghost­script nimmt sich dann der Datei an und schreibt die Aus­gabe in das mit­tels „sOut­put­File“ bezeich­nete Ziel. Die PDFs kön­nen dabei durch­aus auf ein Drit­tel ihrer Größe schrumpfen.

Wenn man unter Linux direkt in PDFs scan­nen möchte, bie­tet es sich an gscan2pdf zu nut­zen. Unter Mac OS X gibt es ein ähn­li­ches Tool mit dem Namen PDFScanner.

PDFScanner mit geöffneten Scanoptionen

PDF­Scan­ner mit geöff­ne­ten Scanoptionen

Neben dem Scan­nen in PDFs kann PDF­Scan­ner die Bil­der ent­zer­ren und auch OCR auf die PDFs anwen­den, so das diese durch­such­bar wer­den. Im Gegen­satz zu gscan2pdf han­delt es sich bei PDF­Scan­ner um eine kom­mer­zi­elle Soft­ware. Die offi­zi­elle Seite ist unter http://www.pdfscannerapp.com/ zu finden.

PDFScanner
PDFScanner
Down­load @
Mac App Store
PDF­Scan­ner
Ent­wick­ler: Felix Rotthowe
Preis: 13,99 €

LucasArts wurde vor eini­gen Wochen von Dis­ney geschlos­sen. Mitt­ler­weile stellt sich raus, das das ganze auch gute Sei­ten hat. So wur­den die Quell­texte der Spiele „Jedi Knight 2 - Jedi Out­cast“ und „Jedi Knight - Jedi Aca­demy“ von Raven Soft­ware unter der GPLv2 ver­öf­fent­licht. Raven Soft­ware ent­wi­ckelte diese damals für Lucas Arts.

Aller­dings ist der Quell­text nicht mehr an der ursprüng­li­chen Quelle auf Sourcef­orge (Jedi Out­cast, Jedi Aca­demy) zu fin­den. Der Grund dafür ist, das es noch einige pro­prie­täre Bestand­teile im Quell­text gibt, wel­che noch ent­fernt wer­den müs­sen, bevor das ganze wie­der auf Sourcef­orge ver­öf­fent­licht wird.

Aller­dings ist der Quell­text mitt­ler­weile gespie­gelt auf Git­hub zu fin­den. So ist Jedi Out­cast unter https://github.com/dpiers/Jedi-Outcast und Jedi Aca­demy unter https://github.com/dpiers/Jedi-Academy zu finden.

Beson­ders wit­zig sind auch die Kom­men­tare in den Quelltexten:

void NPC_CheckPlayerAim( void )
{
    //FIXME: need appropriate dialogue
    /*
    gentity_t *player = &g_entities[0];

    if ( player && player->client && player->client->ps.weapon > (int)(WP_NONE) && player->client->ps.weapon < (int)(WP_TRICORDER) )
    {//player has a weapon ready
        if ( g_crosshairEntNum == NPC->s.number && level.time - g_crosshairEntTime < 200 
            && g_crosshairSameEntTime >= 3000 && g_crosshairEntDist < 256 )
        {//if the player holds the crosshair on you for a few seconds
            //ask them what the fuck they're doing
            G_AddVoiceEvent( NPC, Q_irand( EV_FF_1A, EV_FF_1C ), 0 );
        }
    }
    */
}

Mitt­ler­weile wird auch an einer Linu­xum­set­zung von Jedi Out­cast gear­bei­tet, wel­che sich eben­falls auf Git­hub befin­det.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://www.reddit.com/r/programming/comments/1bnezw/jedi_outcastjedi_academy_source_code_released/
http://news.softpedia.com/news/Raven-Software-Asked-SourceForge-to-Remove-Jedi-Academy-and-Jedi-Outcast-344896.shtml
http://news.softpedia.com/news/Jedi-Academy-and-Jedi-Outcast-Projects-Mysteriously-Disappear-from-SourceForge-344571.shtml

Was ärgert man sich immer wenn man eine Welt­raumsi­mu­la­tion sein eigen nennt, der Feind angreift und man alle Ener­gie auf die Schilde und Waf­fen len­ken möchte. Wer braucht schon Lebens­er­hal­tung? Für die die­sen Traum auch hegen, ist seit eini­ger Zeit das Spiel Fas­ter Than Liegt verfügbar.

Die Schiffsansicht in FTL

Die Schiffs­an­sicht in FTL

Das Ziel ist es dabei die Zen­trale der Föde­ra­tion zu errei­chen um ein Daten­pa­ket zu über­brin­gen. Dies ist dabei aller­dings nicht ganz ein­fach, da man von der Rebel­len­flotte ver­folgt wird und wenn man stirbt muss man wie­der kom­plett von vorne anfan­gen. Das klingt im ers­ten Moment ziem­lich frus­trie­rend, macht aber sehr viel Spaß.

Bezo­gen wer­den kann das Spiel dabei unter http://www.ftlgame.com/. Der Preis beträgt $ 10 (etwas über 8 €) und das Spiel selbst ist für Linux, Mac OS X und Win­dows ver­füg­bar. Unter http://ftl.wikia.com/wiki/FTL:_Faster_Than_Light_Wiki fin­det man auch die pas­sende Wiki zum Spiel.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/FTL:_Faster_Than_Light

Unter Linux kann man sich auf der Kon­sole eine ganze Menge Spaß erlau­ben. So kann man mit Hilfe des Befehls:

cdrecord -eject

den Tray des CD/DVD Lauf­wer­kes aus­fah­ren. Bei „cdre­cord“ wird das ent­spre­chende Lauf­werk dabei auto­ma­tisch erkannt. Das glei­che funk­tio­niert auch mittels:

eject /dev/sr0

Möchte man das Lauf­werk wie­der ein­fah­ren so wird der Eject­be­fehl um die Option „-t“ erweitert:

eject /dev/sr0 -t

Dabei muss man natür­lich dar­auf ach­ten den Mount­punkt des Lauf­wer­kes kor­rekt anzugeben.

Bei der Anwen­dung iA Wri­ter han­delt es sich um eine Anwen­dung für mög­lichst ablen­kungs­freies Schrei­ben. Mitt­ler­weile gibt es so etwas ähn­li­ches auch als Open Source Vari­ante unter dem Namen „FocusWriter“.

Der FocusWriter mit eingeblendeten Menüs

Der Focus­Wri­ter mit ein­ge­blen­de­ten Menüs

Neben nor­ma­len Text­da­teien, wer­den in Gren­zen auch RTF und Open­Do­cu­ment Dateien unter­stützt. Auf der Web­seite wel­che unter http://gottcode.org/focuswriter/ zu fin­den ist gibt es dabei Ver­sio­nen für Linux, Win­dows und Mac OS X. Focus­Wri­ter steht dabei unter der GPLv3.

Um unter Linux die Größe eines Ord­ners in der Kon­sole zu ermit­teln, gibt man dort ein­fach fol­gen­des ein:

du -hs example

Dabei wird die Aus­gabe in die­sem Fall auf eine sinn­volle Ein­heit (Byte, KiB, MiB, GiB, et cetera) her­un­ter­ge­bro­chen. Sehr inter­es­sant ist auch die Option „-ch“ wel­che jeden Unter­ord­ner ein­zeln auf­ührt und somit eine genauere Ana­lyse des Ver­zeich­nis­ses ermöglicht.