Windows 2000, SATA, 137 GB, DMA und andere Probleme

Die alte Festplatte ist voll und es muss eine neue her. Wieso veraltete Technik kaufen, also habe ich gleich eine 200 GB Samsung SATA Platte mitgenommen und noch die passenden Strom- und SATA-Kabel. Na so ein Festplatteneinbau ist ja eigentlich keine große Sache, doch das gute alte Windows 2000 sollte mir viele Steine in den Weg werfen…

Das System gestartet und die Platte wurde unter Windows nur mit einer Größe von 137 GB erkannt. Zuerst dachte ich, dass es an der MSI RS480M2 Hauptplatine lag, ein Blick ins BIOS zeigte aber die richtige Größe. Nach einiger Zeit fand ich die Lösung bei Microsoft. Trotz Service Pack 4 kann Windows 2000 leider keine 48-Bit-LBA.

Das Problem war gelöst, aber es sollte nicht dabei bleiben. Nach dem Kopieren der alten IDE Platte auf die neue SATA Platte war diese ungewöhnlich langsam und die Ursache unauffindbar. Ich probierte es mit neuen Treibern in diversen Versionen, Jumpern der Platten auf SATA 150 und auch mit einem BIOS-Update – leider ohne Erfolg. Nach stundenlanger Suche war das Problem gefunden und es lag mal wieder an Windows 2000: das Laufwerk lief nur im langsamen PIO-Modus und nicht mit DMA. Die Lösung fand sich im BIOS. Beim MSI RS480M2 kann man für den SATA-Controller den DMA-Modus auf den Wert 5 begrenzen und hat so unter Windows 2000 keine Probleme mehr.

So nervig kann das Aufrüsten sein. Glücklicherweise brachte das BIOS-Update von Version 3.5 auf 3.9 gleich noch Cool ’n‘ Quit für den Athlon 64 mit und so hatte die Aktion doch noch etwas Gutes.

Samsung Syncmaster 225BW Test (22″ TFT)

Seit kurzem gibt es den Samsung Syncmaster 225BW zu kaufen. Bedingt durch seine Größe und relativ hohe Auflösung war sofort das Interesse geweckt.

Hier die technischen Daten laut Hersteller:

  • Bilddiagonale: 22″
  • Pixelabstand: 0.282 mm
  • Auflösung 1680×1050
  • Reaktionszeit: 5 ms (grau zu grau)
  • Helligkeit: 280 cd/m²
  • Verbrauch: 55 Watt
  • Blickwinkel: 160°/160°
  • Eingänge: D-SUB und DVI
  • Farben: 16.7 Mio (wohl ein 8-bit TN-Panel)
  • Besonderheiten: HDCP über DVI

Zuerst hatte ich mit dem 20er Samsung geliebäugelt, die zwei Zoll mehr fand ich dann aber sehr interessant. Da der preisliche Unterschied nicht so hoch war, habe ich das Teil einfach mal blind online bei HoH für 430 Euro inkl. Versand bestellt und nach drei Tagen wurde er mit DHL geliefert.

In der Box fanden sich Strom-, DVI- und D-SUB-Kabel. Außerdem noch so einiges an Papier, aber keine echte Anleitung, denn die ist auf der mitgelieferten CD als PDF vorhanden. Außerdem sind auf der CD noch Programme zum Einstellen der Farbe und des Monitor mit der Maus.

Weiterlesen

Develop ineo+ 250P Fehler: Papier auffüllen

Das gelbe Blitzsymbol am Drucker leuchtet auf und es erscheint eine Fehlermeldung obwohl genug Papier im Schacht 2 vorhanden ist:

Papier auffüllen
BP: A4 NRML

Word - Seite einrichtenNach dem Anruf beim Kundendienst habe ich endlich rausgefunden wieso der Drucker nicht mehr drucken wollte.
Damit der Fehler nicht mehr auftritt, muss man bei Word die Seite einrichten > Format und dort den richtigen Papierschacht wählen. Dann klappt auch wieder das Drucken. Erstaunlicherweise hatte dieselbe Einstellung beim Drucken direkt keine Wirkung.

Abzählen von Sudoku-Gittern mit dem Dancing-Links-Algorithmus

Sudoku LogoDas in Java entwickelte Programm zum Abzählen von 3×3 Sudoku-Gittern mit dem Dancing-Links-Algorithmus ist nun samt Dokumentation fertig. Später wird noch ein Sudoku-Benchmark erscheinen, mit dem man die Leistung der Java Virtual Machine (JVM) für diesen speziellen Fall testen kann. Hier die Dateien zum runterladen:

dlx_sudoku.jar inkl. Quellen

dokumentation.pdf

java -jar dlx_sudoku.jar threads – Startet das Programm mit 10 Threads (Mehrprozessorfähig)
java -jar dlx_sudoku.jar – Startet das Programm ohne Threads

Hybrid Landmark Routing

In meiner Seminararbeit über Topologiebewusstes, proaktives Ad-Hoc-Routing habe ich mich intensiv mit dem Optimized Link State Routing (OLSR) und dem Hybrid Landmark Routing (Hybrid LANMAR) beschäftigt. Da OLSR ohnehin recht gut dokumentiert und Hybrid LANMAR noch relativ neu ist, stelle ich den Teil zu Hybrid LANMAR online.

Wie der Name bereits andeutet, handelt es sich dabei um ein hybrides Protokoll, es vereint proaktives und reaktives Routing. Genau wie OLSR baut das Hybrid Landmark Routing auf ein bereits existierendes Verfahren auf. Hybrid LANMAR ist eine Optimierung des LANMAR Protokolls. Beide Protokolle nutzen die Annahme, dass es meistens Bewegungen ganzer Gruppen in MANETs gibt. Die eigentliche Optimierung bei Hybrid LANMAR liegt in einer verbesserten Behandlung des Falls, wenn sich einzelne Knoten nicht in einer Gruppe bewegen.

Hybrid Landmark Routing
Beispieltopologie Hybrid LANMAR

Wie in der Abbildung dargestellt kann man sich ein MANET mit bewegenden Gruppen (graue Ellipsen) vorstellen. Blaue Punkte sind die Knoten, die sich individuell bewegen und die ich externe Knoten nennen werde. Die grünen Linien sind die Verbindungen zwischen den Knoten. Ein schwarzes Dreieck stellt einen Gruppenführer dar. Es ist aber nicht ausgeschlossen, dass sich Gruppen mit der Zeit ändern und neue Mitglieder gewinnen oder verlieren.

Das Routingverfahren

Die Autoren von Hybrid LANMAR unterteilen das Routing in drei Bereiche: lokale Wegfindung, Finden von Gruppen und Auffinden einzelner Knoten, die nicht in einer Gruppe sind.

Lokale Wegfindung

Für das lokale Routing innerhalb eines bestimmten Bereichs wird das Fisheye Protokoll genutzt. Es begrenzt die Entfernung (Hops) auf einen relativ kleinen festgelegten Wert und ist ein proaktives Verfahren.

Finden von Gruppen

Damit auch außerhalb des lokalen Bereichs Wege gefunden werden können, wird das Verfahren um einen Gruppenführer (=GF) erweitert. Er ist Repräsentant seiner Gruppe und für die Vernetzung mit weiteren Gruppen zuständig. Sobald ein GF bestimmt wurde, fängt dieser an das gesamte Netzwerk über sein Dasein zu informieren. Doch wie wird ein GF bestimmt? Als GF wird der Knoten gewählt, der die meisten benachbarten Knoten in seiner Gruppe besitzt, üblicherweise sollte dies in der Mitte der Gruppe und nicht am Rand der Fall sein.

Finden externer Knoten

Beim klassischen LANMAR Protokoll ist jeder externe Knoten als seine eigene Gruppe definiert. Je mehr externe Knoten es gibt, desto mehr Gruppen existieren. Folglich sinkt die Skalierbarkeit. Hier setzt Hybrid LANMAR an und nutzt dafür ein reaktives Routingverfahren, das nicht ständigen, schlecht skalierbaren, proaktiven Aktualisierungen unterliegt, da es von der Gruppenstruktur getrennt arbeitet.

Ablauf der Wegefindung

Ein jeder Knoten speichert die drei Routingtabellen für lokales Routing, Routing innerhalb der Gruppen (engl.: Landmark Routing Table), Routing für externe Knoten und einen Zwischenspeicher über die Gruppenzugehörigkeit der Zielknoten lokal ab. Der Ablauf der Wegefindung sieht dann wie folgt aus:

  1. Existiert das Ziel bereits in der Tabelle für lokales Routing, wird nach dieser an den nächsten Knoten Weitergeleitet.
  2. Wenn das Ziel nicht in der Tabelle für lokales Routing steht, wird nach der Gruppenzugehörigkeit gefragt. Wie das genau passiert erkläre ich später.
  3. Konnte das Ziel einer Gruppe zugeordnet werden, wird das Paket in Richtung des GF dieser Gruppe weitergeleitet. Ist das Paket in der Zielgruppe angekommen, wird nach der Tabelle für lokales Routing verfahren.
  4. Wenn das Ziel keiner Gruppe zugeordnet werden konnte, handelt es sich um einen externen Knoten und es wird mit einem reaktiven Verfahren die Wegewahl bestimmt.

Wie wird die Gruppenzugehörigkeit bestimmt? Dazu muss man wissen, dass bei Hybrid LANMAR eine IP-Adresse in zwei Hälften aufgeteilt wird. Die erste Hälfte enthält die (variable) Nummer der zugehörigen Gruppe eines Knotens und die zweite Hälfte dessen eindeutige Kennung/Adresse. Als Gruppennummer wird einfach die Kennung des GF genutzt. Ist ein Knoten nicht Mitglied einer Gruppe, wird seine Gruppennummer auf null gesetzt. Um die Gruppenzugehörigkeit festzustellen wird ein verteiltes System zur Namensauflösung (DNS) mit der Kennung des Zielknotens befragt und als Antwort erhält man eine IP-Adresse mitsamt Gruppennummer und Knotenkennung.
Meiner Meinung nach liegen hier einige Schwachstellen in der Erklärung seitens der Erfinder von Hybrid LANMAR. Wie soll dieses verteilte DNS-System aussehen? Muss jeder x-te Knoten solche Informationen bereitstellen oder wie sieht dies in der Realität aus? Erzeugt ein solches System nicht zusätzliche Bandbreite?
Auch beim Routing zur nächsten Gruppe bleiben noch Fragen offen. Ist ein Paket von einer Gruppe bei der nächsten Gruppe angekommen, so soll nach dem Willen der Autoren nach der Tabelle für lokales Routing die Wegewahl bestimmt werden. Aber was ist wenn es eine große Gruppe ist und die Anzahl der möglichen Hops zu klein gewählt wurde? Hier hätte eine Grafik zur Erklärung vielleicht behilflich sein können.

Anwendungen in der Praxis

Der Entwurf zu Hybrid LANMAR ist vom September 2005 und damit noch sehr neu. Anwendungen in der Praxis wird man schwerlich finden, weshalb ich mich kurz auf die Resultate der Tests aus dem Entwurf beziehen werde.
Glaubt man den Statistiken, ist Hybrid LANMAR eine erfolgreiche Verbesserung des ursprünglichen LANMAR Protokolls. Es sind nur wenige Nachteile zu erkennen. Hybrid LANMAR benötigt etwas mehr Verwaltungsaufwand zur Wegebestimmung. Durch das reaktive Routing steigt außerdem die Verzögerung bis ein Paket übertragen wurde. Die Vorteile überwiegen, denn bei gleichem Durchsatz weist Hybrid LANMAR eine wesentlich höhere Anzahl erfolgreich zugestellter Pakete auf, je mehr externe Knoten es gibt. Das Ziel der Entwickler scheint erfüllt.

Kritik

Ursprünglich hatte ich in meiner Seminararbeit am Ende OLSR und Hybrid LANMAR verglichen. Da hier nur der Teil über Hybrid LANMAR zu finden ist und ich nicht alles neu schreiben wollte, habe ich einen passenden Abschnitt kopiert. Dieser befasst sich mit möglichen Problemen:
Bei Hybrid LANMAR wird es sich negativ auswirken, wenn eine Gruppe ihren GF verliert und dadurch bei allen Knoten der Eintrag aktualisiert werden muss. Während bei OLSR keine Änderungen an den IP-Adressen notwendig waren, baut Hybrid LANMAR auf eine Kombination von Knoten- und Gruppenkennung auf. Bei nicht angepassten Anwendungen kann dies zu Problemen führen, da sich die Adresse durch eine neue Gruppenzuordnung ändert. Auch die Rückgewinnung der Gruppenzugehörigkeit über das verteilte DNS-System lässt noch offene Fragen, die erst noch geklärt werden müssen.

Mehr Infos

Plesk 8.0.1: Table ‚psa.exp_event‘ doesn’t exist

Nach dem Update von Plesk auf einem Strato-Server trat der genannte Fehler des Betreffs auf. Die Webseite des Herstellers gab leider nur eine Fehlerbehebung für die ältere Version 7.5.4 vor, die aber nicht funktionierte.

Funktionieren tut aber dieser Befehl:

# mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa

DROP TABLE IF EXISTS `exp_event`;
CREATE TABLE `exp_event` (
`id` bigint(10) unsigned NOT NULL auto_increment,
`source` enum(‚pa‘,’plesk‘) default NULL,
`event_type` enum(’started‘,’stopped‘,’created‘,’updated‘, ‚deleted‘, ’status_changed‘, ‚terminated‘, ‚flushed‘, ‚installed‘, ‚uninstalled‘, ’siteapp_added‘, ’siteapp_removed‘, ‚expired‘, ‚exceeded‘) NOT NULL default ’started‘,
`event_time` datetime NOT NULL default ‚0000-00-00 00:00:00‘,
`obj_class` enum(‚license‘, ’service‘, ‚ip_address‘, ‚admin_info‘, ’siteapp‘, ’session_preferences‘, ‚client‘, ‚client_limits‘, ‚client_status‘, ‚client_prefs‘, ‚client_perms‘, ‚client_ip_pool‘, ‚client_limit_traffic‘, ‚client_limit_size‘, ‚domain‘, ‚domain_limits‘, ‚domain_user‘, ‚domain_limit_traffic‘, ‚domain_limit_size‘, ‚domain_status‘, ‚phosting‘, ‚fhosting‘, ‚db_server‘, ’subdomain‘, ‚mailname‘, ‚webuser‘, ‚maillist‘, ‚dns_zone‘, ‚mailname_antivirus‘, ‚mailname_spamfilter‘, ‚mailname_mailgroup‘, ‚mailname_autoresponder‘, ‚mailname_attachment‘, ‚dashboard_preset‘, ‚dashboard_preset_type‘, ‚dashboard_preset_name‘) NOT NULL default ‚license‘,
`obj_id` varchar(255) character set utf8 NOT NULL default “,
`host` varchar(255) character set utf8 NOT NULL default “,
`user` varchar(255) character set ascii NOT NULL default “,
`flushed` enum(‚true‘,’false‘) NOT NULL default ‚false‘,
PRIMARY KEY (`id`)
);

Danach gingen auch alle Funktionen von Plesk wieder problemlos. Ist aber trotzdem ärgerlich den Fehler erst über den SWsoft Service zu erfahren.

Jetzt weiß ich wenigstens auch wo mein Passwort im Klartext steht.

Bilder verkleinern mit Windows XP

Oft werde ich gefragt wie man massenweise Fotos unter Windows verkleinert. Mit den Windows XP Powertoys ist das ganz einfach. Man lädt sich den ImageResizer herunter und nach der Installation steht im Kontextmenü (rechte Maustaste auf eines der gewählten Bilder) des Explorers eine Option Resize Pictures.

Resize Pictures

Im nachfolgenden Dialog kann man dann die maximale Größe der neuen Bilder angeben. Gibt man beispielsweise 700×700 an, werden alle verkleinerten Fotos eine maximale Breite von 700 Pixeln und eine maximale Höhe auch mit 700 Pixeln haben. Der einzige Nachteil ist, dass man die Qualität/Komprimierung der verkleinerten Bilder nicht angeben kann. Teilweise wird ziemlich stark komprimiert.

Wie man Fotos unter Linux mit Imagemagick verkleinert.

Ein Alternative für Windows Vista (noch nicht getestet).

Weitere, bessere Möglichkeiten? Schreibe einen Kommentar!

Tutorial: Ruby on Rails für Debian Sarge

Unter Windows kann man das vorgefertigte InstantRails benutzen, aber auch mit Debian Linux geht die Installation relativ einfach. Ich habe mich an dieser Anleitung (engl.) orientiert. Zuerst installiert man Ruby:

apt-get install ruby libzlib-ruby rdoc irb

Das war simpel und so geht’s auch weiter. Als nächstes benötigen wir die Rubypaketverwaltung RubyGems, die ich mir in der Version 0.9.0 heruntergeladen habe. Nach dem entpacken wechselt man in das neue Verzeichnis und startet die Installation:

ruby setup.rb all

Nun installieren wir Rails:

gem install rails –include-dependencies

Der Apache2 Webserver war bei mir bereits vorhanden und ich musste nur noch einige Bibliotheken hinzufügen:

apt-get install libapache2-mod-fastcgi libfcgi-ruby1.8

Je nach Datenbank muss man noch libmysql-ruby, libpgsql-ruby oder libsqlite3-ruby hinzufügen. Auf meinem Server läuft Mysql weshalb ich folgenden Befehl nutzte:

apt-get install libmysql-ruby

Damit wären alle benötigten Dateien vorhanden. Jetzt geht es an die Konfiguration. Als Benutzer nutze ich rails, den ich bereits im Subversion Tutorial erstellt habe und erzeuge das Grundgerüst für die Railsanwendung:

rails /home/rails/meineApp

Danach habe ich noch die Gruppenrechte (www-data) auf den Webserver gesetzt, damit es da keine Probleme gibt:

chown -R rails:www-data /home/rails/meineApp

FastCGI haben wir bereits installiert. Für Ruby ist das auch unbedingt nötig, denn so sind die Ladezeiten deutlich kürzer. Damit FastCGI aktiviert wird erstellt man zwei Links:

cd /etc/apache2/mods-enabled/
ln -s /etc/apache2/mods-available/fastcgi.load
ln -s /etc/apache2/mods-available/fastcgi.conf

Ein VirtualHost für Apache könnte dann so aussehen:

(VirtualHost \

meineIP:80 \
)

ServerName meineDomain
ServerAlias www.meineDomain
DocumentRoot /home/rails/meineApp/public/
(Directory /home/rails/meineApp/public/)

Options ExecCGI +FollowSymLinks
AllowOverride All
order allow,deny
allow from all

(/Directory)

(/VirtualHost)

Achtung da fehlen einige Größer- und Kleinerzeichen. Bitte die Klammern entsprechend ersetzen!

Im Verzeichnis /home/rails/meineApp/public/ muss man die .htaccess-Datei noch auf FastCGI anpassen und dabei sollten folgende Zeilen vorhanden sein:

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

Die letzte Zeile ruft die FastCGI-Version aus. Bei mir war die Datei allerdings noch nicht ausführbar:

chmod +x /home/rails/meineApp/public/dispatch.fcgi

Eigentlich sollte dann schon alles laufen. Damit die störende index.html nicht beim Aufruf des Verzeichnisses, sondern gleich Ruby on Rails startet, habe ich sie einfach umbenannt und in der Datei /home/rails/meineApp/config/routes.rb die Route angepasst.

Damit auch die Datenbank funktioniert gibt man in /home/rails/meineApp/config/database.yml noch die richtigen Daten an.

Bei mir traten dann noch zwei Fehler auf. Ich hatte ein bestehendes Projekt kopiert und dadurch musste ich in der Datei /home/rails/wetteifern/config/environment.rb die Rails_Gem_Version anpassen. Außerdem war im dispatcher noch ein falscher Pfad und ich habe die erste Zeile geändert:

#!/usr/bin/ruby

Nachdem diese Fehler behoben sind, sollte alles prolemlos funktionieren. Mehr zur Installation und Programmierung mit Ruby On Rails findet ihr bei Silab.

howto: Subversion mit Debian und Eclipse

Für mein aktuelles Ruby on Rails Projekt wurde Subversion (SVN) benötigt. Mit dem RadRails Plugin für Eclipse kann man wunderbar arbeiten. Leider bringt Eclipse nur CVS zur Versionskontrolle mit und man benötigt das Subclipse Plugin um auch SVN zu nutzen.

Doch zuerst zum Server, der in meinem Fall unter Debian Linux läuft.

apt-get install subversion

Und schon ist Subversion installiert. Noch fehlt aber ein Serverprozess. Man sollte nicht alles als root laufen lassen und deshalb habe ich vorher einen rails Benutzer angelegt:

adduser rails

Da ich mit diesem auch entwickle, hat sich das angeboten. Selbstverständlich kann man auch einen eigenen SVN Nutzer anlegen. Ist man als dieser angemeldet, erstellt man sich ein Repository bzw. Projektarchiv:

svnadmin create /home/rails/meinPfad

Eventuell muss man das Verzeichnis vorher anlegen. Im dortigen conf-Verzeichnis die svnserve.conf anpassen:

[general]
#anon-access = read
#anon-access = write
# Kein Zugriff für anonyme Nutzer:
anon-access = none
auth-access = write

password-db = passdb
realm = rails

Jetzt muss noch eine passdb-Datei im gleichen Verzeichnis erstellt werden:

[users]
rails = meinPasswort

Dann kann der Server als Daemon gestartet werden:

nohup svnserve -r /home/rails/ -d –listen-port 3690

Nohup sorgt dafür, dass das Programm im Hintergrund läuft. Auf der Konsole sollte man zuerst Testen ob der Server auch wie gewollt funktioniert:

svn list svn://meineIP/meinPfad

Gibt es dort Fehler mit dem Pfad, dann kann man versuchen den Server ohne -r Pfadangabe zu starten und muss hinter der IP den absoluten Pfad angeben.

Läuft der Subversion Server, so können wir uns an die Konfiguration von Eclipse machen.

Für Eclipse 3.2 muss man nur den Subclipse Update Server angeben und dann das Paket auswählen. Help > Software Updates > Find and Install > Search for new… > New Remote Site

http://subclipse.tigris.org/update_1.2.x

Ist die IDE neu gestartet, kann Subclipse verwendet werden. Öffnet man die SVN Perspektive, kann man hier neue Archive angeben. Als Repository Location gibt man folgendes ein:

svn://meineIP/meinPfad

Danach sollte eine Passwortabfrage kommen und es kann losgelegt werden. Viel Erfolg!