Archive for the ‘Technisches’ Category

Endlich habe ich mich mal dazu durch gerungen und bin zu einem Elektroladen mit genug Leuchtmitteln zur Auswahl gelaufen.

Dank eines Tipps eines Kollegen bin ich dann mal zum Regal mit LED Lampen gelaufen. Bisher hat mich der Preis abgeschreckt. Aber hier habe ich dann endlich eine Lampe gefunden, welche meine Bedingungen erfüllt hat:

  1. Tageslicht, also 6.200 Kelvin oder mehr
  2. Nicht zu teuer

Bei knapp 20 Euro bin ich mit der OSRAM 30W (365 lm), Power LED, Daylight Lampe echt zufrieden.

Ein kurzes Testbild mit meiner normalen Ausrüstung (mein Smartphone HTC Desire HD) hat ein echt gutes Ergebnis erbracht.

Jetzt kann ich nur noch wenig über die Beleuchtung verbessern. Es wird echt Zeit für eine gute Spiegelreflex Kamera. Smiley

IMAG0982

Vor ein paar Tagen hat ein Bericht über die versteckten Fähigkeiten des Motorola Xoom mein Interesse geweckt.

Es ging dabei um den Anschluss eines Keyboards und einer Maus mittels Bluetooth.

Das Ganze funktioniert sehr gut ab Android OS 3.1. Vorher konnte man die Geräte zwar koppeln, aber es gab wohl ein paar größere Problemchen Zwinkerndes Smiley

Animiert durch das gute gelingen habe ich mir von einem Kollegen noch einen micro-USB auf USB Adapter geliehen und mein Wireless Logitech Gamepad angeschlossen. Laut der Nvidia Zone (ist eine App von denen) kann man ein Spiel aus dieser Zone mittels des Gamepads steuern.

Und damit das Ganze auch entsprechend angezeigt wird, habe ich mir noch das passende Monitor Kabel besorgt.

Kurz und gut… Es funktioniert super! Smiley

1280×720 (sofern ich mich gerade richtig erinnere), Sound per HDMI Kabel (am TV mit der Soundbar ausprobiert), das Gamepad, die Maus und die Tastatur wurden sauber erkannt und haben einwandfrei funktioniert.

Ja, es ist ein Android Tablett, ja es man tatscht da mit den Fingern drauf rum und ja es ist totaler Quatsch, aber hey… Es macht Spaß so etwas rauszufinden und noch ein bissle mehr aus dem Gerät zu kitzeln.

Zum normalen Surfen, Chatten, Musik anhören und ein paar aus dem Fernsehen aufgenommene DRM freie Programme brauche ich nicht viel. Für alles andere habe ich meinen großen PC. Smiley mit geöffnetem Mund

Minecraft_XOOM

Bald ist der offizielle IPv6 Day und ich konnte es mir nicht verkneifen heute schon einmal ein paar Tests durch zu führen.

Nicht das meine Internet Anbieter meinen mich morgen mal kurz verarschen zu müssen und mir für einen Tag einen funktionierenden IPv6 Zugang anzubieten.

T-Mobile als UMTS Anbieter in meinem Fall hat natürlich wie nicht anders zu erwarten ein negatives Ergebnis gebracht:

t-mobile_ipv6_test

Es hätte ja auch mal funktionieren können Zwinkerndes Smiley

Mein anderer Internet Anbieter 1&1 schneidet leider auch nicht viel besser bei den Tests ab Trauriges Smiley

1u1_ipv6_test

Leider konnte ich auch trotz einer Suche bei 1&1 nichts zum Thema IPv6 für DSL Kunden finden.

Die Root-Server sind wohl schon IPv6 fähig, aber was hilft mir dies als DSL Kunde?

Dieser in meinen Augen sehr leicht verständliche Blogbeitrag von 1&1 erklärt die Probleme und Technischen Hintergründe detailliert genug, um zu verstehen worum es bei IPv6 geht: IPv6 – wann kommt das neue Internet?

Wie üblich bleibt nur das Warten auf den großen Knall. Die IPv4 Adressen reichen nur noch bis 2012 und vielleicht haben die Maya ja recht gehabt… 2012 geht die Welt unter… Weil nicht mehr genug IPv4 Adressen da sind Zwinkerndes Smiley

Normalerweise bin ich ja ein absoluter Microsoft User. Nicht weil ich Microsoft mag, nein weil es einfach funktioniert.

Aber ich war vor ein paar Tagen mal wieder in Bastellaune und da eh neue und größere Festplatten in meinen Fileserver sollten, machte ich mich auf die Suche nach einer kleinen und einfachen Lösung.

Verwöhnt von QNAP und Thecus sollte es natürlich etwas mit einem Web Frontend sein.

Nach Experimenten mit zwei anderen OpenSource Lösungen bin ich dann bei FreeNAS hängen geblieben.

FreeNAS_InetCute

Es funktioniert, erfüllt alle meine Wünsche, hat Spielraum für ein paar weitere Wünsche meinerseits und ein kleiner 1 GiByte USB-Stick langt als Bootmedium.

Wenn ich mir so ansehe was sich Windows 2008 Server selbst in der kleinsten Version da schon an Festplattenplatz krallt, dann fallen die wenigen MiByte auf einem USB-Stick nicht wirklich ins Gewicht.

Eine kleine Warnung oder Info aber zum Thema FreeNAS:

Versucht erst gar nicht das Booten vom Installationsmedium auf was anderes als ein CDROM auszulagern.

Klar… mit viel Zeit, Geduld und Erfahrung kann man das auch vom USB-Stick machen, aber…

Ich bin mal auf euer Gesicht gespannt wenn ihr vom USB-Stick bootet, zum Menüpunkt “Installation” kommt und die Installationsroutine euch was von “Kein CD-ROM gefunden” vorbrummelt … Zwinkerndes Smiley

GKrellM

Da ich bei der Installation und Konfiguration von GKrellM unter Windows auf ein paar Probleme gestossen bin, will ich hier mal posten wie ich sie gelöst habe. Eventuell hilft es auch anderen.

Aber bevor ich loslege, müssen zuerst ein paar Worte zu meinen Anforderungen geschrieben werden:

  1. GKrellM soll auf meinem Fileserver (Windows) als Service ohne GUI laufen.
  2. GKrellM soll auf meiner Fritzbox als Daemon ohne GUI laufen.
  3. Meine Hauptmaschine soll vom Fileserver, von der Fritzbox und von sich selbst die Daten anzeigen können.

GKrellM auf dem Fileserver (Windows)

Man nehme das Installationspaket von GKrellM for Windows, vergesse nicht SpeedFan zu installieren vorher und installiere GKrellM als “Service only”.

Danach kommt der einzige Punkt den man sehr gerne vergißt und später lange sucht wieso der Service nicht antwortet… Denkt dran den Port 19150 in der Firewall freizugeben.

GKrellM auf der Fritzbox

Sofern man eine Fritzbox hat, welche das kann, auf ihr Telnet aktiviert hat und stupide dieses HowTo befolgt hat, ist man schon fertig.

Aber bitte dran denken nachher Telnet wieder abzuschalten auf der Fritzbox.

Ach ja… GKrellMd startet nicht automatisch auf der Fritzbox! Da müßt ihr schon noch ein wenig mehr für machen.

Die Jungs und Mädels auf wehavemorefun.de sind echt fit und das Wiki ist eine Augenweide.

GKrellM Client auf der Hauptmaschine

Auch hier wieder wie bei “GKrellM auf dem Fileserver (Windows)” verfahren, nur diesmal als “Client only” installieren.

So… die Software ist installiert, was fehlt sind zwei kleine Parameter.

Wichtige Parameter

Wie üblich… Anleitung lesen hilft, aber für die bequemen unter uns:

gkrellm.exe -s SERVERNAME -P Port

Beispiel: gkrellm.exe -s INetCute -P 19150

Fertig :)

Bei mir liegen insgesamt drei Verknüpfungen auf dem Desktop. Für jede Maschine eine.

Klar kann man hier per Autostart, weiterer Konfiguration, MRTG etc. noch viel mehr machen.

Da mir noch die Temperaturanzeige der Platten fehlt und z.B. in der Fritzbox der Autostart von GKrellMd, werde ich hier bald erneut tätig werden und es wird ein Update geben von mir zu dem Thema hier im Blog.

Basteltag! :)

Man nehme Windows Server 2008 und Windows SQL Server 2008 und installiere dies auf einer Maschine…

Windows Server 2008

Windows Server 2008 ist einfach nur Creme :) Die Jungs von Microsoft haben verdammt viel gelernt und Sicherheit steht hier an sehr vielen Stellen an erster Position.

Lieber eine Sache zu viel per Default verbieten, als eine zu übersehen.

Per Default sind auch nicht viele Ports offen:

C:\Users\Administrator>netstat -a

Aktive Verbindungen

  Proto  Lokale Adresse         Remoteadresse          Status
  TCP    0.0.0.0:135            WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    0.0.0.0:445            WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    0.0.0.0:1433           WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    0.0.0.0:49152          WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    0.0.0.0:49153          WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    0.0.0.0:49154          WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    0.0.0.0:49155          WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    0.0.0.0:49156          WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    127.0.0.1:1434         WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    169.254.33.190:139     WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:135               WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:445               WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:1433              WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:49152             WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:49153             WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:49154             WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:49155             WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::]:49156             WIN-OZI5BOZ5IEJ:0      ABHÖREN
  TCP    [::1]:1434             WIN-OZI5BOZ5IEJ:0      ABHÖREN
  UDP    0.0.0.0:123            *:*
  UDP    0.0.0.0:500            *:*
  UDP    0.0.0.0:4500           *:*
  UDP    0.0.0.0:5355           *:*
  UDP    169.254.33.190:137     *:*
  UDP    169.254.33.190:138     *:*
  UDP    [::]:123               *:*
  UDP    [::]:500               *:*
  UDP    [::]:5355              *:*

Der eine oder andere Port dürfte eh aufgrund der VMWare Tools vorhanden sein, aber grundsätzlich gesehen schonmal ok.

Der IIS 7 selbst wird als eine Rolle installiert. Das absolut coole dabei ist, dass man nicht nur dann per Hand alle möglichen Optionen einstellen kann, sondern diese auch erklärt bekommt.

Dazu gehören Server Side Includes, ASP.NET, .NET Erweiterbarkeit, CGI, Authentifizierungsmodule… zu viel zum Aufzählen.

Nur die Warnmeldung nach der Installation irritiert ein wenig… ich konnte sie nicht finden…

Server 2008 Installationsdialog

Ich habe als Beispiel ein paar Optionale Module ausgewählt gehabt, welche man im Screenshot aufgelistet sehen kann. Insgesamt gesehen ist der IIS 7 auf den ersten Blick eine Runde Sache.

Der IIS 7 hinterläßt bei mir einen guten Eindruck und ich freue mich schon auf die ersten tiefergehenden Tests. :D

SQL Server 2008

Der SQL Server 2008 ist auf den ersten Blick auch leicht zu installieren. Schnell vergißt man aber das Database Engine Modul und wundert sich ein paar Minuten später, wieso kein SQL Server installiert ist.

Microsoft hat den SQL Server 2008 in viele kleine und oftmals getrennt installierbare Module zerlegt. Auf den ersten Blick seltsam, aber meiner Meinung nach sehr sinnvoll.

So kann man sich gezielt nur das Installieren, was man definitiv braucht.

Auch ansonsten ist die Installation sehr zügig, aufgeräumt und verständlich. Nur wieso er .NET 3.5 SP 1 braucht vor der Installation entzieht sich meiner Kenntnis.

Bisher bin ich erst auf zwei Warnmeldungen gestoßen, welche mir ein wenig seltsam anmuteten:

SQL Server 2008 Installationsdialog

SQL Server 2008 Warnmeldung

Ähm… ja… das als Warnmeldung zu deklarieren… naja… eine Information hätte es auch getan ;)

Ich bin ganz froh wenn .NET nicht so viel nach außen plaudern kann…

Scheinbar braucht der Reportingservice, welcher ein eigenständiges Modul ist, .NET 3.5 und setzt neuere Objekte/Methoden ein, welche erst mit SP1 dazugekommen sind.

Egal… es wird neben .NET 3.5 SP 1 noch ein weiterer Hotfix installiert, welcher aber auch auf der Installations-DVD enthalten ist.

SQL Server 2008 Warnmeldung

*Hust*

Auch hier eher eine Informationsmeldung. Klar muß man hier gezielt darauf achten wenn man Clustern will, Replikationen benötigt oder einen Reportingserver einsetzen will.

Insgesamt gesehen bin ich erstaunt wie dicht Windows 2008 Server ist und wir aufgeräumt der SQL Server 2008 erscheint.

In den nächsten Tagen werde ich mal schaun was so mit dem SQL Server 2008 geht.

Nachdem ich in den letzten Tagen angefangen habe meine Basisbibliotheken auch an andere weiter zu geben, mußte ich natürlich auch anfangen die Qualität weiter zu erhöhen. Was für mich persönlich reicht, muß für andere noch lange nicht genügen.

Sprich, ich kann mit einigen Nebeneffekten leben, andere aber nicht. Noch übler wird dies, wenn man Klassen/Methoden dann verwendet, dass Programm dann Fehler erzeugt und man nicht weiss, ob der Fehler am eigenen Programm liegt, oder an meiner Basisbibliohek.

Hierfür verwendet man üblicherweise Testtools wie z.B. NUnit. Aber es gibt es auch noch ein weiteres, sehr nützliches Tool.

Und zwar NCover.

Mittels NCover kann man unter anderem ermitteln, ob während der Laufzeit des eigenen Programms überhaupt alle Quellcodezeilen angesprungen worden sind. Nicht selten hat man bei Unittests nicht alle Möglichkeiten abgedeckt und später eventuell wichtige Quellcodebereiche werden erst gar nicht angesprungen.

Man sollte aber jetzt nicht davon ausgehen, dass Tools wie NUnit oder NCover alle Möglichkeiten abprüfen können. Jedes dieser Tools ist nur so gut, wie die zugrundeliegenden Unittests und das Ergebnis ist stark abhängig von den Rahmenbedingungen.

Bei mir wird NUnit ein fester Bestandteil meines Entwicklungsprozesses im Privaten Bereich werden. NCover kommt für finalisierende Tests hinzu, wird aber nur sporadisch eingesetzt werden.

Kleine Anmerkung am Rande: Ein Kollege meinte die Tage mal wieder zu mir, dass Unittests absolut unsinnig sind und den Entwicklungsprozess nur verlängern würden. Ja, sie verlängern ihn, dafür steigt die Qualität des Ergebnisses enorm und man hat später weniger Wartungsaufwände. Tja… es gibt halt immer wieder “Programmierer”, welche Quantität über Qualität stellen. Traurig, aber ich werde mir so eine Arbeitsweise nicht zu eigen machen. :D

Und wieder beginnt mein Leidensweg mit OpenSource Software.

Diesmal wollte ich mittels PDO, welche eine Datenbankschnittstelle unter PHP darstellt, auf einen SQL Server zugreifen.

Nach dem üblichen Hürdenlauf mit dem immer (!) noch verhunzten MSI-Installer von PHP, hatte ich zwar PDO am Laufen, aber es wollte nicht mit dem SQL Server reden.

Der SQL Server war korrekt konfiguriert, ich konnte mich mit einem extra für diesen Zweck angelegten Account auch einloggen und ihn verwenden. TCP/IP war auch aktiviert als Kommunikationsweg, der Port war definiert und in der Firewall freigegeben, es konnte also nichts mehr blockieren.

Trotzdem wollte PHP/PDO nicht mit dem SQL Server reden.

Hier nun meine Ergebnisse der Stundenlange Analyse, welche dann folgte:

In folgender PDO Doku steht das PDO_DBLIB für FreeTDS / Microsoft SQL Server / Sybase zuständig ist.

Folgt man dem Link der sich unter PDO_DBLIB verbirgt, dann kommt man zu einer Subseite der PHP-Doku, welche folgende Warnung beinhaltet:

Diese Erweiterung ist EXPERIMENTELL. Das Verhalten dieser Erweiterung, einschließlich der Funktionsnamen, und alles Andere was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko.

Im ersten Kommentar wird auf die PECL Page von PDO hingewiesen, welche dann unter anderem das Release 1.0 mit Datum 2005-11-26 enthält.

Vorhin war ich Neugierig und habe einfach mal auf den Link hinter dem zugehörigen Changelog Eintrag geklickt und da kam dann das:

Update code for API changes in PDO; no actual changes have been made to this driver.

Windows binaries can be found at:
http://pecl4win.php.net/ext.php/php_pdo_mssql.dll

however: you are *strongly* recommended to use PDO_ODBC instead of this driver on
Windows platforms.

** Changes **
- Fix Bug #34777; segfault when retrieving non-existent error info
- Fix Bug #35032; didn't find FreeTDS includes on some systems

PDO_ODBC werde ich auf gar keinen Fall verwenden, dafür ist die Gesamtperformance von ODBC zu schlecht. MySQL mit InnoDB will ich nicht einsetzen. Im Moment bewege ich mich dort wo es sofort geht, von OpenSource Software weg und setze immer mehr auf kommerzielle Kauflösungen.

Von daher fällt für mich der Zwischenschritt der Migration von MySQL nach MS-SQL weg und ich werde zusätzlich die Migration von PHP nach C# angehen müssen.

Das gefällt mir im Moment überhaupt nicht, aber ich werde wohl damit leben müssen.

Und was bleibt mir noch zu tun?

Genau! Die Benotung des Ganzen Konstrukts, wo da wäre, das…

Frickler Award

  • …die Doku von PHP alles andere als aktuell ist.
  • …bei PHP Sachen als Stable maskiert werden, welche noch nicht mal Ansatzweise als Stable gelten können.
  • …der Hinweis auf Probleme nur im Changelog auftaucht.
  • …man lieber auf den langsamen ODBC Treiber setzt, anstatt die vorhandenen Bugs zu fixen.
  • …man nur so zu aggieren scheint, weil es sich hier um eine Microsoft Datenbank handelt.

DING DING DING Und da war er der 5. Fricklerpunkt!

Und somit bekommt PHP/PDO den Frickler-Award der Woche!

Im Moment bemüht sich PHP redlich den Frickler-Award des Jahres zu bekommen.

So langsam stelle ich mir eine Frage… ist OpenSource Software immer so unreif?

Das letzte Beispiel zu dem Thema lieferte per Default immer NULL, abgesehen davon war die Implementation auch nicht vollständig korrekt.

TheUndeadable war so freundlich, mich auf den richtigen Weg zu bringen.

public IEnumerator<jobqueueentry> GetEnumerator()
{
  return _jobQueue.Values.GetEnumerator();
}

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
  return _jobQueue.Values.GetEnumerator();
}

FXCop ist ein feines Tool. Manche Warnungen die es anzeigt, kann man leicht lösen, bei einigen knallt man mit .NET Eigenarten zusammen.

Bestes Beispiel war IEnumerable.

FXCop meinte, es wäre sauberer, wenn ich IEnumerable; verwenden würde. OK, also machte ich mich an die Arbeit und stelle den Source um.

Und prompt lieferte der Compiler folgende Meldung:

does not implement interface member ‘System.Collections.IEnumerable.GetEnumerator()’

Tja… lange habe ich gesucht. 2 Bekannte haben sich das mit angesehen und erst nach langem Suchen sind wir auf folgenden Blogeintrag gestossen:
IEnumerable in .NET 2.0 Beta 2

public class JobListCollection : IEnumerable <JobQueueEntry>
{
  public IEnumerator<JobQueueEntry> GetEnumerator()
  {
    return null;
  }

  IEnumerator IEnumerable.GetEnumerator()
  {
    return GetEnumerator();
  }
}

Fazit:
Manche Fehlermeldungen sind so panne, da kann man echt nur noch mittels Google und viel Zeit hinter die Lösung kommen.