03 Feb 2008, 06:00

Frets on Fire

Guitar Hero für Umsonst und draußen PC?

Frets on Fire!

Einfach nur genial dieses Spiel. Viel Spaß.

Gibts für Linux, Windows und Mac.

Unter Debian braucht man auf jeden Fall die Pakete python-glade2,  python-pygame und  freeglut3.

28 Jan 2008, 17:41

PHP5.2 bringt inkonsistente include_path Fehler

Es sieht ganz so aus als ob PHP5.2.x einen komischen Bug in Verbindung mit Apache VHosts und dort gesetzten include_paths hat.

Sobald man in einem VHost den include_path ändert funktioniert ini_set in allen Vhosts nicht mehr. Um das ganze noch ein wenig spannender zu machen tritt der Bug nicht immer auf, d.h. er ist extrem schwer zu debuggen.

Toll.

Update: Die Lösung war keine Include_Paths in den Vhosts zu setzen, da das PHP5 Modul damit Probleme hat.

25 Jan 2008, 12:23

WSDL2Flash-GUI Generator

Ich habe gerade erfahren, dass es Code-Generatoren gibt um aus WSDL Beschreibungen Flash GUIs zu erzeugen.

Ohman, da haben sich zwei Hammer-Technologien gesucht und gefunden ;)

22 Jan 2008, 10:49

Email Adresse in PHP validieren

if(!pregmatch(“/^[A-Z0-9.%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}$/i”,$email)) { return true; }

Quelle: How to find or validate Email Adress 

21 Jan 2008, 18:08

Yacy - Verteilte Websuche

Durch einen Artikel in der iX bin ich mal wieder auf die verteilte Websuche Yacy aufmerksam geworden.

Nachdem ich letztes Jahr selbst etwas ähnliches implementiert habe, und durch die erdrückende Marktmacht von Google motiviert habe ich mich entschlossen Testweise selbst als Peer am Yacy Suchnetzwerk teilzunehmen.

Die Installation ist erfreulich einfach:

Das wars. Einfacher gehts wirklich nicht. Dann noch schnell im Webinterface ein Passwort vergeben und schon kann die Suche losgehen.

Wer anderen Peers Zugriff auf den eigenen Index gewähren will, der sollte noch Port 8080 in der Firewall (Router, etc.) freischalten.

Yacy macht wirklich einen guten Eindruck. Mal sehen, wenn sich der Client als stabil erweist lasse ich ihn vielleicht in Zukunft auf einem Root-Server laufen.

16 Jan 2008, 19:47

WebEdition: session settings error

Wenn man sich nicht in WebEdition einloggen kann und statt dessen folgenden Fehler bekommt, sollte man mal überprüfen ob Cookies zugelassen sind, sonst geht das nicht.

webEdition cannot be started! A problem occurred with the session settings in your php.ini-file!

15 Jan 2008, 10:18

Scaffoldr 2.0

Wer bei PHP/MySQL Projekten die CRUD Seiten fürs Backend nicht dauernd von Hand bauen will und keine Lust hat sich in ein riesiges Framework einzuarbeiten der sollte sich mal meinen CRUD Code Generator Scaffoldr anschauen.

Das ist ein Template basiertes PHP Script das die CRUD Seiten für eine komplette Datenbank innerhalb weniger Sekunden erstellt. Inkl. differenzierter Behandlung der einzelnen Feld-Datentypen, sortierbaren Spalten sowie “Pageination”.

Ich benutze das oft als Basis für das Administrationsbackend von Webprojekten. Für ein Benutzer-Frontend ist es dagegen weniger geeignet, da weitgehend auf Sicherheitsüberprüfungen verzichtet wird. Daher vorsicht vor SQL-Injection Attacken wenn man nicht vertrauenswürdige Benutzer ran lässt.

07 Jan 2008, 12:34

Datenschutz-Pannen durch frei zugängliche Zugrifsstatistiken

Mit Google lassen sich immer mal wieder interessant Entdeckungen machen.

Sucht man z.B. nach einem User-Agent String (aus einem HTTP-Header) finden man eine ganze Reihe von frei zugänglichen Zugrifsstatistiken. Na wenn das nicht mal Datenschutz par excellence ist.

18 Dec 2007, 19:36

Neue Firmware für FRITZ!Box 7170

Jetzt wo die neuen 7270 fertig ist, gibt AVM endlich die finale Version der neuen Firmeware, bisher nur als Laborversion erhältlich, raus.

Anscheinend steht auch schon eine Firmeware mit der Möglichkeit zum Faxempfang bereit. Das klingt doch sehr gut :)

13 Dec 2007, 11:47

Eclipse RCP: CorruptedCodeException

Wenn man versucht eine RCP Application mit dem FlexiProvider und dem FhG Codec zu bauen laufen einem zuweilen schon sehr komische Fehler über den Weg.

Interessant wird es wenn die RCP-App. gar nicht mehr startet und CorruptedCodeExecptions schmeißt.

Es gibt ein paar Punkte auf die man achten sollte.

RCP Manifest - Build Screen

In der Build Configuration muss das aktuelle Verzeichnis (.) aufgenommen werden.

RCP Manifest - Dependency Screen

Man sollte, wenn möglich, auf unnötige Plug-ins verzichten.

RCP Manifest - Runtime Screen

Gaaanz wichtig: Alle Pakete das Projekts exportieren und, noch wichtiger, das Verzeichnis “bin/” mit in den Classpath!

Good Luck.

13 Dec 2007, 11:28

Terry Pratchett hat Alzheimer

Wie es scheint ist mein absoluter Lieblingsautor an einer seltenen Form von Alzheimer erkrankt :/

Er schreibt, dass man sich keine zu großen Sorgen machen soll und er mit Sicherheit noch einige Bücher schreiben wird, aber Alzheimer ist eine schreckliche Krankheit, ich wünsche ihm alles gute!

06 Dec 2007, 12:31

FRITZ!Box Fon Wlan 7270 ab sofort im Handel verfügbar!

Wie AVM sobeben mitgeteilt hat ist die neue, lange erwartete, FRITZ!Box Fon Wlan 7270 ab sofort im Handel verfügbar!

Die neue FRITZ!Box Fon WLAN 7270 des Berliner Kommunikationsspezialisten AVM ist ab sofort im Handel erhältlich. Das neue FRITZ!Box-Modell bietet in einem einzigen Gerät eine bisher nicht erreichte Vielfalt für den DSL-Anschluss. Der neue WLAN-Funkstandard IEEE 802.11n (Draft 2.0) sorgt in Verbindung mit der MIMO-Mehrantennentechnik für eine optimale Übertragung von Daten, Sprache und Filmen. Für Internet- und Festnetztelefonie bietet die FRITZ!Box Fon WLAN 7270 neben Anschlüssen für analoge und ISDN-Telefone erstmals eine integrierte DECT-Basisstation. Über den Medienserver ist gespeicherte Musik auch bei ausgeschaltetem Computer im gesamten Netzwerk verfügbar. So wird die FRITZ!Box Fon WLAN 7270 mehr denn je zur zentralen Datendrehscheibe für den heimischen Internetzugang.
[AVM Pressemitteilung]

Bis jetzt konnte ich noch keinen Shop finden, der dieses Modell als Lieferbar listet, aber der Preis liegt so um die 200€.

Ich bin gespannt wie erfolgreich das neue AVM Flagschiff sein wird, denn trotz des überwältigenden Funktionsumfangs ist sie doch deutlich teurer als viele vergleichbare Produkte.

Sollte bei mir in nächster Zeit ein Router-Neukauf anstehen, würde ich mich für die FRITZ!Box 7270 entscheiden. Wobei mir wichtig wäre, dass sich neben dem WLAN auch das DECT-Modul deaktivieren lässt um die Strahlenbelastung zu reduzieren.

05 Dec 2007, 10:49

Kopete-OTR Plugin for Debian lenny

This is probably my first english post.

When using GAIM/Pidgin I got used to the OTR Plugin which I really like because Mr. Schäuble, the german minister of the interior, likes to wiretap innocent citizen. When using an encryption plugin like OTR you retain at least a bit privacy.

The problem when I did switch my primary desktop environment from GNOME to KDE was that KDE’s Instant Messenger - which I also like a lot - doesn’t support OTR. There is a OTR plugin somewhere but I couldn’t find a debian package thats installable on my system. The packages were either not for Debian at all (Ubuntu) or for Unstable which is bad since I’m running lenny (testing).

The solution was to fetch myself the sources of the Unstable-Package from this place and recompile it for lenny.

The packages here are provided for your convenience, I make no promises whatsoever. If they work for you -> great, if they don’t -> don’t complain to me.

Download Kopete-OTR 0.7-1 for Debian lenny (i386) here.

01 Dec 2007, 15:49

Hotspot und Firewall Piercing

Nachdem ich darauf aufmerksam geworden bin, dass es bei vielen öffentlichen Hotspots wohl eine Lücke gibt, des ermöglicht kostenlos zu surfen, habe ich zu diesem Thema ein paar Informationen gesammelt.

Zunächst aber eine Warnung: Wenn man diesen Anleitungen folgt kann das möglicherweise rechtliche Kosquenzen haben, daher rate ich davon ab die beschriebenen Vorgehensweisen ohne die Einwilligung des Zugangsproviders zu testen. <!–01695360–>

Als erstes würde ich eine allgemeine Präsentation zum Thema Firwall Piercing empfehlen. Dort werden auch schon die ersten Möglichkeiten aufgezeigt eine Firewall - und nichts anderes wird auch von einem Hotspot verwendet um den Zugang zu kontrollieren - zu umgehen. Interessant sind insbesondere die Punkte Ping-Tunnel und DNS-Tunnel. Da auf vielen Hotspots entweder ICMP Nachrichten und/oder Port 65/UDP für DNS-Auflösungen geöffnet sind, werden diese Tunnel sehr interessant. Aber auch wenn der Port 65 geschlossen ist, und nur ein DNS-Server des Hotspot-Betreibers zur Verfügung steht ist es noch möglich dies auszunutzen, da man mit einem NSTX Tunnel die Datenpakete auch durch einen fremden DNS Server tunneln kann. Wenn der Port 65/UDP direkt offen ist, dann ist es am einfachsten einen OpenVPN-Server auf Port 65 lauschen zu lassen und diesen als Gateway zu benutzen.

27 Nov 2007, 21:51

Dovecot's Deliver zum Schweigen bringen

Seit ich Dovecots deliver als LDA/MDA zusammen mit exim verwende habe ich das Problem gehabt, dass deliver im syslog immer die Passwörter der Mail-Benutzer ausgegeben hat, was natürlich weder erwünscht noch sinnvoll ist. Ich habe lange Zeit keine Lösung gefunden, da meine Konfiguration eigentlich korrekt war, aber heute hat mir Tim Sirrainen, der Autor von Dovecot eine Lösung aufgezeigt.

Example from delivers logfile:

deliver(user@host.tld): "2007-11-26 19:37:40 "Info: auth input: user@host.tld
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: auth input: user=user@host.tld
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: auth input: password=password
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: auth input: home=/home/mail/host.tld/user
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: auth input: uid=8
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: auth input: gid=8
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: Loading modules from directory: /usr/lib/dovecot/modules/lda
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: Module loaded: /usr/lib/dovecot/modules/lda/lib90_cmusieve_plugin.so
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: maildir: data=/home/mail/host.tld/user/Maildir
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: maildir: root=/home/mail/host.tld/user/Maildir, index=/home/mail/host.tld/user/Maildir, control=, inbox=
deliver(user@host.tld): "2007-11-26 19:37:40 "Info: cmusieve: Using sieve path: /home/mail/host.tld/user/.dovecot.sieve
deliver(user@host.tld): "2007-11-26 19:37:42 "Info: msgid=&lt;49403.129.98.4.165.1196102178.squirrel@mail.host.com&gt;: saved mail to dovecot

Das Problem war ein Bug in Dovecot/deliver der dafür sorgte, dass die Zeile

mail_debug = no

nicht richtig ausgewertet wurde. Die Lösung war die betreffende Zeile auszukommentieren.

Hier noch meine Konfiguration vor der Korrektur.

Dovecot.conf w/o comments:

base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
shutdown_clients = yes
log_path = /var/log/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/cert.crt
ssl_key_file = /etc/ssl/certs/key.pem
ssl_parameters_regenerate = 168
ssl_cipher_list = ALL:!LOW
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_process_size = 32
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 128
login_max_connections = 256
login_greeting = Mailserver (powered by Dovecot) ready.
mail_location = maildir:/mail/%d/%n/Maildir
namespace private {
separator =
prefix =
location =
inbox = yes
}
mail_extra_groups = mail
mail_debug = no
first_valid_uid = 8
last_valid_uid = 8
max_mail_processes = 1024
mail_process_size = 256
mail_max_keyword_length = 50
umask = 0077
mbox_read_locks = fcntl
mbox_write_locks = dotlock fcntl
mbox_dotlock_change_timeout = 120
protocol imap {
imap_max_line_length = 65536
login_greeting_capability = yes
}

protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
postmaster_address = postmaster@host.tld
mail_plugin_dir = /usr/lib/dovecot/modules/lda
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
mail_plugins = cmusieve
}
auth_process_size = 256
auth_cache_size = 256
auth_cache_ttl = 3600
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
auth default {
mechanisms = plain
passdb pam {
}
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb passwd {
}
userdb prefetch {
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
}
client {
path = /var/run/dovecot/auth-client
mode = 0600
user = mail
group = mail
}
}
}
dict {
}
plugin {
}

27 Nov 2007, 16:05

NFSv4 Einrichten

NFSv4 ist nicht gerade mit einer üppigen Dokumentation gesegnet, aber bei Ubuntu gibts - wie so oft - eine recht gute Anleitung die auch mehr oder weniger uptodate ist. Das soll noch mal jemand sagen Ubuntu wäre schlecht für Debian …

Debugging Information

Zugriffsprobleme

26 Nov 2007, 19:56

Leerzeilen entfernen

Wenn man die Leerzeilen aus einer Datei entfernen will, so kann man das mit Hilfe von sed machen:

sed -e ‘/^$/d’

Um z.B. eine Konfigurationsdatei ohne Kommentare und Leerzeilen auszugeben reicht folgender Einzeiler auf der Konsole:

cat /etc/config.conf | grep -v “#” | sed -e ‘/^$/d’

25 Nov 2007, 23:33

Europa ohne VE, Callisto mit?

Na toll, das neuste Eclipse Release, Europa, kommt ohne Visual Editor Unterstützung, nur die Vorversion, Callisto, wird unterstüzt. Das ist irgendwie doof …

25 Nov 2007, 14:33

Haltestellenaushangfahrpläne des RMV

Tipp: Spart viel Zeit und Nerven.

22 Nov 2007, 12:12

Safari unter Windows

Nachdem es Apples Webbrowser Safari nun schon eine Weile für Windows gibt wollte ich ihn jetzt auch mal ausprobieren.Im klassischen Apple Design gehalten, bin ich die ganze Zeit irritiert da unter Windows so sonst nur iTunes aussieht.Er wirkt etwas langsamer als Firefox und Opera, aber gemessen habe ich das nicht.Gleich beim ersten Start hat er sich allerdings kommentarlos verabschiedet.Um ab und zu mal Webseiten auf die Darstellung zu überprüfen ist er ok, aber dauerhaft damit arbeiten will ich zur Zeit (noch) nicht. 

22 Nov 2007, 05:30

WordNet mit JWNL

Wer auf WordNet mit Java zugreifen will, der stößt über kurz oder lang auf die freie Bibliothek JWNL - Java WordNet Library. Wenn man allerdings versucht diese mit einer aktuellen Version WordNet zu nutzen schmeißt sie nur mit komischen Fehlermeldungen um sich - selbst wenn man den Pfad zur Datenbank in der Konfigurationsdatei richtig angegeben hat.

Das Problem dabei ist, dass JWNL nur mit WordNet 2.0 für Windows zusammenarbeiten will - was freundlicherweise nirgends (deutlich) erwähnt wird.

Kurzanleitung für den Einsatz von WordNet unter Java:

  • WordNet runterladen und installieren (nur Windows)
  • JWNL runterladen, die Klassen (commons-logging,jwnl und utilities) in den Build-Path einbinden
  • In der Datei file_properties.xml den Pfad auf das Unterverzeichnis dict der WordNet Installation verweisen lassen.
  • Mit JWNL.initialize(new FileInputStream(“path/to/file_properties.xml”) und Dicitornary wordnet = Diricotnary.getInstance() eine neune Insatnz von Wordnet bzw. JWNL erzeugen.
  • Danach kann man mit wordnet.lookupAllIndexWords(String) auf die Wordnet Datenbank zugreifen.
Hier eine Beispielklasse die die wichtigsten Wordnet API-Calls demonstriert:

package utils;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import net.didion.jwnl.JWNLException;
import net.didion.jwnl.data.IndexWord;
import net.didion.jwnl.data.IndexWordSet;
import net.didion.jwnl.data.PointerUtils;
import net.didion.jwnl.data.Synset;
import net.didion.jwnl.data.list.PointerTargetNode;
import net.didion.jwnl.data.list.PointerTargetNodeList;
import net.didion.jwnl.dictionary.Dictionary;

public class WordNetUtils {

private Dictionary wordnet = null;

public WordNetUtils() {
this.wordnet = Dictionary.getInstance();
}

public List<string> getSynonyms(String word) {
List</string><string> syns = new ArrayList</string><string>();
IndexWordSet iws;
try {
iws = wordnet.lookupAllIndexWords(word);
IndexWord[] words = iws.getIndexWordArray();
for (int i1 = 0; i1 &lt; words.length; i1++) {
syns.addAll(getAllSynonyms(words[i1]));
}
} catch (JWNLException e) {
e.printStackTrace();
}
return syns;
}</string>

@SuppressWarnings("unchecked")
private List<string> getAllSynonyms(IndexWord w) throws JWNLException {
List</string><string> syns = new ArrayList</string><string>();
Synset[] senses = w.getSenses();
for (int i = 0; i &lt; senses.length; i++) {
// PROCESS SYNONYMS
PointerTargetNodeList relatedList = PointerUtils.getInstance()
.getSynonyms(senses[i]);
Iterator</string>

<pointertargetnode> it = relatedList.iterator();
while (it.hasNext()) {
PointerTargetNode elem = (PointerTargetNode) it.next();
Synset s = elem.getSynset();
for (int j = 0; j &lt; s.getWords().length; j++) {
syns.add(s.getWord(j).getLemma());
}
}
// PROCESS HYPERNYMS
relatedList = PointerUtils.getInstance().getDirectHypernyms(
senses[i]);
it = relatedList.iterator();
while (it.hasNext()) {
PointerTargetNode elem = (PointerTargetNode) it.next();
Synset s = elem.getSynset();
for (int j = 0; j &lt; s.getWords().length; j++) {
syns.add(s.getWord(j).getLemma());
}
}
// PROCESS HYPONYMS
relatedList = PointerUtils.getInstance().getDirectHyponyms(
senses[i]);
it = relatedList.iterator();
while (it.hasNext()) {
PointerTargetNode elem = (PointerTargetNode) it.next();
Synset s = elem.getSynset();
for (int j = 0; j &lt; s.getWords().length; j++) {
syns.add(s.getWord(j).getLemma());
}
}
}
return syns;
}</pointertargetnode>public List<string> getSynonyms(List</string><string> toks) {
List</string><string> retval = new ArrayList</string><string>();
for (int i = 0; i &lt; toks.size(); i++) {
retval.addAll(this.getSynonyms(toks.get(i)));
}
return retval;
}</string>public Set<string> getSynonyms(Set</string><string> toks) {
Set</string><string> retval = new HashSet</string><string>();
for (Iterator</string><string> iterator = toks.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
retval.addAll(this.getSynonyms(name));
}
return retval;
}
}
</string>

21 Nov 2007, 06:00

Testbericht: Netgear GS108T Managed Gbit-Switch

Da es mit meinem bisherigen “Switch Ersatz” (Linksys WRT54G) hin und wieder Probleme gab und ich den Router eigentlich als Open/FreeWRT Testplattform verwenden wollte, wurde es Zeit für einen adäquaten Ersatz. Natürlich GBit. Am besten “managed”. Leider waren die Geräte mit Web-Interface bis vor kurzem nicht bezahlbar, und in Ausführungen mit wenigen Ports (< 16) auch gar nicht verfügbar.

Jetzt hat Netgear aber vor kurzem einen sog. “Smart Switch” herausgebracht. Den GS108T. Mit seinem halbwegs moderaten Preis war mir sofort klar, dass das etwas für mich sein könnte.

Nachdem ich einige Zeit darauf warten musste bis ich einen Shop gefunden habe der diesen Switch auf Lager hat, ist mein Paket von Avitos jetzt endlich da.

Der Switch macht einen guten Eindruck, wobei natürlich nur die inneren Werte wirklich zählen. Die ersten Durchsatzmessungen stimmen mich sehr zuversichtlich. Demnächst werde ich die VLAN und QoS Features gründlich testen und dann nochmal darauf zurück kommen.

Netgear GS108T - Auspacken (I) Das Paket ist ziemlich schwer, ca. 2KG. Netgear GS108T - Auspacken (II) Der Pakungsinhalt bietet relativ wenige Überraschungen, das Übliche halt … Netgear GS108T - Netzteile Aber hey, was ist das: Zwei Netzteile? Hat der Switch etwa eine redundate Stromversorgung? Nein, da ist nur ein Anschluss für ein Netzteil, aber das zweite Netzteil hat auch einen UK-Stecker. Der erste Gedanke war so etwa “WTF?”, aber da war es wohl billiger eine EU-Version zu machen anstatt zwei getrennte Modellreihen zu produzieren.

Netgear GS108T - Webinterface

Der Funktionsumfang ist für einen Switch der SOHO/Consumer-Klasse sowieso extrem reichhaltig und geht von Gbit, über VLAN, QoS bis hin zu Port-based RADIUS Authentifizierung.

Die Features im einzelnen:

  • Webinterface
  • IP/Subnetz/Mac ACL
  • RADIUS Client für Port-basierte Authentification
  • NTP-Client
  • LLDP
  • Logging (Local Ram, Flash oder Remote via Syslog)
  • Konfiguration pro Port möglich, inkl. Priorität und Geschwindigkeit
  • QoS
  • VLANs
  • Link Aggregation
  • Monitor/Sniffer Unterstützung (Konfigurierbarer Monitor Port)
  • Jumbo Frames
  • Rate Limiting
  • Storm Control
  • RSTP (Rapid-Spanning-Tree-Protocol)
  • SNMP
Im Moment bin ich dabei die SNMP-Unterstützung unter die Lupe zu nehmen und zur Überwachung des Switches zu nutzen.

20 Nov 2007, 07:00

Testbericht: Intel® Pro/1000 PT Desktop Adapter

Nachdem meine alte HP-Server-Netzwerkkarte mit Intel Pro/100 Chipsatz lange Jahre ihr Dienste geleistet hat - die Karte war schon “alt” als ich sie überhaupt erst in meinen PC eingebaut habe, sie stammt aus einem ausgemusterten HP-Server - ist sie inzwischen in die Jahre gekommen. Die Übertragungsrate von 100 MBit ist nicht mehr sonderlich zeitgemäß und wenn ich Enemy Territory spiele hat sie manchmal Aussetzer. Also wird es Zeit für eine neuen Netzwerkkarte. Zwar haben die meisten Mainboards heutzutage eingebaute GBit-NICs aber meine ICPlus IP-1000A wird von Linux nicht (vernünftig) unterstützt. Also habe ich mich auf die Suche nach einer zuverlässigen, Linux-tauglichen und schnellen Netzwerkkarte gemacht. Der einzige wirkliche Kandiat war, nach einem kurzen Auswahlprozess, der Intel Pro/1000 PT NIC.

Was diese Karte zu leisten vermag, möchte ich hier untersuchen.

Die Installation verlief, wie von einem Intel Chipsatz zu erwarten, ohne Probleme. Einfach das Kernel-Modul für die Intel PRO/1000 Serie aktiviert und die Karte war nach einem Neustart einsatzbereit. Ok, es ginge auch ohne Neustart, aber ich wollte den Treiber fest in den Kernel einkompilieren und bei der Gelegenheit gleich noch ein paar unnütze Treiber rausschmeißen.

Eine klitzekleines Problem gab es noch, das verhinderte, dass die Karte sofort nach dem Neustart einsatzbereit war. e1000: eth0: e1000_probe: Intel® PRO/1000 Network Connection net eth2: device_rename: sysfs_create_symlink failed (-17) udev: renamed network interface eth0 to eth2 Aus irgendeinem Grund ist udev der Meinung die Karte nach eth2 umzubennen zu müssen. Naja, schnell /etc/nework/interfaces angepasst und ein ifup eth2 erweckt die Karte zum Leben: e1000: eth2: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX ADDRCONF(NETDEV_UP): eth2: link is not ready ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready eth2: no IPv6 routers present Jetzt wollte ich schnell mal die Geschwindigkeit messen, aber dafür musste erstmal ein geeignetes Bechmark her. Ich bin im c’t Software-Verzeichnis auf IPerf gesoßen, das auch ziemlich unkompliziert zu bedienen ist. Einfach runterladen, entpacken und mit iperf -s (Server) bzw. iperf -c server-ip (Client) aufrufen. Ein “-fg” sorgt dafür, dass die Ausgabe für Gbit optimiert werden.

Client connecting to 192.168.1.9, TCP port 5001

TCP window size: 0.00 GByte (default)

[ 4] local 192.168.1.11 port 55796 connected with 192.168.1.9 port 5001 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 0.59 GBytes 0.51 Gbits/sec [ 5] local 192.168.1.11 port 5001 connected with 192.168.1.9 port 3934 [ ID] Interval Transfer Bandwidth [ 5] 0.0-10.0 sec 0.30 GBytes 0.26 Gbits/sec Die Übertragungsraten sind noch nicht so ganz das was ich mir erhofft hatte, aber möglicherweise lässt sich daran noch was drehen. Ein Problem ist wohl auch, dass auf der einen Seite einen PC mit Linux und auf der anderen ein Notebook mit Windows habe. Vielleicht sollte ich diese Tests zunächst mit einer homogeneren Kombination durchführen.

Weiter Messungen werde ich in kürze nach reichen.

16 Nov 2007, 14:23

PuTTyTray

PuTTy + Transparenz + Standby-Support = PuTTyTray

14 Nov 2007, 08:59

Google AdSense Zeitzone

Wer zu den Nutzern von AdSense gehört, der hat sich sicher schon manchmal gefragt wie die Angaben “Heute”, “Gestern”, etc. zu verstehen sind, da die Werte oftmals nicht zu stimmen scheinen. Die Vermutung liegt nahe, dass AdSense nicht die lokale Zeitzone des Benutzers verwendet sondern eher eine der US-Zeitzonen.

Auf einem Blog habe ich einen Hinweis dazu gefunden, die von AdSense verwendete Zeitzone liegt wohl -7 Stunden, relativ zur MEZ.

Das würde sich auch mit meinen Vermutungen und Beobachtungen decken.

Update: Ich habe nochmal nachgerechtnet und halte eher -8 bis -9 Stunden für wahrscheinlich, anyway das ist etwa die Größenordnung mit der man rechnen muss. Wäre aber schon nett wenn Google anzeigen würde in welcher Zeitzone sich die “Google-Master-Clock” befinden.

13 Nov 2007, 07:00

Tipps für den Domain Umzug

In der Regel wird man versuchen einen Wechsel der Domain bei einer erfolgreichen Seite zu vermeiden, aber manchmal hat man keine andere Wahl oder es gibt gute Gründe die für einen Wechsel der Domain sprechen. Die nächste Frage ist dann natürlich wie man den Umzug gestaltet ohne Besucher oder Platzierungen in den Suchmaschinen zu riskieren.

Es gibt dazu zwar einige Informationen im Netz, aber ich möchte hier meine ganz persönlichen Erfahrungen dazu schildern.

  • Zunächst sollte man sich natürlich die Domain seiner Wahl registrieren. Am besten unabhängig vom Hosting-Provider bei einem externen Dienstleister.
  • Danach sollte man die neuen Domain zu seinem Portofolio bei den Google Webmaster Tools hinzufügen, authentifizieren sowie eine Sitemap erstellen und dort bekannt machen. Dann sollte man noch die “Bevorzugte Domain” angeben um Inkonsistenzen in den SERPs und “Duplicate Content” zu vermeiden.
  • Jetzt ist es an der Zeit die eigentlichen Inhalte umzuziehen und ausgiebig zu testen. Dies variiert je nach Front- und Backend. Ach ja, robots.txt nicht vergessen!
  • Sofern man Google Analytics verwendet, sollte man dieses auch anpassen. D.h. dort die Domain und den Namen des Profils ändern.
  • Möglicherweise muss man die neue Domain noch für AdSense authentifizieren.
  • Sobald diese Vorarbeiten erledigt sind kann man auf der alten Seite eine permanente Weiterleitung auf die neue einrichten. Dazu verwendet man am besten URL-Rewriting, bei Apache Webservern mit mod_rewrite, und den unten aufgeführten Code.
  • Nachdem nun auch die Umleitung funktioniert darf man sich jetzt daran machen möglichst viele der existierenden Backlinks umzubiegen bzw. neu zu erstellen.
  • Wenn man FeedBurner verwendet sollte man diesen ebenfalls anpassen.
  • Und zum Schluss das wichtigste: Geduld! Bis der Umzug bei allen Suchmaschinen angekommen ist vergehen in der Regel 1-3 Monate, bis der PageRank aktualisiert wird sogar bis zu 6 Monate. Aber keine Sorge, intern aktualisiert Google den PageRank deutlich häufiger. Nur sichtbar wird er eben erst nach diese Zeit. Wenn man auf seiner Seite Paid-Links schaltet könnte das ein Problem sein, aber nach den jüngsten PageRank Kapriolen dürfte das kaum noch ein Thema mehr sein.
Wie richte ich (mit Apache mod_rewrite) eine permanente (301) HTTP-Weiterleitung für eine ganze Domain ein?

Dazu legt man einfach im Wurzelverzeichnis der “alten” Domain eine Datei mit dem Namen “.htaccess” und dem folgenden Inhalt an.

RewriteEngine on RewriteCond %{HTTP_HOST} ^www.altedomain.tld$ [NC] RewriteRule ^(.*) http://www.neuedomain.tld/$1 [L,R=301]

Sollte der Server dann beim aufrufen der alten Domain ein Fehlermeldung bringen (Internal Server Error, o.ä.) dann ist Mod_Rewrite nicht aktiviert und man muss sich an seinen Hoster wenden. Im Erfolgsfall sollte man direkt zur neuen Domain geleitet werden.

Update I (14.11.07): Nach nur 24h hat Google fast alle Seiten unter der neuen Domain im Index.

Update II (20.11.07): So langsam hat die neue Domain die alte aus der SERPs verdrängt und es zeichnet sich ein deutlicher Knick in den Besucherzahlen ab. Ich mache jedoch den Domainumzug und den damit verbundenen PageRank-Verlust dafür verantwortlich und bin mir sicher, dass sich das in den nächste Tagen oder Wochen wieder normalisieren wird.

blog-domain-umzug-analytics.jpg

Update (17.04.08): Googles Webmaster Blog hat noch weitergehende Informationen.

12 Nov 2007, 15:07

Apache: Server-Signatur verstecken

Obwohl ich kein Fan von “Security-by-Obscurity” bin muss ich trotzdem nicht alle Versionsinformationen meines Webservers und der geladenen Module für alle Welt sichtbar machen.

Um die Server Signatur zu manipulieren gibt es hauptsächlich zwei Direktiven die beide im gloablen Kontext gesetzt werden sollten:

  • ServerSignature On|Off|EMail - Damit lässt sich die Signatur komplett abschalten.
  • ServerTokens Minimal|ProductOnly|OS|Full - Ich habe hier “ProductOnly” gewählt, damit zumindest noch angezeigt wird, dass es sich um einen Apache handelt, aber die Version verdeckt wird.

08 Nov 2007, 10:00

javax.swing.GroupLayout cannot be resolved

Problem: Ein Java Quelltext lässt sich nicht kompilieren, weil die IDE sich über den Fehler “javax.swing.GroupLayout cannot be resolved” beschwert.

Grund: GroupLayout ist erst in Java 6 verfügbar.

Lösung: Java 6 installieren und aktivieren :)

07 Nov 2007, 08:00

Ohloh - das Open-Source Netzwerk

Schon gewusst? Unter ohloh.net gibt es ein Open-Source Netzwerk das umfassende Statistiken zu verschiedenen Open-Source Projekten liefert. So ähnlich wie Freshmeat, nur mehr Web 2.0. Eigentlich ganz nett und recht informativ.

06 Nov 2007, 10:00

LD_LIBRARY_PATH

Wenn ein Programm seine Bibliotheken nicht findet (*.so) gibt es im Prinzip zwei Möglichkeiten das zu beheben:

  • In der /etc/ld.conf den Pfad zur Bibliothek eintragen und ldconfig ausführen
  • Das Programm mit LD_LIBRARY_PATH= /path/to/library/: ${LD_LIBRARY_PATH} /path/to/executable starten

05 Nov 2007, 09:00

Synergy

Mit der Hilfe von Synergy ist es möglich mehere PCs, von denen jeder einen eigenen Monitor hat, mit nur einem Set von Tastatur und Maus zu steuern.

Das klingt jetzt nicht so wahnsinnig spannend aber der Effekt ist absolut genial.

Ich benutze für gewöhnlich mein Notebook (Windows XP) und meinen PC (Debian GNU/Linux) parallel, d.h. ich verwenden für die meisten Arbeiten meinen PC aber einige Applikationen, die nur unter Windows laufen, führe ich auf dem Notebook aus. Bis jetzt musste ich immer zwischen zwei Maus-/Tastatur-Paaren wechseln, mit Synergy habe ich nur noch eine Maus und eine Tastatur die per Netzwerk auf das andere System “verlängert” werden. Und das ganze sogar über Betriebssystemgrenzen hinweg, ohne irgendwelche Probleme. Die Konfiguration ist absolut simpel und macht (bei mir) keinerlei Probleme.

Ich bin beeindruckt … :)

Update: Hier noch ein paar Bilder um das ganze ein wenig zu illustrieren.

Synergy 01

Synergy 02

05 Nov 2007, 08:00

Vim als Entwicklungsumgebung

Wie kann man Vim als Entwicklungsumgebung nutzen? Lesen.

04 Nov 2007, 15:23

KDE4 und Debian

So langsam nähert sich KDE4.0 der Fertigstellung und es gibt anscheinend auch schon eine LiveCD [torrent] auf Debian Basis um das ganze mal auszuprobieren. Zwar gibt es auch pessimistische Stimmen, aber ich hoffe, dass KDE 4.0, oder besser noch 4.1, es in das nächste Stable Release schafft.

03 Nov 2007, 07:30

SSH-Login mit PublicKeys

Im Normalfall wird man sich an einem SSH-Server mit seinem Benutzernamen und Passwort authentifizieren. Wenn man aber das Passwort nicht immer eintippen möchte, z.B. weil man CVS über SSH benutzt, oder sich oft anmelden muss, dann kann es Sinn machen die Public-Key Anmeldung einzurichten.

Dazu benötigt man zuerst ein Public/Private-Key Pair und, unter Windows, PuTTy mit PuTTy Agent und PuTTyGen.

Linux

Unter Linux ist das erzeugen das Schlüsselpaares ganz einfach:

ssh-keygen -t rsa

Dann liegt der öffentliche Schlüssel unter ~/.ssh/id_rsa.pub. Diese kopiert man dann mit scp auf die Maschine an der man sich ohne Passwort anmelden möchte:

scp ~/.ssh/id_rsa.pub user@host.domain.tld:~/id_rsa.pub

Nun muss man sich noch einmal mit seinem Passwort an diese Maschine anmelden und dann dort folgenden Befehl ausführen:

cat id_rsa.pub >> ~/.ssh/authorized_keys

Fertig. Aber jetzt sollte man sich auch ohne sein Passwort eingeben zu müssen an dem Rechner anmelden können.

Windows

Unter Windows ist das Vorgehen ein kleines bischen komplizierter, aber nicht minder effektiv.

Zunächst einmal muss man sich PuTTy besorgen. Das komplette Archiv mit allen Hilfsprogrammen und dieses irgendwo entpacken.

Danach geht es wie folgt weiter:

  1. PuttyGen” starten.PuTTyGen Howto
  2. Im Bereich “Parameters” “SSH-2 RSA” auswählen.
  3. Im Bereich “Actions” auf “Generate” klicken.
  4. Die Maus über den leeren Bereich bewegen bis der Balken voll ist. Damit sammelt der Schlüsselgenerator zusätzliche Zufallsdaten.
  5. Auf Wunsch noch einen Kommentar zu dem Schlüssel in das Feld “Key comment” eintragen.
  6. Unter “Key passphrase” und “Confirm passphrase” ein Passwort eintragen mit dem der Schlüssel geschützt wird. Dieses muss beim ersten Zugriff auf den Schlüssel eingegeben werden.
  7. Mit “Save private Key” den privaten Schüssel abspeichern, und an einem sicher Ort aufbewahren. Wichtig ist es, ihn nie weiterzugeben!
  8. Mit “Save public Key” den öffentlischen Schlüssel an einem beliebigen Ort speichern. Dieses Schlüssel kann man an jeden weitergeben oder sogar auf die eigene Webseite stellen.
  9. Bevor man PuTTyGen beendet den öffentlichen Schlüssel aus dem Textfeld kopieren (Zwischenablage).
  10. Per PuTTy ganz normal auf dem entfernten Rechner einloggen und die Datei ~/.ssh/authorized_keys bearbeiten. Dort einfach in eine neue Zeile den öffentlichen Schlüssel aus der Zwischenablage einfügen. Abspeichern und wieder vom entfernten System abmelden.
  11. Jetzt muss man den Schüssel noch in den PuTTy Agent importieren. Dazu startet man “Pageant” und klickt doppelt auf das Icon mit dem Hut in der Kommandozeile. Pageant Icon
  12. Dort klickt man auf “Add Key” und wählt den eben gespeicherten Private-Key aus. Nachdem man noch einmal das Passwort des Private-Key eingegeben hat sollte man sich ohne weiter Passwort-Eingaben zum Server verbinden können.
Pageant Add Key

01 Nov 2007, 07:30

RAID Levels

Was bedeutet eigentlich RAID?

Ursprünglich wurde RAID als “Redundant Array on Inexpensive Disks” eingeführt, wobei sich das “Inexpensive” nicht auf die niedere Qualität der einzelnen Platten bezog sondern einfach auf die Tatsache, dass sich mit einem Array von kleineren Platten wesentlich einfacher und günstiger die gewünschte Kapazität erreichen lies als mit einer einzelnen, sehr teuren, Platte.

Später wurde der Begriff in “Redundant Array of Independent Disks” geändert, da sich die Hersteller hiervon Marketingvorteile erhofften.

Wenn man über RAID redet geht man meistens davon aus, dass die Daten gegen den Ausfall einzelner Platten abgesichert sind. Man sollte allerdings nicht vergessen, dass gar nicht jedes RAID-Level zusätzliche Datensicherheit bietet. Um das näher zu Erläutern werde ich auf die einzelnen Level eingehen.

Warum eigentlich RAID?

Jedes Gerät hat eine MTTF, bzw. für jedes Gerät kann eine MTTF, Mean-Time-to-Failure, also die durchschnittliche Zeit bis zu einem Ausfall, ausrechnen. Dieser Wert ist für ein Gerät meistens unveränderlich vorgegeben und nur bedingt maximierbar. Da so ein “Failure” im Normalfall mit dem Verlust der Daten einhergeht versucht man mit eine RAID diese MTTF, bezogen auf das gesamt System, stark zu erhöhen. Dies wird in der Regel realisiert indem man die Redundanz, also die Anzahl der Datenträger auf denen eine “Information” gespeichert ist, erhöht.

Ein weiterer Aspekt ist die Performance, sei es jetzt Read-/Write-Throughput oder Zugriffszeit. Diese ist ebenfalls pro Gerät vorgegeben und auch nur schwer veränderbar (z.B. durch hohe Investitionen). Um den Durchsatz zu erhöhen kann man die Daten auf mehrere Platten verteilen.

RAID 0 - Stripping

Hier werden die Daten über n identische Datenträger verteilt. Je nach Implementierung wird ja 1/n Sektoren auf jede Platte gestiegen. Damit lässt sich die maximale Kapazität aus den Platten rausholen und bei einem guten Controller auch Transferraten von bis zum n-fachen der einzel Platte erreicht werden. Allerdings steigt auch die Ausfallrate, oder MTTDL (Mean Time to Data Loss) von MTTF auf MTTF/n an. Ein kleines Beispiel: Wenn eine einzelne Platte eine MTTF von 5 Jahren hat und ich 10 Platten im System habe ist meine MTTDL nur noch 182.5 Tage oder knapp ein halbes Jahr!

RAID 1 - Mirroring

Dies ist mit die sicherste und einfachste Betriebsart. Es werden einfach alle Daten auf n Platten geschrieben. Damit liegt jeder Sektor n-mal vor und die MTTDL ist etwa MTTFn. Dies wirkt sich sehr positiv auf die Lese-Tranferrate aus die bis zu n(Leserate der Einzelplatte) beträgt, die Schreibrate bleibt allerdings auf die Leserate einer Einzelplatte beschränkt. Intelligente RAID 1 Implementierungen schreiben die Verwaltungsdaten für das RAID an des Ende des Datenträgers, so dass die Daten im Falle eines Falles auch ohne ein RAID fähiges System gelesen werden können. In so einem Fall sollte man natürlich vermeiden auf die Daten schreiben zuzugreifen wenn man es nicht vorher gestet hat, da dies undefinierbare Folgen haben kann.

Dieses Setup wird häufig in Szenarien verwendet wo Verfügbarkeit und ein garantierter Durchsatz wichtiger sind als Effizienz (in Bezug auf den benötigten Speicherplatz).

RAID 2 - ECC, wie bei RAM

In dieser Betriebsart werden die Paritätsdaten wie bei ECC-gesichertem Hauptspeicher gebildet und auf einige zusätzlichen Platten abgelegt. Dadurch bedingt werden bei einer kleinen Anzahl von Platten sehr viele Paritätsplatten benötigt und das System erst ab einer großen Anzahl von Platten effizient. Aus diesem Grund war RAID 2 fast nur bei Großrechnern zu finden und ist heute quasi ohne Bedeutung.

RAID 3 - Bit-interleaved Parity

Bei diesem Verfahren werden die Nutzdaten über alle Platten gleichmäßig verteilt und die Paritätsdaten alle auf eine zusätzliche Platte geschrieben. Dies bringt zwei wichtige Nachteile dieses System. Zum einen muss für jeden Schreibzugriff auf alle Platten, Daten und Parity, zugegriffen werden und für jeden Lesezugriff auf alle Datenplatten. Damit lässt sich zwar ein hoher Durchsatz erzielen, aber für Umgebungen mit vielen Schreib-/Lesezugriffen ist dieses Level weniger geeignet. Die Parity-Disk wird in jedem Fall zum Flaschenhals.

RAID 4 - Block-interleaved Parity

Dieses Level entspricht dem leicht abgewandelten Level 3. Hier werden nicht die Sektoren linear auf die Platten verteilt, sondern in etwas größere Blöcke zusammen gefasst. Dadurch ist es bei einem Schreibzugriff nicht mehr unbedingt notwendig auf jede Platte zuzugreifen. Ansonsten gilt hier das für Level 3 gesagte auch.

RAID 5 - Block-interleaved Distributed Parity

Dies ist die wohl am weitesten Verbreitete RAID Betriebsart da sie den besten Kompromiss aus Effizienz, Platz, Kosten und Sicherheit bietet. Hierbei werden alle Daten, also Nutzdaten und Parity-Daten, linear über alle verfügbaren Datenträger verteilt. Dieses Konzept erlaubt den Ausfall einer einzelnen Platte ohne beeinträchtigung des Gesamtverbundes. Sobald allerdings weiter Platten ausfallen sind alle Daten sofort verloren, da eine Wiederherstellug nicht mehr möglich ist wenn mehr als eine Platte verloren geht. Wer mehr Sicherheit benötigt muss sich RAID 6 anschauen.

Das Konzept von RAID 5 beseitigt den Flaschenhals von Level 3 und 4, da es keine einzelne Platte mehr für die Paritätsdaten gibt.

Für die Paritätsdaten wird eine zusätzliche Platte benötigt. Die Effizienz steigt also mit der Anzahl der Platten im Array deutlich an. Wenn 5 Platten benutzt werden lieft die effektive Kapazität bei 80%, in einem System mit 36 Platte liegt die brutto Kapazität hingeben schon bei 97,2%. Natürlich muss man beachten, dass durch die rechenintensiven Paritätsberechnungen die Performance leiden kann und unbedingt ein leistungsfähiger RAID-Controller benötigt wird.

RAID 6 - Block-interleaved Distributed Parity

Dieses Level ist die logische weiterentwicklung von RAID 5. Hier wird die Datensicherheit mit zwei, versetzten Partitätscodes erhöht, so dass bis zu zwei Platten gleichzeitig ausfallen können. Das Problem hierbei ist hauptsächlich, dass die notwendige Rechenleistung durch die doppelten Paritätscodes stark ansteigt.

Beiden Levels, also 5 & 6, ist, dass sie eher ungeeignet für viele, kleine, Schreibvorgänge sind, da hier ständig auf alle Platten zugegriffen werden muss um die Paritätsdaten zu aktualisieren.

RAID 10 - Hierachical RAID (RAID 0 über RAID 1 Subarrays)

Wie bei allen “zweistelligen” RAID Leveln handelt es sich hierbei um eine Kombination von zwei Subarrays. Die Notation RAID XY steht im allgemeinen dafür, dass zunächst ein RAID X über die einzelnen Subsets von Platten gebildet wird und dann über die gesamten Subarrys ein großen Array mit Level Y. Allerdings muss man ein wenig aufpassen, da einige Hersteller die Notation einfach umdrehen und ein RAID XY mit RAID YX bezeichnen.

Angenommen man will ein RAID 10 über 10 Platten einrichten. Dann gibt es die Möglichkeit zunächst einzelne RAID 1 Arrays über je zwei (oder mehr) Platten zu erzeugen und dann ein RAID 0 Array über die Subarrays oder aber zwei RAID 0 Arrays über jeweils 5 Platten und danach ein RAID 1 Array über alles.

Es ist ganz wichtig, dass man sich klarmacht, dass es ein Unterschied ist ob man zunächst ein RAID 1 und dann ein RAID 0 anleget oder anders herum. Im einen Fall können bis zu fünf Platten ausfallen, im zweiten (bei RAID 0+1) maximal 2!

Warum?

In den zwei Subarrays (mit Level 0) des RAID 0+1 darf keine Platte ausfallen oder das ganze Subarray ist verloren. Sobald dann eine Platte aus dem anderen Subarray ausfällt ist das ganze System down. Natürlich reichen im RAID 10 auch schon zwei Plattenausfälle um das ganze System lahm zu legen, aber hier ist es deutlich unwahrscheinlicher, da die Platten in “kleine” RAID 1 Arrays zusammengefasst werden und auch beim Ausfall der fünften fehlerhaften Platte die Daten noch vorhanden sind - solange nicht zwei im gleichen Subarray ausfallen.

RAID 50 - Hierachical RAID (RAID 0 über RAID 5 Subarrays)

Hier werden zunächst zwei RAID 5 über jeweils n Platten angelegt und diese dann zu einem RAID 0 zusammengefasst. Eine eher teure und aufwendige Konstruktion.

RAID 0+5 - Hierachical RAID (RAID 5 über RAID 0 Subarrays)

Hier werden zunächst jeweils zwei (oder mehr) Platten zu RAID 0 Subarrays zusammen gefasst und dann über diese Subarrays ein großes RAID 5 erstellt.

RAID 0+1 - Hierachical RAID (RAID 1 über RAID 0 Subarrays)

Hier werden über die hälfte der Platten RAID 0 Arrays angelegt und diese Subarrays dann zu einem RAID 1 zusammengefasst.

Siehe auch RAID 10.

JBOD - Just a bunch of Disks

Obwohl eigentlich kein RAID, wird JBOD, gerade von moderne, günstigen, RAID-Controllern in einem Atemzug mit RAID genannt. Eigentlich ist es ähnlich zu RAID 0. Doch anstelle die einzelnen Blöcke gleichmäßig auf die Platten zu verteilen werden die Platten einfach aneinander gehängt. JBOD ist dann von vorteil wenn man viele unterschiedliche Platten hat und einfach eine große Menge von zusammenhängenden Speicher ohnd jede Verfügbarkeitsgarantie benötigt. Allerdings existieren in Zeiten von LVM & Co. hier auch noch (bessere) Möglichkeiten.

Ende

Ich hoffe hiermit einen Überblick über die verfügbaren RAID Levels gegeben zu haben.

31 Oct 2007, 10:30

OTRS 2 unter Debian

Das Open Ticket Request System, kurz OTRS, gibt es freundlicherweise auch als Debian Paket. Sogar im offiziellen Archiv. Die Einrichtung geht auch weitgehend automatisch, wenn man sich an die Anleitung des Maintainers hällt muss man lediglich ein paar Fragen von debconf beantworten und schon läuft OTRS. Die ganze Sache hat leider einen kleinen Haken: Sobald man Änderungen an der Kernel/Config.pm vornimmt läuft OTRS nicht mehr.

Ich empfehle statt des Befehls “aptitude install otrs2 –with-recommends”, so wie es in der Anleitung steht, zunächst mit “aptitude install mysql-server” einen MySQL-Server zu installieren und dann anstelle von PostgreSQL MySQL zu verwenden. Warum? Ganz einfach, weil ich wenig Erfahrung mit PostgreSQL und relativ viel mit MySQL habe ;)

Nach der Installation von MySQL kann man dann wie empfohlen fortfahren, nur dass man bei den Debconf Dialogen halt MySQL anstelle von PostgreSQL auswählen muss. Bei mir war es auch so, dass die folgenden Dialog etwas inkonsistent waren und die Installation nur fehlerfrei durchgelaufen ist wenn es einen MySQL Benutzer root gab der sich von localhost ohne Passwort anmelden konnte. Ob das auf jedem System so ist kann ich nicht sagen.

Sobald die geführte Installation beendet ist sollte man die Datei /etc/otrs/Kernel/Config.pm bearbeiten und bei den Datenbank-Einstellungen einen gültigen Benutzer mit Passwort eintragen der auf die Tabelle otrs2 zugreifen kann. Möglicherweise muss dieser Benutzer zuvor über PhpMyAdmin, o.ä., angelegt werden.

Danach sollten sich auch die weitern Einstellungen, wie z.B. Sendmail oder LDAP, in der Config.pm vornehmen lassen.

Mein erster Eindruck von OTRS ist ein sehr komplexes, aber auch etwas fragiles System das durchaus bessere Fehermeldungen und eine sauberere Konfigurationsstruktur gebrauchen könnte. Möglicherweise wird mein Eindruck durch die Tatsache, dass ich ein Debian-Paket verwende, etwas verfälscht aber so ganz einfach ist OTRS trotzdem nicht - sollte es aber wohl auch nie sein. Wer installiert sich schon zuhause einen Request-Tracker.

30 Oct 2007, 07:30

PHP/MySQL: Client does not support authentication protocol

Problem: PHP/MySQL kann sich nicht zu einem MySQL-Server verbinden und bricht mit der Fehlermeldung Client does not support authentication protocol ab.

Das passiert wenn die Version der MySQL Laufzeit Bibliothek inkompatibel mit der Version des MySQL-Servers ist, da irgendwann das Format der Passworte geändert wurde.

Wenn man sich dennoch mit einem “alten” Client zum Server verbinden will kann man für diese Benutzer das Passwort auf das alte Format zurücksetzen indem man folgenden Befehl ausführt SET PASSWORD FOR ‘some_user’@‘some_host’ = OLD_PASSWORD(‘newpwd’);.

Weitere Informationen gibts in der MySQL-Dokumentation.

29 Oct 2007, 08:30

Testbericht: Das Keyboard II

Nach langem, sehr langem zögern, habe ich mir Das Keyboard gekauft. Genauer: Das Keyboard II. Ursprünglich kommt es aus den USA und wird dort von DasKeyboard.com vertrieben. Hier in Europa ist es über getDigital erhälltlich.

Die Features lesen sich ziemlich elitär:

  • mechanische gold kontakt Schalter
  • schwarz
  • unbeschriftete Tasten um bis zu 100% schneller zu schreiben
  • hervorgehobene F und J Tasten für die Ausgangsposition beim 10-Finger-schreiben
  • kompatibel mit Linux, Windows und MacOS
  • nach dem Vorbild des IBM M Keyboards gestalltet
  • über 50.000.000 Anschläge pro Taste möglich, das entspricht einer MTBF von > 80.000 Stunden

Elitär ist allerdings auch der Preis: 89,00€ bei getDigital. In Zeiten wo man (gute) Keyboards für unter 10€ bekommt ist das ein verdammt hoher Preis. Dafür muss es erstmal zeigen was man dafür bekommt. Nach einem ausführlichen Test werde ich nochmal darauf zurückkommen, aber der erste Eindruck ist schonmal ziemlich gut :)

DK2 - Unpacking

Auspacken …

DK2 - Supermagnete

Eine Überraschung :)

DK2 - Auspacken

Mit Verpackung …

DK2 - Im Einsatz

… und im Einsatz.

DK2 - TFT-Schaltzeiten

Mir sind die “lahmen” Schaltzeiten des TFT noch nie so aufgefallen.

DK2

Update: Wer sich mit dem Preis des Keyboards so gar nicht anfreunden kann, für den ist vielleicht von Interesse, dass es auf dem Cherry G80-3000 basiert, was möglicherweise auch günstiger zu bekommen ist.

Update II: Achtung, der WAF ist nicht allzu hoch, da die Geräuschemission der Tastatur durchaus störend auf Nicht-Geeks wirken kann ;)

28 Oct 2007, 07:30

Quellcode Listings in LaTeX

Wer Quellcode in LaTeX Dokumente einbetten möchte, der kann entweder einen Verbatim Block benutzen oder direkt ein Paket, welches dafür gedacht ist Quellcode anzuzeigen: Listings.

Um dieses Paket zu nutzen muss es zunächst im Header  mit folgendem Befehl eingebunden werden: %% listings \usepackage{listings} \lstset{numbers=left, numberstyle=\tiny, numbersep=5pt} \lstset{language=Perl} %% end listings

Später im Dokument hat man dann verschiedene Möglichkeiten die Funktionalität zu nutzen.

  • Entweder für einzelne Zeilen mit \lstinline|print “Hallo Welt!”|
  • Oder als eigener Block, ähnlich verbatim, mit \begin{lstlisting}caption=Diff\end{lstlisting}
  • Alternativ kann man auch eine externe Datei einbetten: \lstinputlisting[frame=single,label=Codebeispiel,caption=Ein Codebeispiel]{code.java}
Die Vorteile gegenüber Verbatim oder anderen Lösungen sind natürlich die Zeilnnummern, der optimierte Font und die teilw. vorhandene Syntax Unterstützung.

Fazit: Hilfreich :)

25 Oct 2007, 07:30

ROOT unter Debian kompilieren

Wer Probleme hat ROOT unter Debian zu kompilieren, dem empfehle ich folgendes:

make distclean && ./configure linux –enable-soversion –disable-asimage –disable-xrootd make -j8

24 Oct 2007, 15:44

Linux 2.6.24 bringt jede Menge Änderungen

Die kommende Version des Linux Kernels, 2.6.24, bringt jede Menge Änderungen mit sich. Allein das Changelog für das erste Release-Candidate ist 4.0 MB (!!!) groß, der entsprechende Patch “wiegt” ca. 9 MB.

Linus selbst schreibt dazu folgendes:

The patch is big. Really big. You just won’t believe how vastly hugely mindbogglingly big it is. I mean you may think it’s a long way down the road to the chemist, but that’s just peanuts to how big the patch from 2.6.23 is.

But it’s all good.

24 Oct 2007, 07:30

Was ist ein defunct oder: Zombies sind schon tot

Wer schon immer eine eingängige Erklärung für <defunct> Prozesse unter Unix gesucht hat sollte sich mal diese Seite der RBG an der Uni Bielefeld anschauen. Sehr schön und anschaulich wird es dort erklärt.

22 Oct 2007, 07:30

Komplexe Datenstrukturen in PHP?

Nachdem ich mir Gedanken über eine Portierung des Spell Checkers von Java nach PHP gemacht habe, ist mir aufgefallen, dass es scheinbar gar keine komplexen Datenstrukturen in PHP gibt.

Natürlich kann man sich das alles selbst bauen, aber eine ordentliche Implementierung von Set, List, Tree & Co. wie in Java scheint es in PHP nicht zu geben.

Das Problem bei der PHP Umsetzung ist im Moment, dass ich ja keine ständig laufende Application sondern einzelne Request habe und daher nicht jedesmal den langwierigen Trainingsprozess durchlaufen kann. Als Alterantive scheint mir eine SQL-Datenbank geeignet, aber bevor das so funktioniert wie ich es mir vorstelle muss ich noch einen Weg finden die Daten dort effektiv abzulegen und aufzufinden. 90.000 SQL-Abfragen pro Suchanfrage sind einfach noch ein bischen zu viel ;)

21 Oct 2007, 07:30

P2P Wiki in Java

Unter dem Namen jP2PWiki habe ich eine Beispielimplementierung eines P2P Wikis in Java veröffentlicht.

Das ganze ist nicht als stabile Software sondern eher als Proof-of-Concept anzusehen, aber möglicherweise hat der eine oder andere Interesse an dieser Thematik.

Alle weiteren Details finden sich auf der Projektseite.

20 Oct 2007, 08:00

No Spam!

Gestern bin ich durch eine Anzeige auf das Buch “No Spam! Besser vorbeugen als heilen” von Tobias Eggendorfer aufmerksam geworden.

In der Anzeige wurden unter andem die folgenden Punkt angeführt:

  • Woher haben Spammer die Adressen?
  • Grundlegende Vorsichtsmaßnahmen
  • eMail Adressen verstecken
  • Harvester blockieren
  • Absichern von Mailinglisten und Newslettern
Wenn ich das Inhaltsverzeichnis so lese, fage ich mich ernsthaft warum man dieses Thema auf ca. 160 Seiten aufblähen muss, und warum man dazu ein ganzes Buch verfasst. Die angesprochenen Punkt lassen sich eigentlich in ein paar Zeilen zusammenfassen, und genau das werde ich hier versuchen.

Was ist Spam?

Der Begriff Spam stammt aus einem Monty Python Sketch und ist die Umgangssprachliche Bezichnung für UCE/UCB was für “Unsolicited Commercial E-mail” bzw. “Unsolicited Commercial Bulk E-mail” steht. Gemeint sind damit unerwünschte Nachrichten die in großem Umfang an eine Vielzahl von Benutzern verschickt wird. Ein weiteres Merkmal von Spam ist, dass in der Regel keine (bewusste) Anmeldung/Einwilligung zum Empfang desselben erfolgte.

Woher haben Spammer die Adressen?

Wer eine möglichst große Anzahl an Personen im Internet erreichen will, kommt über kurz oder lang vielleicht auf die blöde Idee einfach Massenhaft Mails mit Werbung zu verschicken. Doch woher bekommt man die ganzen Adressen? Dafür gibt es ein paar Möglichkeiten. Der naivste Ansatz ist die Brute-Force Methode, d.h. einfach einen Mailserver kontaktieren und alle möglichen Kombinationen von zulässigen Zeichen als Emfänger auszuprobieren. Dies ist natürlich sehr Zeit- und Resourcen intensiv und führt wahrscheinlich bei den meisten Mailservern dazu, dass der sendende Host komplett ausgesperrt wird.

Ein besserer Ansatz, für den Spammer, ist es im Internet nach echten Adressen zu suchen. Dazu werden, ähnlich wie bei Suchmaschinen, sogenannte Spider bzw. Harvester eingesetzt, die von einer Seite aus starten und dann jedem ausgehnden Link folgen und alle Mail-Adressen, erkennbar an dem “mailto:” Prefix, in einer Datenbank speichern. Hier ist auch gleich der erste Ansatz den Spammern die Tour zu vermiesen: Die eigenen eMails verschleiern. Dazu gibt es mehrere Möglichkeiten, aber dazu später mehr.

Grundlegende Vorsichtsmaßnahmen

Hier lautet die oberste Devise: Datensparsamkeit. Man sollte generell möglichst sparsam mit seinen Daten, in diesem Fall der Mail-Adresse, umgehen. Wenn man jedoch seine Adresse seine eigene Adresse veröffentlichen muss, der sollte sicher Gedanken darüber machen wie er diese für Harvester unbrauchbar macht.

Dafür gibt es verschiedene Möglichkeiten:

  • eMail Adresse verschleiern/verstecken
  • einmal Adressen, d.h. eine Adresse pro Nutzungszweck
  • ablaufende Adressen
Auf die einzelnen Punkte gehe ich gleich nochmal ein.

eMail Adresse verstecken

Wenn man seine Adresse für Menschen zugänglich machen will, oder muss, Stichwort Impressumspflicht, dann sollte man diese entweder durch Ersetzungen unkenntlich machen, z.B. info@gauner.org wird zu into_AT_gauner_DOT_org, wobei es hier auch die Möglichkeit gibt, dass Spammer diese Ersetzungen einfach enttarnen können. Eine weiter Möglichkeit ist es die ganze Adresse, oder einen Teil davon, durch Grafiken zu ersetzen. Eine dritte Möglichkeit ist den “mailto:info@gauner.org” Teil durch eine Javascript Funktion zu ersetzen die beim anklicken die richtige Adresse erzeugt.

Einmal Adressen

Eine gute Möglichkeit die Menge des eingehenden Spams zu steuern und zu kontrollieren woher der Spam kommt ist das verwenden von sog. einmal Adressen. Hierbei legt man für jeden Verwendungszweck, z.B. Registrierung in einem Forum oder Blog, eine eigene Adresse wie z.B. gauner-blog@xy.host.tld an und leitet diese auf seine eigentliche Adresse weiter. Wenn man jetzt einmal Spam erhällt kann man anhand der Empfänger-Adresse einfach feststellen wie der Spammer an die Adresse gekommen ist. Jetzt kann man jederzeit diese Adresse zu löschen und man wird auf diesem Weg keinen Spam mehr erhalten. Der Nachteil hierbei ist, dass man eine ziemlich große Zahl an Weiterleitungen anlegen muss und einen Provider benötigt der dies unterstützt.

Ablaufende Adressen

Es ist auch möglich einfach Adressen zu verwenden aus denen deutlich wird, wann Sie ablaufen. Diese Adressen haben die form Max.Mustermann-expires20071031@gauner.org. Diese Adresse können dann nach belieben Benutzt werden, da man Sie nach einer gewissen Frist, meist wenige Monate, einfach nicht mehr benutzt. Ein Nachteil ist natürlich, dass man diese Adresse dann ggf. an vielen Stellen ändern muss. Mir persönlich wäre dieser Aufwand einfach zu groß.

Harvester blockieren

Um den Spammern das Leben weiterhin schwer zu machen gibt es sog. Honeypot Ansätze, die versuchen Harvester in eine Falle zu locken. Diese Falle ist eine speziell angelegte Webseite mit jeder Menge interner Verweise und künstlich erzeugten, ungültigen eMail-Adressen, die die Ressourcen der Harvester binden und mit unnützen Adressen überfluten soll.

Absichern von Mailinglisten und Newslettern

Zum absichern von Mailinglisten und Newslettern ist es generell sinnvoll entweder die vorhandenen Funktion zur Entfremdung der Mail-Adressen der Nutzer zu verwenden, oder sich selbst Gedanken über eine solche Funktion zu machen. Der, in meinen Augen, beste Ansatz ist die verwendung von Bilder zur Darstellung der Mail-Adressen, bzw. von Teilen davon. Dabei darf man natürlich nicht vergessen, dass der Inhalt der, im Bild dargestellten Zeichenkette, nicht im alt Tag angegen werden sollte. Dies läuft zwar der Barrierefreiheit entgegen, aber das ist wohl einer der Kompromisse die man im Moment eingehen muss.

Fragen?

Ich hoffe, dass ich hiermit einige vorbeugende Schritte zur Spam Vermeidung ein wenig erläutern konnte und falls noch Fragen auftauchen steht natürlich die Kommentar Funtkion jederzeit offen. Da man auch hier nicht von Spam verschont bleibt ist leider das lösen einer kleinen Rechenaufgabe notwendig. Aber zum Thema Kommentar-Spam werde ich ein anderes mal etwas sagen …

16 Oct 2007, 12:09

Für die Horde! - oder wie ein Imap Proxy dem Webmailer Beine macht ...

Nein, ich beziehe mich mit “Horde” nicht auf die Allianz von WoW oder WC3, sondern auf den Webmailer Horde. Der ist zwar sehr mächtig und komfortabel, aber leider auch ziemlich langsam wenn man eine “normale” IMAP/POP3 Verbindung nutzt - selbst wenn der Webserver auf localhost läuft.

Nun habe ich vor einigen Tagen einen Artikel gelesen in dem empfohlen wird, local den Imapproxy einzusetzen um damit die Geschwindigkeit zu erhöhen. Der Vorteil des Imapproxy ist, dass dieser die Verbindungen cacht und es somit den Umstand ausgleicht, dass der Webmailer für nahezu jede Aktion eine neue IMAP-Verbindung aufgauen muss.

Die Konfiguration ist unter Debian wirklich simpel:

aptitude install imapproxy

Und dann im debconf einfach den lokalen Server eingeben. Danach sollte man noch sichergehen, dass der Proxy nur auf localhost lauscht und, dass sich der Port nicht mit dem des “echten” IMAP-Servers überschneidet (siehe /etc/imapproxy.conf).

Fertig.

15 Oct 2007, 22:40

ThinkPad is back

Seit heute morgen ist mein ThinkPad aus der Reperatur zurück.

Das war leider schon das zweite mal, dass mein Notebook nach Heppenheim musste.

Beim ersten Mal war der USB Controller gestorben, diesmal war die Grafikkarte kaputt, was lauter bunte Streifen auf dem Display zur Folge hatte.

Ich hoffe, dass es nicht nochmal seinen Geist aufgibt, denn die Garantiezeit ist bald vorbei und so eine Reparatur kann teuer werden …

11 Oct 2007, 10:11

MySQL: Zufälligen Eintrag ausgeben

Kurztipp: Zufälligen Eintrag aus einer MySQL-Tabelle ausgeben

Möchte man mit MySQL einen zufälligen Eintrag aus einer Tabelle ausgeben, so hilft das folgende Statement: “ ORDER BY RAND(NOW()) LIMIT 1” am Ende der Query.

10 Oct 2007, 08:58

Linux 2.6.23 und der NVIDIA Closed-Source Treiber

Mit der neuen Kernel Version 2.6.23 lässt sich der NVIDIA Closed-Source Treiber, zumindest in Version 100.14.11, nicht mehr kompilieren.

Möglicherweise ist das nur auf meinem System so, aber mit der neusten Version, 100.14.19, geht es problemlos.

09 Oct 2007, 22:18

Linux Kernel 2.6.23 veröffentlicht

Vor ein paar Minuten wurde der neue Linux Kernel 2.6.23 freigegeben.

Die wichtigsten Änderungen im Überblick:

  • neuer CFS Scheduler (“fairer”)
  • On-Demand Read Ahead
  • XEN Guest Unterstützung
  • XFS und ext4 Verbesserungen
  • PPP over L2TP Support
  • Userspace Driver Framework
  • … (KernelNewbies)
Download / Changelog

03 Oct 2007, 18:35

Rezepte Sammlung überarbeitet

Die, von mir mit betreute, Rezepte Sammlung wurde überarbeitet und steht jetzt quasi in Version 2.0 zur Verfügung.  “Quasi” weil das Software-Backend eigentilch keine Versionsnummer hat.

Es ist ab sofort möglich sich auf der Seite zu registrieren und dann Kommentare und Bewertungen zu den Rezepten ab zu geben.

01 Oct 2007, 19:37

Acrobat Reader 8.1 lässt Firefox abstürtzen

Ich denke, dass der Acrobat Reader nichts taugt. Weder unter Windows noch unter Linux.

Warum sonst stürtzt Firefox ab sobald ich - bei installiertem Acrobat Reader - ein PDF anklicke.

Zum Glück gibt es einfach Abhilfe. Unter Edit -> Preferences -> Cotntent -> File Types -> Manage -> PDF kann man Firefox beibringen PDFs wieder auf der Platte speichern zu lassen. Ziemlich frech, dass sich der Acrobat Reader hier von selbst einnistet.

28 Sep 2007, 09:15

Debian etch mit RAID per Debootstrap auf Rootserver installieren

Update: Dieses stichpunktartige Installationsprotokoll dürfte kaum zur Nachahmung geeignet sein. Daher existiert unter dem Titel “Rootserver mit RAID unter Debian GNU/Linux etch” ein Nachfolgedokument das zwar inhaltlich noch nicht ganz komplett ist, diesen Beitrag jedoch bereits deutlich übertrifft.

Dies soll ein kurzer Erfahrungsbericht sein, wie man Debian 4.0 aka etch mit RAID per Debootstrap über ein sog. Rescue-System auf einem Rootserver installiert. Es ist eher eine knappe Zusammenfassung als ein Tutorial und beantwortet daher möglicherweise nicht alle Fragen.
  • Resuce System booten
  • cfdisk /dev/sda
  • cfdsik /dev/sdb
  • Geeignetes Partitionierungsschema:
  • sda1 und sdb1 als /boot mit ext2, 128MB
  • sda2 und sdb2 als / mit ext3, 30GB
  • sda3 und sdb3 als swap, 2GB
  • (md0) sda5 und sdb5 als /tmp mit ext2 unter einem RAID0, 4GB
  • (md1) sda6 und sdb6 als /var/log mit ext3 unter einem RAID1, 4GB
  • (md2) sda7 und sdb7 als /var/lib/mysql mit ext3 unter einem RAID1, 6GB
  • (md3) sda8 und sdb8 als /srv mit ext3 unter einem RAID1, Restlicher Platz/2
  • (md4) sda9 und sdb9 als /backup mit ext3 unter einem RAID1, Restlicher Platz/2
  • mke2fs /dev/sd[ab]1
  • mke2fs -j /dev/sd[ab]2
  • mkswap /dev/sd[ab]3
  • sync; sync; sync
  • swapon /dev/sd[ab]3
  • mkdir /mnt/newroot
  • mount -t ext3 /dev/sda2 /mnt/newroot
  • mkdir /mnt/newroot/boot
  • mount -t ext2 /dev/sda1 /mnt/newroot/boot
  • mknod /dev/md1 b 9 2
  • mknod /dev/md2 b 9 3
  • mknod /dev/md3 b 9 4
  • mknod /dev/md4 b 9 5
  • mdadm –creat e /dev/md0 –level=0 –raid-devices=2 /dev/sd[ab]5
  • mdadm –creat e /dev/md1 –level=1 –raid-devices=2 /dev/sd[ab]6
  • mdadm –creat e /dev/md2 –level=1 –raid-devices=2 /dev/sd[ab]7
  • mdadm –creat e /dev/md3 –level=1 –raid-devices=2 /dev/sd[ab]8
  • mdadm –creat e /dev/md4 –level=1 –raid-devices=2 /dev/sd[ab]9
  • WARTEN bis die Festplatten syncronisiert sind. Tipp: “watch cat /proc/mdstat”
  • mkdir /mnt/newroot/tmp
  • mkdir -p /mnt/newroot/var/log
  • mkdir -p /mnt/newroot/var/lib/mysql
  • mkdir /mnt/newroot/srv
  • mkdir /mnt/newroot/backup
  • Die md0 bis md4 Partitionen formatieren
  • Partitionen mounten
  • ggf. debootstrap installieren
  • Das Grundsystem mit debootstap installieren:
    debootstrap –arch {amd64,i386} etch \
         /mnt/newroot http://ftp.de.debian.org/debian
  • Chroot in das neue System:
    LANG=C chroot /mnt/debinst /bin/bash
  • Terminal einstellen:
    export TERM=xterm-color
  • /etc/fstab anpassen: vim /etc/fstab
  • Das Proc Dateisystem mounten: mount -t proc proc /proc
  • aptitude update && aptitude install mdadm
  • tzconfig um die Zeitzone einzustellen
  • /etc/network/interfaces bearbeiten. localhost nicht vergessen.
  • /etc/resolv.conf anpassen.
  • /etc/hosts anlegen.
  • Einen Kernel installieren, z.b. aptitude install linux-image-2.6-amd64 für einen 64bit Kernel.
  • Boot Loader installieren:
    # aptitude install grub

    grub-install /dev/hda

    update-grub

  • Problem: Grub lässt sich nicht installieren. Lösung: chroot verlassen und ‘
    grub-install –recheck –no-floppy –root-directory=/mnt/newroot /dev/sda’ ausführen.
  • Wichtig: Wieder im chroot, mit passwd ein root Passwort setzen
  • Wichtig: OpenSSH Server installieren: aptitude install openssh-server
  • In /etc/fstab die Raid Partitionen eintragen aber am besten bis zum nächsten Neustart erstmal auskommentiert lassen.
  • Benutzer anlegen, administrative Benutzer in staff,users,adm,wheel und www-data aufnehmen.
  • Neu starten
  • /etc/sshd_config anpassen (no root logins, listen ip, etc.)
  • /etc/pam.d/su anpassen, dass nur Mitglieder der Gruppe whell su benutzen dürfen
  • aptitude install munin munin-node dirvish htop vim nload
  • Damit wäre die Grundeinrichtung abeschlossen.
Ich weiss, dass dies kein Howto ist, aber es sollte für erfahrende Benutzer zumindest einen groben Leitfaden für die Einrichtung bieten.

Wer Fragen hat möge bitte die Kommentarfunktion benutzen, dann werde ich versuchen darauf einzugehen.

25 Sep 2007, 08:03

Linux auf ICH5 Mainboards

Linux verhällt sich auf Intel ICH5-basierten Mainboards wie dem Asus P8C800-E Deluxe mitunter komisch. Es will einfach nicht booten. Wer vor dem gleichen Problem steht, der sollte im BIOS unter “Main -> IDE Configuration -> Onboard IDE Mode” vom “Enhanced Mode” auf den “Compatiblity Mode” umstellen. “compatiblity” bedeutet hier übrigens keine Geschwindigkeitseinbußen, sondern ändert nur die Abbildung der Anschlüsse auf die Controller-Ports.

Empfehlenswert ist weiterhin ein aktueller Kernel (2.6.18+) und evtl. die Option “irqpoll”, falls es weiterhin Problem mit dem Mainboard gibt.

23 Sep 2007, 19:06

Was wäre Wenn - Software RAID Edition

Da ich seit längerer Zeit schon Software-RAID unter Linux (mit mdadm) einsetze, habe ich mich hin und wieder gefragt

Was wäre wenn eine der Festplatten ausfallen würde?

Ich wollte nie das Risiko eingehen es auszuprobieren, aber heute hat es sich mal ergeben und das Ergebnis beruhigt mich.

  • RAID0 - Keine Chance, da die Daten über zwei Platten verteilt waren lassen sie sich nicht mehr lesen. Zum Glück setze ich das nur für /tmp ein.
  • RAID1 - Knoppix erkennt und mountet die Partition als gäbe es kein RAID. Alle Daten lassen sich ohne irgendwelche Probleme lesen.
  • RAIDX für x aus {3,5,10,50,…} - Dazu kann ich nichts sagen, da ich z.Z. nur RAID 1 und 0 einsetze.

21 Sep 2007, 13:22

SunRAY Server Software unter Debian

Wer noch ein paar SunRAY Terminals besitzt und die entsprechende Server Software (SRSS) lieber unter Linux, d.h. Debian GNU/Linux, laufen lassen will, der findet auf einer Seite der Uni Erlangen alles nötige.

Weiterhin sind diese und diese Seite möglicherweise interessant.

Update: Wenn man, wie im Anhang beschrieben, die Module für USB und Audio installieren will, darf man nicht vergessen vorher die Kernel Header zu installieren. Bei mir war das ein aptitude install linux-headers-2.6.18-4-48. Der Patch wird übrigens folgendermaßen eingespielt: cd /usr/src; patch -p0 </path/to/modules-3.1.1.diff.

20 Sep 2007, 11:36

Codezeilen zählen

Kurztipp: Wie kann ich die Zeilen eines (Programmier-) Projektes zählen? (SLOC)

Das beste Tool für diesen Zweck dürfe CLOC sein, zumindest und Unix/Linux.

Ein anderer Weg ist eine Unix-Command Folge:find . -regex ‘.*.(c|h|cxx|cpp)’ -print0 | xargs -0 cat | wc -l

20 Sep 2007, 09:42

Was wäre wenn Kein Loopback-Device vorhanden wäre

  • MySQL startet nicht
  • Munin macht Problem
  • exim4 startet nicht
  • Alle andern Programme laufen
Tja, das passiert wenn man vergisst das Loopback-Device zu aktivieren.

19 Sep 2007, 12:49

Das Windows Setup ist so lahm ...

Warum braucht das Windows XP Setup eigentlich 15+ Minuten um eine 40Gb Platte mit NTFS zu formatieren wenn ich mit ext3 oder XFS unter Linux eine 500GB Platte in 20s formatieren kann?

Vielleicht hätte ich doch “Quick Format” auswählen sollen.

Fragen, über Fragen …

19 Sep 2007, 10:23

Mittwoch

IBM stellt Lotus Symphony aka OpenOffice+Eclipse RCP vor

Ich weiss nicht ob die Welt das braucht, aber es sieht auf jeden Fall schick aus und vielleicht fördert es ja die Verbreitung von OpenOffice in Unternehmen.

Netzbetreiber fordern USB Anschluss für alle Handys

Na das ist mal eine gute Idee. Die komischen propitären Stecker an den Handys und die umständlichen Software-Lösungen der Hersteller waren mir schon lange ein Dorn im Auge.

Open-Source Konkurent für Second Life

Anscheinend gibt es eine attraktive Alternative zu SecondLife. Ich denke ja, dass ein OpenSource-“SecondLife” deutlich bessere Marktchancen hätte.

Telekom bringt das iPhone

So wie es aussieht wird es bald offiziel angekündigt: Die Telekom bringt das iPhone. Zwar scheint die anfängliche Euphorie inzwischen verfolgen, aber spätestens mit der zweiten Generation des iPhones werde ich mir sehr ernsthaft überlegen mir auch so ein Gerät zu kaufen. Enttäuschend ist halt der Net-Lock.

Debian APT-Proxy in Java

Mit Japt-Proxy gibt es einen APT-Proxy in Java. Ob das was taugt? Ich werde es mal testen, da ich sowieso schon eine Weile nach einem APT-Proxy bin. Natürlich gibt es auch noch andere Implementierungen. Da muss ich einfach mal vergleichen.

18 Sep 2007, 09:35

PHP: Cannot access empty property

Kurztipp: Probleme nach der Migration von PHP4 zu PHP5 (I)

Folgendes Problem tritt nach der Migration von PHP4 zu PHP5 auf:

Fatal error: Cannot access empty property in /www/xyz/abc.php on line xy
Bei mir ist dieses Problem aufgetreten weil sich da ein $ eingschmuggelt hatte wo es nichts zu suchen hatte.

Vorher $this->free_result($this->$query_id);

Nacher $this->free_result($this->query_id);

Wie man sieht genügt es das $-Zeichen zu entfernen.

18 Sep 2007, 09:00

Terry Pratchett: Schöne Scheine

Von “Pterry” gibts bald ein neues Buch namens Schöne Scheine.

Ich bin schon gespannt …

14 Sep 2007, 09:30

KDE vs. GNOME

Was ist besser: KDE oder GNOME?

Nun, diese Frage stelle ich mir von Zeit zu Zeit. Darauf eine allgemeingültige Antwort zu finden ist wohl in etwa so leicht wie eine Antwort auf die folgenden Fragen zu finden: emacs oder vi, linux oder windows, ying oder yang, etc. pp.

Für mich persönlich sollte sich diese Antwort allerdings etwas leichter beantworten lassen, das hoffe ich zumindest.

Hier möchte ich einige Punkte auflisten die mir beim Thema KDE vs. Gnome einfallen.

KDE:

  • viele Einstellungsmöglichkeiten
  • die Zwischenablage scheint (?) manchmal nicht richtig zu funktionieren
  • gute Xinerama/Mehrmonitor-Unterstützung
  • wenige Killer-Apps, aber einige gute (KMail, Konqueror)
  • super “Explorer” (Windows) Ersatz
GNOME:
  • oft zu unflexibel, viele Optionen lassen sich nicht, oder nur umständlich, einstellen
  • schlechte Xinerama/Mehrmonitor-Untersützung
  • viele gute Anwendungen (Killer-Apps) in GTK (Gimp, Firefox, Eclipse, Quod Libet, …)
  • “Explorer” Ersatz (Nautilus) kaum zu gebrauchen
  • Wechselmedien werden übersichtlicher (auf dem Desktop) angezeigt
Ich möchte mich für den Begriff “Explorer”-Ersatz hier entschuldigen, aber ich finde, dass der Windows Explorer (NICHT Internet Explorer!) eine ziemlich gute Anwendung ist. Es gibt viele die - unter Windows - dessen Vorzüge nicht schätzen und lieber auf Alternativen wie Total Commander ausweichen (unter Linux gibts dafür die ULTIMATIVE Alternative: Worker!) aber ich persönlich bin sehr vom Explorer überzeugt.

12 Sep 2007, 16:41

Serverumstellung auf PHP5

Der Server läuft jetzt mit PHP5. Bei der Umstellung habe ich kurz das Blog zerschossen - Safe Mode war aktiviert. Jetzt sollte es wieder gehen.

12 Sep 2007, 15:17

Links des Tages: Apples iPhone offenbar geknackt und Linux Rechner von Mindfactory

Nach einem Bericht von heise ist der SIM-Lock von Apples iPhone offenbar geknackt worden; und zwar, im Gegensatz zur alten Methode, ohne Hardwaremodifikationen. Na, das wurde auch Zeit.

Die Firma Mindfactory bietet seit kurzem einen fertig konfigurierten Linux-PC mit Debian und vorinstalliertem Beryl an. Klasse, daran sollten sich andere ein Beispiel nehmen!

11 Sep 2007, 13:32

WordPress Feature Request: Automatische Plugin Updates

Ein wichtiges Feature vermisse ich bei WordPress: eine möglichkeit automatisch alle Plugins zu aktualisieren.

Man denke an das entsprechende Feature von Firefox. Dieser überprüft bei jedem Start ob Updates für die installierten Plugins vorliegen. Warum gibt es das nicht auch für WordPress? So ähnlich wie das InstantUpgrade Plugin nur halt für die Plugins.

Update: Mit Version 2.5 wurde diese Funktion endlich integriert.

10 Sep 2007, 08:36

Debian - Alte Pakete löschen und Platz schaffen

Kurztipp: Wie schaffe ich auf der root-Partition meiner Debian-basierten Distribution (Debian, Ubuntu, Xandros, etc.) Platz?

aptitude autoclean

Dieser Befehl sorgt dafür, dass alte Pakete im Paketcache gelöscht werden. Da dieser oft genug auf der root Partition liegen dürfe kann es hilfreich sein diese Befehl in einen Cronjob von ‘root’ reinzupacken. Wenn das noch nicht reicht kann man auch noch ein

aptitude clean

versuchen. Dieser Befehl löscht auch aktuelle Pakete aus dem Cache.

06 Sep 2007, 10:49

Ostasiatische Schriften unter Debian GNU/Linux installieren

Kurztipp: Wie installiere ich ostasiatische Schrifen (japanisch, koreanisch, chinesich) unter Debian?

aptitude install ttf-alee ttf-arphic-bkai00mp ttf-arphic-gbsn00lp ttf-baekmuk ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts

Weiterführende Informationen gibts bei Meet Korea oder Nekobento.

03 Sep 2007, 13:41

Toshiba 4GB USB Flash Drive von Penny

In den Penny Märkten gibt es heute ein interessantes Angebot: 4GB USB-Stick von Toshiba für 29,99€. Das geht sicherlich noch günstiger, aber ich finde es ist ein akzeptabler Preis und da ich schon länger auf der Suche nach einem möglichst großen USB-Stick für unter 30 Euro war habe ich zugeschlagen.

Der USB-Stick wird mit einem Umhänge-Bändel und einer, wenig Hilfreichen, Bedienungsanleitung geliefert. Was mir gut gefällt ist, dass der Stick vorformatiert ist (FAT32).

Geschwindigkeit schreiben: 1GB in 04:15 (min:sec), d.h. ca. 4 Mb/s. Versprochen waren im Prospekt “Ca. 5MB/Sek.”, das geht für mich also in Ordnung.

Geschwindigkeit lesen: 1GB in 01:28, d.h. ca. 11,64 MB/s. Versprochen waren im Prospekt hier “Ca. 12Mb/Sek.”, das ist optimal.

Kompatiblität: Offiziell, d.h. im Prospekt und in der Bedienungsanleitung wird Kompatiblität zu Windows 98/2000/ME/XPund MacOS 10.0.2+ zugesichert. Und Linux (Debian/Lenny) läuft er aber auch einwandfrei. Alle Messungen wurden unter Linux (Kernel 2.6.21) vorgenommen. Aber ich bin mir sicher, dass sie auch auf Windows übertragbar sind.

Mein Fazit: Kein “Super-Knaller” aber ein sehr gutes Angebot das ich so durchaus weiterempfehlen kann. Wie “haltbar” der Stick ist wird sich mit der Zeit zeigen, aber Toshiba gewährt immerhin 5 Jahre Garantie, das ist schonmal sehr vielversprechend.

Details Erkannt wird der Stick als: kernel: scsi 5:0:0:0: Direct-Access TOSHIBA TransMemory 5.00 PQ: 0 ANSI: 0 CCS

Und schön gemounted unter:

/dev/sdb1 on /media/TOSHIBA type vfat (rw,nosuid,nodev,noatime,flush,uid=1000,utf8,shortname=lower)

Bilder

Hier noch zwei Bilder des USB-Sticks. Zunächst mal der Inhalt der Packung. Auf dem zweiten Bild ist sehr schön das RFID-Ettikett (oben) und der Diebstahlschutz (unten) zu erkennen.

Toshiba 4GB USB Flash Drive von PennyRFID & Diebstahlschutz

03 Sep 2007, 10:07

Besucherstatistiken - Firefox, Windows und 1280x1024

Eine kleiner Blick auf die Statistiken.

Browser:

  • Firefox (+ Mozilla Derivate) - 58,84%
  • Internet Explorer - 30,08%
  • Opera - 5,82%
  • Safari - 2,87%
  • Konqueror - 1,78%
  • Der Rest teilt sich auf in diverse Browser und interessante Kennungen wie “Gzip”.
Yeah, Firefox rocks! So ist es richtig. Die 30% vom IE bekommt der Firefox auch noch klein.

Betriebssysteme:

  • Windows - 76,87%
  • Linux - 17,61%
  • MacOS - 4,95%
  • FreeBSD - 0,04%
Schade, ich dachte Linux wäre stärker repräsentiert.

Bei den Bildschirmaufläsungen dominiert 1280x1024 mit 37,49% vor 1024x768 mit 23,24% und 1280x800 (9,41%). 800x600 ist mit nur 0,64% gerade mal auf Platz 11. Interessant sind ein paar Exoten wie z.B. 1920x1200 mit immerhin 2,80% oder 2560x1600 (0,11%). Bei so Auflösungen denke ich nur: “Ich will auch!”.

02 Sep 2007, 13:35

Google Earth mit Flugsimulator!

Omfg ist das genial - Google Earth gibts jetzt mit eingebautem Flugsimulator!

Ich bin definitiv nicht der Erste dem das Aufgefallen ist, aber ich bin gerade viel zu begeistert um nicht etwas darüber zu schreiben.

Um den Flugsimulator zu starten sollte man sich erstmal die neuste Version von Google Earth runterladen und dann, bei fokusiertem Hauptfenster, Strg+Alt+A drücken.

Es gibt auch eine Hilfe.

Google Earth Flightsim über Berlin Mitte

02 Sep 2007, 09:57

VirtualBox 1.5 veröffentlicht

Gerade wollte ich mein System aktualisieren und habe gesehen, dass VirtualBox, zumindest im Repository, in der Version 1.5 vorliegt. Auf der Webseite ist es allerdings noch nicht angekündigt.

Im Changelog steht nur “rebuild Debian packet” (Freitag, 31.Aug.07), was das auch immer heissen soll …

Update, 03.09.07: Jetzt ist auch die offizielle Ankündigung und das ausführliche Changelog raus.

30 Aug 2007, 11:14

XML Dokumente mit Namespaces in PHP5/SimpleXML verarbeiten

SimpleXML ist was feines. Damit lassen sich XML Dokumente ohne viel Aufwand bearbeiten, leider hat das ganze einen kleinen Haken.

Namespaces! Richtig, SimpleXML kann Namespaces zwar verarbeiten aber dadurch wird die Bedienung etwas verwirrend und leider ist das ganze auch nicht gut Dokumentiert.

Ein kleines Beispiel, gegeben sei folgende XML Datei: <XmlResultSet version=“1.0.0” xmlns=“http://www.gauner.org/api" xmlns:bml=“http://www.bla.net/bml" xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://www.gauner.org/api/schema.xsd"> <bml:description>This is an API</bml:description> <bml:name>api</bml:name> <bml:Member> <AnEntry> <bml:name>Blabla</bml:name> </AnEntry> </bml:Member> </XmlResultSet>

So, jetzt mal angenommen ich will auf Xml->bml:Member->AnEntry->Name zugreifen. Ohne Namespaces ist das mit SimpleXML ganz einfach: Xml->Member->AnEntry->Name. Aber das lustige an Namspaces ist, dass die jeweils anderen Namespaces ausgeblendet werden. D.h. SimpleXML sieht alles im Namespace “bml” erstmal nicht.

Ok, dafür gibts eine Lösung: Man kann mit Element->children(‘namespace-url’) explizit auf die Namespaces zugreifen, aber dabei gibt es zwei Fallen. Zum einen muss man unbedingt die URL des Namespaces angeben, nicht etwas den Namen des Namespace, und zum anderen ist es wichtig zu beachten, dass dann eben die anderen Namespaces augeblendet werden, und man ggf. wieder in den Default Namespace (mit ->children(“)) wechseln muss.

Wenn ich jetzt in obigem Beispiel auf <bml:name> Zugreifen will sähe der korrekte Code dann etwa so aus: $xml = new SimpleXMLElement($source); $name = $xml->children(‘http://www.bla.net/bml')->Member->children('')->AnEntry->children('http://www.bla.net/bml')->name;

Siehe dazu auch den Eintrag bei SitePoint.

27 Aug 2007, 20:27

Im Zoo

Ein paar Impressionen aus dem Frankfurter Zoo: Zoo - Löwe Ein Löwe Zoo - Tiger Ein Tiger

Zoo - Trampeltier Ein Kamel bzw. Trampeltier Zoo - Tiger 2 Noch ein Tiger Seebären - Fütterung Zoo - drehender Menschenaffe

27 Aug 2007, 20:01

MEncoder Tricks

Hier ein paar kurze Tricks für den MEncoder vom MPlayer.

Rotate: mencoder -ovc lavc -oac copy -o output.avi -vf rotate=0 input.avi Mögliche Werte für Rotate:

  • 0 - Drehe um 90 Grad im Uhrzeigersinn und stelle das Bild auf den Kopf
  • 1 - Drehe um 90 Grad im Uhrzeigersinn
  • 2 - Drehe um 90 Grad gegen den Uhrzeigersinn
  • 3 - Drehe um 90 Grad gegen den Uhrzeigersinn und stelle das Bild auf den Kopf
Remove Sound: mencoder -ovc copy -nosound input.avi -o output.avi

Change Sound: mencoder -ovc copy -audiofile tonspur.mp3 -oac copy input.avi -o output.avi

Create x264: mencoder-mt -ovc x264 INPUT.avi -x264encopts level_idc=12:bframes=3:subq=7:partitions=all:8x8dct:me=esa:me_range=23:frameref=6:trellis=1:weight_b:mixed_refs:threads=auto:qcomp=0.6:keyint=250:min-keyint=25:direct=temporal -vf scale=1440:1080 -oac lavc -lavcopts acodec=libfaac:abitrate=56 -srate 48000 -af channels=2 -of lavf -ofps 25 -lavfopts format=mp4 -o OUTPUT.mp4

27 Aug 2007, 10:20

Linus: I've never run Debian

Uhm, Linus Torvalds hat ja wirklich einen schlechten Eindruck von Debian:

“Funnily enough, the only distributions I tend to refuse to touch are the “technical” ones, so I’ve never run Debian, because as far as I’m concerned, the whole and only point of a distribution is to make it easy to install (so that I can then get to the part I care about, namely the kernel), so Debian or one of the “compile everything by hand” ones simply weren’t interesting to me.”
[1]

Ich denke, er sollte sich mal ein aktuelles Debian anschauen … aber wahrscheinlich hat er bessere Dinge zu tun.

Interessant an dem Interview fand ich auch, dass er Intel explizit empfohlen hat.

24 Aug 2007, 10:49

IntelliMouse Optical unter X.Org für Linkshänder einrichten

Kurztipp: Wie richtet man eine Maus, z.B. IntelliMouse Optical, unter X.Org für Linkshänder ein.

Entweder auf der Konsole: xmodmap -e “pointer = 3 2 1 4 5 6 7 8 9”

oder in der /etc/X11/xorg.conf unter “Section InputDevice”: Option “ButtonMapping” “3 2 1 4 5 6 7 8 9”

23 Aug 2007, 22:51

TV-Out unter Linux mit Nvidida GF6600

Es ist gar nicht so einfach den TV-Out der Nvidia Karten mit einem S-Video Kabel in Betrieb zu nehmen, schon gar nicht unter Linux.

Das ganze hat mich bis jetzt jedesmal Nerven gekosten, daher muss ich das jetzt nochmal festhalten.

Zunächst einmal zum physikalischen Anschluss. Das Kabel muss an den blauen Anschluss, ganz rechts, an der Breakout-Box. Auf der anderen Seite habe ich das ganze mit einem Scart-Adapter an den Scart-Eingang angeschlossen.

S-Video am Composite Out der neuern Nvidia Karten

Damit das auch funktioniert muss in der xorg.conf der Video-Modus “Composite” gewählt werden, und natürlich die richtige PAL Einstellung. Hier der relevante Auszug aus meiner xorg.conf: Section “Device” Identifier “nvidia0” Driver “nvidia” Option “NoLogo” “True” Screen 0 Option “TwinView” “true” Option “TwinViewOrientation” “clone”

PAL-B or PAL-G for Germany

Option “TVStandard” “PAL-B” Option “TVOutFormat” “COMPOSITE” Option “SecondMonitorHorizSync” “30-50” Option “SecondMonitorVertRefresh” “50” Option “MetaModes” “1024x768,1024x768;800x600,800x600” Option “ConnectedMonitor” “DFP,TV” EndSection

20 Aug 2007, 14:59

Kernkraftwerkbetriebsführungssofware

 Kernkraftwerkbetriebsführungssofware <- OMFG ;D

18 Aug 2007, 09:19

Skype ist kaputt

Ohman, da will man mal nach langer, langer Zeit wieder Skype benutzen und dann bricht das komplette Netzwerk von denen zusammen, und zieht die Netze der Nutzer gleich mit runter.

Naja, so gewinnen die jedenfalls keine neuen Kunden.

Ich weiss warum ich dem ganzen VoIP-Kram z.Z. noch den Rücken kehre und lieber auf POTS setze, mein ISDN Anschluss fällt nicht aus weil irgendein “Algorithmus” spinnt. Wobei das ganze für mich eher wie eine faule Ausrede klingt, ich vermute wirklich, dass das mit dem MS Patchday zusammenhängt und die vorher irgendeinen Windows Bug ausgenutzt haben um die SuperNodes zu verwalten, und der wurde dann plötzlich von MS gepatcht. Sowas nennt man wohl “natürliche Selektion”, die schlechten überleben einfach nicht. Und Skype gehört für mich definitiv nicht zu den guten. Wenn es endlich Clients gibt die Jingle ordentlich implementieren, dann brauche ich kein Skype mehr.

16 Aug 2007, 08:42

Wie geht AVM mit der GPL um?

Nachdem ich mich seit einiger Zeit mit der Fritz!Box von AVM beschäftige, hat sich mir die Frage gestellt wie AVM eigentlich mit der GPL umgeht, da sie ja Linux auf den Fritz!Boxen einsetzen. Zum Teil, d.h. mindestens bei 7170 und 7270, auch Samba und andere GPL Software.

Weder auf der AVM Homepage, noch in der Fritz!Box Dokumentation ist ein Verweis auf die GPL.

Aber in einem Unterverzeichniss auf dem FTP-Server von AVM liegen einige Archive mit allen geänderten Code-Teilen. Leider scheint das ganze ziemlich nutzlos zu sein, da dort lediglich die Patches liegen und sich so kaum eine vollwertige Fritz!Box Firmaware bauen lässt.

Update: Anscheinend machen sich auch andere Gedanken darüber wie AVM mit der GPL umgeht.

14 Aug 2007, 10:42

Wie schalte ich den nervige PC-Speaker unter Linux/KDE aus?

Ich benutze seit einiger Zeit KDE und bin ziemlich zufrieden damit, was mich aber gestört hat, war, dass unter einigen Programmen die Fehlermeldungen jetzt von einem ziemlich nervigen Piepen des PC-Speakers begleitet wurden.

Das ganz lässte sich allerdings, wie ich jetzt herausgefunden habe, ganz einfach abschalten:

xset -b

Entweder auf der Konsole eingeben oder in die .xsession einfügen.

08 Aug 2007, 18:59

Rezepte Sammlung in neuem Design

Die Rezepte-Sammlung unter rezepte.gauner.org wurde von mir in den letzten Tagen komplett überarbeitet und erstrahlt jetzt in neuem Glanz. Weg mit hässlichen Parametern (?id=X) und nichts sagenden Dateinamen. So dürfe das ganze wesentlich Nutzerfreundlicher sein, und die Suchmaschienen dürften damit auch besser klarkommen.

War interesse an der Umsetzung hat soll sich bei mir melden, dann werde ich das hier bei Gelegenheit erläutern.

Soviel sei schonmal verraten: Die Apache Mod Rewrite Konfiguration habe ich 1:1 von WordPress übernommen.

06 Aug 2007, 13:49

Rezepte mit RSS Feed

In der Rezepte Sammlung gibt es jetzt auch einen RSS-Feed um bei Updates immer auf dem laufenden gehalten zu werden.

03 Aug 2007, 12:00

Was ist eigentlich die Load Average?

Ich habe bei I’m Mike gerade eine sehr gute Erklärung gefunden, was eigentlich die Load Average aussagt:

Die Load Average ist der expotentielle Mittelwert der Anzahl der Prozesse die im Status “running” oder “runnable” sind. Wichtig ist dabei folgende Faustregel: Die Load-Average sollte immer kleiner als die Anzahl der Processorkerne im System sein. D.h. ein Dual-Core System mit einem Processor ist zu 100% ausgelastet wenn die Load-Average 2 ist. Ein Dual-Processor System mit Single-Cores ebenfalls bei 2.

Wenn die Load-Average größer als die Anzahl der Cores ist, dann wollen mehr Prozesse zur Ausführung kommen, als das System zur Zeit verkraften kann.

Weitere Details gibts hier.

01 Aug 2007, 09:53

OpenWRT auf der Fritz!Box

Wie ich gerade erfahren habe gibt es offensichtlich die Möglichkeit OpenWRT Linux auf den Fritz!Boxen zu installieren.

Allerdings steht in der OpenWRT Table of Hardware noch untestet bzw. Work-in-Progress und ich werde bestimmt nicht das komfortable Web-GUI der Fritz!Box für lustiges konsolen-gefrickel eintauschen, aber eine interessante Alternative ist es in jedem Fall.

27 Jul 2007, 11:10

AVI Dateien mit defektem Index reparieren

Manchmal hat man das Problem, dass sich in einzelnen avi Filmen nicht springen bzw. spulen lässt weil der Index defekt ist.

Dies lässt sich mit MPlayer/Mencoder ganz einfach beheben: mencoder -idx input.avi -ovc copy -oac copy -o output.avi

Kurz zur Erklärung der Optionen:

  • ”-idx” weist mencoder an den Index neu zu erstellen
  • ”-ovc copy” weist mencoder an als Video-Output Codec “copy” zu verwenden, also den Stream zu kopieren
  • ”-oac copy” weist mencoder an als Audio-Output Code “copy” zu verwenden, also den Stream zu kopieren
  • ”-o output.avi” gibt die Ausgabedatei an
  • “input.avi” ist natürlich die Eingabedatei
Ich bin immer wieder fasziniert wie praktisch und vielseitig das MPlayer bundle ist. Ich verwende übrigens als Paketquelle folgenden sources.list Eintrag: deb http://www.debian-multimedia.org/ lenny main

27 Jul 2007, 10:48

Migrating Debian etch to Debian lenny

Zwar ist es noch nicht lange her, dass etch stable wurde, aber da es sich schon einige Zeit im Freeze befand ist es mal wieder soweit, dass ich mit der Aktualität nicht zufrieden bin und mich mal wieder Richtung testing orientiere.

Insbesondere aiccu brauche ich für IPv6 via SixXS.

Die Migration war eigentlich ganz einfach, wenn auch ein wenig verwirrend.

Einfach die /etc/apt/sources.list angepasst und erstmal ein aptitude update sowie ein aptitude -s dist-upgrade abgesetzt.

Danach hat mir aptitude zwar zunächst vorgeschlagen OpenOffice zu entfernen, aber das hat es sich dann nochmal anderst überlegt.

Grund waren wohl ein paar nicht ganz auflösbare Abhängigkeiten in Bezug auf OOo.

26 Jul 2007, 17:51

Linux vs. Mac

“ich hab jetzt linux auf dem mac installiert” “viel besser ;)”

25 Jul 2007, 19:25

FRITZ!Box Wiki

Als ich gerade auf der Suche nach Informationen zu meiner FRITZ!Box 7170 war, bin ich auf ein sehr informatives Wiki zum Thema FRITZ!Box gestossen: wehavemorefun.

16 Jul 2007, 10:29

Aus jHTTPd wird libjhttpd

Nachdem ich den Code zu meinem einfachst-Webserver jHTTPd (HTTP/1.0, Multithreading, IPv6- und UTF-8-Support) in wesentlich mehr Projekten weiter verwendet habe, als zunächst geplant, habe ich mich entschlossen den Code nochmals zu überarbeiten, ein wenig refactoring zu betreiben und als Bibliothek umzuarbeiten.

Der Webserver kann jetzt auch ordentlich binäre Multipart POST Requests verarbeiten. Ein kleines Missverständnis zwischen mir und den Java Streams hat dafür gesorgt, dass es vorher nicht funktioniert hat.

Bytes nach String und wieder zurück zu casten geht selten gut ;)

Die Bibliothek ist so angelegt, dass man den bestehenden Code nicht ändern muss - wobei das für eine Bibliothek selbstverständlich sein sollte.

Im Package webserver.sample befindet sich ein Beispiel dafür wie man die Bibliothek verwenden kann.

Ähnlich wie beim Apache-Webserver existieren ein paar Hooks die es erlauben an verschiedenen Stellen der Request Verarbeitung einzugreifen und die Daten entsprechend zu manipulieren.

Eine lauffähige Instanz des Webservers erzeugt man mit folgendem Code:

Config config = new Config(); // read the config try { config.readConfig(Config.CONFIG_FILE); } catch (IOException e) { e.printStackTrace(); } // check command line arg count if (args.length > 0) { // parse args config.setPort(args[0]); } WebServer ws = new WebServer(config, new SampleHttpRequestFactory()); Thread t = new Thread(ws); t.start();

Weiterhin muss man in einer Klasse die Schnittstelle IHttpRequestFactory implementieren und dort die, ebenfalls zu implementierende, Klasse die von HttpRequest erbt, angeben.

HttpRequest bietet drei sog. Hooks.

  • postConnect() - wird aufgerufen sobald der Client die Verbindung hergestellt hat, aber bevor irgendetwas weiter passiert ist. Hier könnte man z.B. überprüfen ob der Client auf einer Blacklist steht, bzw. aus einem nicht zulässigen Netzwerk kommt und die Verbindung schliessen bevor weitere Ressourcen verbraucht werden.
  • postRequest() - wird aufgerufen nachdem der Request des Clients, d.h. inkl. evtl. vorhandenem POST-Body, verarbeitet wurde. Hier sollte eigentlich fast der gesamte benutzerspezifische Code landen.
  • preClose() - wird aufgerufen direkt bevor die Verbindung zum Client geschlossen wird und nachdem die Antwort gesendet und der Request geloggt wurde. Zu diesem Zeitpunkt besteht keine Garantie dafür, dass die Verbindung zu Client noch existiert.
Die Klasse HttpRequest bietet neben den Hooks noch eine Reihe von Methoden die den Zugriff auf die Daten des Requests ermöglichen.

Die wichtigsten wären:

  • getArgument() - um die komplette Liste der Argumente zu erhalten. Also POST und GET Argumente.
  • getMultiparts() - um die evtl. vorhandenen Multipart Teile eines POST Requests zu erhalten.
  • getRemoteAddress() - um die IP des Clients zu erhalten sowie getRemotePort() um den dazugehörigen Port zu erhalten. Diese zwei Felder sind die einzigen die während postConnect() schon gültige Daten enthalten.
  • getRequestHeader() - um den verarbeiteten Header auszulesen.
  • getResponseHeader() - um auf den Response Header zuzugreifen.
Für weitere Details möchte ich direkt auf den Quellcode verweisen. Fragen und Anmerkungen bitte über die Kommentarfunktion.

Den Quellcode und den Download gibts hier: libjhttpd.

16 Jul 2007, 10:01

jSpellCorrect überarbeitet

Der Java Spelling Checker, jSpellCorrect, wurde von mir nochmal ein wenig überarbeitet. Jetzt kommt er prinzipiell mit beliebig großen Trainingsdaten zurecht. Vorher existierte eine, unnötige, künstliche Beschränkung.

Download jSpellCorrect.

Allerdings existiert weiterhin die Einschränkung, dass die HashMap der Wahrscheinlichkeiten in den Arbeitsspeicher passen muss. Hier bin ich allerdings noch nicht an die Grenzen gestossen.

Eine Möglichkeit dies zu umgehen, wäre ein Teil der Daten auf der Festplatte zu speichern, aber dies ist mir im Moment zu umständlich. Bei Bedarf werde ich das nachrüsten.

16 Jul 2007, 08:57

Book-Review: Koreanisch Wort für Wort

In diesem Beitrag möchte ich kurz das Buch AdsKauderwelsch Band 44: Koreanisch Wort für Wort”, von Dietrisch & Andreas Haubold, vorstellen.

Vor einigen Tagen überkam mich das dringende Bedürfnis etwas mehr über die koreanische Sprache und Kultur zu erfahren und ich bin, auf dem Weg zu meinem Zug, in der Bahnhofsbuchhandlung meines Vertrauens eingefallen. Eigentlich mit dem Vorsatz ein AdsLangenscheidt zu diesem Thema zu kaufen. Leider, oder eher: zum Glück, war der nicht vorrätig. Daher bin ich auf das oben genannte Büchlein gestossen.

Koreanisch Wort für Wort

Für 7,90€ erhällt man ein, knapp 180 Seiten starkes, Büchlein im DIN A6 Format. Was die koreanische Grammatik, Umgangsformen, Zahlen und Datumsangaben angeht lässt das Buch für meine Verhältnisse keine Wünsche offen. Was mir etwas zu kurz kommt, ist der Wörterbuchteil, der zu knapp bemessen ist. Die Vokabeln sind zum Teil in Tabellen in den einzelnen Kapiteln gequetescht und zum Teil am Ende des Buches aufgelistet. Leider nur in Deutsch und in der Umschrift und nicht in Hangeul.

Ein wenig irritierend wirkte auf mich, dass die Umschrift der koreanischen Wörter und Buchstaben hier teilweise anderst als in anderen Quellen ist, aber dies ist wohl einfach darauf zurück zu führen, dass einige Varianten der Umschriften exisitieren.

Alles in allem bin ich sehr zufrieden mit diesem Buch. Wer allerdings ein umfangreiches Wörterbuch sucht wird damit nicht sonderlich glücklich werden.

11 Jul 2007, 19:05

Windows Update - Neustart Erinnerung Ausschalten

Es gibt unter Windows XP ein schrecklich nerviges Feature: Die Neustart-Erinnerung des Windows Update Dienstes.

Das schlimme an dieser Dialogbox ist, dass man sich nicht wirklich schliessen kann. Man hat nur die Wahl zwischen Pest und Cholera, d.h. Sofort neu starten oder später neu starten.

Windows Update Nagger

Natürlich ist es prinzipiell eine gute Idee die Benutzer dazu zu drängen den PC neu zu starten und potentielle Sicherheitslücke zu schliessen, aber ich mag das Risiko ;) und ausserdem habe ich keine Lust neu zu starten wenn ich gerade am Arbeiten bin.

Es gibt zwei Möglichkeiten das ganze auszuschalten:

  • Den Windows Update Dienst ausschalten
  • Den Group-Policy-Editor bemühen
Da ich das Auschalten das Update Dienstes für etwas überzogen halte, möchte ich kurz den Weg über den Group Policy Editor erklären. Achtung: Dieser Weg scheint nur unter Windows XP Prof. zu funktionieren. Ob es für Windows XP Home einen vergleichbaren Weg gibt muss ich noch rausfinden.

Windows Update Nagging über den Group Policy Editor entschärfen

Stop Windows Update from Nagging

Zunächst muss man über Start -> Ausführen -> “gpedit.msc” aufrufen und dort zu dem Eintrag “Windows Update” (siehe Screenshot) navigieren. Hier gibt es wiederum zwei Möglichkeiten das tödlich-nervige Popup loszuwerden:

  • automatischen Neustart ganz deaktiveren
  • Das Nachfrage-Interval erhöhen
Ich bevorzuge den zweiten Weg. Dafür öffnet man “Erneut zu einem Neustart für geplante Installationen auffordern”, stetzt ihn auf “aktiviert” und trägt eine ausreichend große Zeitspanne ein. Etwa 720 Minuten.

Referenzen:

05 Jul 2007, 18:01

Slashdot Comment of the Day

If 10 years ago someone told me the biggest company on the internet would be an advertising agency that used the phrase “do no evil” and people believed them I would have said they were on crack. Alas, it seems to be the case.” [link]

Besser hätte ich es auch nicht ausdrücken können …

05 Jul 2007, 16:02

Warum sich IPv6 in den nächsten 5 Jahren durchsetzen wird

  • Weil immer mehr Anwendungen (Apache, Mailserver, etc.) IPv6 fähig sind
  • Weil Windows Vista IPv6 standardmäßig aktiviert hat.
  • Weil meine Server alle IPv6 sprechen ;)
  • Weil China, mit seiner aufstebenden Wirtschaft, gerade einmal soviele IPv4 Adressen hat wie die Universität von Californien.
  • Weil dieICAAN massiv für IPv6 werben will.
Und wenn ich mich geirrt habe ist es auch nicht schlimm, denn IPv4 ist auch was tolles.

05 Jul 2007, 09:23

T-Online Benutzerkennung

Der Trick ist zwar schon alt, aber ich musst gerade mal wieder danach suchen:

Wie setzt sich der T-Online Benutzername, für Router oder Linux, zusammen.

Laut T-Online wie folgt: Anschlusskennung, T-Online Nummer, #, Mitbenutzernummer und @t-online.de.

Also so: AAAAAAAATTTTTTTTT#MMMM@t-online.de

03 Jul 2007, 11:54

3D Beschleunigung in VirtualBox

Es gibtim VirtualBox Forum einen interessanten Thread zum Thema “3D Beschleunigung in VirtualBox”.

Es wäre wirklich eine sehr nett wenn das irgendwann in naher Zukunft mal funktionieren würde.

Bei Parallels scheint es schon zu funktionieren

03 Jul 2007, 07:10

FRITZ!Box 7270 wahrscheinlich erst im Spätsommer

So ein Mist, die neue FRITZ!Box 7270 gibts wahrscheinlich erst im Spätsommer. So zumindest die Auskunft von AVM.

Nach aktuellem Kenntnisstand wird die FRITZ!Box Fon WLAN 7270 voraussichtlich im Laufe des Sommers 2007 (Tendenz Spätsommer) verfügbar werden.
Quelle: AVM Vertrieb

Schade, das Teil hat mich wirklich neugierig gemacht.

  • Verschlüsslung für VoIP
  • DECT Basisstation
  • LCR (?)
  • WLAN nach 802.11n
  • Unterstützung für VDSL
  • Zugriff auf angschlossene Festplatten über Windows Freigaben (Samba)
  • VPN Zugriff von Aussen
Und das ganze kombiniert mit der ausgereiften FRITZ!Box Oberfläche, das lässt hoffen. Leider kostet das Teil auch entsprechend viel …

Update: Sobald die neue Fritz!Box 7270 auf dem Markt ist werde ich das hier sofort ergänzen, aber bis heute, Stand 13.08.07, ist in den einschlägigen Shops noch nichts von AVMs neusten Topmodell zu sehen. Btw. bei der LCR Funktion bin ich mir nicht ganz sicher, das habe ich möglicherweise falsch aufgefasst. Wir werden sehen …

Update II, 18.08.07: In der neuen c’t (1807) ist auf S.124 ein Screenshot der offensichtlich von der neuen Fritz!Box 7270 stammt. Warum bekommen die eine und ich nicht? Liebe AVM, bitte schickt mir doch auch eine neue Fritz!Box zu testen ;)

Update III, 29.08.07: Jetzt kommt die neue Fritz!Box wohl doch erst im Herbst.

29 Jun 2007, 11:25

Intels Core 2 Duo Buggy as hell?

Einer der OpenBSD Entwickler, Theo de Raadt, weist in einer eindringlichen Mail an die openbsd-misc Liste darauf hin, dass Intels Core 2 Duo total verbuggt ist.

Ouch. Eigentlich wollte ich mir so einen Prozessor kaufen … naja, dann halt doch wieder AMD.