Archiv der Kategorie: Fun

Destroy All Software Screencasts: WAT

„The sarcasm in this talk does not represent anyone’s actual opinion. For a more serious take on software, try Destroy All Software Screencasts: 10 to 15 minutes weekly, dense with information on advanced topics like Unix, TDD, OO Design, Vim, Ruby, and Git.“

Kurz, knackig und sehr lustig

Platinen herstellen mit Gesichtsbräuner

Platinenherstellung bei Elektrowolle.
Es ist teuer, umfänglich aber exquisit.

Zitat:

Hier noch die Einkaufsliste, falls jemand in die Platinenherstellung einsteigen möchte:

250 Blatt Transparentpapier (Hahnemühle
Diamant Extra Special 90/95g)
28,45 €
5 Basismaterial FR4 zweiseitig 160×200 19,75 €
1 Gesichtsbräuner vom Flohmarkt 5,00 €
1 kg Entwickler (Rohrreiniger) 2,50 €
1 l Salzsäure 33% techn. 5,40 €
1 l Wasserstoffperoxid 10% 4,00 €
5 Bögen Dynamask Lötstopp 11,39 €
100 g Lötstoppentwickler 2,62 €
1 SurTin Chemisch Zinn 9,30 €
1 Satz Entwicklerwannen aus Fotostudio 10,00 €

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

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.

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.

Java-Objekte und Calls mocken: Mockito

Zum Mocken verwende ich nur noch Mockito.

Schnell, zuverlässig, leicht zu lesen.

Im folgenden Beispiel wird Mockito zum schnellen Erzeugen von Datenbank-Abfrage-Objekten verwendet. Dies benötigt man, wenn z. B.
die Kundendatenbank für solche Tests kein Schema besitzt oder man einfach „leichtgewichtig“ und offline testen möchte.


// Hier wird eine Mock-Instanz der gewuenschten Klasse erzeugt.
final DatabaseDAO offlineDatabaseDaoMock = Mockito.mock(DatabaseDAO .class);
databaseResourceScanner.setDatabaseDao(offlineDatabaseDaoMock);

// Hier wird ein Methoden-Aufruf der Mock-Instanz abgefangen
// und das Resultat vorgegeben.
List testDatabaseBeans = createDatabaseResultBeans();
Mockito.when(offlineDatabaseDaoMock.getDatabaseBeans("777777", "4242", yesterday)).thenReturn(
testDatabaseBeans);

Java += mit implizitem Cast

Ein Freund von der Universität schickte mir folgenden Schnipsel, der eine überraschende Ausgabe erzeugt.


long g = 287654322;
g += 0f;
System.err.println(g);

Dem Problem kam ich nicht sofort auf die Spur. Aber ein Blick in die Spec verrät es uns:

E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.(Java Spec)

Also ist unsere Lösung das implizite Casten von float nach long.

final float a = (g + 1f);
g = (long)a; // ((long)2.87654336E8)

Dabei ist es natürlich egal, ob man 0f, 1f oder sonstige kleine Zahl wie 42f verwendet. Das Ergebnis ist dasselbe.

Auf alle Fälle ist mir wie an vielen anderen Stellen klar, dass man „Verkürzungen“ oder andere coole aber zulässige Schreibweisen einfach lassen sollte.
Keep it small and simple heißt hier, dass die „Verkürzung“ eine Verkomplizierung ist, deren Tragweite man manchmal nicht absieht.