Experience Life Rotating Header Image

Git Repositories zusammenführen (git pull)

Mittels git pull kann man ein Git Repository in ein anderes ziehen und so beide zu einem zusammenführen. Die Historien beider Git-Repos bleiben dabei erhalten:

cd /pfad/zum/ersten_git_repo/
git pull /pfad/zum/zweiten_git_repo/

git pull(1) führt dabei ein git fetch gefolgt von einem git merge aus.

In git log kann man nun die Historie beider Projekte sehen – und einen zusätzlichen commit der das soeben durchgeführte merge darstellt.

In ein Unterverzeichnis ziehen

Mit obigem Ansatz landen sämtliche Dateien des zweiten Git-Repositories im Hauptverzeichnis des ersten. Um das zu vermeiden, kann man zuerst im zweiten Repository die Dateien in ein Unterverzeichnis verschieben:

cd /pfad/zum/zweiten_git_repo/
mkdir verzeichnis_zweites_repo
# -k sorgt dafür, dass der Befehl trotz Warnung des mv-Kommandos durchgeführt wird:
git mv -k * verzeichnis_zweites_repo
git commit -m 'moved all files into subdirectory verzeichnis_zweites_repo'
# an dieser Stelle dieses Repository in das erste ziehen (siehe erstes Listing dieses Artikels)

Rückwirkend in ein Unterverzeichnis ziehen

In der aktuellen Revision liegen die Dateien dann zwar im korrekten Unterverzeichnis. In der Historie sind sie jedoch nach wie vor im Hauptverzeichnis zu finden.

Diesen Nachteil kann man vermeiden, indem man git filter-branch zum Verschieben in das Unterverzeichnis nutzt.

Achtung: git filter-branch ändert die Historie. Siehe dazu diesen Hinweis aus der git filter-branch(1) Manpage:

WARNING! The rewritten history will have different object names for all the objects and will not converge with the original branch. You will not be able to easily push and distribute the rewritten branch on top of the original branch. Please do not use this command if you do not know the full implications, and avoid using it anyway, if a simple single commit would suffice to fix your problem.
cd /pfad/zum/zweiten_git_repo/
git filter-branch --tree-filter 'mkdir .temp; mv * .temp' HEAD
git filter-branch -f --tree-filter 'mv .temp verzeichnis_zweites_repo' HEAD
# an dieser Stelle dieses Repository in das erste ziehen (siehe erstes Listing dieses Artikels)

Unterverzeichnisse ohne Eingriff in das zweite Git-Repository?

Ich könnte mir vorstellen, dass etwas Ähnliches direkt mit git pull umsetzbar ist ohne das zweite Repository verändern zu müssen.

Solltest Du eine solche Möglichkeit kennen, freue ich mich über einen entsprechenden Hinweis in den Kommentaren.

Erfahrungen mit der Neo-Tastaturbelegung

Neo – ehemals “Neostyle” – ist eine auf die deutsche Sprache optimierte Tastaturbelegung. Zwei der wichtigsten Grundlagen sind dabei die Buchstabenhäufigkeit und die Kombination in welcher sie vorkommen.

Unter Beachtung dieser Erkenntnisse ist es möglich ein Tastaturlayout so zu gestalten dass beispielsweise möglichst gleich viele Anschläge mit der rechten wie mit der linken Hand passieren – idealerweise stets abwechselnd.

Häufige Buchstaben befinden sich näher an der Ausgangsposition der Finger als seltene. Sämtliche Selbst- und Umlaute sind einfach zu erreichen während auch die Eingabemethode von Sonderzeichen aus Fremdsprachen einem logischen Konzept folgt.

Die Mängel des QWERTZ Layouts

Das QWERTZ Layout ist bewusst darauf ausgerichtet, häufig verwendete Buchstaben schwieriger erreichbar zu machen. Zu Zeiten der Schreibmaschine erhöhte das aufgrund mechanischer Einschränkungen paradoxerweise den Schreibfluss.

Das alleine gibt Grund zu denken. Besonders interessant finde ich allerdings den Ansatz den ein Freund im Buch Rulebreaker fand. Dort ist beschrieben, dass Hersteller das Layout auch deshalb bevorzugten um die Langlebigkeit ihrer Schreibmaschinen zu erhöhen.

Erste Erfahrungen mit der Neo Tastaturbelegung

Seit fast zwei Jahren fasziniert mich die Idee dieses wissenschaftlich optimierten Tastaturschemas. Zwischenzeitlich habe ich gelegentlich meine Belegung auf Neo umgestellt, aber stets rasch bemerkt wie hinderlich das Umlernen für alltägliche Arbeiten war.

Während eines längeren Aufenthalts in Indonesien war meine Internetverbindung zehnmal langsamer und instabiler. Ich nutzte die Gelegenheit, passte mit Neo auch meine Schreibgeschwindigkeit an und nahm mir vor, diesmal meine Tastaturbelegung dauerhaft so eingestellt zu lassen.

Die Schwierigkeiten der ersten Tage

Ich konnte fast fühlen wie sich meine Gehirnwindungen neu verbinden mussten und versuchte den Stress der sich dabei einstellte gelassen hinzunehmen.

Meine E-Mails wurden kürzer, aber meine Freundin beschwerte sich, dass sie das angenehme Prasseln der Tasten beim Einschlafen vermisste. Die nun ungefähr 0.5 Anschläge pro Sekunde empfand sie anscheindend weniger entspannend.

Ein ganz anderes Problem stellten die neuen Tastenkombinationen dar. Während in Javaprogrammen nach wie vor STRG+C des QWERTZ Layouts galt (= STRG auf Neo) mussten ich in sämtlichen anderen (KDE-) Programmen die laut Neo geltende Postition des C verwenden (= R auf Neo).

Besonders unangenehm war das beim Ausschneiden. X (für STRG+X) befindet sich in Neo anstelle des QWERTZ Q und so musste ich mich immer konzentrieren um zu verhindern Anwendungen versehentlich mit STRG+Q zu schließen.

Tastenkombinationen in KDE auf Neo umstellen

Als Lösungsansatz wollte ich erst die Postionen von QWERTZ beibehalten, stellte fest, dass eine gänzliche Umstellung sinnvoll wäre und entschied anstelle der Positionen doch die bekannten Buchstaben beizubehalten.

Nachdem ich Neo als Belegung mit höchster Priorität gesetzt hatte (in KDE unter den Tastatureinstelleungen mit Knopf Nach oben an erste Postition stellen), galt zumindest für sämtliche Anwendungen die neue Variante.

Status nach den ersten beiden Neo-Monaten

Es stellte sich heraus, dass auch die nun neu postitionierten Tastenkombinationen gut und teils besser aber nie schlechter erreichbar waren.

Ungefähr nach zwei Monaten fühlte ich mich mit Neo halbwegs wohl und die Fehlanschläge waren soweit reduziert, dass das Schreiben zumindest stressfrei war.

Meine Tippgeschwindigkeit wurde erträglich, aber hinkte weit hinter der in QWERTZ, welche ich immerhin mehr als 15 Jahre lang trainiert und perfektioniert hatte.

Zu diesem Zeitpunkt empfand ich Neo als okay aber den Aufwand zum Umlernen nicht wert. Ich nahm mir vor, es nur jenen zu empfehlen für die es das erste Layout sein würde.

Große Vorteile bemerkte ich allerdings beim Programmieren. Dort genoß ich vor allem die angenehmen Postitionen der verschiedenen Klammern. Rund, eckig, geschwungen und spitz – alles befindet sich unter oder in nächster Nähe von Zeige- und Mittelfinger. Auch die Postitionen von Schrägstrichen, Frage- und Rufzeichen fallen mir täglich positiv auf.

Status nach dem dritten und vierten Neo-Monat

Nach zwei weiteren Monaten fühle ich mich nun sehr wohl mit Neo. Die Geschwindigkeit beim Tippen ist in Ordnung. Beim erneuten Abtippen des ersten Absatzes dieses Artikels erreiche ich 260 Anschläge bei 97 % Genauigkeit.

Verbleibende Schwierigkeiten

Freunde ärgern sich, wenn sie meinen Computer benutzen wollen – umgekehrt gilt das Gleiche.

Angeblich sollte man jederzeit problemlos zwischen QWERTZ und Neo wechseln können, doch bei mir scheint das anders zu sein. Im Gegenteil: Vor allem während der ersten Monate bemerkte ich wie meine Fehlerquote in Neo stieg wenn ich kurz versucht hatte in QWERTZ zu schreiben.

Probleme mit VNC-Verbindungen

Nach wie vor Schwierigkeiten gibt es bei der VNC Verbindung zu einem Ubuntu 8.04 Server. Dort kommt es immer wieder zu sonderbaren Problemen. Und die dort wiederum enthaltene virtuelle Windows-Maschine ist für mich mit Neo unbedienbar geworden.

Hingegen funktionieren RDP-Verbindungen via rdesktop(1) einwandfrei. So kann ich als Gast auch in einer Windows-Terminalsitzung mit Neo arbeiten.

Hilfestellung bei anderen Computern

In meinem Fall kommt es sehr selten vor, dass ich den Computer eines Anderen vor mir habe. Die meisten Hilfestellungen lassen sich via ssh(1) erledigen. Sollte es dennoch einmal notwendig sein, lässt sich das Schema zumindest bei Linux-Rechnern rasch auf Neo stellen und nach Abschluss wieder zurück setzen.

Bei Windows ist dies allerdings komplizierter und daher würde jenen von der Umstellung abraten die oft mit solchen Geräten Anderer arbeiten müssen.

Weiter mit Neo

Für mich steht fest, dass ich bei Neo bleibe. Im Nachhinein betrachtet bin ich sehr froh, dass ich die Umstellung gemacht habe.

Es ist eine nette Herausforderung die alltägliche Aufgaben wie das Schreiben von E-Mails wieder interessant macht und letztendlich viel Nutzen mit sich bringt.

Sinnvollerweise sollte jeder gleich mit der Neo-Tastaturbelegung das Schreiben im Zehnfingersystem lernen.

Ich bin gespannt ob es einst zu einer weitläufigen Umstellung in den Schulen kommen wird, oder ob andere Technologien vorher das Tippen überflüssig machen werden.

Amarok 2 im Oldschool-Amarok 1 Stil gestalten

In KDE3 gefiel mir ganz besonders die optische Gestaltung des Musikwiedergabeprogramms “Amarok”. Das Design ließ den Inhalten ausreichend Platz und das dunkle “Funky Monkey Farbschema” verlieh dem Player einen einzigartigen Charakter.

Amarok 2 in KDE4 ist lieblos und plump gestaltet. Die einzelnen Elemente des Wiedergabeprogramms verschwenden unnötig Platz und verdrängen das Wichtigste: Die Wiedergabeliste

KDE ist flexibel

Zurecht ist KDE seit jeher für seine Anpassbarkeit bekannt und so bieten sich bei Amarok 2 ausreichend Möglichkeiten um auch in der neuen Version den Stil von Amarok 1 weitgehend zu imitieren.

In Amarok 2.4.3 müssen drei Bereiche umgestaltet werden:

  1. Aufbau und Inhalt der Wiedergabeliste
  2. Anordnung der einzelnen Elemente
  3. Hauptfenster schlank gestalten

Aufbau und Inhalt der Wiedergabeliste gestalten

Die Wiedergabeliste kann unter Wiedergabeliste > Ansichten > Ansichten einrichten … gestaltet werden. Meine fertige Zusammenstellung kann hier kopiert werden:

<!DOCTYPE layouts>
<playlist_layouts>
 <layout group_by="None" tooltips="true" name="Amarok 1.4.9">
  <single_track active_indicator_row="0" show_cover="false">
   <row>
    <element suffix="" prefix="" size="0" bold="false" alignment="center" value="Play count" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0.3" bold="false" alignment="left" value="Title" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0.15" bold="false" alignment="left" value="Artist" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0.15" bold="false" alignment="left" value="Album" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="right" value="Year" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="center" value="Track number" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="center" value="Bitrate" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0.25" bold="true" alignment="center" value="Moodbar" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="center" value="Rating" underline="false" italic="false"/>
   </row>
  </single_track>
  <group_head active_indicator_row="0" show_cover="false"/>
  <group_body active_indicator_row="0" show_cover="false">
   <row>
    <element suffix="" prefix="" size="0.5" bold="true" alignment="left" value="Title" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="left" value="Artist" underline="false" italic="true"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="right" value="Length" underline="false" italic="false"/>
   </row>
  </group_body>
  <group_variousArtistsBody active_indicator_row="0" show_cover="false">
   <row>
    <element suffix="" prefix="" size="0.5" bold="true" alignment="left" value="Title" underline="false" italic="false"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="left" value="Artist" underline="false" italic="true"/>
    <element suffix="" prefix="" size="0" bold="false" alignment="right" value="Length" underline="false" italic="false"/>
   </row>
  </group_variousArtistsBody>
 </layout>
</playlist_layouts>
  1. Obige Definition in eine Textdatei namens Amarok 1.4.9.xml im Verzeichnis $HOME/.kde/share/apps/amarok/playlist_layouts/ kopieren
  2. Amarok neustarten
    • killall --wait amarok && amarok
  3. Wiedergabeliste > Ansichten > Amarok 1.4.9 wählen

Anordnung der einzelnen Elemente optimieren

  1. Ansicht > Ansicht sperren deaktivieren
  2. Kontext auf Medienquellen positionieren
    • Dies erstellt automatisch einen Reiter der das Umschalten zwischen den beiden Ansichten ermöglicht.
  3. Wiedergabeliste rechts davon einordnen
  4. Ansicht > Schmale Werzeugleiste aktivieren
  5. Ansicht > Ansicht sperren aktivieren

Fenster schlanker machen

Dieser Schritt ist optional. Allerdings wäre es schade gerade auf eine der Hauptstärken des K Desktop Environment zu verzichten.

  1. Fenster-Umrandung entfernen: Alt+F3 > Erweitert [W] > Keine Umrandung [K]
  2. Fenster neu positionieren: Alt+F3 > Verschieben [V]
  3. Fenstergröße anpassen: Alt+F3 > Größe ändern [G]

Unter folgendem Punkt können diese Einstellungen auch permanent festgelegt werden:
Alt+F3 > Erweitert [W] > Spezielle Einstellungen für dieses Fenster … [F]

Wo ist der Funky Monkey?

Amarok 2 übernimmt immer das aktuell eingestellte Farbschema der Desktopumgebung.

Es gibt Möglichkeiten ein eigenes Farbschema zu setzen, welches dann ausschließlich für das Wiedergabeprogramm verwendet wird. Diese Möglichkeiten bringen allerdings diverse Nachteile mit sich, weshalb ich davon abrate sie zu verfolgen und im Rahmen dieser Beschriebung vernachlässige.

Bei Bedarf veröffentliche ich das entsprechende Farbschema für KDE4 mit einigen Hinweisen zu den Umsetzungsvarianten.

Neverwinter Nights 2: Optimierung für 1680×1050

Obwohl Neverwinter Nights 2 bereits im Jahr 2006 veröffentlicht wurde, ist das Spiel nach wie vor ein optischer Genuss. 2009 habe ich einige Optimierungen für die 1680 × 1050 Bildschirmauflösung erstellt und sie Bluthagels 1680 getauft.

Sowohl das Grundspiel als auch die Erweiterungen Mask of the Betrayer (MotB) und Storm of Zehir (SoZ) werden unterstützt.

Übersicht der Verbesserungen

  • Großes “Untersuchen”-Fenster
    • Datei: examine.xml
    • basiert auf Alzikar’s Improved Examine window
  • Optimierte Begleiter-Anzeige
    • Datei: partybar.xml
    • basiert auf Smaller and longer partybar
  • Angenehm lesbare Schriftgröße
    • Dateien: fontfamily.xml, spells_known.xml
    • basiert auf Charlie’s UI
  • Übersichtlicher Charakter-Bildschirm
    • Dateien: characterscreen.xml, char_top_bg_bluthagel.tga
    • basiert auf MergedUI (aus Companion and Monster AI 2.2)

Installation

Um künftige Änderungen in den Original-Versionen der Mods berücksichtigen zu können, enthält Bluthagels 1680 lediglich die geänderten Dateien. Es ist daher erforderlich, als Basis zuerst jene Mods zu installieren auf denen diese Änderungen aufsetzen.

Mods herunterladen

Folgende Mods müssen geladen und im Neverwinter Nights 2 Verzeichnis unter Override/ abgelegt werden:

Duplikate entfernen

Gleichnamige Dateien müssen in den heruntergeladenen Mods deaktiviert – also gelöscht oder umbenannt – werden:

  • charlie ui/charlie - ui - xml/spells_known.xml entfernen
  • charlie ui/charlie - ui - xml/characterscreen.xml entfernen
  • charlie ui/charlie - ui - xml/creatureexamine.xml entfernen
  • compmonai2.2/characterscreen.xml entfernen
  • compmonai2.2/creatureexamine.xml entfernen

Ein Download der Mods Smaller and longer partybar und Alzikar’s Improved Examine window ist überflüssig, da sie Bluthagels 1680 ohnehin gänzlich überschreiben würde.

Empfehlungen

Folgende Neverwinter Nights 2 Mods optimieren die grafische Oberfläche zusätzlich:

WAVE-Audiodateien aus .bin/.cue extrahieren

The Nameless Mod ist als eines der besten Mods für das Kultspiel Deus Ex bekannt.

Der Soundtrack zum Spiel steht auf der Projektseite kostenlos als Archiv zum Download bereit. Das Archiv enthält zwei CD’s als Speicherabbild/Cuesheet-Kombination (Dateiendungen .bin und .cue).

Einzelne Dateien als FLAC oder OGG fehlen, um die Fans zu animieren, die CD zu bestellen und mit dem Kauf die Entwickler zu unterstützen.

Audio-Dateien direkt auslesen anstatt auf CD brennen

Möchte man die Audiotracks dennoch lieber direkt speichern anstatt sie auf CD zu brennen, kann man mit dem Programm bchunk(1) die einzelnen Tracks direkt als WAV-Dateien (Waveform Audio File Format – Dateiendung .wav) auslesen.

# bchunk-Installation in Ubuntu:
sudo apt-get install bchunk
# Auslesen der WAVE-Dateien im Verzeichnis 'Friendly Disc':
bchunk -w TNMOST_Friendly.bin TNMOST_Friendly.cue TNMOST_Friendly
# Auslesen der WAVE-Dateien im Verzeichnis 'Hostile Disc':
bchunk -w TNMOST_Hostile.bin  TNMOST_Hostile.cue  TNMOST_Hostile

Als Resultat erhält man fortlaufend nummerierte WAV-Dateien, welche nun beispielsweise mit flac(1) komprimiert und mittels krename(1) sinnvoll benannt werden können.

DRY-Verwendung von Constraints in Grails-View

Um dem Prinzip zur Redundanzvermeidung (DRY – Don’t repeat yourself) gerecht zu werden, kann man in Grails auf die Constraints einer Domainklasse in Grails auf einfache Art und Weise auch von anderen Stellen aus zugreifen – beispielsweise in der View oder im Controller.

Folgendes Beispiel zeigt die Verwendung des size-Constraints um die maximale Länge (maxlength) eines INPUT-Feldes zu beschränken:

Constraint aus dem Grails-Controller übergeben

z.B. in Action “create” von MyDomainController.groovy:

// Constraint in Controller abrufen und an die View übergeben
return [ titleMax:    MyDomain.constraints.title.size.max() ]

Constraint in der Grails-View verwenden

z.B. in mydomain/create.gsp

<!-- Constraint in der View nutzen -->
<g:textField name="title" maxlength="${titleMax}" />

Grails Framework Reference: constraints

Suchmaschinenoptimierung Ubuntu-Style: Buchstaben im Title zählen

Sucht man einen Begriff in einer Suchmaschine (z.B. ixquick, Google, Bing, Yahoo! …), wird in den Ergebnissen der Titel der gefundenen Seite verlinkt dargestellt.

Für diese Titel steht in der Regel begrenzter Platz zur Verfügung – normalerweise genau eine Zeile.

Die optimale Länge eines Seitentitels

Wie lang eine solche Zeile sein darf unterscheidet sich geringfügig von Suchmaschine zu Suchmaschine. Man kann die Längen durch Tests herausfinden. Im Blog von Powermapper sind die Ergebnisse solcher Tests aufgelistet.

Eine Länge von 65 Zeichen ist unter Berücksichtigung der gängigen Suchmaschinen optimal.

Die Anzahl der Zeichen im Titel zählen

Natürlich könnte man die Zeichen jeder Überschrift im Kopf zählen. Da sich das allerdings sehr aufwendig gestaltet, gibt es bei manchen Systemen einen entsprechenden Zähler.

Hat man einen Blog im Life Blogs Netzwerk, so ist dieser standardmäßig mit einem Zähler ausgestattet, welcher während der Eingabe die Anzahl der verwendeten Zeichen darstellt.

Benötigt man einen Zähler für andere Webseiten (z.B. Titel von YouTube Videos), so könnte man den Text dennoch im Blog eingeben und umkopieren, sobald die Länge korrekt ist.

Versierte Nutzer werden es allerdings oft praktikabler finden, die Titellänge mit schnell verfügbaren Kommandos zu testen und anzupassen.

Kommando in Ubuntu/Linux und FreeBSD

In Unix-orientierten Systemen gibt es für gewöhnlich die beiden Befehle echo(1) (eine Zeile Text anzeigen) sowie wc(1) (Bytes, Wörter und Zeilen von Dateien zählen).

Folgende Zeile schickt den Text an wc, welches wiederum die Anzahl der Zeichen ausgibt:

echo 'ZU PRÜFENDER SEITENTITEL' | wc -m

Wichtig: Der Text in diesem Beispiel muss frei von einfachen Hochkommata ‘ sein.

Nachdem man mit ENTER bestätigt, wird die Anzahl der Zeichen ausgegeben. Mit der Taste Pfeil nach oben holt man den Text wieder in die aktuelle Zeile, bearbeitet ihn erneut und bestätigt wieder mit ENTER. Das wiederholt man bis der Titel die gewünschte Länge erreicht hat.

Wo gibt man diese Kommandos ein?

In den aktuellen K/Ubuntu Versionen ist der sicherste Weg, den Schnellstarter (Alt+F2) aufzurufen und dort dann den Programmnamen einzugeben:

  • In Ubuntu/Gnome: gnome-terminal
  • In Kubuntu/KDE: konsole

FreeBSD Nutzern wird sich diese Frage nicht stellen :)

Bei Unerreichbarkeit von Apache Tomcat automatisch eine selbst erstellte HTML-Seite darstellen

Während eines “Redeploys” ist eine Applikation unerreichbar.

Hat man Apache HTTPD mit Tomcat verbunden, kann man diese Situationen und sogar den Ausfall des Apache Tomcat Dienstes elegant behandeln.

Die offizielle Dokumentation zu mod_jk definiert empfohlene Timeout-Werte. Bleibt eine Anfrage seitens Tomcat innerhalb der definierten Zeitfenster unbeantwortet, kann Apache HTTPD eine alternative Seite mit entsprechenden Hinweisen ausliefern.

Anstatt Besuchern kryptische und abschreckende Standard-Fehlermeldungen anzuzeigen, kann eine frei gestaltete Seite mit Hinweisen zum weiteren Vorgehen präsentiert werden. Dabei können alle Funktionalitäten der Apache HTTPD Installation (CSS, PHP, …) genutzt werden. Eine einfache (X)HTML Seite ist oft ausreichend.

Apache HTTPD: Die ErrorDocument Direktiven konfigurieren

Welche Seite in einem solchen Fehlerfall angezeigt wird, definiert man in der Apache HTTPD Konfigurationsdatei über die ErrorDocument-Direktive.

Im folgenden Beispiel wird in der Datei /etc/apache2/conf.d/localized-error-pages für einige der möglichen Statuscodes je eine HTML-Seite definiert.

# 404 - Not Found
ErrorDocument 404 /404.shtml
# 500 - Internal Server Error
ErrorDocument 500 /500.shtml
# 503 - Service Unavailable
ErrorDocument 503 /503.shtml

Damit diese Seiten auch für Tomcat angezeigt werden, muss die Konfiguration des entsprechenden Workers angepasst werden. Nach Befolgen der Anleitung zum Verbinden von Tomcat & HTTPD, müsste der worker als “ajp13_worker” benannt sein.

Apache Tomcat: Die worker.properties konfigurieren

Demnach sind folgende Werte in /etc/libapache2-mod-jk/workers.properties einzutragen:

worker.ajp13_worker.ping_mode=A
worker.ajp13_worker.ping_timeout=10000
worker.ajp13_worker.fail_on_status=500,503

Die ersten beiden Zeilen definieren die Timeouts. Die dritte Zeile definiert bei welchen Statuscodes der Worker als “versagt” (failed) betrachtet wird. In der offiziellen Dokumentation können Details zu fail_on_status nachgelesen werden.

Die Konfiguration testen

Hat man beispielsweise die Datei 503.shtml entsprechend erstellt und abgelegt, kann man testen, ob sie korrekt angezeigt wird.

Dazu liest man die Apache HTTPD Konfiguration neu ein, stoppt Tomcat und versucht die entsprechende Applikation per Browser zu erreichen.

sudo service apache2 reload
sudo service tomcat6 stop

Hinweis: Um Server Single Points of Failure zu vermeiden bietet mod_jk sehr interessante Möglichkeiten um im Fehlerfall oder auch bei unterschiedlichen Zugriffen auf andere Server umzuleiten. Neben einer Redundanz welche die Verfügbarkeit der Dienste absichert kann damit eine effiziente Lastverteilung erreicht werden.

Welche Alternative gibt es zur angeknacksten Social Media Plattform “Facebook”

Sei es aus Sicht der Bedienbarkeit, der Funktionalitäten, der Anwendersicherheit oder der Privatsphäre, Facebook strotzt vor Mängeln.

Im persönlichen Bekanntenkreis beschweren sich immer mehr Laien über die unlogische gestaltete Nutzeroberfläche sowie die vielen technischen Fehler der Plattform.

Als ein Freund und ich vor einigen Monaten darüber sprachen, wurde mir bewusst, dass Facebook zwangsweise abgelöst werden wird.

Eine Alternative müsste lediglich zwei Grundanforderungen erfüllen:

  • Schlanke Benutzeroberfläche mit Konzentration auf die Kernkompetenz Kommunikation
  • Starke Rücksichtnahme auf die Privatsphäre der Nutzer

Bereits jetzt gibt es alternative Plattformen mit starker Popularität, doch das Prinzip einer “sozialen Plattform” hat stets einen bitteren Beigeschmack:

Letztendlich legt man private Kommunikation einer dritten Instanz offen.

Viel besser in das Konzept des Distributed Lifestyle passt eine ganz andere Form der sozialen Medien:

Eigene Webseiten – vor allem Weblogs (“Blogs”)

Früher hatten hauptsächlich jene Privatpersonen mit technischem Hintergrund eigene Webseiten. Heute gibt es immer mehr Laien, welche einfache Werkzeuge wie Blogs nutzen um ihre Gedanken zu veröffentlichen.

Das XHTML Friends Network, kurz XFN, fügt diese Tatsache in den sozialen Kontext ein.

Prinzipell ist XFN eine einfache Möglichkeit bei einem Hypertext-Link anzugeben, in welchem Bezug man zur verlinkten Person steht. Somit kann jeder Autor einer Website zeigen wie er mit wem in Bezug steht und so zum Beispiel “Freundschaften schließen”.

  • Die Blogs an sich bieten über Kommentare und Pingbacks die Möglichkeit eine “Pinnwand” zu imitieren.
  • Durch RSS/Atom-Feeds kann man genau jene Meldungen (“Statusupdates”) abonnieren, die einen interessieren.
  • Da jeder seinen Anbieter selbst wählt, liegt die Macht für die Inhalte wieder beim Autor selbst.
  • Durch Verschlüsselung und Passwortschutz kann definiert werden, welche Benutzer was sehen können.
  • Jeder Autor kann selbst entscheiden, ob er Werbung auf seinem “Profil” haben möchte – und die Einnahmen dafür kassieren.
  • Anonyme Nutzung ist möglich. Zensur wird verhindert.

Da die sozialene Medien letztendlich nichts weiter als Web-Applikationen sind, ist mit eigenen Seiten alles möglich, das auch über diese Plattformen erreicht wird – meist in einer weit eleganteren Form.

Es wird noch dauern, bis der Großteil der Menschen ein gesundes “Datenschutzbewusstsein” entwickelt hat.

Andererseits ist aktuelle Blog-Software für Anfänger oft einfacher zu bedienen als zum Beispiel Facebook. Mit wenig Lernaufwand lässt sich ungleich mehr erreichen.

Life Blogs erhebt den Anspruch, einen besonders einfachen Einstieg ins Bloggen zu ermöglichen. Zu Beginn werden kleine Wünsche des Nutzers individuell umgesetzt. Als Grundlage wird die bewährte Software WordPress eingesetzt.

Empfohlene Ressource

Social Hacking: “Facebook” beschreibt die Facebook Sicherheitslücken (englisch)

Was ist der Distributed Lifestyle?

Das Bild davon, was der Distributed Lifestyle eigentlich ist, wird sich durch weitere Artikel formen.

Tiny Tiny RSS als Standard-Feedreader in Firefox einrichten

Tiny Tiny RSS ist ein webbasierter open source Feed Aggregator. Sobald er auf einem Webserver installiert ist, kann man damit von überall aus Newsfeeds lesen und verwalten (Stichwort “Content-Syndication“).

Vielleicht schreibe ich demnächst mehr über die Software und ihre breiten Einsatzmöglichkeiten.

Vorerst möchte ich hier erklären, wie man Tiny Tiny RSS als Standard-Newsreader für RSS/Atom Feeds einrichtet.

  1. Website der Tiny Tiny RSS Installation aufrufen
  2. Einloggen
  3. Rechts oben auf Einstellungen klicken
  4. Registerkarte Feeds wählen
  5. Darunter Firefox Integration ausklappen
  6. Knopf Diese Website als Feedreader registrieren. anklicken und bestätigen.
  7. Firefox neu starten
  8. Eine Website besuchen und den gewünschten Feed anklicken
  9. Bei Diesen Feed abonnieren mit Tiny Tiny RSS auswählen
  10. [OPTIONAL] Häkchen bei Feeds immer mit Tiny Tiny RSS abonnieren. setzen
  11. Knopf Jetzt abonnieren klicken

Hat man eingestellt, die Feeds immer mit Tiny Tiny RSS zu abonnieren (optionaler Punkt 10.) kann man dies später wie folgt ändern.

Einstellung für Standard-Newsreader ändern

  1. Im Firefox-Menü Bearbeiten > Einstellungen … klicken
  2. Auf Anwendungen klicken
  3. Im Suchfeld nach “Web-Feed” filtern
  4. In der Spalte “Aktion” die gewünschte Auswahl treffen