Donnerstag, 4. März 2010

CDT und GTKMM Entwicklung

Nachdem ich mich entschlossen hatte, mich an einem Filebrowser mit gtkmm zu versuchen, traf ich auf ein weiteres Problem, das mich an der Entwicklung zuerst abhielt.
Es gibt keine brauchbare IDE, die sich für die Entwicklung mit gtkmm verwenden lässt. Die einzig wahre Umgebung, die einen nicht mehr behindert als hilft, ist wieder mal Eclipse. Das CDT Plugin eignet sich ganz gut zum C/CPP programmieren, doch wie immer gibts irgendwo einen Haken... Im Falle CDT ist das der Dialog zum Inkludieren von Headern.

Besagter Dialog ist nur in der Lage, einzelne Verzeichnisangaben zu verarbeiten. Dies ist extrem mühsam, wenn man - wie im Fall gtkmm - sehr viele Includes braucht. Wenn man die Includes per pkg-config (oder händisch) in die Build-Optionen stellt, kann man das Programm zwar kompilieren, doch gibt es keine Code-Vervollständigung, die einem das Leben doch um einiges leichter macht.

Not macht erfinderisch, also machte ich mich auf die Suche nach der Projektdatei, die von CDT erstellt wird (.cproject). Ein Haufen XML sprang mich an...

Um das Problem zu lösen, gab ich CDT einen relativ eindeutigen Eintrag in den Include Dialog (bspw. !fork!). Dies kann man nun in der Projektdatei suchen. Weiters habe ich ein Skript erstellt, welches Include-Tags im CDT-Format liefert:
for i in `pkg-config $1 --cflags` 
do echo $i | sed "s/-I\(.*\)/<listOptionValue builtIn=\"false\" value=\"\1\" \/>/"
done
Benutzt wird dieses Skript wie folgt: gtkmm-2.4
Voraussetzung ist, dass pkg-config installiert ist, da die Include-Verzeichnisse davon geliefert werden.

Da jetzt die benötigten Einträge auf der Konsole liegen, ist es an der Zeit, die Ausgabe zu kopieren und an der Stelle in .cproject einzufügen, an der wir unseren "Anhaltspunkt" gesetzt haben. Jetzt nochmal in Eclipse in die Projekteigenschaften, einen weiteren Include-Eintrag hinzufügen, diesen wieder entfernen, apply clicken und auf die Frage, ob ein neuer Index erstellt werden soll, mit ja antworten. Jetzt sollte das Projekt sämtliche Includes aufweisen, die nötig sind, um das Programm zu kompilieren können und die Codevervollständigung zu nutzen.

Allein das Hinzufügen der libraries ist noch notwendig, um das Programm erfolgreich kompilieren zu können.

Wenn mir mal fad ist, werd ich mir anschauen, ob ich CDT nicht erweitern kann.

Donnerstag, 28. Mai 2009

Flashvideos wtf?

Es gibt viele Tools um die Flash Videos von verschiedenen Plattformen zu kopieren, aber wozu das alles, wenn die Videos doch im Tempverzeichnis zwischengespeichert werden?

HINWEIS: Diese/r Anleitung/Anstoß gilt vorerst nur für Firefox, da ich es noch nicht mit anderen Browsern getestet habe.

Anleitung (als ob das nötig wäre):
1) Video deiner Wahl öffnen: wie z.B.:






2) Temp-Ordner öffnen:



Wir sehen hier im Verzeichnis eine Datei, die für uns wichtig ist (die anderen beiden Flash/MP4 Videos wurden von mir umbenannt). Diese ist die Datei, die mit "Flash" + VideoID(?) benannt wurde. Dieser Datei kann man jetzt entweder einfach .flv dranhängen, wenn es (default-mäßig) ein Flash-Video ist, oder .mp4 wenn z.B. "&fmt=18" an die Youtube Video-Adresse angehängt wird.

3) Gewünschte Datei gegebenenfalls umbenennen und auf einen Ort verschieben, wo man sie wieder findet. Fertig.

Was man dann mit dem Video macht ist jedem natürlich selbst überlassen.

Sonntag, 26. April 2009

Radiostream rippen mit Streamripper

Streamripper ist ein wunderbares Tool um seine Musiksammlung zu vergrößern, legal und gratis. Es ist OpenSource und für Linux, MacOS und Windows erhältlich. Es hat auch die schöne Eigenschaft, dass es die Lieder separat speichert, soweit möglich, und auch ID3 Tags anhängt.
Der einfachste Aufruf:
streamripper http://stream/
Somit wird der Stream in dem aktuellen Verzeichnis in separaten Unterverzeichnissen, die wie die Streambezeichnung heißen abgelegt. Es wird erst zu rippen begonnen, nachdem der gerade laufende Track zu Ende ist und der neue Track anfängt.

streamripper http://stream/ -d streamed/ -r [port] -s -k 0
bewirkt, dass der Stream im Unterordner streamed gespeichert wird, auf dem Port port (oder 8000+ wenn nicht angegeben) ein Relay auf localhost angelegt wird, zu dem man sich verbinden kann und somit mit nur einer Verbindung gleichzeitig hören und rippen, -s bewirkt, dass die Dateien direkt im Verzeichnis angelegt werden und keine Unterverzeichniss erstellt werden, -k 0 bewirkt, dass sofort zu rippen begonnen wird, das ist nützlich wenn man einen Mix aufnehmen will, da man sehr selten am Anfang des Mixes zu rippen beginnt.

Es gibt noch sehr viele andere Möglichkeiten Streamripper zu benutzen, beispielsweise ist es möglich, die Lieder nach den Stillen zu trennen, oder Stellen vom vorherigen oder nachfolgenden Lied zu entfernen. Dazu lohnt es sich, die Dokumentation/man-pages/Hilfe zu lesen

Donnerstag, 2. April 2009

VMware Server 2.0

In letzter Zeit bin ich wirklich ein Fan von VMware geworden, speziell vom Server in der Version 2.0. Der ist gratis (man benötigt nur eine Registration, um die Seriennummer zu erhalten) und bringt alles mit, was man so für den alltäglichen Gebrauch benötigt.

Ich setze voraus, dass man root ist und das vmware-server archiv entpackt hat.

Die Installation verläuft unter Kernel 2.6.26 problemlos, einfach nur das Perl Skript "vmware-install.pl" anwerfen und das wars dann auch schon fast.
Der nächste Schritt ist die Konfiguration des Servers mittels "vmware-config.pl". Dieses Skript sieht nach, ob schon ein fertiges Modul für den benutzten Kernel existiert und nimmt das dann. Ansonsten wird eines erstellt. Das funktioniert ebenfalls relativ einfach. Vorausgesetzt es sind die kernel-headers installiert und der Compiler ist der gleiche, wie der, mit dem der Kernel übersetzt wurde. Falls dies nicht der Fall ist fragt das Skript nochmal nach und bietet eine Option zum beenden an. Diese Option sollte man befolgen... Um jetzt dieses Problem mit der Compilerversion zu beheben, wird etwa
CC=gcc-4.1 CXX=g++-4.1 vmware-config.pl
in der Konsole reichen. Dabei sei angemerkt, dass natürlich die Compiler in der entsprechenden Version installiert sein müssen und das Kommando für den persönlichen Fall angepasst werden muss.

Ich musste feststellen, dass die Installation unter Kernel 2.6.29 nicht so rosig ist. Die Sourcen benötigen noch ein paar Patches... möglicherweise wird/wurde eine neuere Version vom Server rausgebracht, die diese Patches nicht benötigt. Am 1.4. ist Version 2.0.1 veröffentlicht worden, vielleicht behebt diese das Problem, konnte ich aber nocht nicht testen.

Dr_GrEeN vom Forum Remote Exploit war so nett und hat vorgepatchte Modulsourcen zum Betrieb mit Kernel 2.6.29 bereit gestellt: VMware-Server-modules-2.6.29
Diese Archive müssen einfach nur ins entpackte vmware-server verzeichnis, das "vmware-server-distrib" heißen sollte, ins Unterverzeichnis "lib/modules/source" kopiert werden. Der Installationsvorgang ist dann der selbe.


Seit der Version 2 gibt es "nur mehr" eine Weboberfläche.


Die Maschinen werden durch die Remote Konsole angezeigt, das Schöne daran ist, dass die Konsole nicht offen sein muss, was für das Betreiben von Servern in der virtuellen Maschine praktisch ist, da man ja oftmals keine Oberfläche braucht.

Der erste Eintrag (oder wie alles begann)

Hier in diesem Blog gehts hauptsächlich um die Konfiguration eines Debian-Systems

Da es bei der Linux-Konfiguration hin und wieder doch zu einigen Komplikationen kommen kann, werde ich hier immer wieder Hilfen für Leute, die Hilfe suchen, oder auch mir selbst Anleitungen zu allen möglichen Dingen schreiben.