Category Archives: Linux

GIT-Server für kleine Entwicklergruppen aufsetzen einrichten (Debian basiert)

Git-logoIn diesem Beitrag möchte ich erklären, wie man einen GIT-Server auf einem Debian basierten Server für kleinere Entwicklergruppen einrichtet.
Irgendwelche feingranularen Rechteverwaltungen sind damit nicht möglich, jeder hat Schreib- und Leserechte auf die Repositories.
Im Prinzip wird ein dedizierter GIT-User angelegt, über den alle Entwickler via ssh Zugriff auf die Repositories haben. Die Authentisierung beim Server erfolgt über ssh-public-keys.

Voraussetzung ist ein Linux-Server mit ssh-Zugang und vorhandenen root-Rechten.

Git installieren: Als erstes sollte man auf dem Server git an sich installieren:

root@server:~# aptitude install git-core -y

Git-User anlegen: Danach wird der git-User angelegt und in dessen Home-Verzeichnis gewechselt:

root@server:~# adduser git
root@server:~# cd /home/git


Continue reading GIT-Server für kleine Entwicklergruppen aufsetzen einrichten (Debian basiert)

Suchen und ersetzen in SQL / mySQL Datenbanken

Heute war etwas Aufräumarbeit in der Blog-Datenbank angesagt. 🙂

Im speziellen ging es um die Ersetzung von Links auf den alten Webspace in den Beiträgen und noch ein paar andere kleinere Änderungen.

Fügt man in WordPress ein Bild ein, wir der Pfad nicht relativ zum Webspace sondern absolut gespeichert, also mit kompletter URL. Zieht man mit dem Blog über den Lauf der Jahre mehrfach um (so wie ich) und ändert evtl. noch die Domain des Blogs, entstehen so einige Karteileichen.

Hier mal ne kleine Anleitung, wie man die ungültigen Links auf die aktuelle Adresse umbiegt:

  1. Als erstes erstellt man ein Backup – das ist wirklich sehr wichtig! 🙂 Ich benutze dazu immer mysqldump Damit kann man den kompletten Inhalt einer Datenbank einfach in eine Datei “dumpen”:
    shell> mysqldump --all-databases -u$USER -p$PASSWORT > dump.sql
    Geht anschließend etwas schief, hat man ein Backup und kann darauf zurückgreifen. Das Backup kann man mit:
    shell> mysql < dump.sql
    wieder einspielen. Hat man beim Erstellen des Dumps eine spezielle Datenbank ausgewählt sollte man:
    shell> mysql $DB-NAME < dump.sql
    verwenden.
  2. Jetzt die eigentliche Aufgabe, suchen und ersetzen: Hier zu setzt man ein Konstrukt aus dem UPDATE und REPLACE Befehl ein, führt man hintereinander mehrere Ersetzungen durch ist der Feldname in der REPLACE-Funktion besonders tückisch, da man leicht vergisst ihn mitzuändern:
    mysql> UPDATE [table_name] SET [field_name] = REPLACE([field_name],'[string_to_find]','[string_to_replace]');
  3. Im Vorfeld sollte man natürlich auch per SELECT schauen, wie viele Datensätze man überhaupt ändern muss. Hier für ist LIKE ganz praktisch:
    mysql> SELECT * FROM [table_name] WHERE [field_name] like "%SUCHTEXT%";
  4. Das war’s!
  5. Kleiner Hinweise noch: Ich lösche immer noch die bash_history, wenn ich das mysql-Passwort per Befehl mitgebe. Man weiß ja nie…

Unter Linux mehrere pdf Dateien in ein pdf-File zusammenführen mergen

Gerade kam ich mal wieder in die Verlegenheit mehrere pdf-Dateien in eine Datei zusammenführen zu wollen. Damit ich nicht jedes mal wieder googeln muss schreibe ich’s hier mal auf. 😛

Am leichtesten geht es mit dem kleinen Tool pdftk, welches man sich aus den Repositories installieren kann:
~$ sudo aptitude install pdftk
Anschließend kann man einfach mit:
~$ pdftk datei1.pdf datei2.pdf datei3.pdf cat output out.pdf
die pdf-Dateien zusammenführen.

Es gibt noch eine etwas kompliziertere Variante mit Ghostscript, welche den Job genauso souverän erledigt, aber schlechter zu merken ist:
~$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=out.pdf -dBATCH datei1.pdf datei2.pdf

Beide Versionen funktionieren bei mir sehr gut! Anstatt alle Inputfiles einzeln anzugeben, kann man auch mit *.pdf arbeiten. Hierzu müssen sich die Files aber alle in einem Verzeichnis befinden.

Quellen: klick und klick

OSS-Audio-Device beim mplayer auswählen

Falls man mehrere Soundkarten im PC hat, ist es manchmal recht nützlich, diese einzeln auswählen zu können. Ich verwende hierzu immer die OSS-Ausgabe. Unter VLC kannte ich die Option schon:

cvlc --oss-audio-device=/dev/dsp *.pls

Da ich in letzter Zeit immer häufiger den altgedienten mplayer verwende, musste ich mal nachschauen und bin hier fündig geworden. Der Befehl für den mplayer lautet:

mplayer -ao oss:/dev/dsp *.mp3

Ist ganz praktisch, so kann man im Hintergrund Musik spielen lassen und z.B. über das Headset noch skypen etc.!

Update: Per Mail kam der Hinweis auf die Antiquiertheit des Open Sound Systems: Der Grund warum ich OSS verwende ist folgender:
Ich habe momentan zwei Soundkarten im PC. Über die erste Soundkarte lasse ich meistens Musik über normale Lautsprecher laufen. Deshalb starte ich den Mplayer oder vlc im OSS-Mode. Über die zweite Soundkarte ist mein Headset angeschlossen, hierüber läuft dann der ganze Rest mit Pulseaudio, also Skypen, irgendwelche Videos die man sich anschaut usw. Hat den Vorteil, dass man die Lautstärke getrennt voneinander regeln kann und kurz mal eines von beidem ausschalten.

Nokia Panorama eine Panorama-App für das Nokia N900

Vor kurzem bin ich auf ein tolles kleines Stück Software für das Nokia N900 gestoßen. Die App heißt “Automatic Panorama” und macht auch genau das: Sie schießt vollautomatisch Panoramaphotos.

Nokia N900 Panorama eine Panorama-App für das N900

Bedienung:

Die Bedienung ist ziemlich simpel: man startet die App, öffnet die Kameraklappe und drück einmal den Auslöser. Nachdem ein Bild geschossen wurde, kann man das Handy entweder nach links oder nach rechts weiterbewegen. Nachdem ca. die Hälfte des gesamten von der Kamera vorher erfassten Bildausschnitts mit neuen Bildinformationen gefüllt wurde, vibriert das Handy kurz und es erscheint ein Meldung mit dem Text “Hold still”. Dann wird das nächste Bild geschossen. Um den Bildausschnitt auch wirklich einigermaßen über dem vorherigen Bild zu platzieren wird mittels kleinen Pfeilen angezeigt, ob man das Handy noch etwas weiter nach links/rechts drehen soll oder nach vorne/hinten kippen. Die Rückmeldung mittels leichten Vibrationen funktioniert super. Das vorherige Bild wird immer als halb transparentes Geisterphoto mit angezeigt um einem die Kameraführung zu erleichtern.

Dieser Vorgang wird mehrfach wiederholt – ich glaube so ca. 12 Bilder werden benötigt um ein Panorama zu erstellen. Damit werden ca. 230° abgebildet.

Anschließend rechnet das N900 eine Weile. Im ersten Schritt werden die einzelnen Bilder zusammengesetzt und leichte Versätze ausgeglichen, dies kann man live auf dem Display beobachten. Als nächstes wird dann noch die Helligkeit aller Bilder angepasst auch das kann man am Bildschirm beobachten.

Die Software hat einen eigenen Betrachter für die Panoramaphotos integriert, bei welchem man im oberen Segment immer noch die relative Position zum gesamten Bild angezeigt bekommt. Der normale Bildbetrachter des N900 kann jedoch genauso gut verwendet werden.

Der Bildbetrachter der Panorama-App auf dem Nokia N900

Einstellungsmöglichkeiten

Im Optionsmenü der App kann man die Auflösung zwischen low (~6005x706Pixel) und high (~9862x1105Pixel) umschalten. Die Bildgrößen variieren etwas, je nachdem wie viel die Software noch “geraderechnet”. Außerdem kann man den Autofokus deaktivieren (hilfreich für z.B. Panoramen von weit entfernten Objekten, wie Bergketten etc.). Den Speicherort sowie die Speicherart kann man ebenfalls noch einstellen.

Nokia N900 Optionsmenü der Automatic Panorama App

Ergebnisse / Fazit

Also ich bin Begeistert von der Panorama-App, da sie einem alles abnimmt: man muss nur einmal den Auslöser drücken und sich anschließend mit dem Handy in der Hand einmal langsam um die eigene Achse drehen. Den Rest übernimmt die App.
Falls man selbst noch mit Gimp oder einer anderen, evtl. auf Panoramen spezialisierten Software, Hand anlegen möchte, kann man die für das Panorama verwendeten Bilder zusätzlich noch einzeln abspeichern.
Was etwas problematisch ist, sind sich bewegende Objekte, dies führt zu Bildfehlern.

Die Bilder sind natürlich nicht mit professionell erstellten Panoramaaufnahmen zu vergleichen, für eine vollautomatische Handy-App sind die Ergebnisse mehr als ausreichend.

Hier drei von mir freihändig geschossene Bilder:

ACHTUNG: Um die Bilder in “groß” anzusehen: Rechtsklick auf’s Bild > Link in neuem Fenster/Tab öffnen.

#1 Auf dem diesjährigen Hammerstatt-Revival an der Rennstrecke (Auflösungseinstellung: low ~5MB)

Panoramaphoto Hammerstatt-Revival 2011 an der Rennstrecke, leider ohne Motorräder

#2 Im Fahrerlager auf dem Hammerstatt-Revival 2011 in Schwenningen (Auflösungseinstellung: low ~5MB). Hier sieht man schön das Problem mit den Bildfragmenten bei sich bewegenden Objekten.

Panoramaphoto Fahrerlager Hammerstatt-Revival 2011 in Schwennigen

#3 Parkplatz während einer Motorradtour – Col de Schlucht im Elsass (Auflösungseinstellung: high, ~10MB)
Panoramaphoto Motorradtour Col de Schlucht

Wo bekommt man die App?

Die Automatic Panorama App gibt es kostenlos im Nokia Ovi Store! Sie wurde von Nokia selbst entwickelt.

Link: http://store.ovi.com/content/108705?clickSource=search&pos=9 Alternativ einfach mit dem N900 http://link.ovi.mobi/n900store und unter “Suchen” “Panorama” eingeben.

Android Alcomat Promillerechner App

Durch die Veranstaltung “Andwendungsentwicklung für Android” an der HS Furtwangen bei Herrn Prof. Piepmeyer haben Harald, Fabian und ich als kleines Projekt den Alcomat programmiert, welchen ich euch hier mal vorstellen möchte. Der Artikel bot sich an, weil ich einen Großteil aus unserer Dokumentation kopieren konnte und sich so der Zeitaufwand in Grenzen hielt. Sonst schläft der Blog hier noch komplett ein. 🙂

Kurzbeschreibung:

Der Alcomat ist eine App, mit welcher man über einen Abend hinweg seine getrunkenen Getränke aufzeichnet. Über Parameter, wie z.B. Alter, Gewicht Zeit usw. wird dann der Blutalkoholwert berechnet.

Hauptbildschirm mit Getränkeauswahl Android Alcomat Promille Rechner Alkomat Optionsbildschirm mit Einstellungsmöglichkeiten Android Alcomat Promille Rechner Alkomat Getränke hinzufügen Bildschirm mit 75 Icons Android Alcomat Promille Rechner Alkomat

Haupteigenschaften:

  • Berechnung des Blutalkoholwerts anhand Geschlecht, Alter, Gewicht, Größe und Zeit unter Zuhilfenahme der Widmark- und Watsonformel.
  • Komplette Datenhaltung in einer Datenbank. (Androib verwendet SQLite im Hintergrund)
  • Dynamische Erzeugung der GUI, mit unterschiedlicher Größe der Getränkeicons abhängig von der Bildschirmgröße.
  • Möglichkeit über das Optionsmenü eigene Getränke hinzuzufügen, mit 75 Getränkeicons zur Auswahl.
  • Ändert der Anwender die Zeit seines Androidgerätes, werden die Datenbankeinträge entsprechend angepasst, um den Blutalkoholwert nicht zu verfälschen. (Wurde via BroadcastReceiver realisiert)
  • Ab Android Version 2.1 lauffähig.

Weitere Eigenschaften:

Alcomat Lite Download

Nachdem die App fertig programmiert war, wurde überlegt, die App in den Google App Market zu laden. Die Bereitschaft der Nutzer für eine derartige App etwas zu zahlen, wurde als sehr gering

eingeschätzt.Aus diesem Grund wurde Mittels AdMob Werbung in die App eingebunden, welche nun unter dem “Neue Saufrunde !!!”-Button Werbebanner einblendet. AdMob ist ein von Google im

Jahr 2009 für 750 Millionen Dollar aufgekauftes, auf mobile Inhalte spezialisiertes Werbeunternehmen, welches mit Google AdSense vergleichbar ist. Die Einbindung der Werbung erfolgt über einen speziellem View, welcher entweder komplett programmatisch, oder in unserem Fall per xml im Layout in die App integriert wurde. Unter Android Alcomat Promille Rechner ist die App nun im App-Market zu finden.

In der App kann man im Optionsmenü auf “Mehr” klicken und wird dann auf die Seite von HDFMNT-Software weitergeleitet (O-Ton Harald: “Eine studentische Verbindung zur Entwicklung von Malware”  :mrgreen: ) und kann weitere Apps herunterladen und erhält Kontakt zu uns für z.B. Verbesserungsvorschläge.

Insgesamt war Anwendungsentwicklung mit Android eine sehr interessante Veranstaltung, da man sonst eher wenig oder keinen Einblick in die Entwicklungsmethoden für mobile Endgeräte bekommt.

Nokia Ovi-Maps 3.0 0.1.25.114 direct Downloadlinks und Downloadscript for Maemo N900 without using Map Loader

Nowadays many mobile-phones are equipped with an internal gps-antenna and have pretty high-resolution displays, which makes them a considerable alternative for the usual satnavs.

In case of Nokia the software which is normally shipped with any gps-capable mobile-phone is called “Nokia Maps” or “Ovi Maps”, as Nokia bought the digital mapmaker Navteq the producer of ovi-maps some years ago. Nokia made the whole card material available for free in January 2010, so anyone can use it as long as he wants, without paying a thing.

I mainly have four problems with Nokia maps on my mobile-phone:

  • Out of the box there is no map data not on phone – you either have to have an active wireless-LAN connection or an active gprs/edge connection in order to download the map data. As in a everyday use you’ll be very lucky having a wireless-LAN connection and will have to download the map data via gprs/edge which is very expensive unless you signed a flatrate-contract.
  • As a GNU/Linux user I think it’s a disadvantage that the Ovimaps software is only offered for windows OS.
  • You’ll never know when Nokia reconsiders his decision to give away their maps for free. Just recently you could see how greedy Nokia is as they took a lot of money from Microsoft to ship Windows Phone 7 on their future devices and literally dropped the whole Maemo/MeeGo project which they initialized together with Intel like a hot potato.
  • A mobile-phone with a gps-antenna should be used like a normal satnav thus the download of the map data as you need them makes no sense to me at all.

The only considerable solution to me out of this four points was to download all available mapdata. After some searching in various web-forums I quickly found out, that you can directly download the mapdata from Nokias servers if you know the link and the numeric representation of the country or region you want, as the maps are distributed with file-names like 3523001.zip. At first I downloaded the newest mapdata I found which sadly made the map-application crash at startup. Lacking the possibility to find out which exact version of the map data I needed, because there isn’t anything helpful displayed in the info-page of the application I had to find another way to find that out.

The answer of the problem was: WireShark (a multi OS packet sniffer).
Continue reading Nokia Ovi-Maps 3.0 0.1.25.114 direct Downloadlinks und Downloadscript for Maemo N900 without using Map Loader

WordPress erstellt keine Thumbnails – Installation der GD Library für Php5

WordPress bietet die Möglichkeit über das Webinterface Bilder hochzuladen, um sie dann in den Beiträgen verwenden zu können. Seitdem ich von einem Freehoster umgezogen bin hat das bei mir zwar noch funktioniert, aber WordPress generierte keine kleinen Vorschaubildchen mehr (sog. Thumbnails) und man verlinkte immer das komplette Bild, etwas skaliert eben. Woran das liegt und wie man es behoben bekommt gibt’s hinter “read more” 🙂 Continue reading WordPress erstellt keine Thumbnails – Installation der GD Library für Php5

Domainwechsel auf blog.d-11.de

Seit heute ist die Hauptadresse des Blogs www.blog.d-11.de. Die alte URL blog.d-11.de wurde mir zu lang und meinen vollen Namen möchte ich auch nicht mehr in der URL verwenden. Um die Domain d-11.de für weitere Projekte offenzuhalten habe ich ähnlich wie Nils die Subdomain blog vorne angehängt. Was man für so einen Domainwechsel alles machen muss (bzw. ich mit meiner Konfiguration hier):

  • Die Subdomain blog.d-11.de anlegen.
  • d-11.de per Header-Redirect auf die Subdomain weiterleiten (unschön, bleibt bis auf weiteres aber so)
  • Den A-Record von blog.d-11.de auf den Server hier anpassen
  • Den A-Record von blog.d-11.de löschen und die Domain per Header-Redirect auf blog.d-11.de umleiten.
  • Auf dem Server den regulären Ausdruck für die Vhost-Konfiguration in /etc/lighthttpd/lighthttpd.conf anpassen und lighty dann einmal durchstarten
  • Im WordPress die Blogadresse ändern, damit die angezeigten Links wieder funktionieren.

Mit VLC unter Linux CSS verschlüsselte DVDs betrachten. libdvdcss

Will man mit einem aus den Standardrepositories installiertem VLC-Player unter Ubuntu 10.04 eine CSS verschlüsselte DVD betrachten, so bekommt man nicht etwa die DVD zu sehen, sondern auf der Konsole folgende Ausgabe:

daniel@home:~$ cvlc /media/DVD_VIDEO/
VLC media player 1.0.6 Goldeneye
[0x1940158] dummy interface: using the dummy interface module...
libdvdnav: Using dvdnav version 4.1.3
libdvdread: Encrypted DVD support unavailable.
************************************************
** No css library available. See **
** /usr/share/doc/libdvdread4/README.Debian **
** for more information. **
************************************************
libdvdread: Attempting to use device /dev/sr1 mounted on /media/DVD_VIDEO for CSS authentication
libdvdnav: Can't read name block. Probably not a DVD-ROM device.
libdvdnav: Unable to find map file '/home/daniel/.dvdnav/.map'
libdvdnav: DVD disk reports itself with Region mask 0x00f50000. Regions: 2 4
[0x7f2a34001968] main input error: ES_OUT_RESET_PCR called
[0x7f2a34001968] main input error: ES_OUT_RESET_PCR called
[0x7f2a34001968] main input error: ES_OUT_RESET_PCR called
[0x7f2a34001968] main input error: ES_OUT_RESET_PCR called
^C[0x1917f28] signals interface error: Caught Interrupt signal, exiting...

Hintergrund hierfür ist die fehlende Library libdvdcss. Standardmäßig ist diese Library aus Angst vor Rechtsstreitigkeiten nicht bei Ubuntu mit dabei, da sie mittels einem Brute-Force-Angriff den CSS-Schlüssel knackt. Normale DVD-Player haben einen bestimmten Chip auf dem Board in welchem ein Entschlüsselungskey enthalten ist. Die Hersteller der Boards zahlen deshalb Lizenzgebühren an den Hersteller des CSS-Verschlüsselungsstandards. Schon pervers, der Hersteller definiert die Verschlüsselung und kann dann die Hardwarehersteller mit Hinweis auf die Kompatibilität um Lizenzgebühren erpressen 👿 .

Hier jetzt wie man libdvdcss nachträglich installiert. Dazu habe ich mal ein kleines Bash-Script geschrieben, das den Sourcode herunterlädt, compiliert und installiert – nicht schön, aber es funktioniert:

#!/bin/bash
wget http://download.videolan.org/pub/libdvdcss/1.2.10/libdvdcss-1.2.10.tar.gz
tar xfvz libdvdcss-1.2.10.tar.gz
cd ./libdvdcss-1.2.10
./configure --prefix=/usr
make
sudo make install
cd ..
rm -rf ./libdvdcss-1.2.10
rm libdvdcss-1.2.10.tar.gz

Nach alledem sollte das Abspielen einer CSS geschützen DVD auf der Konsole dann in etwas so ausschauen:

daniel@home:~$ cvlc /media/DVD_VIDEO/
VLC media player 1.0.6 Goldeneye
[0x1e83c58] dummy interface: using the dummy interface module...
libdvdnav: Using dvdnav version 4.1.3
libdvdread: Using libdvdcss version 1.2.10 for DVD access
libdvdread: Attempting to use device /dev/sr1 mounted on /media/DVD_VIDEO for CSS authentication
libdvdnav: Can't read name block. Probably not a DVD-ROM device.
libdvdnav: Unable to find map file '/home/daniel/.dvdnav/.map'
libdvdnav: DVD disk reports itself with Region mask 0x00f50000. Regions: 2 4
libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient
libdvdread: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x00000158
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x000001c6
[...]
libdvdread: Elapsed time 2

Hier etwas Lesestoff Libdvdcss, Content Scramblink System, DeCSS und am Schluss noch einen Link zu Niko, der erklärt auf seinem Blog, wie man ein .deb Paket aus dem Sourcecode erstellt, dass man dann normal installieren kann.