Archiv für den Monat: Dezember 2010

Ubuntu 2. Bildschirm Problem

Um den zweiten Bildschirm unter Ubuntu zum Laufen zu bekommen, muss der entsprechende NVidia-Treiber nebst Bedienoberfläche geladen werden „NVIDIA X Server Settings“.
Unter „X Server Display Configuration“ kann man dann den externen Bildschirm konfigurieren als „Twin View“.

Das Problem ist, dass der X-Decorator wegfliegt. Aber auf Anraten startet ich per Console einfach einen neuen fusion-icon&.

bugs.launchpad.net
nvnews.net

Ich benutze folgendes Start-Skript per Hand ausgeführt:


#!/bin/sh
# Starten vom apache ds und von postgresql
# @author H.Spiewok@hendrikspiewok.de
# @version 1.0.0
# @date 20101215

# start postgres, encrypted database files @ home
sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_ctl -D /etc/postgresql/8.4/main
-l /var/log/postgresql/postgresql-8.4-main.log start

# start icons decorator
fusion-icon&

# start apache ds ldap
cd /home/onkel/development/apps/apacheds-noarch/
./apacheds.sh

Calendar.getTime()/Date immer UTC

Was man sich vielleicht immer mal wieder klar machen sollte, wenn man nicht in die Date-Timestamp-Calendar-Hölle kommen will:
Calendar.getTime() ist immer UTC und hat nichts mit irgendeiner Timezone zu tun.

Although the Date class is intended to reflect coordinated universal time (UTC), it may not do so exactly, depending on the host environment of the Java Virtual Machine. java.util.Date

Hier gibt es ein paar der gesammtelten Irrtümer über die Datums und Zeitangaben, die ich immer noch in Legacy- und auch aktuellem Code finde (torsten-horn.de). Z. B. fängt bei meinem aktuellen Projekt der Tag – als Gas-Tag – entweder um 08:00 Uhr bzw. 06:00 Uhr an. Analog beginnt das Gas-Jahr am 1. Oktober des jeweiligen Kalender-Jahres. Von Lieferjahren und den darin vorkommenden Quartalen wollen wir gar nicht reden.

Oracle: Timezones and the Java Runtime Environment

Vorerst keine Jugenschutz-Abmahn-Falle (JMStV)

Nun ist die seit vielen Jahren vorbereitete und technisch völlig unbeschriebene Novelle (JMStV) doch gescheitert.
Für viele Blogger heißt das, dass sie etwas mehr Zeit besitzen, ihren Hoster ins Ausland zu wechseln oder sich finanzkräftiger nach einem Jugendschutz-Beauftragten umzusehen.

Aufgeschoben heißt immer noch nicht aufgehoben und das Damoklesschwert einer solchen Gesetztesveränderung bleibt bestehen.

Siehe hierzu: Heise

Ubuntu + PostgreSQL + verschlüsseltes Home

Die Herausforderung war ein PostgreSQL mit den Tablespaces in einem verschlüsselten Home-Verzeichnis.

# start.conf auf 'manual' setzen, weil es ohne HOME nicht starten kann
# in pg_hba.conf 'trust' setzen
# in postgres.conf
# 0. data_directory = /home/onkel/development/data/postgresql/8.4/main/
# 1. ssl ausstellen (ggf. fehlendes Zertifikat)
# 2. wal_sync_method = fsync (sonst Zugriffsfehler bei verschlüsselten Datem im Home-Directory)
# Initialisierung über: /usr/lib/postgresql/8.4/bin/initdb -D /home/onkel/development/data/postgresql/8.4/main/
# Der Hauptordner muss dem User postgres gehören!

Da das normale Start-Script /etc/init.d/postgres nicht mehr funktionierte, habe ich mir meine eigenen Aliase bzgl. pg_ctl gebastelt.
Komisch ist, dass bei verschiedenen Aufrufen -D verschiedene Ordner erhält.

$HOME/.bash_aliases
# @author H.Spiewok@hendrikspiewok.de
# @version 1.0.0
# @date 20101215

alias pstart="sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_ctl -D /etc/postgr
esql/8.4/main -l /var/log/postgresql/postgresql-8.4-main.log start"
alias pstop="sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_ctl -D /home/onkel/
development/data/postgresql/8.4/main -l /var/log/postgresql/postgresql-8.4-main.
log stop"
alias pstatus="sudo -u postgres /etc/init.d/postgresql status"
alias plog="sudo -u postgres tail -f /var/log/postgresql/postgresql-8.4-main.log
"
alias startenv=$HOME/bin/startenv.sh

Auf alle Fälle ist ein großes Lob und Dank an die Macher der verschiedenen Hilfeseiten hiermit gegeben: Ubuntu-Hilfe.

Warum ist Number nicht Comparable

Das ist eine Frage, die gerade im Team aufgetaucht ist bei der Berechnung für die Darstellung von Charts.

Die schnelle Antwort hierzu ist, dass von Number als Haupt-Typ sehr unterschiedliche Kind-Typen abgeleitet werden. Man wollte das Grundverhalten dieser Typen nicht vorbestimmen. Weiterhin sind diese Kind-Typen untereinander nicht „generisch“ vergleichbar.

Im Zweifelsfall ist man dazu gezwungen seinen eigenen Comparator zu schreiben. Dieser kann z. B. davon abhängig sein, welchen Rundungsfehler man annimmt. So kann man Gleichheit in bestimmten Intervallen definieren, zwei Zahlen a und b sind gleich, wenn (b-d) <= a <= (b+d); d>=0 ist. Oder man normalisiert auf den größten Zahlentyp und vergleicht dort.

Auf alle Fälle stößt man hier an die Grenzen der Umsetzung auf Maschinenarchitektur. Siehe z. B. strictfp.

(Siehe stackoverflow)

Speed up SSD

Das 32bit-XP-System mit Truecrypt-Vollverschlüsselung (ganze Platte) ist zum Arbeiten doch schon weidlich zu langsam. Nachdem ich mir genug Lachen der Kollegen angehört habe, schritt ich zur Tat. Dies war lange vor mich her geschoben, da der Aufwand, eine funktionierende Arbeitsumgebung herzustellen, an die 2 Tage respektive Nächte in Anspruch nimmt. (letztendlich war es eine Woche Nachtarbeit mit Kundendaten, LDAP, Workspaces und Datenbanken)

Da Platz für eine zweite Platte vorhanden ist und Kollegen schon gute Erfahrungen besitzen, baute ich mir eine SSD ein. Es sollte eine Intel X25-M 80GB SSD (6,4 cm (2,5 Zoll), 32MB Cache) werden. Ein aktuelles Ubuntu kam drauf und ein verschlüsseltes $HOME für die Kundendaten.

Und ich kann nur empfehlen SSD zu benutzen: Ubuntu Herunterfahren 6 sec, Hochfahren 15 sec, Thunderbird starten 1 sec, Eclipse starten mit 12 Projekten 17 sec, Eclipse herunterfahren 4 sec. (Achtung: Eclipse reagiert nicht auf den GNOME-Standard-Mechanismus für die Benachrichtigung zum Herunterfahren des Betriebssystems – shutdown)
Gegenüber dem Verhalten unter XP und mit der 500ter Festplatte ist das ein Unterschied wie Tag und Nacht. Es macht richtig Spaß mit dem System zu arbeiten.

Wenn ich an die frühen Tage mit Slackware Kernel-Version 0.99pl13 denke mit Schuhkartons voller kleiner Disketten, ohne Internet wie wir es heute kennen …

TFT Death

Hein und ich haben den TFT auseinandergenommen. Nahm man ihn vom Strom, brauchte er immer länger, wieder ein Bild anzuzeigen. Letztens half es auch nicht mehr, den TFT eine Woche am Kabel zu belassen. Wir wetteten auf einen sterbenden Elko, aber konnten ihn trotz Lupen-Lampe nicht entdecken – den Fehler.

Die Bauteile sind so klein geworden, dass man außer einigen Ausgasungen bzw. gröberen Rissen nichts wirklich entdecken kann. Da bleibt nur übrig, ratlos zu überlegen, wie man das Ding noch verbasteln kann.

Blue-Screen-Pause

Das XP läuft eigentlich sehr stabil, wenn es nicht Grafik-Treiber gäbe, die den Hibernate-Mode nicht gut vertragen.
So gibt es denn doch einmal dies seltene Bild und beim nächsten Starten hat man unglaublich große Icons auf dem Bildschirm in der Standard-Auflösung.


Aber demnächst wird in die Maschine eine SSD als zweite Platte gepackt und endlich ein neues Betriebssystem installiert. XP stammt immerhin aus dem Jahre 2002.

Outboxing mit NPE

Ein Beispiel, welches mir gerade passiert ist:

long along = aObject.getAintegerObject();

Wenn aObject.getAintegerObject() null zurück liefert, dann knallt es mit einer NPE.
Es wird automatisch versucht, ein Integer in ein long zu überführen.

Es gibt Features, die besser abzustellen wären. Man stelle sich Matrixmanipulationen vor, wie z. B. Multiplikation, bei denen elementweise In- und Outboxing stattfindet, ohne, dass man eine Warnung vom Compiler erhält.

Wenn man mit Eclipse arbeitet, dann kann man hier den gewünschten Level Warn oder Error einschalten:

Preferences->Java->Compiler->Errors/Warnings->Potential Programming Problems->Boxing and unboxing conversions

Siehe auch stackoverflow.com

In eigener Sache: Blog

Einige prominente Blogs haben vor, ab nächstem Ersten zu schließen. Dies geschieht aufgrund der undurchsichtigen gesetzlichen Lage bzgl. des neuen Staatsvertrages zum Jugendschutz. Da mein Blog soweit nur technische Beiträge enthält, wird eine Einstufung nach Alter bzgl. Jugendschutz wohl nicht sinnvoll sein. Aber das kann streng genommen nur ein „Jugendschutzbeauftragter“ mit entsprechendem Nachweis und selbstverständlich bezahlt sicher stellen. So lange befindet man sich in einer Grauzone, die Abmahnern die Möglichkeit einräumt, viel Geld zu verdienen.

Mein Blog wird bis auf weiteres aktiv bleiben.

http://www.heise.de/newsticker/meldung/Blog-macht-wegen-neuem-Jugendschutzgesetz-dicht-Updates-1144566.html

Dergleichen gilt übrigens auch für ein Impressum. Es ist gar nicht so einfach festzustellen, ob eine Seite privat oder geschäftlich betrieben wird. Dann gelten aber andere Anforderungen an das Impressum.