Git unter Windows und Eclipse

Ich habe für Praktikumspartner im Fach Software Engineering 2 während meines Studiums der Technischen Informatik ein kleine git tutorial geschrieben. Hier nun also sowohl die Latex Quellen als auch das pdf. Das Ding ist noch lange nicht fertig, aber so sieht man schon mal die Anfänge und etwas helfen kann es wohl auch schon.

Desweiteren kann natürlich jeder gerne mitmachen. Ist ja schließlich CC-BY-SA lizensiert.

git-tutorial (nur PDF)

git-tuorial (Archiv mit Latex Quellen und PDF)

openSUSE 12.1

Seit einiger Zeit ist openSUSE 12.1 nun verfügbar. Ich habe mir die KDE-Live-CD auf mein Netbook gespielt und bin begeistert.

Die Installation war wie immer problemlos. Der Installer kann wahlweise aus der KDE Umgebung der Live-CD oder direkt aus dem Boot-Menü der CD. Die enthaltenen Pakete sind natürlich auf einem aktuellen Stand, die für mich interessantesten Neuerungen sind aber zum einen der Umstieg von SystemV init zu systemd, was die Bootzeit leicht positiv beeinflusst, aber auch noch weitere Vorteile, wie etwa das starten eines Dienstes, wenn dieser benötigt wird. Zum anderen kann man nun fast guten Gewissens BtrFS benutzen. Die Snapshot funktion desselben kann von dem Paketmanagement genutzt werden, um vor und nach dem Einspielen von Paketen einen Snapshot des Dateisystems zu machen. Diesen kann man im Falle eines Problems nutzen, um das System schnell wieder in einen funktionsfähigen Zustand zu bringen. Allerdings ist der Filesystemcheck nicht komplett fertig, sodass es in ungünstigen Fällen zu einem korrupten Dateisystem kommen kann, welches nicht mittels fsck gerettet werden kann.

Nachdem ich auf dem Netbook nun viele Distributionen getestet habe, werde ich wohl doch wieder bei openSUSE hängen bleiben. Chakra war eigentlich sehr schön, aber der Paketmanager hat noch einige Kanten und komplett ohne GTK ist zwar eine nette Idee, hat aber zur Folge, dass man zwei Systeme zum Aktualisieren von Paketen bedienen muss, da Chakra zum Beispiel Firefox als Paket anbietet, welches ein Dateisystem mit allen Abhängigkeiten beinhaltet. Diese Pakete werden nicht über pacman aktualisiert sondern über einen Bundlemanager.

Vor Chakra hatte ich Arch installiert, auf dem auch Chakra aufbaut. Daher benutzt es den selben Paketmanager, der, wie gesagt, noch Kanten hat. Im großen und Ganzen ist Arch aber wirklich zu empfehlen.

Kubuntu war nur sehr kurz auf der Platte, da es insgesamt zu unrund lief.

Falls ich noch mal wieder eine andere Distribution haben wollen sollte, werde ich wohl mal Fedora und Debian Testing oder sid in Betracht ziehen.

Symbian und SQLite

Ich hatte ja schon lange vor, eines meiner Programme auf meinem Symbian Telefon (N97) zum laufen zu bringen.

Dank Qt ist das auch sehr einfach. ich musste im Grunde nur einige kleine Anpassungen am Hauptfenster vornehmen und etwas Kram in die Projektdatei einfügen.

Alles kein Problem. Auch Qt auf das Telefon zu bekommen ist sehr einfach, da man auch ein sogenanntes smart installer Paket erstellen kann, welches eine aktuelle Qt-Version aus dem Netz lädt und installiert.

Das größte Problem war, dass auf die zu dem Programm gehörende SQLite Datenbank nicht zugegriffen werden konnte.

Ich hatte schon befürchtet, dass diese überhaupt nicht in dem Paket enthalten sei, doch nach einigem probieren mit dem Simulator war klar, dass die Datei auf dem Telefon sein sollte.

Da das N97 zwar an sich ein schönes Gerät ist, aber ein paar gravierende Designfehler hat, wie zum Beispiel die viel zu kleine Systempartition, habe ich mir angewöhnt alle Anwendungen auf den großen Massenspeicher zu installieren, tat ich das auch mit meinem kleinen Programm. Das dazugehörige Qt muss aber auf den Systemspeicher, daher wird auch nicht gefragt, wo das installiert werden soll.

Ich weiß im Moment nicht mehr, ob die SQLite3 Bibliothek auch vom Smart Installer installiert wurde oder schon auf dem Telefon vorinstalliert war, wie dem auch sei: Bei mir befindet sich diese auf der Systempartition und es scheint nun der Fall zu sein, dass auf diese nur zugegriffen werden kann, wenn das Programm auf der selben Partition wie die SQLite3 Bibliothek installiert ist.

Das könnte ich ja noch verstehen, wenn man denn eine sinnvolle Fehlermeldung bekäme….

So habe ich etwa einen halben Tag an einem funktionierenden Programm herumgefrickelt…

Es gilt also für die Nachwelt festzuhalten: Wenn ein Programm unter Symbian^1 SQLite3 nutzen soll, so muss beides auf der selben Partition installiert werden!!!

Grub mit openSUSE DVD reparieren

Dies ist zwar eigentlich nur ein Backup für mich, um beim nächsten Mal nicht suchen zu müssen, aber vielleicht hilft es ja auch noch jemandem.

Mein Rechner hat in letzter Zeit viele Probleme gemacht. Mittlerweile bin ich mir relativ sicher, dass es an der alten Audigy2 Soundkarte lag, aber Hard Freezes sind kein Spaß und die Ursachenforschung ist anstrengend und auch die Konsequenzen manchmal etwas nervig (mysql verträgt Abstürze manchmal gar nicht gut, aber dazu später mehr.). Das Problem, dem ich mich in diesem Eintrag widmen will ist die Wiederherstellung von grub mit Hilfe der openSUSE DVD (11.4 in meinem Fall, sollte aber mit jeder Linux LiveCD funktionieren)

Als erstes sollte man das LiveSystem booten, wenn man die openSUSE DVD nutzt, so bootet man das Rettungssystem. Wenn das geschen ist, meldet man sich als root an. Normalerweise geschieht dies einfach durch die Eingabe von „root“. Falls ein Passwort gebraucht wird, so erfährt man dieses von der Homepage der genutzten LiveCD. Sodann muss man herausfinden welches Laufwerk die root („/“) Partition enthält und, falls man eine seperate /boot Partition nutzt muss man auch dieses Laufwerk kennen. In meinem Fall waren es /dev/sdb3 für / und /dev/sda1 für /boot.

Sodann mountet man die root Partition nach /mnt, bindet in diese /dev und/proc ein, wechselt das root Verzeichnis nach /mnt und mountet dort /sys und eventuell /boot. Dies geschieht mit folgenden Befehlen:

mount /dev/sdXY /mnt
mount -o bind /dev/ /mnt/dev/
mount -o bind /proc/ /mnt/proc/
chroot /mnt/ /bin/bash
mount /sys
mount /dev/sdXY /boot

Bei /dev/sdXY müssen natürlich noch XY durch die tatsächlichen Werte ersetzt werden.

Danach kann man mit „yast2 bootloader“ den Bootloader konfigurieren. Am besten läßt man sich von yast eine neue Konfiguration vorschlagen (Alt+e, Alt+p) und bestätigt diese (Alt+o).

Die Kommandos sind schamlos von niczsoft.com/ abgeschrieben

KDE SC 4.5.2

Hier nun endlich wieder ein Screenshot von KDE

KDE 4.5.2

So sieht das im Moment bei mir auf dem Desktop aus. Besonders schön finde ich die transparenten Fensterdekorationen. Leider ist der Blur Effekt noch nicht komplett optimiert und auch das Transparente Oxygen theme ist noch im alpha oder beta Stadium, so dass dieser Eyecandy noch recht viel Leistung schluckt. Ansonsten ist KDE 4.5.2 wie es sein sollte, vielleicht mit Ausnahme der fehlenden PIM Suite, denn diese wird gerade auf Akonadi umgestellt. Ich nutze schon die beta Version, doch diese hat noch ein paar kleine Probleme… Alles andere ist sehr schön. Die Desktopsuche und das Nepomuk Geschleuder (Semantischer Desktop) funktionieren mittlerweile sehr gut.

KDE und die Einfachheit des Seins

Da ich in letzter Zeit einige Leute mit ihren Windows-Kisten gesehen habe, die versuchten auf einen sftp Server (file transfer over ssh) zuzugreifen, ist mir verstärkt aufgefallen, wie schön es ist, dass KDE über kio-slaves auf viele verschiedene Protokolle zugreifen kann!

So kann man in jedem Dateimanager auf sftp zugreifen und jedes Programm kann dort gespeicherte Dateien direkt öffnen.

Und wenn einem das noch nicht reicht, weil man zum Beispiel mittels rsync Verzeichnisse synchronisieren möchte, bietet Gnu/Linux ja auch noch die Möglichkeit, sftp wie eine Partition zu mounten.

HTML5 Video und YouTube

YouTube bietet seit kurzem auch einen HTML5 Player für ihre Filme an, allerdings nur, solange keine Werbung eingeblendet wird. Grundsätzlich ist das zu begrüßen.

Aber da der zu nutzende Codec in HTML5 nicht definiert ist gibt es zwei unterschiedliche Codecs. Safari unterstützt nur h.264, Google Chrome h.264 und Ogg/Theora, Firefox und Opera nur Ogg/Theora. IE kann gar nichts. Da die Videos bei YouTube in h.264 vorliegen, kann man mit Firefox den HTML5 Player also nicht nutzen, obwohl Firefox grundsätzlich in der Lage ist, HTML5 video tags darzustellen.

Nun ist h.264 ein sehr guter Codec, aber eben durch Softwarepatente verkrüppelt. Daher verstehe ich es sehr gut, dass gerade Hersteller freier Browser (Chromium kann auch kein h.264) keine Lust auf dadurch entstehende Probleme haben.

Schade eigentlich. So wird das nichts mit Videos ohne Flash, obwohl es dringend an der Zeit wäre.

Software Updates

Firefox 3.6 wurde gestern veröffentlicht. Er startet nun schneller und kann das aussehen mit sogenannten Personas ändern. Diese legen im Grunde nur ein Bild über das Grau der Bedienelemente, sieht aber trotzdem schick aus.

Doch schon lese ich wieder einen dieser unsäglichen „Linux ist noch nicht für den Massenmarkt“-Artikel. Im Grunde geht es um das updaten von Software. Der Autor des Artikels ist der Meinung, dass es doch viel einfacher sei, den Installer von der Mozilla-Webseite herunterzuladen und mittels einiger clicks Firefox neu zu installieren. Das funktioniert unter Gnu/Linux tatsächlich nicht, doch geht es ja dank Software Management auch viel einfacher. Wenn man weiß, dass man einen möglichst aktuellen Firefox nutzen möchte, so kann man in jeder mir bekannten Gnu/Linux Distribution entweder ein zusätzliches Repository (für openSUSE wäre das für Firefox dieses) nutzen oder dem Software Management mitteilen, dass man bestimmte Pakete erhalten möchte, sobald sie verfügbar sind (z.B. bei gentoo). Man kann natürlich auch das auf der Mozilla Seite angebotene Archiv herunterladen, entpacken und Firefox so starten, was natürlich keine Systemweite Installation ist, zum antesten aber ausreicht.

Viele Gnu/Linux Distributionen veröffentlichen in ihren normalen Updates nur Sicherheitsrelevante Patches, bieten aber fast immer, wie gesagt, für fast alles Repositories an, die wenigstens die letzte stabile Version eines Programms oder einer Programmgruppe enthält. Meistens gibt es sogar Repositories mit Beta Versionen oder sogar Snapshots des Entwicklungszweiges.

Der große Vorteil dieser Repositories ist, dass man Programme, die man einmal so installiert hat, automatisch auf dem neuesten Stand hat. Somit war mein Update auf Firefox 3.6 auch sehr einfach und schnell. einmal „zypper up“ gestartet und schon fertig.

Ich ärgere mich vor allem über den oben genannten Artikel, weil ich gestern endlich Windows 7 installiert habe. Ich benutze Windows zwar nur zum spielen, aber trotzdem braucht man ja einige Programme, wie z.B. einen vernünftigen Dateimanager, einen Instant Messenger und vor allem Patches für die (neu zu installierenden) Spiele. Das dauerte alles ewig lange und vor allem fiel mir auf, dass in meiner vorherigen Vista-Installation einige Programme doch arg alt waren.

Mittlerweile haben zwar viele Programme eigene Updatemechanismen, aber diese belegen dann auch Ressourcen. so ärgere ich mich jedesmal über Apples Updater, der mit iTunes installiert wird (ja, ich benutze einen iPod, allerdings noch einen aus der 5. Generation, so dass ich den normalerweise per amarok unter openSUSE betanke). Dieser Updater läuft dauernd im Hintergrund und überprüft, ob es Updates zu installierter Apple-Software gibt. Das wäre ja auch ganz nett, wenn man denn mehr von Apple benutzte, aber nur für iTunes finde ich das doch übertrieben. Auch Adobe nutzt ein ähnliches Modell. Sun für Java auch. Da ich den Flashplayer und Java nutze sind also gleich zwei weitere Updater im Hintergrund aktiv.

Ich fände es sehr nett, wenn all diese Dienste wenigstens etwas zentralisiert würden.

Bei den meisten Gnu/Linux Distributionen ist dies schon der Fall! (Ich schreibe hier nicht von „allen“ Distributionen, weil ich nicht alle kenne)

Firefox Plugins

Da openSUSE in 11.2 Mozillas Firefox als Standardbrowser einsetzt und dessen Integration in KDE deutlich verbessert hat, habe ich Firefox in letzter Zeit wieder öfter benutzt und (mir) neue Plugins gefunden. Diese möchte ich hier nun vorstellen:

Firefox

  1. Tab Scope – Dieses Plugin zeigt eine Miniansicht des Reiters unter dem Mauszeiger
  2. Cookie Safe – Cookie Management für jede Seite einzeln
  3. Foxy Proxy – Proxy Management, gut um TOR zu nutzen. Kann je nach Seite bestimmte Proxys benutzen
  4. No Script – Erklärt sich fast von selbst: blockiert erstmal alle Scripts, inklusive Flash. Man kann seitenspezifische Ausnahmen definieren
  5. AdBlock+ – Blockiert Werbung.
  6. FireGestures – Mausgesten. Mit einfachen Gesten navigieren und sonstiges

Firefox ist vor allem mit einem neuen Profil recht schnell. Mittlerweile benutze ich Firefox fast so oft wie Konqueror und das will schon was heißen, da ich den fast ausschließlich genutzt habe. Viel Spaß beim Ausprobieren.

GNU/Linux und das Installieren von Software

Es fällt mir immer öfter auf, dass offensichtlich viele Windows zu Linux Umsteiger versuchen, Software genau so zu installieren, wie sie es schon unter Windows gelernt haben: Browser öffnen, Software suchen und den Downloadlink drücken; danach doppelt auf die heruntergeladene Datei klicken. Mit etwas Glück ist es immerhin keine .exe oder .msi Datei. Wenn man dann im openSUSE IRC channel (#suse auf irc.freenode.net) darauf hinweist, dass das heruntergeladene Programm so nicht funktionieren wird, sieht man sich nicht selten mit Unverständnis konfrontiert.

Doch ist meiner Meinung nach gerade das Softwaremanagement eine der großen Stärken von GNU/Linux. Man muss eben nicht selber das gesamte Internet durchsuchen und in regelmäßigen Abständen sicherstellen, dass die Programme wenigstens auf einem halbwegs aktuellen Stand sind. Eine kurze Suche mit YaST oder zypper, oder welches System die genutzte Distribution auch verwendet, und das gesuchte Programm ist mit einem Häkchen installiert.

Das ist natürlich nur dann der Fall, wenn das gesuchte Programm im Hauptrepository zu finden ist. In dem Fall reicht es sogar, nur zu Wissen, was man eigentlich will, um mit geeigneten Stichwörtern sogar die Beschreibungen der im Repository befindlichen Programme zu durchsuchen.

Etwas schwieriger wird es, wenn nichts im Hauptrepository den Anforderungen entspricht. Wenn man nun weiß, wie das gesuchte Stück Software heißt, kann man auf opensuse.org fündig werden. Diese Suchmaschine durchsucht allerdings nur den Open Build Service und die Repositories der gewählten Version. Um auch das (großartige) Packman Repository und andere zu durchsuchen, sollte man packages.opensuse-community.org ausprobieren. Für diejenigen, die gerne mit der Shell arbeiten, empfehle ich das kleine Programm „webpin“, welches im Open Build Service zu finden ist.

Was aber macht man, wenn man das entsprechende Programm gefunden hat? Einfach auf „Download“ drücken ist auch hier wenig ziel-führend. Am Besten ist es wohl, das Repository in das Softwaremanagement einzupflegen. Mittels „zypper ar <url> <alias>“ ist das recht einfach. In YaST gibt es auch eine grafische Oberfläche. Danach sollte das gesuchte Programm mittels YaST oder zypper zu finden und zu installieren sein.

Und was, wenn das installierte Programm nicht gefällt und das, was man jahrelang unter Windows verwendet hat viel besser ist?

  1. Hat man sich damit ja auch schon eingearbeitet
  2. Sind einige FOSS-Programme deutlich anders zu bedienen als Kommerzielle
  3. Bedeutet eine andere Oberfläche nicht zwingend, dass eine besser ist

Gerade wenn es um GIMP geht, meckern viele Umsteiger gleich, denn es sieht ja deutlich anders aus als Photoshop, und das kann ja nur schlecht sein. Allerdings gibt es unter GNU/Linux ja virtuelle Arbeitsflächen, wovon man ja eine ausschließlich für GIMP nutzen kann. So finde ich es sogar sehr nützlich, dass ich die einzelnen Fenster einzeln minimieren und platzieren kann und ab 2.8 soll es ja nun auch eine Photoshop-ähnliche Oberfläche geben. Auch sollte der Funktionsumfang für die Meisten locker ausreichen. So viele professionelle Designer, wie sich im IRC oder in Foren über Gimp beschweren, die auch noch auf Linux umsteigen wollen, kann es gar nicht geben.

Aber ich habe auch schon von vielen gehört, dass sie unbedingt einen bestimmten Instantmessenger bräuchten oder einen bestimmten IRC-Client oder einen bestimmten Mediaplayer oder etwas ähnlich banales oder alles auf einmal. Und diese benötigten Dinge gibt es dann eben nur für Windows. Da frage ich mich meist zuerst, warum derjenige denn nun auf GNU/Linux umsteigen will, wenn er doch nur Windowsprogramme nutzen will. Dann kommt meist sofort die Frage, wie wine denn funktioniere. Es ist ja ganz nett, dass einige Windowsprogramme mit wine tatsächlich funktionieren, aber sollte man wine nutzen, wenn es genug native Alternativen gibt, wie bei obigen Beispielen? Ich befürchte, dass das eher Probleme mit sich bringt, zumal solche Anwendungen nicht von dem Softwaremanagement profitieren und man sich doch wieder selber um neue Versionen für jedes so installierte Programm kümmern muss.

Fazit: Warum sollte man alle Vorteile von GNU/Linux opfern, nur um bestimmte (Windows)Programme weiter zu nutzen? Dann kann man gleich bei Windows bleiben. Ein Wechsel des Betriebssystems beinhaltet eben auch, dass man neue Programme lernen muss.

Neuinstallation und Scripte

Leider musste ich das Serendipity neu installieren und alle alten Einträge löschen. Aber so viele waren es ja nicht.

Hier nun also die beiden Transcoder-Scripte (tags werden beibehalten):


1.: (flac->mp3)

#! /bin/bash
  for i in *.flac; do
  title=$(metaflac --show-tag=title "$i"|sed s/"TITLE="//)
  artist=$(metaflac --show-tag=artist "$i"|sed s/"ARTIST="//)
  album=$(metaflac --show-tag=album "$i"|sed s/"ALBUM="//)
  year=$(metaflac --show-tag=date "$i"|sed s/"DATE="//)
  genre=$(metaflac --show-tag=genre "$i"|sed s/"GENRE="//)
  track=$(metaflac --show-tag=tracknumber "$i"|sed s/"TRACKNUMBER="//)
  flac -d -o tmp.wav "$i"
  lame --preset fast standard -h --add-id3v2 --tt "$title" --ta "$artist" --tl "$album" --ty "$year" --tn "$track" --tg "$genre" tmp.wav $(basename "$i" .flac).mp3
  rm tmp.wav
  done
  exit 0

2.: (ape->mp3)

#! /bin/bash
  for i in *.ape; do
  album=$(apetag -i "$i" | grep -i album | sed s/"Album\" "// | sed s/"\""//g);
  artist=$(apetag -i "$i" | grep -i artist | sed s/"Artist\" "// | sed s/"\""//g);
  genre=$(apetag -i "$i" | grep -i genre | sed s/"Genre\" "// | sed s/"\""//g);
  title=$(apetag -i "$i" | grep -i title | sed s/"Title\" "// | sed s/"\""//g);
  track=$(apetag -i "$i" | grep -i track | sed s/"Track\" "// | sed s/"\""//g);
  year=$(apetag -i "$i" | grep -i year | sed s/"Year\" "// | sed s/"\""//g);
  ffmpeg -i "$i" -f wav tmp.wav
  lame --preset fast standard -h --add-id3v2 --ta "$artist" --tt "$title" --tl "$album" --tg "$genre" --tn "$track" --ty "$year" tmp.wav "$(basename "$i" .ape)".mp3
  rm tmp.wav
  done
  exit 0