seeseekey.net - Invictus Deus Ex Machina

Über das Wochen­ende hatte ich einige GPS getagte Bil­der geschos­sen und wollte diese auf einer Karte dar­stel­len. Eine kurze Suche im Netz ergab, das so etwas in die­ser Form nicht exis­tierte (wobei hier natür­lich ein Irr­tum vor­lie­gen kann). Also wurde das ganze auf Basis von Leaf­let implementiert.

Die Webapplikation in Aktion

Die Webap­pli­ka­tion in Aktion

Leaf­let ist ein Frame­work mit wel­chem man schnell Kar­ten­ap­pli­ka­tio­nen im Web rea­li­sie­ren kann. Um den „Gps Tag­ged Image Viewer“ zu benut­zen, müs­sen die Dateien auf einem Web­ser­ver kopiert wer­den. Die Bil­der wer­den dabei in den Ord­ner „images“ kopiert. Anschlie­ßend wird das PHP Skript „parseimages.php“ aus dem „utils“ Ord­ner aus­ge­führt. Die­ses ließt die EXIF Daten aus den Bil­dern aus und erzeugt die ent­spre­chen­den Mar­ker in einer Java­script Datei. Danach kann das ganze genutzt werden.

Die Karte ist dabei mit drei Kar­ten­ebe­nen ver­se­hen, ein­mal Bing Luft­bil­der (für wel­che ein API-Key regis­triert wer­den muss), sowie Open­Street­Map in zwei unter­schied­li­chen Ren­de­rings. Der Quell­text ist unter GPLv3 ver­füg­bar und kann auf Git­Hub bezo­gen werden.

Bei der Soft­ware hat es die Open Source Bewe­gung schon weit gebracht, für so ziem­lich jeden Anwen­dungs­fall gibt es auch eine freie Appli­ka­tion. Anders sieht das bei der Hard­ware aus. Hier ist vie­les noch pro­prie­tär. Damit das nicht auf ewig so bleibt gibt es Pro­jekte wie Open­Cores wel­ches unter http://opencores.org/ zu fin­den ist.

Die Projektübersicht von OpenCores

Die Pro­jekt­über­sicht von OpenCores

Gegrün­det im Okto­ber 1999 von Dam­jan Lam­pret, gibt es auf den Web­sei­ten des Pro­jek­tes eine Reihe von offe­nen Rechen­wer­ken bis hin zu gan­zen Pro­zes­so­ren. Geschrie­ben ist das ganze meist in einer Hard­ware­be­schrei­bungs­spra­che wie VHDL, Veri­log oder Sys­tem­Ve­ri­log. Die Lizen­zen vari­ie­ren je nach Pro­jekt meist zwi­schen der LGPL oder einer BSD Lizenz.

Pro­gram­mier­spra­chen gibt es wie Sand am Meer. Aller­dings würde man bei dem Namen Haxe im ers­ten Moment höchst­wahr­schein­lich etwas ande­res ver­ste­hen. Bei „Haxe“ han­delt es sich um eine aus dem Pre­com­pi­ler „ActionS­cript­Me­taL­an­guage“ her­vor­ge­gan­gene Pro­gram­mier­spra­che wel­che von Motion Twin ent­wi­ckelt wird.

Eine Beson­der­heit von Haxe ist die Mög­lich­keit aus dem geschrie­ben­den Quell­text unter ande­rem Java­Script, PHP und auch C++ zu erzeu­gen. Dadurch bedingt wird Haxe bei der Ent­wick­lung von Web­an­wen­dun­gen bevor­zugt ein­ge­setzt. Ein Hello World würde in Haxe so aussehen:

class Test {
    static function main() {
        trace("Hello World !");
    }
}

Bei Haxe selbst han­delt es sich um freie Soft­ware, so steht der Com­pi­ler unter der GPLv2, die Biblio­the­ken selbst unter der BSD Lizenz. Die offi­zi­elle Seite ist unter http://haxe.org zu finden.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/Haxe_(Programmiersprache)

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

Wenn man in neue­ren Ver­sio­nen des Fire­fox, einen neuen Tab öff­net so sieht man dort eine Gale­rie mit häu­fig besuch­ten Web­sei­ten. Aller­dings ist diese Funk­tion nicht immer erwünscht. Um das ganze abzu­schal­ten gibt man in der Adress­leiste „about:config“ ein.

Die "about:config" Konfiguration im Firefox

Die „about:config“ Kon­fi­gu­ra­tion im Firefox

Dort sucht man dann nach dem Ein­trag „browser.newtabpage.enabled“ und setzt ihn auf „false“. Anschlie­ßend ist das alte Ver­hal­ten bei einem neuen Tab wiederhergestellt.

Da der Google Rea­der ja bald ein­ge­stellt wird, sollte man sich lang­sam dar­über Gedan­ken machen, wie es wei­ter­geht. Natür­lich kann man auf fremde Dienste wie Feedly wech­seln. Aller­dings behagt die­ser Gedanke nicht jedem, da man wie­der an einen bestimm­ten Anbie­ter gebun­den ist. Eine Abhilfe schafft hier die Soft­ware „Tiny Tiny RSS“ wel­cher auf PHP und MySQL (wahl­weise auch Post­greSQL auf­setzt). Die Soft­ware selbst steht dabei unter der GPLv2.

Probleme bei der Installation

Pro­bleme bei der Installation

Nach­dem man die Soft­ware her­un­ter­ge­la­den hat und auf sei­nen Webs­pace kopiert hat, kann es auf eini­gen Sys­te­men beim Test der Kon­fi­gu­ra­tion zu Pro­ble­men mit der Ein­stel­lung „open_basedir“ kom­men. Hat man hier keine Mög­lich­keit dies umzu­stel­len oder möchte dies nicht, so muss man einige klei­nere Anpas­sun­gen am Quell­text von „Tiny Tiny RSS“ vor­neh­men. Dazu wird in den Dateien „include/sanity_check.php“ und „install/index.php“ der Absatz:

if (ini_get("open_basedir")) {
  array_push($errors, "PHP configuration option open_basedir is not supported. Please disable this in PHP settings file (php.ini).");
}

aus­kom­men­tiert. Danach sollte die Instal­la­tion gelin­gen. Nach der Instal­la­tion kann man sich mit den Stan­dard­nut­zer­da­ten „admin“ und „pass­word“ anmel­den. Das Pass­wort sollte man anschlie­ßend sofort ändern. In den Ein­stel­lun­gen wird unter Benut­zer ein neuer Nut­zer ange­legt, damit man nicht mit einem admi­nis­tra­ti­ven Account arbei­ten muss.

Wenn man seine Daten mit­tels Google Takeout expor­tiert hat, kann man die „subscriptions.xml“ aus dem Export in „Tiny Tiny RSS“ impor­tie­ren. Dazu geht man in den Ein­stel­lun­gen auf den Tab „Feed“ und dort auf „OPML“. Dann kann man die ent­spre­chende Datei importieren.

Tiny Tiny RSS in Aktion

Tiny Tiny RSS in Aktion

Danach kann man seine Feeds in der Ober­flä­che bewun­dern. Die erste (manu­elle) Aktua­li­sie­rung kann dabei durch­aus einige Zeit in Anspruch neh­men. Nun gilt es die auto­ma­ti­sche Aktua­li­sie­rung der Feeds mit­tels eines Cron­jobs in Angriff zu neh­men. Dazu wird ein Cron­job erstellt wel­cher alle 15 Minu­ten die URL:

http://example.org/ttrss/backend.php?op=globalUpdateFeeds&daemon=1

auf­ruft, wobei der Teil „http://example.org/tsrss/“ natür­lich durch die eigene URL ersetzt wer­den muss. Die Webap­pli­ka­tion stellt auf Wunsch (in den Ein­stel­lun­gen kon­fi­gu­rier­bar), eine API zur Ver­fü­gung, so das man auch Apps mit ihr betrei­ben kann. So gibt es für Android einen Cli­ent mit dem sel­ben Namen.

Tiny Tiny RSS Down­load @
Google Play
Tiny Tiny RSS
Ent­wick­ler: And­rew Dol­gov
Preis: Kos­ten­los

Für iOS scheint es da noch keine adäquate Lösung zu geben wobei ich mir wün­schen würde, das Mr.Reader das ganze in eine neue Ver­sion inte­grie­ren würde.

Die Mobilansicht von Tiny Tiny RSS

Die Mobilan­sicht von Tiny Tiny RSS

Die Mobilan­sicht auf ent­spre­chen­den Gerä­ten ist lei­der etwas fum­me­lig, wobei es sich nicht um die rich­tige Mobilan­sicht han­delt, son­dern um die nor­male Ansicht. Die mobile Ansicht kann über das Sys­tem Plu­gin „mobile“ akti­viert wer­den. Aller­dings wird sie nicht mehr gewar­tet und ist wohl auch nicht der Weis­heit letz­ter Schluss.

Abhilfe schafft hier ttrss-mobile wel­ches über die API mit dem Haupt­sys­tem kom­mu­ni­ziert. Nach­dem man die Soft­ware auf sei­nen Webs­pace hoch­ge­la­den hat, muss man noch die Pfade in der „conf.js“ anpas­sen. Anschlie­ßend kann man sich mit sei­nen Zugangs­da­ten einloggen.

In den Ein­stel­lun­gen gibt es auch einige inter­es­sante Nut­zer­plugins wie z.B. „mail“ mit wel­chem man Arti­kel per Mail ver­sen­den kann. Alles in allem ist „Tiny Tiny RSS“ ein robus­tes Stück Soft­ware, wel­ches nach der Instal­la­tion genau das macht was es soll. Die offi­zi­elle Seite der Soft­ware ist dabei unter http://tt-rss.org zu finden.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://michaelsonntag.net/tiny-tiny-rss-tutorial-1-installation-konfiguration/
http://michaelsonntag.net/tiny-tiny-rss-tutorial-2-optische-anpassungen-und-plugins/
http://michaelsonntag.net/tiny-tiny-rss-tutorial-3-artikel-feiner-strukturieren/
http://michaelsonntag.net/tiny-tiny-rss-tutorial-4-noch-ein-paar-kleinigkeiten/
http://www.linux.com/learn/tutorials/322446-weekend-project-replacing-google-reader-with-tiny-tiny-rss

Stän­dig sind Rech­ner im Inter­net, irgend­wel­chen Angrif­fen aus­ge­setzt. Da man sich eine sol­che Aus­sage nur schwer vor­stel­len kann, gibt es seit eini­ger Zeit vom HoneyNet Pro­jekt eine ent­spre­chende Visua­li­sie­rung dazu.

Die HoneyMap in Aktion

Die Honey­Map in Aktion

Zu fin­den ist die Honey­Map dabei unter http://map.honeynet.org/ und zeigt die ent­spre­chen­den Angriffe auf die Honey Pots des Pro­jek­tes. Die Aus­wer­tung erfolgt dabei in Echt­zeit. In der FAQ wird auch die Frage geklärt warum Aachen so oft ange­grif­fen wird:

What is going on in Aachen?!
Most of the time, you will see attacks tar­ge­ted against Aachen. This is because our honey­pot at RWTH Aachen Uni­ver­sity is very active and cap­tures attacks against hund­reds of tar­get IP addres­ses. This does not mean that Aachen is atta­cked more often than the rest of the world!

Der Quell­text der Web­an­wen­dung steht dabei unter der LPGL und kann unter https://github.com/fw42/honeymap bezo­gen werden.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://www.honeynet.org/

Wer auf der Suche nach freien Fonts ist, der sollte sich ein­mal die Web­seite der Open Font Library anschauen. Dort fin­det man viele Fonts zum Down­load, nach Kate­go­rien sor­tiert und mit der jewei­li­gen Lizenz versehen.

openfontlibrary.org

openfontlibrary.org

Mitt­ler­weile sind über 190 Fonts zusam­men­ge­kom­men. Auch die Mit­ar­beit am Pro­jekt ist erwünscht. Zu fin­den ist das Pro­jekt unter http://openfontlibrary.org.

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.

Möchte man auf einem Ubun­tu­sys­tem einen Git Ser­ver auf­set­zen, so ist dies rela­tiv schnell erle­digt. Zuerst muss dafür „git“ mittels:

apt-get install git

instal­liert wer­den. Danach wird der pas­sende Nut­zer für die Git Repo­si­to­ries angelegt:

adduser git

Nun kann man ein beste­hen­des Repo­sitory zu die­sem Ser­ver hoch­la­den. Auf dem Ser­ver wird in den Kon­text des Nut­zers „git“ gewech­selt und dort ein pas­sen­der Ord­ner sowie ein „rohes“ Git Repo­sitory angelegt:

su git
mkdir testproject.git
cd testproject.git
git init --bare

Dem loka­len Git Repo­sitory wird mittels:

git remote add origin git@example.org:testproject.git

ein neuer Remote zuge­wie­sen. Sollte bereits ein „remote“ für „ori­gin“ exis­tie­ren, so wird die­ser mit:

git remote rm origin

ent­fernt. Anschlie­ßend kann das lokale Repo­sitory an den Ser­ver über­tra­gen wer­den und auf Updates über­prüft werden:

git push origin master
git pull origin master

Wenn gewünscht kann man nun noch ver­hin­dern das man sich mit­tels des „git“ Accounts auf dem Ser­ver anmel­den kann. Dazu muss die Datei „/etc/passwd“ edi­tiert wer­den. Für den Nut­zer „git“ wird die Shell dabei von „/bin/bash“ in „/usr/bin/git-shell“ geän­dert. Anschlie­ßend kann man sich mit dem Account nicht mehr an der Shell anmelden.