# Wednesday, November 11, 2009

Alle Gammelfleischverfahren in Deutschland wurden eingestellt

Gerade auf Phoenix gesehen: Ein Lebensmittelkontrolleur aus Frankfurt erzählt, dass alle Verfahren wegen Gammelfleischs zumindest im Raum Frankfurt eingestellt wurden, weil nur der Handel mit Gammelfleisch strafbar ist, nicht aber der Besitz. Und bisher wurde immer nur der Besitz nachgewiesen. Da kann man eigentlich nur mit dem Kopf schütteln...

Wednesday, November 11, 2009 10:08:13 PM (W. Europe Standard Time, UTC+01:00) #  Comments [0] | Trackback
# Thursday, November 05, 2009

Quick-GPS verweigert die Aktualisierung

Sollte Quick-GPS, ein Tool für Windows Mobile, um die Bahndaten der GPS-Satelliten für einen schnelleren Fix vorzuhalten, einmal mit der Fehlermeldung

Datenaktivierung fehlgeschlagen
Die Ortseinstellung muss aktiviert sein, damit die aktuellsten Satellitendaten für die Beschleunigung der GPS-Positionierung genutzt werden

die Aktualisierung der Bahndaten quittieren, nachdem diese erfolgreich heruntergeladen wurden, hilft ein Neustart des Gerätes. Was sich dort genau verhakt, ist mir nicht bekannt, aber aktuell kenne ich keinen Weg, die Übernahme der Daten wieder funktionsfähig zu bekommen.

Thursday, November 05, 2009 7:53:00 PM (W. Europe Standard Time, UTC+01:00) #  Comments [0] | Trackback
# Monday, September 07, 2009

Led Lenser M5

[Trigami-Review]

Für einen Produkttest erreichte mich die Taschenlampe Led Lenser M5 der Firma Zweibrüder Optoelectronics. Dabei handelt es sich um eine durch einen Mikroprozessor gesteuerte LED-Taschenlampe.

IMG_1089_1 

Lieferumfang

Die Taschenlampe kam in Verbindung mit einer Menge nützlichem Zubehör in einerSmartCard formschönen Schachtel. Beginnen wir mit der Smart Card. Dies ist eine prägnante Bedienungsanleitung mit den wichtigsten Schaltfunktionen der Lampe im Format einer ID-1-Karte, sie eignet sich also bestens für die Hosentasche. Neben der Smart Card gibt es eine eigentlich alles umfassende und trotzdem recht kurze Bedienungsanleitung in Papierform.

Als nächstes ist eine praktische Handschlaufe enthalten, die man an einer entsprechenden Öse am Ende der Lampe befestigen kann.

Wer die Handschlaufe nicht benutzen möchte, die Lampe aber trotzdem immer griffbereit wünscht, kann die Nylontasche zur Befestigung am Gürtel verwenden. Die Tasche lässt sich mit Hilfe des beiliegenden Karabiners aber auch einfach am Rucksack oder dem Materialhaken unterbringen.

Mit der handelsüblichen AA-Batterie, welche kostengünstig nachgekauft werden kann, ist dann der Lieferumfang vollständig und alles nötige vorhanden, um die Lampe in Betrieb zu nehmen.

IMG_1111_1

Inbetriebnahme und erster Eindruck

Die Inbetriebnahme gestaltet sich Taschenlampengerecht. Batterie einlegen (auf die korrekte Polung achten) und loslegen. Die Lampe liegt gut in der Hand, sie ist sehr hell und die Bedienung geht flott von der Hand. Machen wir uns also ans Eingemachte.

Ausführliche Beschreibung

Bei der Led Lenser M5 handelt es sich nicht um eine übliche Taschenlampe. Sie ist, wie der Name schon suggeriert, mit einer LED als Lichtquelle ausgestattet. Für die LED sprechen:

  • Geringere Verlustleistung durch Abstrahlung von Wärme
  • Längere Haltbarkeit als eine Glühlampe
  • Robuster im härteren Einsatz

Durch die geringere Verlustleistung der LED kann diese mit der gleichen Energiemenge entsprechend heller oder länger leuchten, je nach Einsatzzweck. Da nun eine LED im Normalfall immer die gleiche Menge Licht abgibt, mussten sich die Entwickler etwas einfallen lassen. Und hier kommt der Mikrochip ins Spiel, welcher der Lampe auch ihren Namen gibt (das M steht eben für Mikrochip). Mit Hilfe dieses kleinen Chips kann die LED mit “Vollgas”, im blendfreien, gedimmten 15%-Modus oder Strobe Modus betrieben werden. Der Strobe Modus erzeugt ein grelles Blitzen, was zur Selbstverteidigung eingesetzt werden kann.

Die LED ist aber nur die erste Besonderheit der M5. Als nächstes wirklich interessantes Feature ist das Speed-Focus-System mit seiner Gleitschlittenmechanik zu nennen. Dies ermöglich es, die Lampe mit einer Hand zu fokussieren, da einfach nur der Lampenkopf mit Daumen und Zeigefinger vor- und zurückgeschoben werden muss. Außerdem besteht es nicht wie bei anderen Lampen aus einem einfachen verschiebbaren Reflektor, sondern aus einem Reflektor in Kombination mit einer Linse, dem sogenannten Advanced Focus System. Damit lässt sich das Licht viel besser auf den gewünschten Bereich bündeln. Es wird so ein klar abgegrenzter Spot oder eine homogen ausgeleuchtete Fläche angestrahlt.

Das hört sich auf den ersten Moment sehr fragil und fehleranfällig an, ist es aber nicht. Die Lampe ist spritzwassergeschütz in einem robusten Metallgehäuse untergebracht, kann im Aquarium versenkt oder mit dem Auto überrollt werden, ohne dass ihre Funktionsfähigkeit beeinflusst würde.

Um die Verlustleistung weiter zu minimieren und die Lampe robuster zu machen, sind die Kontakte hartvergoldet. Somit wird zum einen Korrosion vermieden, welche den Übergangswiderstand negativ beeinflusst und zum anderen werden die Kontakte damit unanfälliger gegen eventuell austretende Batteriesäure.

Sollte trotz der robusten Bauweise mal etwas kaputt gehen, muss nicht gleich eine Neue her. Die Lampe ist modular aufgebaut, sodass lediglich das defekte Teil getauscht werden muss.

Der aus meiner Sicht einzige Wermutstropfen ist der am Lampenende angebrachte Schalter. Für manche Anwendungszwecke ist dies durchaus sinnvoll, hält man die Lampe jedoch mit dem Daumen nach vorne, um das Speed-Focus-System zu bedienen, muss man die zweite Hand zu Hilfe nehmen, um die Lampe ein- oder auszuschalten.

Technische Details

Gewicht 74g
Länge 11cm
Durchmesser Kopf 2,1cm
Durchmesser Schaft 1,8cm
Leuchtdauer 15% ca. 8 Stunden
Lichtstrom 88 Lumen

Wie man auf dem folgenden Bild sehen kann, eignet sich die Lampe nicht nur als Lampe, sondern man kann sie auch zur Fotographie einsetzen. Durch die tageslichtähnliche Farbtemperatur lässt sie sich sehr als Spot nutzen, um bestimmte Bildbereiche hervorzuheben. Alternativ kann sie mit ihrer homogenen Ausleuchtung das komplette Motiv aufhellen.

IMG_1036_1

Außerdem gibt es für verschiedene Lampen der Firma Zweibrüder Optoelectronics Halterungen fürs Fahrrad. Auch wenn sie nicht nach der StVO als Beleuchtung im Straßenverkehr zugelassen sind, sind sie meiner Meinung nach doch um längen besser als manche Fahrradlampe. Wer sein Fahrrad also als Sportgerät nutzt, sollte die LED Lenser als Beleuchtungsalternative unbedingt in Betracht ziehen.

Weitere Informationen

Sehr viele Informationen zur Technik und interessante Anwendungsmöglichkeiten und –beispiele gibt es auf der allgemeinen LED Lenser-Seite. Dort gibt es außerdem eine rührige Community, die den Kontakt zu den Entwicklern herstellt. Somit kann jeder Anwender Einfluss auf zukünftige Entwicklungen nehmen.

Monday, September 07, 2009 6:29:00 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [0] | Trackback
# Saturday, August 29, 2009

Eine Anwendung nur einmal öffnen

Gerade bin ich in Klaus’ Blog auf einen Post gestoßen, der mich etwas irritiert hat. Im deutschen stackoverflow.com tauchte die Frage auf, wie man eine Anwendung so gestalten kann, dass sie nur einmal gestartet werden darf. Dafür nimmt ja bekanntlich einen Mutex, da dieses Verriegelungsobjekt systemweite Gültigkeit hat und daher zwar nicht explizit für diesen Fall geschaffen wurde, sich aber am besten von allen Verriegelungsobjekten dafür eignet.

Klaus präsentiert jedoch einen Vorschlag, den er persönlich besser findet. Er ermittelt über die statische Methode Process.GetProcesses alle im System vorhandenen Prozesse und sucht dann den Prozess, der den Namen seiner Anwendung trägt. Warum er Mutexe meidet und lieber über alle Prozesse iteriert, sagt er leider nur in einem Kommentar:

Mit Kanonen auf Spatzen ist da noch untertrieben.[..]

Auf Peter Buchers Kommentar, man möge doch einen Mutex verwenden Antwortet Klaus:

Hallo Peter,
ich weiß dass viele den Mutex bemühen. Doch gerade die Verwendung eines Mutex, und er muss als System-Mutex registriert werden, verlangt einiges an Disziplin. Der Mutex muss sauber gegen Exceptions abgesichert werden, er muss auf alle Fälle freigegeben werden und der Benutzer muss über die nötigen Rechte verfügen.
Um all das zu umgehen, hab ich mir diese einfache "use and forget" Methode überlegt.

Allerdings ist es nicht die Vorgehensweise, einen Mutex zu verwenden (je nach verwendetem Konstruktor), sondern seine eigene, bei der der Benutzer über die nötigen Rechte verfügen muss.

Die Methode Process.GetProcesses erfordert vollen Systemzugriff, also muss die Anwendung in der Sicherheitsgruppe FullTrust ausgeführt werden.

Dass man sich bei Verriegelungsobjekten Gedanken darüber machen muss, wie man sie sauber freigibt, sollte in Zeiten des Multithreadings jedem Programmierer klar sein. Gegen Exceptions kann er über den globalen ExceptionHandler abgesichert werden, den ebenfalls jede Anwendung haben sollte, um Unhandled Exceptions protokollieren zu können. Bei einem sauberen Systemdesign ist der “Mit dem Kopf durch die Wand”-Methode von Klaus nicht unbedingt die einfachere Alternative.

In den letzten Jahren ist das Thema Sicherheit immer mehr in den Fokus gerückt. Microsoft versucht, die Programmierer von Windows-Software dazu zu bewegen, sich endlich an die Implementierungsvorschriften zu halten, damit es möglich werden kann, dass ein Windows-Benutzer nicht grundsätzlich Administrator sein muss, um seinen PC benutzen zu können. In diesen Zeiten kann ich den Hinweis von Klaus daher nicht unkommentiert stehen lassen, vor allem, da er nur einseitig eine Halbwahrheit beschreibt.

Saturday, August 29, 2009 9:33:00 AM (W. Europe Daylight Time, UTC+02:00) #  Comments [2] | Trackback
# Saturday, August 22, 2009

stackoverflow nun auch auf deutsch

Ja, es gibt eine deutsche Version von stackoverflow.com: codekicker.de

Laut der Seite selbst existiert codekicker.de seit circa einem Monat. Und ist im Grunde ein stackoverflow-Klon. Klaus findet es eine Bereicherung der deutschen .NET-Community, ich halte es eher für eine Separation, da alle Fragen von codekicker nur der deutschsprachigen, nicht jedoch der weltweiten .NET-Community zur Verfügung stehen. Und die Sprache der weltweiten Community ist nun einmal Englisch. Daher ist codekicker aus meiner Sicht überflüssig. Jedenfalls so lange, bis mir die Suchmaschine meines Vertrauens als Treffer einen Link zu codekicker präsentiert und keinen zu Stackoverflow.

Saturday, August 22, 2009 1:48:00 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [0] | Trackback
# Thursday, August 06, 2009

WaitOne(Int32) erzeugt MissingMethodException

Heute bin ich über ein Problem gestolpert, das mich etwas schockiert hat. Wir setzen NUnit in Verbindung mit CruiseControl für den Test eines Embedded Systems ein. Die NUnit-Test werden mit .NET 3.5 entwickelt. Um mit dem Device kommunizieren zu können, gibt es ein proprietäres Netzwerkprotokoll, für das wir eine .NET-API entwickelt haben. Diese API wird gegen .NET 2.0 und .NET CF 2.0 kompiliert.

In meiner letzten Erweiterung der API habe ich unter anderem eine Ressource mit einem Mutex verriegelt. Der anschließende Entwicklertest verlief unauffällig, sodass die neue API sozusagen “RTM” wurde und an den Testentwickler ging, der die neuen Tests gegen die API programmieren sollte. Dabei stolperte er relativ schnell über eine MissingMethodException. Interessant war, dass dies durch den Aufruf von Mutex.WaitOne(Int32) hervorgerufen wurde. Darauf konnte ich mir nun gar keine Reim machen, da diese Funktion so vertraut schien. Ist sie aber nicht.

Mutex.WaitOne(Int32) ist eine neue Überladung der Funktion WaitOne(). Bisher gab es diese ohne Parameter, WaitOne(), oder mit zweien, WaitOne(Int32, Boolean) und WaitOne(TimeSpan, Boolean). Die Überladungen WaitOne(Int32) und WaitOne(TimeSpan) sind erst mit dem Service Pack 1 für .NET 3.5 hinzugekommen. Prinzipiell sollten sie damit auch nur in.NET 3.5 verfügbar sein. In .NET 2.0 sind sie nun deshalb enthalten, weil die WaitHandle-Klasse im Namensraum System.Threading untergebracht ist, der in mscorlib enthalten ist. Diese Assembly liegt nur in der Version 2.0 vor. So lange also .NET 3.5 SP1 installiert ist, ist alles ok. Wenn nicht, ist das jedoch nicht so schön, da man während der Entwicklung den Fehler nicht bemerkt.

Hoffentlich ist das der einzige Fallstrick, der durch .NET 3.5 SP1 für .NET 2.0-Entwicklungen gelegt wurde. Oder kennt jemand andere?

Thursday, August 06, 2009 7:47:00 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [0] | Trackback
# Monday, July 20, 2009

Antwort auf die “Klage eines ungebackenen Entwicklers”

Ralf Westphal hat kürzlich einen Kommentar auf einen seiner dotnetpro-Artikel veröffentlich. Ich habe den Artikel noch nicht gelesen, allerdings möchte ich hier kurz Stellung zu dem Kommentar und Ralfs Antwort nehmen.

Ralf schreibt, dass er nicht verstehen kann, warum Betriebe Missstände in der Ausbildung, genauer der Berufsschule, nicht erkennen. Aus meiner Sicht liegt dies nicht nur darin begründet, dass in der Berufsschule keine “Experten” vorhanden sind. Dies wird sich wahrscheinlich von Schule zu Schule und auch von Lehrer zu Lehrer unterscheiden. Ich sehe das Problem viel mehr bei der Instanz, welche die Lehrpläne erstellt.

Ich erinnere mich daran, dass meine Berufsschullehrer immer sagten, die Schule habe auch eine allgemeinbildenden Lehrauftrag. Somit standen auch Sport, Religion oder Deutsch auf dem Plan. Im eigentlichen Lehrplan werden darüber hinaus ebenfalls Kenntnisse gefordert, die mit dem eigentlichen Beruf nichts zu tun haben. Wie man den Müll trennt, ist meines Erachtens nach nicht unbedingt ein Thema, was in einer Berufsausbildung thematisiert werden muss. Dies sollte eigentlich vom Elternhaus erledigt werden. In dieser Art sind einige Punkte im Lehrplan enthalten, die auf die (Berufs-)Schule “abgeschoben” wurden.

Dass die Ausbildungsbetriebe die Missstände nicht erkennen, möchte ich noch nicht einmal unterstellen. Ich sehe viel mehr eine Resignation in den Betrieben, da eine Einflussnahme nur sehr eingeschränkt möglich ist. Diese Einflussnahme wird dadurch erschwert, dass die Betriebe oftmals nur eine sehr geringe Anzahl Auszubildender in die Berufsschulen entsenden. Ich persönlich habe eine sehr gute betriebliche Ausbildung genossen, hatte einen sehr engagierten Ausbilder und auch einen Ausbildungsbetrieb, der immer wieder mit der lokalen IHK in Kontakt getreten ist, um auf grobe Missstände hinzuweisen. An den Ausbildungsinhalten selbst ist jedoch für einen mittelständischen Betrieb mit damals knapp 60 Mitarbeitern nichts zu ändern. Diese werden von den großen Betrieben, der Telekom und der Lufthansa, mit maßgeblich beeinflusst, wenn nicht gar diktiert. Und so richten sich hinderte Betriebe nach den Vorgaben einiger weniger. So lange dieser Missstand existiert, kann die betriebliche Ausbildung nicht das leisten, was man eigentlich von ihr erwarten sollte.

Natürlich steht es jedem Ausbildungsbetrieb frei, seine Azubis nicht in die Berufsschule zu entsenden, sondern sie selbst “vollständig” auszubilden. Aber oftmals bleiben dabei einige Themen aus der Strecke, die einen Großteil der Prüfung ausmachen, die weiterhin nur vor der IHK abgelegt werden kann. Welche kleine IT-Bude kann seine Azubis schon umfassend in die Warenwirtschaft einführen? Welcher Ausbilder ist in der Lage, seinen Schützlingen eine Mindestlagermenge oder eine chaotische Lagerung zu beschreiben? Welcher Betrieb hat überhaupt die Möglichkeit, einen Ausbilder so weit freizustellen, dass er den schulischen Part der Ausbildung übernehmen kann. Dies alles sind Probleme, die ein kleines oder mittelständisches Unternehmen an die Berufsschule binden, bei der sie ebenfalls nicht das Gewicht haben, eine “sinnvollere” Ausbildung einzufordern.

Monday, July 20, 2009 8:44:00 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [2] | Trackback
# Tuesday, June 23, 2009

Hanselminutes on stackoverflow.com

Well, I’m quite a bit behind, but I’m keeping up. I just listened to the two shows on Hanselminutes with the guys from stackoverflow.com (show 134, Scotts blog post for 134, and show 135 and the corresponding blog post). These shows were awesome. For me it was kind of kick in the butt not to read every piece of information I find about programming but to do at least anything. Besides that the way the topics were handled were awesome in these shows. I would appreciate getting more of those shows.

Tuesday, June 23, 2009 9:02:00 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [0] | Trackback
# Monday, June 22, 2009

Visual Studio 2008 stürzt nach Änderung des Fensterlayouts ab

Gerade bin ich über einen Fehler in VS 2008 gestolpert. Wenn man dort das Fensterlayout ändert, kann dies dazu führen, dass sich, um es mal positiv auszudrücken, die Laufzeit erheblich verkürzt. Durch Zufall bin ich über das Feature "Get help for this error" des ErrorReports darauf gestoßen, dass die Ursache die Änderung am Fensterlayout ist und es bereits einen Hotfix gibt:

Monday, June 22, 2009 12:23:23 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [0] | Trackback
# Wednesday, May 27, 2009

Stellungnahmen zur Internet-Zensur

Der deutsche Bundestag hat die Stellungnahmen verschiedener Organisationen und Verbände zur bereits vertraglich am Gesetz vorbei festgelegten Zensur des Internet veröffentlicht. Besonders hervorheben möchte ich hier einen Satz aus der Stellungnahme des BKAs:

In Dänemark und Norwegen wird die Einschätzung des Bundeskriminalamtes geteilt, dass
das World Wide Web den Einstieg für die Nutzung des Internet darstellt. [..]

Wednesday, May 27, 2009 6:08:00 PM (W. Europe Daylight Time, UTC+02:00) #  Comments [0] | Trackback