seeseekey.net - Invictus Deus Ex Machina

Wenn man eine AVI Datei unter C# schreiben möchte, wird man feststellen das es zwar viele Wege gibt, aber keiner dieser Wege führt nach Rom. Jede vorgeschlagende Variante hat meist Abhängigkeiten, welche man nicht haben möchte. So wird bei vielen Varianten FFMPEG als DLL genutzt, bei anderen werden Windows DLLs genutzt, was dazu führt das der Quellcode nicht unabhängig von der Plattform ist. Abhilfe schafft hier die freie unter der MIT-Lizenz lizenzierte Bibliothek SharpAvi. Um eine AVI-Datei zu schreiben sind mit Hilfe der Bibliothek nur einige Zeilen Quelltext nötig:

//AviWriter anlegen
AviWriter writer=new AviWriter("test.avi");
writer.FramesPerSecond=25;

//Videostream anlegen
IAviVideoStream stream=writer.AddVideoStream();
stream.Width=1920;
stream.Height=1080;
stream.Codec=KnownFourCCs.Codecs.Uncompressed;
stream.BitsPerPixel=BitsPerPixel.Bpp24;

//Encode für Kompression anlegen
//Ohne Encoder wird die Datei unkomprimiert gepsiechert (stream.WriteFrame)
var encoder=new MotionJpegVideoEncoderWpf(stream.Width, stream.Height, 100);
var encodingStream=new EncodingVideoStreamWrapper(stream, encoder);

//Schwarzen Frame anlegen
byte[] frameData=new byte[stream.Width*stream.Height*3];

//Frames schreiben
for(int i=0;i<25; i++)
{
    encodingStream.WriteFrame(frameData, 0);
}

//Writer schließen
writer.Close();

In diesem Beispiel wird eine AVI Datei mit 25 schwarzen Frames erzeugt, was bei der angegebenen Framerate exakt einer Sekunde entspricht. Zu finden ist SharpAvi auf der offiziellen Webseite. Alternativ kann der Spiegel auf GitHub genutzt werden.

Bei Tweepy handelt es sich um eine freie unter der MIT-Lizenz lizenzierte Twitterbibliothek für Python, deren offizielle Webseite unter tweepy.org zu finden ist. Unter anderem wird diese Bibliothek für den Twitter Radiergummi genutzt. Im Gegensatz zu früher hat sich die Installation der Bibliothek etwas verändert. Hierfür sollte man jetzt pip nutzen. Dabei handelt es sich um ein Tool zur Paketverwaltung unter Python. Zur Installation gibt man im Terminal folgendes ein:

curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Damit ist pip installiert und kann genutzt werden:

sudo pip install tweepy

Pip installiert hiermit die Bibliothek Tweety und löst alle Abhängigkeiten auf, so das diese anschließend systemweit genutzt werden kann.

Wenn man eine PHP-Applikation schreibt, welche in irgendeiner Form mit Daten hantiert, so fehlen einem bei der Entwicklung meist plausible Testdaten. An dieser Stelle springt die Bibliothek Faker ein. Mit dieser Bibliothek ist es möglich die unterschiedlichsten Daten zu erzeugen. Ein Minimalbeispiel würde dabei so aussehen:

require_once '/path/to/Faker/src/autoload.php';
$faker = Faker\Factory::create();
echo $faker->name; //Erzeugt einen Namen

Möglich wird dies durch die unterschiedlichsten Provider welche angefangen bei Lorem Ipsum über Mailadressen bis Datumsangaben und Hashes alles liefern was das Herz begehrt. Die Bibliothek selbst steht unter der MIT-Lizenz und ist somit freie Software. Zu finden ist Faker in einem GitHub Repository.

Möchte man in einer .NET respektive Monosprache einen Anwendung schreiben welche mit der Twitter API interagiert, so sollte man hierfür eine Bibliothek nutzen um den Aufwand in Grenzen zu halten.

tweetinvi.codeplex.com

Eine empfehlenswerte Biblitothek in diesem Bereich ist dabei Tweetinvi welche auf CodePlex zu finden ist. Tweetinvi ist dabei unter der Microsoft Public License lizensiert und somit freie Software. Die Bibliothek ist dabei problemlos in der Lage mehrere Millionen Tweets zu verarbeiten und befindet sich in aktiver Entwicklung. Ein einfaches Beispiel um einen Tweet abzusetzen könnte dabei so aussehen:

IToken token=new Token(twitterAccessToken, twitterAccessTokenSecret, twitterConsumerKey, twitterConsumerSecret);
ITweet tweet=new Tweet(tweetText, token);
bool success=tweet.Publish();

Damit hätte man den ersten Tweet mit dieser Bibliothek abgesendet.

Bei OpenLayers handelt es sich um eine JavaScript-Biliothek zur Darstellung von Karten, im speziellen zur Darstellung von Geodaten. Die Bibliothek steht dabei unter der BSD-Lizenz (2er Klausel Version). So fußt z.B. das Frontend von OpenStreetMap.org auf dieser Bibliothek. Mit Hilfe der Bibliothek ist es ein leichtes Webanwendungen zu schreiben welche Web Feature Services oder Web Map Services nutzen. Auch das Einbinden von OpenStreetMap oder den Google Karten ist kein Problem. Wer vor hat in nächster Zeit so eine Anwendung zu schreiben, der sollte sich OpenLayer anschauen. Die offizielle Seite ist dabei unter http://openlayers.org/ zu finden.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/BSD-Lizenz
http://de.wikipedia.org/wiki/OpenLayers

Bei XMPP welches auch unter den Namen Jabber bekannt ist, handelt es sich um freies und standardisiertes Protokoll für Instant Messaging. Auf der Suche nach einer entsprechenden Bibliothek für XMPP welche unter iOS und Mac OS X läuft bin ich auf das „XMPPFramework“ gestoßen. Die Selbstbeschreibung des Autors sieht dabei vielversprechend aus:

XMPPFramework provides a core implementation of RFC-3920 (the xmpp standard), along with the tools needed to read & write XML. It comes with multiple popular extensions (XEP’s), all built atop a modular architecture, allowing you to plug-in any code needed for the job. Additionally the framework is massively parallel and thread-safe. Structured using GCD, this framework performs well regardless of whether it’s being run on an old iPhone, or on a 12-core Mac Pro. (And it won’t block the main thread… at all)

Das Framework ist dabei unter https://github.com/robbiehanson/XMPPFramework zu finden und wird unter einer BSD Lizenz zur Verfügung gestellt. Neben der Dokumentation im Wiki gibt es auch eine Google Group welche unter https://groups.google.com/forum/?fromgroups#!forum/xmppframework zu finden ist.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Xmpp

Es gibt Dinge welche man immer wieder gebrauchen kann. In diese fallen unter anderem Matheparser. Einer dieser Parser ist der Yet Another Math Parser kurz YAMP. Dabei handelt es sich um einen von Florian Rappl in C# geschriebenen Parser. Der Parser beherscht dabei die Grundrechenarten, sowie trigometrische Funktionen (Sinus, Cosinus et cetera) und einige andere Dinge. Die Bibliothek steht dabei unter der BSD Lizenz, nachdem sie vorher nur unter der CPOL Lizenz verfügbar war. Bezogen werden kann sie unter https://github.com/FlorianRappl/YAMP.

Weitere Informationen gibt es unter:
http://www.florian-rappl.de/Articles/Page/143/YAMP

Es gibt die einfache Art und die nicht ganz so einfache Art. So ist es zum Beispiel unter C# ziemlich einfach eine Bibliothek zu einem Projekt hinzuzufügen und diese anschließend zu benutzen. Also was liegt näher als das gleiche unter Objective C mittels Xcode zu versuchen.

Und dort merkt man dann das Objective C ein Superset von C ist. Es ist leider nicht ganz so einfach wie man es sich wünscht. Aber fangen wir von vorne an. Gegeben seien zwei Projekte:

  • Taschenrechner (iOS App)
  • LibCore (Cocoa Touch Bibliothek)

Die Bibliothek „LibCore“ soll dabei dem Projekt „Taschenrechner“ hinzugefügt werden, damit man dieses die entsprechenden Funktionen nutzen kann. Unter Objective C gibt es Frameworks und Bibliotheken. Frameworks können auf den iOS Geräten nicht benutzt werden, damit bleiben nur noch statische Bibliotheken.

Die Einstellungen für die Suchpfade

Im ersten Schritt müssen im Projekt die Suchpfade definiert werden. Dazu gehen wir in die Projekteinstellungen in den Punkt „Build Settings“ und suchen dort nach „Header“. Die Suche wird dann den Punkt „Header Search Paths“ finden. Dort tragen wir den Pfad zur entsprechenden Bibliothek ein.

Nun werden Headerdateien welche mittels:

#import "LibCore.h";

eingebunden werden vom Compiler gefunden. Beim Linker kommt es allerdings noch zu Fehlern. Deshalb ziehen wir das Projekt (die „LibCore.xcodeprj“) auf unserer Taschenrechnerprojekt. Dadurch ist dieses Projekt nun ein „Unterprojekt“ von Taschenrechner. In den Projekteinstellungen suchen wir nun den Tab „Build Phases“ auf „Link Binary With Libraries“ und fügen dort die „LibCore.a“ hinzu.

Die Bibliothek wird dem Linker bekannt gemacht

Danach sollte das Projekt mit der Bibliothek ohne Probleme kompilieren.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Xcode
http://de.wikipedia.org/wiki/Objective_C

Mitte Juli wird die Regionalbibliothek im HKB geschlossen. Hintergrund ist der Umzug der Bibliothek in das Rathaus, wegen der Bauarbeiten bzw. der Modernisierung des HKBs.

Nach dem vorläufigen Umzug ins Rathaus ist die Bibliothek ab dem 1. Oktober 2012 wieder geöffnet. Sie ist dabei in rechten Anbau des Rathauses zu finden, welcher durch den Haupteingang zu erreichen ist. Die genaue Lage wird dabei noch ausgeschildert. Bücher werden im übrigen bis Oktober verlängert, damit niemand Gebühren zahlen muss wenn die Bibliothek geschlossen ist.

Bei Socket.IO handelt es sich um eine Javascript Bibliothek welche eine Socket basierte Kommunikation (unter anderem über Websockets und diverse Fallbacks) ermöglicht. Zu finden ist diese Bibliothek unter http://socket.io. Meist wird diese zusammen mit Node.js benutzt.

Möchte man allerdings nur den Client basierenden Teil benutzen so steht man im ersten Moment vor dem Problem das man keinen offiziellen Download dafür findet, da die Installation nur über „npm“ beschrieben wird. Allerdings wird man im Repository unter https://github.com/LearnBoost/socket.io-client/tree/master/dist fündig. Dort kann man sich die fertigen Clientdateien herunterladen und anschließend benutzen.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Node.js
http://stackoverflow.com/questions/6587319/how-to-get-socket-io-0–7-client-file
http://stackoverflow.com/questions/6884413/socket-io-the-good-parts-and-the-bad-parts