Warum ein Mac (Pro)?

Weil die Qualität einfach stimmt: So zum Beispiel bei einem aktuellen MacPro.

Da werkelt ein Quad-Core Intel Xeon mit 2,6 GHz in einem praktischen Gehäuse und das auch noch schön lautlos.

Außerdem ist ein super CD/DVD-Brenner verbaut: ein Hitachi HL-DT-ST DVD-RW GH41N. Nicht nur, dass das Gerät einen wundervollen Lärm produziert…

Zitat eines anderen Kunden:

Seriously, how the hell can DVD burner be so damn noisy in the 21st century?

Das Laufwerk versetzt einen zurück in die ersten Tage des DVD-Schreibens am Heim-Computer:

Vier verschiedene Marken von DVD-Rohlingen und zwei verschiedene CD-Rohlinge und es war selbst bei niedrigster Geschwindigkeit nicht möglich auch nur fünf wieder lesbare Scheiben zu produzieren.

Ja, sogar das selbe Laufwerk war oft nicht in der Lage, das Medium bei der Überprüfung des Brennvorgangs zu lesen.

Danke, Apple.

Da ich mir von dem Apple bring-in-Service (welch Fortschritt) keine Hilfe verspreche, habe ich mich zu einem Tausch entschlossen: ein LG Electronics GH22LS50 DVD-Brenner für 21 (!) Euro. Außer dass er sogar Lightscribe (hier fehlt nur noch ein gutes Mac-Programm) beherrscht, konnte er mit allen Medien problemlos umgehen.

PS: Scheinbar ist dies kein Einzelfall. Die Firmware war leider schon aktuell.

Adobe Download Manager… Fehler

Eine Frechheit ist es ja schon, dass man selbst als Firefox-Anwender zu dieser Erweiterung (Adobe Download Manager) gezwungen wird.

Aber dass bei der eigentlichen Installation später im Fehlerfalle keine aussagekräftige Fehlermeldung und kein Grund angegeben werden… da fängt man dann an, Steve Jobs zu verstehen ;-)

Nachtrag: Früher war der direkte Download-Link sehr offensichtlich platziert. Inzwischen ist er im Support-Bereich versteckt:

Hier geht es direkt zum Download des Flash-Plugins für Firefox (ohne Download Manager und ohne Zusatzsoftware!).

“Leise” = ohne BEEP!

Nach vielen Jahren ohne Desktop-Rechner habe ich vor wenigen Tagen nun noch nicht länger widerstehen können: eine Maschine zum Experimentieren musste her.

Um nichts zu überstürzen habe ich diverse Artikel in c’t & Co verfolgt. Dort wurde auch vor mangehaft konfigurierten “Prozessor-C-States” bei Komplettsystemen berichtet. Durch diese “C-States” kann der Prozessor beispielsweise einzelne Kerne mit einer höheren Taktfrequenz betreiben. Solange hauptsächlich ein Kern benötigt wird und die Temperatur unter der TDP bleibt, kann so ein i7-Prozessor bei Bedarf bis 3,4 GHz hochtakten. Ohne händisches “Übertakten” wohlgemerkt.

Nach Wochen – oder gar Monaten – hatte ich mein Traumsystem dann zusammen gestellt.

Allerdings bieten die günstigen Online-Händler ja meist nur Vorkasse an, wodurch die Ware erst bei Eingang des Geldes reserviert wird. Wenn dann nur noch die Hälfte verfügbar ist und weitere Artikel nicht mehr zum angepriesenen Preis geliefert werden können, vergeht einem schnell die Lust am Schnäppchen.

Das Resultat: ich habe einige Wunsch-Komponenten durch andere ersetzt und beim Händler vor Ort alles auf einen Schlag gekauft. (Was mich schon zum nächsten Thema bringt: warum wirbt man mit “dem (grossartigen) Service beim Fachhändler vor Ort”, wenn die Fähigkeiten der Mitarbeiter gerade einmal über Elektronik-Markt-Niveau liegen? – Aber egal. Ich wusste ja was ich haben wollte.)

Als Mainboard hatte ich nun ein Gigabyte GA-P55-USB3.

Nach dem Zusammenbau habe ich dann sofort im BIOS die C3/C6/C7-Support Optionen auf “Enabled” gesetzt. Und (vermutlich aus Angst aufgrund mangelnder Erfahrung beim Auftragen von Wärmeleitpaste … 0.04 Gramm!?) habe ich auch die Warnung vor Überhitzung aktiviert.

Nach der Einrichtung und der Freude über das super leise und flinke System sind mir leise, sporadisch ertönende Piepser aufgefallen. Ich wollte sie zuerst nicht wirklich als Piep-Töne bezeichnen, da sie so unregelmäßig auftraten und auch durch eine Verformung durch Temperaturänderungen hätten entstehen können.

Nach diversen Spielereien an den BIOS-Optionen bin ich auf ähnliche Berichte anderer Benutzer (ocassional motherboard beep) gestossen.

Angeblich ist ein Bug in der Umsetzung oder der Überwachung des C6-States für das Ansprechen der Temperatur-Warnung verantwortlich. Lösung: Abschalten der C3/C6/C7-Unterstützung.

WAAAS? Das kann ja nur ein Witz sein. Gerade deshalb wollte ich ja einen Prozessor dieser Art einsetzen. Nach einigen Tests habe ich herausgefunden, dass auch das Abschalten der Warnungen ausreicht um das Piepen zu unterdrücken.

Als sehr hilfreich bei der Suche nach einer Bestätigung für das richtige Arbeiten der Prozessor-Konfiguration hat sich wie auf dieser Seite beschrieben das Belasten einzelner und mehrere Kerne mittels “Core2MaxPerf” (zu finden als letzter Punkt im Abschnitt “Downloads”) erwiesen.

Client exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1

Gerade mal wieder etwas mit RMI gemacht.

An frühere Probleme habe ich mich sogar noch erinnert.

Und auch der gesamte Ablauf (Stub/Skeleton, Registry, Building) war klar, so dass ich ihn sogar ohne Eclipse Plugin für RMI (habe ich leider erst hinterher gefunden – NetBeans konnte das mal von Haus aus, irgendwann) implementieren konnte.

Alles ging ratz-fatz und ich war wirklich zufrieden. Bis mich beim Deployment (Ubuntu-Server / Windows-Clients) die Realität eingeholt hat:

Client exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused

Tausend ähnliche Diskussionen gibt es zu dem Thema. Die meisten hatten wohl eine falsche /ect/hosts (Beispiel-Problem hier, ggf. einzelne Einträge anlegen!), vergessen, dem Server zu sagen auf welcher IP er da eigentlich bereits (!) lauscht (java.rmi.server.hostname) oder oder oder…

Alles Fehlanzeige. Ich habe alles richtig gemacht. Nach einer knappen Stunde wusste ich, dass die Verbindung zwischen Client und Server nicht mit unterschiedlichen (Sun vs. GCJ – Gnu Compiler for Java) JREs funktioniert.

Vielleicht könnte das noch in die FAQ…

bootsblock: in neuem Gewand

Endlich habe ich Zeit gefunden das Aussehen anzupassen. Viel Spass.

UltraVNC: The Plugin could not be loaded. Please check its integrity.

Um mit UltraVNC verschlüsselte Verbindungen herzustellen, braucht man ein Plugin und generiert sich dann einen passenden Schlüssel im Einstellungs-Dialog.

Obwohl das Plugin bereits installiert und die Schlüssel verteilt waren, bekam ich folgende Fehlermeldung beim Verbindungsversuch:

The Plugin could not be loaded. Please check its integrity.

Da alle anderen Tipps keine Besserung brachten, versuchte ich mit dem “Sysinternals (MS) Process Monitor” das Problem einzugrenzen. Der Grund für den Fehler war, dass das Plugin daran scheiterte, im Pfad C:\Program Files\UltraVNC\msrc4plugin-tmp.d1 temporäre Dateien anzulegen. Seltsam allerdings, dass dies bisher niemandem aufgefallen ist. Als schnelle (wenn auch nicht saubere) Lösung, kann man den betroffenen Benutzern (in diesem Fall am VNC-Client-Rechner) einfach die entsprechenden Rechte für dieses Verzeichnis einräumen.

Weitere Lösungsversuche (für andere Problemursachen) mit dieser Fehlermeldung finden sich u.a. hier:

http://forum.ultravnc.info/viewtopic.php?t=3386
http://forum.ultravnc.info/viewtopic.php?t=4494

Das Problem hatte ich übrigens beim Erstellen und Testen eines UltraVNC-Single-Click (Remote-Support) Pakets. Dazu gibt es inzwischen sogar drei Varianten (inkl. Version mit Verbindungen über eigenen Relay-Server). Es lohnt sich, diese Lösung als (private) Alternative zu kommerziellen Produkten anzuschauen.

DVD-Film in Endlos-Wiedergabe / -Wiederholung / Endlosschleife

Für die Standalone-Präsentation von Filmen ist es geschickt, wenn die DVDs am Ende wieder von vorne anfangen zu spielen. Zwar gibt es auch DVD-Player die dies können, allerdings muss das über eine Repeat- oder Loop-Funktion meistens bei jedem Einschalten bzw. Abspielen eines Films erneut eingestellt werden. Für den unbeaufsichtigten Tagesbetrieb ist das eher unpraktikabel.

Daher habe ich nach einer (kostenlosen) Möglichkeit gesucht, eine DVD zu produzieren, die automatisch startet und am Ende wieder von vorne beginnt. Wer über entsprechende Software verfügt, sollte es problemlos mit einem professionellen Programm zur DVD-Erstellung auch schaffen.

Für alle anderen empfehle ich zwei Tools. Als erstes eines, zum Einlesen der DVD. Da einige dieser Tools einen zweifelhaften Ruf besitzen, möchte ich keines davon verlinken. Allerdings geht es in meinem Fall hier um selbst produzierte Filme, die keinen Schutz aufweisen und für deren Kopien ich das Einverständnis der Autoren habe. Für diesen Zweck gibt es eine Reihe von Programmen die DVDs einlesen, die keinen Schutz / keine Verschlüsselung aufweisen.

Als zweites Tool habe ich DVDStyler verwendet. Eventuell kann DVDStyler auch direkt den Film einer vorhandenen (eingelegten DVD) einlesen und weiterverwenden, allerdings hat dies bei mir nicht ganz geklappt. Außerdem gibt es von DVDStyler sogar eine “PortableApp”-Version.

In diesem Programm muss man den Film hinzufügen. Außerdem muss man scheinbar zwingend ein Menü anlegen, ansonsten war die DVD bei meinen Tests gar nicht abspielbar. Für meine Zwecke habe ich an erster Position auf der DVD ein leeres “vmMenü” angelegt und in dessen Eigenschaften unter “Vorbefehle” den Befehl “jump title 1;” (ohne Anführungszeichen) eingetragen. Den gleichen Befehl habe ich im darauf folgenden Film (Titel 1) bzw. bei mehreren Filmen im letzten Film unter “Nachbefehle” eingetragen. In den DVD-Eigenschaften habe ich die Option “Erstelle Sprungziele” aktiviert und “Erstelle das leere Menü falls nicht vorhanden” deaktiviert. Vielleicht geht das ganze auch mit anderen Optionen, aber so wie erklärt hat es bei mir genügt.

java.​awt.​Container.add() … validate()!

java.​awt.​Container:

public Component add(Component comp)
Appends the specified component to the end of this container. This is a convenience method for Container.addImpl.

Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.

ffmpeg: Convert .ogv to .flv: Unsupported codec (id=0) for input stream #0.0

Anstatt:

ffmpeg -i in.ogv -f flv -s 640x480 out.flv

die Audio-Streams neu zuordnen:

ffmpeg -i in.ogv -f flv -s 640x480 -map 0.1:0.0 out.flv

Workshop: Mit Zeichen-Kodierungen hantieren

Um Textdateien zwischen verschiedenen Zeichenkodierungen zu konvertieren, bieten viele Texteditoren entsprechende Funktionen an.

Diese Konvertierung kann man beispielsweise mit dem Tool iconv durchführen. Dazu kann man zuerst eine Liste der dem Tool bekannten Zeichenkodierungen anzeigen lassen:

iconv -l

Zu beachten ist dabei, dass die Bezeichnungen der Zeichenkodierungen je nach Betriebssystem variieren. Wenn man die passenden Kodierungen gefunden hat, gibt man Quell- und Zielkodierung für die Konvertierung an (hier von MACROMAN nach ISO-8859-1):

iconv -f MACROMAN -t ISO-8859-1 source.txt > result.txt

Falls ein Zeichen in der Ziel-Zeichenkodierung nicht vorhanden ist, gibt iconv eine Fehlermeldung wie diese aus:

iconv: illegal input sequence at position 43

Damit das Programm mit Konvertierungsproblemen umzugehen weiß, kann man sich entscheiden, die betroffenen Zeichen entweder zu verwerfen (//IGNORE) oder diese Zeichen anhand einer internen Tabelle in ähnliche (in der Ziel-Zeichenkodierung enthaltene) Zeichen umzuwandeln. Die Optionen werden direkt hinter der Ziel-Kodierung angegeben:

iconv -f MACROMAN -t ISO-8859-1//TRANSLIT source.txt > result.txt

Um das verantwortliche Zeichen genauer zu untersuchen, kann man die Datei mit einem Hex-Editor betrachten und den oktalen Wert des Bytes an dieser Stelle heraus finden:

$ hexdump -cb source.txt
0000000   D   i   e   s       i   s   t       d   i   e       Q   u   e
0000000 104 151 145 163 040 151 163 164 040 144 151 145 040 121 165 145
0000010   l   l   -   D   a   t   e   i       u   n   s   e   r   e   s
0000010 154 154 055 104 141 164 145 151 040 165 156 163 145 162 145 163
0000020       W   o   r   k   s   h   o   p   s 324   !  \n            
0000020 040 127 157 162 153 163 150 157 160 163 324 041 012            
000002d

Anschließend kann man das gefundene Zeichen (hier mit dem Oktalwert 324) mit tr löschen (oder durch ein anderes Zeichen ersetzen):

tr -d '\324'