Deutsch English Français
Dein Feedback:
Hat die Seite Deine Erwartung erfüllt? vote3 Ja
vote2 Teilweise
vote1 Nein
Noch ein Kommentar?

Nur falls, Du eine Antwort erwartest, Deine E-Mailadresse

Gegebenenfalls noch Dein Name

Do not change this:
Feedback
Suchen

2011-12-16

Istanbul 2011

Privates
4/14
14 Bilder

Istanbul 2011
Ordner vom 2011-10-27
Istanbul 2011
Relevante Links:
10-12-2011 03.01

2011-12-12

Java java.sql.Date equals

Computer
Wenn man zwei java.sql.Date Objekte auf Gleichheit testet, geht man vielleicht davon aus, dass für diesen Vergleich nur Jahr, Monat und Tag herangezogen werden (alle andere Werte scheinen ja eh Null zu sein). Das ist allerdings nicht so. Stattdessen wird für den Vergleich die interne Darstellung des Datums in Millisekunden benutzt:
public boolean equals(Object obj) {
return (obj instanceof Date) && getTime() == ((Date)obj).getTime();
}

Somit können zwei java.sql.Date Objekte leicht nicht equal sein, obwohl sie auf den gleichen Tag verweisen.

Siehe auch

08-12-2011 23.46

2011-12-10

Segeln in Split 2011

Privates
14/20
20 Bilder

Split 2011
Ordner vom 2011-09-30
Segeln in Split 2011
Relevante Links:
10-12-2011 03.01

2011-12-08

Java: Foo.class.getName() initialisiert keine static Blöcke mehr

Computer
Angenommen man hat die folgende Java Klasse mit einem statischen Attribut
public class ClassWithStaticVariable
{
protected static int myNumber=0;

public static int getMyNumber()
{
return myNumber;
}

}

Wenn man von dieser Klasse erbt, und im Erben in einem static Block das statische Attribut des Vaters initialisieren möchte (warum auch immer)
public class ClassWithStaticBlock extends ClassWithStaticVariable
{
static
{
myNumber=42;
}
public static void init() { };
}

Dann ist es klar, dass ein einfaches Auslesen der statischen Variable des Vaters natürlich keine Initialisierung auslöst, da die Kind Klasse nie initialisiert wird
System.out.println(ClassWithStaticVariable.getMyNumber());
0

Aber wie erreicht man das? Eine verbreitete Variante scheint zu sein, getName() auf der dem class Attribut der Klasse auszuführen
ClassWithStaticBlock.class.getName();
System.out.println(ClassWithStaticVariable.getMyNumber());

Leider geht das nach Java 1.4 nicht mehr
Ergebnis / Java Environment
42 / Java Vendor: Sun Microsystems Inc. Java version: 1.4.2_19 OS: x86 Windows Vista 6.1
0 / Java Vendor: Sun Microsystems Inc. Java version: 1.6.0_27 OS: x86 Windows 7 6.1
0 / Java Vendor: Oracle Corporation Java version: 1.7.0 OS: x86 Windows 7 6.1
Man sollte sich also nicht darauf verlassen, dass class.getName() static Blöcke initialisiert. Eine zuverlässigere Alternative ist es, der Klasse eine leere, statische Methode hinzuzufügen
ClassWithStaticBlock.init();

Das initialisiert den static Block plus man kann in der Methode ja auch wirklich Code ausführen lassen. Aber Achtung, der static Block wird normalerweise ja nur einmal pro Klasse durchlaufen, die Methode natürlich bei jedem Aufruf.
10-12-2011 13.01

2011-12-03

Java VisualVm has stopped working

Computer
Mit Windows 7 funktioniert Java VisualVm nicht mehr:
Problem signature:
Problem Event Name: APPCRASH
Application Name: jvisualvm.exe
Application Version: 7.0.0.0
Application Timestamp: 4d8c6dcf
Fault Module Name: msvcrt.dll
Fault Module Version: 7.0.7600.16385
Fault Module Timestamp: 4a5bda6f
Exception Code: c0000005
Exception Offset: 00018dbd
OS Version: 6.1.7601.2.1.0.256.4
Locale ID: 1031
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt

Lösung: Überprüfen, ob folgender Regkey existiert und auf ein gültiges Verzeichnis zeigt:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
"AppData"="C:\\Users\\Foo\\AppData"
03-12-2011 15.05

2011-11-16

Pizza Hanau Trattoria Da Felice

Privates
Pizza Hanau Nähe Goldschmiedehaus Congresspark
Trattoria Da Felice
Graf-Philipp-Ludwig-Straße 8
63450 Hanau
Telefon 061815073493
16-11-2011 17.02

2011-07-01

Dachau

Privates
3/13
13 Bilder

Dachau
Ordner vom 2011-05-22
Dachau 2011
Relevante Links:
26-06-2011 23.58

2011-06-26

Thailand 2011

Privates
52/114
114 Bilder

Thailand
Ordner vom 2011-04-12
Thailand 2011
Relevante Links:
26-06-2011 23.55

2011-02-28

Sharkoon Quickport Combo E-SATA

Computer
Wer häufiger mal Festplatten ein- und wieder ausbauen muss, für den ist das hier die perfekte Lösung:
Sharkoon Quickport Combo eSATA
Sharkoon Quickport Combo eSATA
USB Kabel in den Rechner, Box anschalten, Festplatte reinstecken, fertig! Diese Variante unterstützt nicht nur SATA Platten (normale 3,5 und die kleinen 2,5 Laptop Platten), sondern sogar noch IDE Geräte über ein beigelegtes Kabel. Und falls USB zu langsam ist, per eSATA anschließen. Sofern der Rechner keinen eSata Anschluß hat, reicht ein kleines Slotblech, das einfach an einen freien interen SATA Anschluß angeschlossen wird.
eSATA Slotblech
28-02-2011 23.19

2011-01-01

Nicht genügend Zufall, entropy Mangel im Linux Kernel

LinuxDebianComputer
Wie hoch ist die Entropy zur Zeit?
cat /proc/sys/kernel/random/entropy_avail

Falls man keine Hardware eingebaut hat, die vom Linux Kernel als Quelle für Entropy genutzt werden kann, hilft vielleicht die Soundkarte randomsound, randomsound Debian. Aber nicht vergessen, die Lautstärke vorher hochzudrehen ;-)
30-12-2010 23.34

2010-12-30

Dateisystemtest auf 2TB Raidsystemen

LinuxComputer
Aus drei Festplatten soll ein Software Raid aufgebaut werden. Um einen gleichzeitigen Ausfall von mehr als einer Platte unwahrscheinlicher zu machen, werden bewusst drei verschiedene Platten gewählt.
Auf jeder Festplatte wird zum Testen am Anfang der Platte eine (nach 4Kb Sektoren ausgerichtete) 50GB Partition angelegt, um sicherzustellen, dass die Partition und damit die Tests im schnellsten Bereich der Platte durchgeführt werden.
Die Tests bestehen jeweils aus einem
# bonnie++ -u root -n 512

1. Test btrfs direkt auf den drei Partitionen im Raid1 Modus
# mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sdb1 /dev/sdc1

Ergebnis
1.96,1.96,btrfs_raid1,1,1292113629,7424M,,350,91,89961,17,41739,11,3011,87,139103,9,263.0,150,512,,,,,30362,85,535162,100,21496,99,30677,85,584015,99,20249,99,21532us,420ms,748ms,14832us,95677us,358ms,231us,494us,1375us,331us,20us,1022us

Achtung, df kommt mit btrfs im Raid1 Modus nicht klar und zeigt die Größen falsch an (als wäre es Raid0).
2. Test ZFS direkt auf den drei Partitionen im Raid1 Modus
# zpool create myraid mirror /dev/sda1 /dev/sdb1 /dev/sdc1

Ergebnis
1.96,1.96,zfs_raid,1,1292108014,7424M,,30,11,27844,2,23145,3,3949,96,80796,4,314.7,2,512,,,,,4287,7,70823,14,3347,4,4230,7,611378,100,301,0,373ms,2101ms,2037ms,25926us,156ms,2110ms,1491ms,17110us,3134ms,1588ms,92us,3147ms

Die FUSE Anbindung von ZFS bremst hier vermutlich etwas.
Als nächstes wird ein Software Raid1 angelegt
# mdadm --create /dev/md0 --verbose --level=raid1 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

3. Test ext3 auf Software Raid1
1.96,1.96,raid1_ext3,1,1292286780,7424M,,698,98,76912,11,48566,5,3206,81,135758,6,435.5,5,512,,,,,42077,60,508867,99,639,0,41733,59,636969,99,424,0,25403us,725ms,821ms,95149us,110ms,1095ms,787ms,649us,35996ms,573ms,10us,32652ms

4. Test ext4 auf Software Raid1
1.96,1.96,raid1_ext4,1,1292360885,7424M,,623,97,98745,9,56047,6,3620,92,142781,6,462.2,4,512,,,,,41545,68,493172,99,796,0,41655,67,619372,100,531,0,12733us,2595ms,4905ms,15959us,53513us,105ms,692ms,625us,39063ms,692ms,15us,30990ms

Filesystem benchmark raid1
ZFS über FUSE fällt klar zurück.
Jetzt wird ein Software Raid5 angelegt
# mdadm --create /dev/md0 --verbose --level=raid5 --chunk=128 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

5. Test ext3 auf Software Raid5
1.96,1.96,raid5_ext3,1,1292356925,7424M,,663,98,109456,16,55972,7,3234,88,214047,11,374.8,5,512,,,,,40946,59,509454,99,619,0,42593,61,643011,99,398,0,12410us,654ms,222ms,49612us,113ms,1147ms,969ms,633us,29712ms,686ms,15us,24167ms

6. Test ext3 auf Software Raid5, richtige Werte für stride und stripe-width angegeben
# mkfs.ext3 -b 4096 -E stride=32,stripe-width=64

Ergebnis
1.96,1.96,raid5_ext3_strid,1,1292368077,7424M,,662,98,108479,16,56326,7,3637,93,214023,10,381.9,5,512,,,,,40947,60,504310,100,611,0,40727,59,626770,99,402,0,12437us,880ms,231ms,10512us,73266us,857m
s,969ms,633us,28396ms,770ms,17us,23632ms

6. Test ext4 auf Software Raid5
# mkfs.ext4 -b 4096 -E stride=32,stripe-width=64

Ergebnis:
1.96,1.96,raid5_ext4_strid,1,1292366374,7424M,,644,98,149946,14,60216,7,3623,92,212709,10,420.2,6,512,,,,,41484,69,489743,99,697,0,42810,69,620403,100,454,0,12423us,223ms,221ms,28187us,141ms,145ms,675ms,641us,22641ms,535ms,17us,22297ms

7. Test ext3 auf LVM auf Software Raid5
# mkfs.ext3 -b 4096 -E stride=32,stripe-width=64

1.96,1.96,raid5_ext3_strid_lvm,1,1292365464,7424M,,658,97,106858,16,56228,7,3447,88,213396,11,391.6,5,512,,,,,39319,57,507058,99,588,0,41440,60,635619,99,392,0,12053us,429ms,221ms,21754us,157ms,818ms,879ms,633us,27319ms,689ms,22us,27064ms

Filesystem benchmark raid5
Wie man sieht, liegen die Werte relativ nahe zusammen. Die stride Option beim Erzeugen der ext Dateisystem zeigt keinen Unterschied, dafür sieht man dass ext4 (wegen der extent Option?) schnell große Dateien schreiben kann. Raid1 liegt erwartungsgemäß beim Lesen zurück, beim Raid1 liest der Linux Kernel nur von einer Platte, bei Raid5 muss er von mehr als einer parallel lesen.
Falls man unentschieden ist, ob man noch ext3 oder schon ext4 nutzen soll, sind die Zeiten für ein fsck vielleicht eine Entscheidungshilfe:
Filesystem benchmark fsck
Die Werte sind einmal mit zwei 600GB Dateisystemen gemessen worden. Einmal leer und einmal mit je 285GB verteilt auf 27.000 Dateien. Die Ausfallzeit von 15 Minuten pro Dateisystem in dieser Größe ist sicher nicht zu vernachlässigen.

Siehe auch

30-12-2010 23.14

2010-12-17

Festplattentest 2TB Platten, 4Kb Sektoren

LinuxSpieleComputer
Im Test:
sda: Segate ST32000542AS
sdb: Samsung HD204UI
sdc: Wester Digital WDC WD20EARS-00M

Einen ersten Überblick verschaffen
# hdparm -t
sda: Timing buffered disk reads: 336 MB in 3.01 seconds = 111.54 MB/sec
sdb: Timing buffered disk reads: 392 MB in 3.01 seconds = 130.31 MB/sec
sdc: Timing buffered disk reads: 360 MB in 3.00 seconds = 119.86 MB/sec

Die Samsung Platte liegt hier klar vorne, gefolgt von der Western Digital, Schlusslicht ist die Segate.
Als nächste am Anfang jeder Platte (wo die schnellsten Bereiche liegen) eine 50GB große Partition anlegen
# fdisk -ul
/dev/sda1 63 97659134 48829536 83 Linux
/dev/sdb1 63 97659134 48829536 83 Linux
/dev/sdc1 63 97659134 48829536 83 Linux

Dabei wurde bewusst nicht darauf geachtet, dass die Partitionen mit einem Sektor anfangen, der durch 8 teilbar ist (wie z.B. 64). Sollte die Platte intern also 4Kb Sektoren benutzen (entspricht 8 Sektoren a 512 Byte), fängt der Sektor 63 mitten in einem der internen 4k Sektoren an. Liest man von dort aus in 4Kb Schritten (was durchaus üblich ist), muss man mehr als einen der internen Sektoren lesen, um die gewünschten 4Kb zu erhalten.
Nächster Test, schreiben von einem GB per dd auf die drei neu erzeugten Partitionen, je schneller, je besser
sda: 13.971 s
sdb: 15.489 s
sdc: 26.188 s

Die Western Digital Platte bleibt hier deutlich hinter den Erwartungen zurück. Diese Platte ist auch die einzige der drei Platten, mit einem aufgedruckten Warnhinweis bezüglich der 4Kb Sektoren Problematik. Aber auch die Samsung Platte hätte nach den hdparm Ergebnis mehr erwarten lassen.
Im nächsten Test werden die Partitionen so angelegt, dass sie bei Sektor 64 beginnen. Sollte die Platte intern mit 4Kb Sektoren arbeiten, fällt der Beginn der Partition mit dem Anfang eines solchen Sektors zusammen. Liest man von hier immer in 4Kb Schritten, braucht man pro Lesevorgang oder Schreibvorgang nur genau einen internen Sektor.
# fdisk -ul
/dev/sda1 64 97656314 48828125+ 83 Linux
/dev/sdb1 64 97656314 48828125+ 83 Linux
/dev/sdc1 64 97656314 48828125+ 83 Linux

Wieder wird ein GB per dd auf die drei Partitionen geschrieben
sda: 13.615s
sdb: 11.287s
sdc: 13.208s

Ganz offenbar profitieren sowohl die Samsung als auch die Western Digital Platte von einem Ausrichten (align) der Partition an einem durch 8 teilbaren Sektor.
Im nächsten Test wird auf den erzeugten Partitionen ein bonnie++ Test durchgeführt
# bonnie++ -u root -n 512
sda,6576M,39700,98, 77372,24,40967,14,32954,98,112160,16,306.9,1,512,50587,70,454632, 99, 893,1,22657,32,548429,100,629,1
sdb,6576M,40455,98,108838,31,56403,16,36143,96,131137,17,196.6,0,512,50615,69,468475,100,1447,2,13017,18,543836,100,866,1
sdc,6576M,41366,98, 82335,25,44983,15,32218,98,118325,17,268.6,1,512,46621,66,407005,100,1156,2,38748,55,547418, 99,836,1

sda sdb sdc
Lesen 32954 36143 32218
LesenBlock 112160 131137 118325
Schreiben 39700 40455 41366
SchreibenBlock 77372 108838 82335

Disc performance 2TB drives
Sowohl beim blockweisen Lesen als auch beim blockweisen Schreiben setzt sich die Samsung Platte wieder ab.
Im letzten Test wird schließlich mit zcav noch ermittelt, wie sich die Geschwindigkeit der Platten von innen nach außen verändert
zcav 2TB drives
Hier zeigen sich keine großen Überraschungen.

Siehe auch

17-12-2010 03.24

2010-12-14

CPU Benchmark Intel Core 2 Duo 3GHz vs. AMD Athlon II X3 2.30GHz

Computer
Kleiner Benchmark, welche CPU kann schneller Kernel 2.6.36.2 kompilieren:
tar xjf linux-2.6.36.2.tar.bz2
cd linux-2.6.36.2
make defconfig
time make -jX bzImage modules

Wobei mit -j erst nur ein Thread benutzt wird, dann zwei, drei, vier und schließlich fünf. Kleinere Werte sind hier natürlich besser (schneller fertig).
CPU Benchmark Intel Core 2 Duo 3GHz vs. AMD Athlon II X3 2.30GHz
Wie man sieht, ist der Intel(R) Core(TM)2 Duo CPU E8400 mit einem Thread deutlich schneller als der AMD Athlon(tm) II X3 405e 2.30GHz. Sobald der Athlon mit -j3 all seine drei Kerne auspielen kann, holt er den Core 2 Duo mit seinen 2 Kernen dann (zufällig) fast auf die Sekunde genau ein. Für -j mehr Kerne anzugeben, als man tatsächlich besitzt, führt zu keiner Verbesserung mehr.
14-12-2010 01.35

2010-11-24

Debian: Squeeze

DebianComputer
cat /etc/debian_version
squeeze/sid
23-11-2010 02.47
Powered by PHP Created with Xemacs Valid rss 2.0! Valid XHTML 1.0! Valid CSS!