Content tagged DE
Vor eineinhalb Jahren schrieb ich, als ich gerade mein HSK2-Zertifikat beim
Konfuzius Institut in München abgeholt hatte. Heute nun habe ich wieder ein
Prüfungsergebnis bekommen: die HSK4-Prüfung vor zwei Wochen habe ich
bestanden. Das ist nun zwei Stufen höher und man merkt, dass die Stufen
zwischen den Prüfungen immer größer werden: von HSK2 zu HSK3 brauchte ich 9
Monate, von HSK3 zu HSK4 war es schon ein Jahr. Die Menge der notwendigen
Vokabeln verdoppelt sich auch jedes Mal, von der Gramatik ganz abgesehen.
(Wikipedia: Hanyu Shuiping
Kaoshi)
Die Prüfungen haben sich für mich als gute Methode herausgestellt
mein Lernen voran zu treiben. Es ist Ziel, Motivation und ein Paket an
Anforderungen, die ich mir vornehme.
Nächstes Ziel nun also: HSK5 ... irgendwann im nächsten Jahr. Aber die
Vorbereitung beginnt jetzt und das ist ab sofort meine Motivation.

Inzwischen steht mein Kopf eher schon beim nächsten Test. Trotzdem wollte ich
noch von meinen Prüfungen im September abschließend berichten:
Mein Gefühl hat sich bestätigt, ich habe beide Prüfungen bestanden. HSK1 sogar
ohne Fehler. Die Ergebnisse waren ab dem 16. Oktober online einsehbar. Hierzu
kann man sich einfach mit den persönlichen Zugangsdaten auf der Seite anmelden
über die der Test auch gebucht wurde und sieht dann
die Ergebnisse oder man kann auch ohne Login dort die Ergebnisse abfragen,
wenn man seinen Namen und die Admission-Ticket-Nummer eingibt. Am 9. November
war es dann soweit und ich konnte auch meine Zertifikate im Konfuzius Institut
München abholen.
Letzten Sonntag habe ich mein Chinesisch testen lassen. Ich hatte mich zu den
Prüfungen HSK 1 und HSK 2
angemeldet. Ursprünglich
wollte ich nur die niedrigste Stufe HSK 1 schreiben und meldete mich
entsprechend an. In der Vorbereitung merkte ich jedoch schnell, dass die
Anforderungen hierfür nicht so hoch waren wie ich dachte. Zwar gab es noch ein
paar Vokabeln, die ich nicht kannte, aber im Großen und Ganzen hatten wir den
Stoff längst im Unterricht behandelt.
Dann laß ich beim Konfuzius Institus München,
dass es auch möglich ist sich für zwei benachbarte Prüfungslevel gleichzeitig
anzumelden. Die Prüfungszeiten sind so geplant, dass dies geht. Das klang gut:
für HSK 1 konnte ich mich eh nicht mehr abmelden und ich könnte parallel
versuchen, ob ich nicht schon die nächste Stufe schaffe. Gedacht getan, ich
meldete mich auch hierfür an.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »

Wenn ich auf ein Meetup gehe, lautet die erste Frage immer „was machst du so?“.
Beginnt das typische Gespräch hingegen mit „benutzt du Clojure in der Arbeit?”,
bin ich auf der :clojureD in Berlin gelandet.
Am 24. Februar war ich auf meiner ersten Clojure-Konferenz. Nach einem Treffen
der Munich Clojurians war das
erst mein zweites Zusammentreffen mit anderen, die der Begeisterung dieser
Programmiersprache erlegen sind.
Es war ein tolles Erlebnis. Auf keiner Konferenz bisher hatte ich so den
Eindruck, dass alle einfach ein rießen Interesse an Softwareentwicklung haben
und alle dafür brennen neue Gedankenanstöße aufzunehmen. Keiner der einfach
nur seine Arbeit erledigt bekommen will. Ich hatte das Gefühl wirklich unter
den Besten zu sein, die es in meinem Beruf gibt.
Wie schade, dass anscheinend trotzdem das Potential der Sprache so oft noch
nicht genutzt wird. Obwohl ich im
Cognicast oft genug auch schon die
andere Seite gehört habe: Firmen, die darüber klagen zu wenige
Clojure-Entwickler zu finden. Die Antwort auf der :clojureD war leider öfters:
„nein, in der Arbeit nutze ich kein Clojure“.

Meine letzten IPv6-Tunnel werden langsam überflüssig. Seit letzter Woche haben
wir auch im Büro natives IPv6. Die Telekom hat uns auf einen NGN-Anschluss
umgestellt.
Setup
- Zugang zum Internet über VDSL der Telekom mit statischer IP
- Speedport als VDSL-Modem
- Linux-Box mit Debian terminiert PPPoE und verteilt es an zwei Subnetze
IPv6 aktivieren
Kurz zusammengefasst
Für den IPv6-Zugang muss der pppd IPv6 auf der PPP-Verbindung aktivieren. Die
Telekom benutzt dann Router-Advertisements (radv) um dem ppp0-Device eine
IPv6-Adresse zu geben. Soll IPv6 im LAN weiterverteilt werden, bekommen wir
Präfixe hierfür über Präfix-Delegation per DHCPv6. Letzteres kann aber nicht als
Ersatz für die Router-Advertisements genutzt werden, da die Telekom nur
Präfixdelegation darüber macht.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Mein einer Vorsatz für dieses Jahr ist es die Philosophie von Clojure zu denken.
Seit 2011 spiele ich mit Lisp und 2014 hatte ich meinen ersten Kontakt zu
Clojure, einem der Dialekte von Lisp. Der andere ist, ich möchte meine
Erfahrungen mit
Softwaretests
ausbauen. Bisher hatte ich vor allem an meinen Fähigkeiten mit Unit-Tests
gearbeitet und hierfür meinen Stil gefunden. Jetzt will ich automatische
Integrationstests in mein Standardrepertoire von Entwicklungstechniken
aufnehmen.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
In welchem Editor kann ich den besten Code schreiben?
Vim wie bisher, doch vielleicht besser
Emacs oder gar wie meine Kollegen mit
einer IDE? Die letzten Wochen habe ich getestet: zwei Wochen nur Emacs und zwei
Wochen nur IntelliJ als IDE
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Testgetriebene Entwicklung (TDD) funktioniert – überall. Sie scheitert nicht am
Kunden, den nicht Qualität sondern Tempo interessiert. Sie steht nicht im
Widerspruch zum jungen Projekt mit wenig Budget, das schnell Kunden gewinnen
muss um zu überleben. Sie hindert nicht daran schnell Features umsetzen zu
können. Ja, sie macht mir auch nicht (mehr) langsamer.
Es ist keine neun Monate her, dass ich das nicht glauben konnte. Mehrere Anläufe
hatte ich unternommen neben Code auch Tests zu schreiben. Länger als zwei
Monate ging das nie gut:
- Ich fühlte mich produktiver, wenn ich „richtigen“ Code statt Tests schrieb.
- Ich arbeitete in einem Team, das kein Interesse daran hatte Tests einzuführen.
- Es war nicht wichtig fehlerfrei zu arbeiten, die schnelle Umsetzung von neuen
Features war was zählte.
- Auch ohne Tests konnte ich relativ fehlerfrei entwickeln.
- Manchmal versuchten wir den Kunden zu überzeugen mit Tests zu entwickeln, aber
dieser hatte kein Interesse daran.
- Die Software an der ich gearbeitet habe war nicht besonders gut geeignet
testgetrieben entwickelt zu werden. Die Tests funktionierten solange gut wie
sie mit den knappen Beispiele aus Büchern gemacht wurden, aber unsere reale
Software war zu komplex dafür.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »

Die letzten Tage habe ich das Buch ARM Assembly Language – an
Introduction von J. R. Gibson
gelesen. Es ist eine Anleitung wie man ARM-Prozessoren in Assembler
programmiert. Geschrieben wurde das Buch als Lehrbuch an der Universität
Liverpool. Das merkt man, am Ende jeden Kapitels stehen Übungsaufgaben zum
Einprägen und Verständnis überprüfen.
Das Buch ist perfekt für Einsteiger in der Assemblerprogrammierung. Der Leser
erhält einen ausführlichen Überblick wie er in dieser Sprache programmieren
kann. Wird der Einstieg mit einer begleitenden Vorlesung und Übungen
unterstützt, so funktioniert das Buch noch besser. Es hilft aber auch, ein paar
Grundlagen der Zahldarstellung und der Bit-Manipulation schon zu kennen.
Im Buch wird die ARM-7-Architektur behandelt. Vor allem wird der Prozessor
ARM7TDMI betrachtet. Details zu den Prozessoren oder anderer Hardware findet man
aber nicht. Dadurch ist das Buch auf für die allgemeine ARM-Programmierung
interessant. Wer allerdings die Cortex-M-Prozessoren programmieren möchte, hat
mit diesem Buch nicht das richtige. Es behandelt nicht die THUMB-Befehle, die
der Cortex-M ausschließlich unterstützt.
Meine Bewertung: 5 von 5 Punkten für den Leser, der Assembler auf einem
ARM-Prozessor lernen möchte und motiviert sind auch die Übungsaufgaben zu
bearbeiten. Lesen alleine reicht nicht aus.

Endlich wissen was in C++11 neu ist, deswegen habe ich „C++11, Der Leitfaden
für Programmierer zum neuen Standard” von Rainer
Grimm gelesen. Ein dickes Buch mit
500 Seiten beschreibt was sich in der neuen Version seit 1998 geändert hat oder
neu ist. – Und das ist eine Menge.
Immer wieder war ich erstaunt über ungewöhnliche neue Konstrukte und neue
Syntax. Solch große Änderungen hatte ich einer reifen Sprache nicht
zugetraut. Meine Highlights in C++ sind:
- C++ iteriert Container jetzt mit einer for-each-Schleife. In neueren Sprachen
für uns schon lange Standard, können wir dies auch in C++11 nutzen;
- mit Lambda-Funktionen unterstützt uns C++ jetzt in der funktionalen
Programmierung – das funktioniert auch mit Templates;
- ganz verrückt sind rvalue-Referenzen und die Move-Semantik, übergebene Werte
werden nicht kopiert sondern zum Empfänger verschoben (das heißt wer das
Objekt in einem Funktionsaufruf übergibt hat es hinterher nicht mehr);
- ganz besonders mag ich, die neuen Datentypen wchar16_t und wchar32_t für
UTF-16 und UTF-32, im gegensatz zum bisherigen wchar_t wurde hier explizit
die Datenbreite definiert (wchar_t unter Linux hat 32 Bit, unter Windows nur
16 Bit);
- reguläre Ausdrücke existieren endlich auch in C++ und
- Smartpointer wurden sehr viel handlicher und einfacher zu verwenden.
Sehr mutig ist die Spezifikation auch weil sie eine neue Syntax für Funktionen
einführt. Bisher definieren wir eine Funktion in der Reihenfolge „Rückgabetyp,
Funktionsname und Parameterliste“. In C++ können wir den Rückgabetyp auch
hinter die Parameterliste schreiben:
auto fac(int n) -> int {
return n > 0 ? n * fac(n - 1) : 1;
}
Rainer Grimm geht die Änderungen leicht verständlich an: in drei Durchgängen
zeigt er zuerst nur was es neues gibt, im zweiten geht er weiter in die Tiefe
der Erweiterungen und im dritten geht er ins Detail. Er Leser kann sich so
schnell einen Überblick verschaffen und stolpert in den Details nicht darüber,
wenn in Beispielen auch eine andere Neuerung als die gerade erklärte schon
benutzt wird. Einziges Manko: im dritten Durchgang bei den Details wurde mir
etwas langweilig. Trotzdem ein großartiges Buch dem ich vier von fünf Punkten
gebe.
Modbus ist einer Feldbussystem. Eine Steuerung kommuniziert seriell über nur
zwei Adern mit mehreren Sensoren und Aktoren. Ich entwickle die
RemoteGuard. Diese erfasst
Sensordaten so und über andere Schnittstellen und kann dann Aktionen starten
oder Daten an unsere M2M-Plattform übertragen.
Für die Entwicklung muss ich oft Sensoren simulieren. Das geht gut und einfach
mit einem Arduino. Schnell etwas Hardware zusammengesteckt
und Software aufgespielt. Löten meist nicht nötig.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Wer einen authoritativen Nameserver betreibt sollte die eigenen Zonen mit
DNSsec sichern. Hier zeige ich euch, wie ihr einen
rekursiven Nameserver so einrichtet, dass der DNSsec-Signaturen prüft. Was ist
der Unterschied? Authoritative Nameserver sorgen beim Besitzer einer Domain,
dass diese gefunden werden kann. Rekursive Nameserver suchen für einen
Internetanschluss die richtige Verbindung zu fremden Domains.
Warum soll ich DNSsec aktivieren?
- Ich schütze mich damit gegen Angriffe auf Schwachstellen des DNS-Protokolls.
2008 entdeckte Dan Kaminsky eine Sicherheitslücke bei der über Cache
Poisoning
DNS-Einträge gefälscht werden können. Ohne DNSsec ist man nicht mehr sicher,
dass das DNS die richtige IP-Adresse zu einer Domain liefert.
- Ich kann das DNS nutzen um andere Daten gegen Manipulation geschützt
ablegen. Die ssh-Fingerprints-Einträge im DNS sind nicht mehr fälschbar; das
Zertifikat für meinen Webserver lässt sich auch überprüfen, wenn ich der
ausstellenden Zertifizierungsstelle nicht vertraue. Sogar selbst signierte
Zertifikate lassen sich
überprüfen. DANE oder
TLSA heißt der Standard. Er hat
das Potential die Verbreitung von Kryptografie im Internet zu fördern. Das
erste Mal überhaupt können nun [Zertifikate beim Mailserverbetrieb wirklich
getestet
werden.)[https://www.heise.de/netze/meldung/Verschluesselter-Mail-Transport-Posteo-setzt-als-erster-Provider-DANE-ein-2187144.html)
Zuvor musste ein Mailserver jedem Zertifikat vertrauen oder konnte nur
Verbindungen zu einem engen Zirkel anderer Provider
testen.
- DNSsec schützt gegen Spam, den der Provider anzeigt, wenn ich mich bei einer
Webadresse vertippe. Immer mehr Provider fälschen DNS-Ergebnisse und zwingen
ihre Nutzer bei Tippfehlern in der Webadresse damit auf die eigenen
Werbeseiten. Im Web nervt dies nur, andere Dienste haben viel größere
Probleme, wenn eine nicht existierende Domain aufgelöst werden kann. Das
Internet ist nicht nur Web!
- Ich lerne mehr über die Technik, die ich nutze. Ganz nach persönlicher
Einstellung kein Argument oder das wichtigste von allen. Im Moment sind
Admins, die sich mit DNSsec auskennen, ihren Kollegen noch zwei Kopflängen
voraus. Wer Erfahrung hat kann damit als Experte punkten und blickt in die
Zukunft des Internets.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Seit einigen Jahre macht sich WhatsApp auf den Smartphones meiner Kontakte
breit. Natürlich werde ich von meinen Bekannten auch immer wieder aufgefordert
das Programm doch zu installieren. Ich wollte das nie. Mir war es zuwider mich
auf einen proprietären Dienst einzulassen wenn es offene Alternativen gibt.
Diese offene und Anbieter übergreifende Alternative war und ist Jabber bzw. XMPP
(zwei Namen für das gleiche).
Nun ist dies erst einmal aber nur ein Protokoll und damit nichts was man
nutzen könnte. Was ein Jabber-Nutzer braucht ist ein Programm und
Diensteanbieter. Hierfür war meine Empfehlung bisher Google Talk. Als Programm
super integriert und vorinstalliert auf jedem Android-Telefon. Eine einfach zu
bedienende Oberfläche, die auch für einen „Normalmenschen“ verständlich ist.
Nichts was von Freaks für Freaks gemacht ist. Als Anbieter stand Google mit
einem super stabilen Dienst dahinter.
Bisher eine tolle Sache: einerseits konnte man komplett abgestimmt alles aus
einer Hand bekommen, andererseits konnte man mit Nutzern bei anderen Anbietern
chatten und wenn man wollte sogar einen eigenen Server installieren. Echt
klasse!
Mit meiner Weigerung ein geschlossenes Messaging zu nutzen und meinem
andauernden Hinweis auf die freie Alternative habe ich auch einige Freunde und
Bekannte zu Google Talk gebraucht.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Ich kann mal wieder von DHL berichten: ich habe dringend ein Buch benötigt und
Amazon konnte dies nur noch mit der Lieferoption „Morning Express“ am nächsten
Tag liefern. Nicht schlecht, dachte ich: da die Lieferung an einem Freitag und
ins Büro erfolgt, ist es super die Sendung „garantiert“ vor zwölf Uhr zu
erhalten.
Am Tag der Zustellung schaue ich also immer mal wieder aus dem Fenster des
Büros, wenn ein Paketdienst vorbeifährt. Mittag kommt immer näher und ich
wundere mich, dass die Sendung noch nicht angekommen ist. Es wird doch
hoffentlich alles klappen? Ich brauche das Buch dringend um mich auf einen
Kundentermin vorzubereiten.
Punkt zwölf Uhr kommt der Paketboote – fast ein wenig außer Atem – durch die
Türe und hat mein Paket in der Hand. „Das hat ja gerade noch geklappt,“ denke
ich schmunzelnd und nehme das Paket entgegen.

Wirklich verärgert hat es mich nun aber, als ich am Wochenende ins Tracking
von DHL geschaut habe. Ich wollte wissen, welche Uhrzeit DHL als
Zustellzeitpunkt erfasst hat. Dabei stelle ich fest, dass angeblich schon eine
halbe Stunde zuvor ein Zustellversuch stattgefunden habe, jedoch der Empfänger
nicht anzutreffen war. („Erfolgloser Zustellversuch. Empfänger nicht zu
Hause.“)
Was ist denn das für ein Unsinn? Die Lieferung ging an eine Firmenadresse.
Einerseits saß ich im Büro und habe auf die Lieferung gewartet und andererseits
waren zusätzlich auch noch Kollegen im Büro, die die Sendung genauso hätten
annehmen können – wenn denn jemand da gewesen wäre, der einen Zustellversuch
unternommen hätte.
Es scheint mir doch sehr, als habe der Kurier hier einfach schon
einmal einen Zustellversuch in seinem Gerät vermerkt, ohne dass er vor Ort
gewesen wäre. Vermutlich war im klar, dass es knapp wird mit der rechtzeitigen
Zustellung. Die Liefergarantie gilt nämlich nur für den ersten
Zustellversuch.

Vor ein paar Tagen habe ich bereits über einen Teil meines Nameserver-Setups mit Bind
geschrieben. Ich habe erklärt, wie DDNS mit bind
verwendet werden kann um beispielsweise Kunden die Möglichkeit zu geben
Änderungen an Ihren Zonen über ein standardisiertes Protokoll durchzuführen oder
die sich häufiger ändernde IP des Internetanschlusses zuhause immer aktuell im
DNS zu hinterlegen. Dabei habe ich erwähnt, dass ein interessantes Argument für
den Einsatz von DDNS zum Updaten von Zonen auch ist, dass bind in diesem Fall
sich automatisch darum kümmert diese erneut zu signieren. Wie dieses Setup
funktioniert möchte ich in diesem Artikel beschreiben.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Der Nameserver Bind bringt von Hause aus
die Möglichkeit mit, dass Änderungen in Zonen dynamisch durchgeführt werden
können. Dies kann zum Beispiel genutzt werden um selbst etwas wie DynDNS zu
realisieren. In der Tat nennt sich das was Bind da implementiert auch
DDNS. Spezifiziert ist das Protokoll in RFC 2136: Dynamic Updates in the Domain
Name System (DNS UPDATE).
Da ich heute eh den größten Teil dieses Textes als Mini-HOWTO für einen Kollegen
geschrieben habe, möchte ich ihn auch hier auf meinem Weblog für andere zur
Verfügung stellen. Alle hier verwendeten Befehle sind Befehle von Bind. Unter
Debian sind diese Utility-Befehle im Paket dnsutils
verpackt. Aktuell benutze
ich die Version 9.8.4 von Bind.
Ich zeige in diesem Artikel:
- wie man einen kryptografischen Schlüssel zur Sicherung des Zugriffs erstellt,
- wie die Konfiguration von Bind angepasst wird,
- wie dynamische Updates an Bind geschickt werden und
- was zu beachten ist, wenn weiterhin auch klassische Updates an der Zone
durchgeführt werden sollen.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Fehler bei der Initialisierung der ZKA-SIG-API-Umgebung
Notwendige Komponenten zum Betrieb der ZKA-SIG-API konnten nicht gefunden
werden. Eventuell liegt eine unvollständige bzw. fehlerhafte Installation
vor.
Diese Meldung habe ich heute bekommen als ich auf das S-Trust
Zertifikatsverwaltungssystem zugreifen wollte. Grund war, dass ich meine CSA-PIN
entsperren musste.
Als erstes habe ich die auf der Website von S-Trust gegebenen Ratschläge
ausgeführt:
- Das Tool "ZKA Komponenten aktualisieren" des Herstellers meines
Chipkartenlesegerätes ausgeführt.
- Eine spezielle Version des Treibers meines Chipkartenherstellers installiert
(was unständlich war, da schon ein neuerer Treiber auf meinem System
installiert war und zuvor der alte Treiber deinstalliert werden musste).
- Außerdem habe ich die installierten Module in meinem Chipkartenleser geprüft
und ebenso überprüft ob ein Firmwareupdate für meinen Leser verfügbar ist.
Trotz diversem hin und her und einigen Reboots hat es einfach nicht
funktioniert. Immer wieder kam die obige Fehlermeldung.
Ich musste also in den sauren Apfel beißen und die Hotline von S-Trust anrufen.
Das ist ärgerlich, da sie nur über eine 0900-Rufnummer erreichbar ist und solche
Anrufe ich nicht vom Festnetz tätigen kann. Mein Festnetzanbieter vermittelt
nicht zu 0900. Wohl oder übel musste ich also vom Handy aus anrufen. Mein
Mobilfunkanbieter verlangt hierfür stolze 1,79 € pro Minute.
Am Telefon hatte ich ohne große Wartezeit einen sehr freundlichen und
kompetenten Mitarbeiter. Sehr schnell hatte er das Problem erfasst:
Reiner SCT, der Hersteller meines Chipkartenlesegerätes installiert die Datei
zkasigapi.dll
in den Ordner $JAVA_HOME/lib/ext/x86
. Das Java-Applet von
S-Trust sucht diese DLL dagegen im Ordner $JAVA_HOME/bin
. Nachdem ich die
DLL-Datei vom ersten Ordner in den zweiten Ordner kopiert hatte funktionierte
alles einwandrei.
Wer hier für den Fehler verantwortlich ist (Reiner SCT oder S-Trust) kann ich
nicht beurteilen. Auf jeden Fall wäre es aber schön gewesen die Lösung für das
Problem auch auf der Support-Seite von S-Trust zu finden. Ich hatte nach der
Fehlermeldung gegooglet und nichts gefunden. – Mit meinem Blogpost hier hoffe
ich zumindest letzteres Problem für alle anderen denen es wie mir geht zu
lösen.
Schon länger habe ich eine zwiespältige Einstellung gegenüber „der Cloud“.
Manche würden wohl sogar sagen, das hätte ich schon immer gehabt. Allerdings
meine ich, dass ich „die Cloud“ bis vor etwa zwei Jahren eher ganz abgelehnt
habe. (Unter „Cloud“ verstehe ich jetzt nur das Ablegen auf Servern von fremden
Anbietern, insbesondere solchen bei denen ich nichts dafür zahle.)
Wie ich angefangen habe „die Cloud“ zu nutzen
Eine gewisse Akzeptanz für „die Cloud“ habe ich mit meinem Android-Telefon
gewonnen. Wahrscheinlich gar nicht weil es besser war, aber es war wunderbar
bequem Kontakte und Kalender bei Google abzulegen. Zuvor hatte ich hierfür vor
allem SyncML benutzt, das auf meinem
eigenen Server installiert war.
Mit der Zeit kamen weitere Dienste von Google dazu, die ich genutzt habe:
Google Plus,
Google News,
Google Reader,
Google Talk,
Blogger und ja sogar
Google Analytics.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Diese Woche habe ich an einer spannenden Aufgabenstellung gearbeitet: ich musste
die Firmware für ein Gerät zur Datenerfassung und zum
Monitoring an ein neues
zukünftig darin verbautes GSM-Modem anpassen.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Wieder einmal bin ich daran meine Website auf eine neue Plattform
umzustellen. Eine Seite, die ich mit jeder Umstellung unangetastet liegen lasse
ist meine Seite über die Unterschiede zwischen Latin 1 und Latin
9.
Nicht dass das eine so besonders wichtige Seite wäre. Glücklicherweise ist das
Encoding der Wahl in der westlichen Welt inzwischen UTF-8 geworden. Aber ich bin
stolz darauf, dass ich mit dieser Seite 2005 in der Musterlösung einer Übung der
Universität Koblenz aufgetaucht bin:
[http://mtech.uni-koblenz.de/MT2005/Uebung/ueb1/loes1.pdf [PDF, 26
KiB]](http://mtech.uni-koblenz.de/MT2005/Uebung/ueb1/loes1.pdf)
Für meinen Arbeitgeber habe ich ein Programm
entwickelt, das wir nutzen Zeiten zu erfassen und in unser Projektmanagement
einzukoppeln. Um in der Firma einfach auf allen Rechnern immer die neuste
Softwareversion zur Verfügung zu haben, habe ich mich dafür entschieden Java
Webstart
einzusetzen. Diese Technik hatte ich auch bereits für einige andere
Java-Anwendungen von meinen Kunden eingesetzt.
Neu dieses mal war nun allerdings, dass ich nicht
Sprint sondern
CDI für die
Dependency Injection gewählt habe. CDI implementiert durch
WELD ist bei uns auf der Arbeit hierzu
meist der Standard der Wahl.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Heute mal etwas ganz anderes hier als sonst: ein Erfahrungsbericht von meiner
DELE-A1-Prüfung
Anfang November beim Instituto Cervantes Múnich.
DELE sind die offiziellen Prüfungen des spanischen Kultusministeriums über
Spanisch als Fremdsprache. Es gibt die Prüfungen in den sechs Stufen des
Gemeinsamen Europäischen
Referenzrahmens.
A1 ist dabei die kleinste Stufe. Ganz grob gesagt ist A1 etwa das Niveau, das
man nach einem Schuljahr Fremdsprachenunterricht (zwei Stunden pro Woche)
erreicht. C2 ist die höchste Stufe und ist das Niveau, wenn man fast wie ein
Muttersprachler spricht. Meine Stufe würde ich deswegen umschreiben als
„zertifiziertes nichts können”.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Mehr als eine Woche warte ich auf eine Sendung von Amazon. Ich habe sie mir an
die Packstation schicken lassen.
Samstag, 25. August 2012: Die DHL-Sendungsverfolgung meldet: „Diese Sendung
befindet sich auf dem Weg zur Packstation.“ Weiter ist nichts passiert.
Ein paar Tage später: Ich reklamiere die Sendung bei Amazon. Die
Kundenbetreuung wundert sich auch wo das Paket steckt. Sie schicken die
Bestellung ein zweites Mal los.
Donnerstag, 30. August 2012: DHL meldet auch für das zweite Paket: „Diese
Sendung befindet sich auf dem Weg zur Packstation“ und es tut sich weiter
nichts.
Diese Packstation steht vorübergehend nicht zur Verfügung
Mittwoch, 29. August 2012: Ich bin genervt aber habe die Hoffnung, die SMS
könnte nur nicht angekommen sein. Vielleicht kann ich das Paket abholen. Leider
nein! Dafür weiß ich was los ist, denn auf dem Bildschirm der Packstation steht:
„Diese Packstation steht vorübergehend nicht zur Verfügung.“ Kann passieren,
aber wieso geht die Sendung dann nicht in die Postfiliale nebenan oder an eine
andere Packstation?
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Im Play-Store gibt es einige Apps zur Vorbereitung auf Funk- und
Sportbootführerscheine von mir. Um eine möglichst große Zahl von Nutzern zu
erreichen, habe ich die Anwendungen kompatibel zu Android 2.1 entwickelt. – Für
mich hieß das, dass ich bei der Erstellung für die Anwendungen das API-Level 7
als „Project Build Target“ benutzt habe.
Ergebnis dieser Vorgehensweise ist, dass auch Telefone mit einer neueren Version
von Android die Anwendung in einer Art „Kompatibilitätsmodus“ ausführen. In
diesem Modus wird die ganze Oberfläche möglichst genau so gezeichnet wie es
unter der alten Version der Fall war. Dies soll sicherstellen, dass auch eine
Anwendung, die sich z.B. genau darauf verlässt wie groß ein Button zu sein hat
auch Buttons in genau dieser Größe vorfindet.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Aufgrund der Tatsache, dass die Hardware mit denen Public-Key-Schlüssel
angegriffen werden kann immer leistungsfähiger wird, ist es notwendig, dass auch
die Größe der eingesetzten Schlüssel immer weiter vergrößert wird.
Für den Einsatz mit qualifizierten digitalen Signaturen in Deutschland
veröffentlicht beispielsweise die Bundesnetzagentur jährlich den sogenannten
Algorithmenkatalog. In
ihm steht jeweils welche Mindestschlüssellänge bis zu welchem Zeitpunkt als
ausreichend angesehen werden kann.
Aktuell wird für den Einsatz von RSA-Schlüsseln bis Ende 2018 beispielsweise
empfohlen, dass diese mindestens 2048 Bit lang sein sollten.
Dies betrifft aber natürlich nicht nur qualifizierte Signaturen sondern
beispielsweise auch die verschlüsselte Übertragung von Webseiten mit dem
HTTPS-Protokoll. Auch hierfür werden meistens RSA-Schlüssel eingesetzt.
Üblicherweise trifft man auf Webservern dabei meistens Schlüssel der empfohlenen
Länge an. (Ergebnis einer nicht repräsentativen Überprüfung einiger Websites
durch mich.)
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Diese Woche bekomme ich einen Anruf von einem Bekannten: er entwickelt gerade
eine Website für einen Kunden. Und obwohl die Seite noch nicht fertig ist,
taucht sie schon im Suchindex von Google auf. Er hatte vergessen die Seite
während der Entwicklung mit einem Passwortschutz zu versehen. Er fragte mich, ob
ich eine Idee habe, wie er dieses Versäumnis so schnell als möglich korrigieren
könne.
Wir sind nun gemeinsam ein paar Möglichkeiten durchgegangen das Problem zu
beheben:
- Site jetzt mit Passwortschutz versehen: es kommt zwar niemand mehr auf die
Seite, allerdings ist sie noch in Google (und vermutlich anderen
Suchmaschinen) gelistet,
- robots.txt auf die Seite laden, die allen Suchmaschinen sagt, dass die Site
nicht gelistet werden möchte: wer die Adresse kennt kommt trotzdem noch
darauf oder
- manuell über die Google Webmaster-Tools die Löschung beantragen: allerdings
hatte Google schon über 10.000 Treffer auf der Site.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Ich greife mit zwei E-Mail-Programmen auf meinen Mailaccount zu. Das eine ist
mutt, das andere ist
Thunderbird. Während ich mit mutt keine
Probleme habe, kann ich seit zwei Tagen mit Thunderbird nicht mehr auf mein
E-Mail-Konto zugreifen.
Wenn ich es probiere, dann sehe ich Thunderbird für etwa 20 Sekunden versuchen
eine Verbindung mit dem Mailserver aufzubauen. Nach diesen 20 Sekunden stellt
sich Thunderbird wieder so als hätte es nicht versucht E-Mails abzufragen. Es
kommt also auch keine Fehlermeldung oder dergleichen.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Diese Woche hat für die erste meiner Anwendungen (SKS-Trainer)
die Anzahl der Installationen auf Android 4.0.3+
die der Installationen auf Android 2.3.3+ überholt. Bei meinen anderen Apps –
vor allem denen für die Funkscheine – hat letztere die Nase noch vorn. Nach den
Zahlen von Google ist Android 2.3.3+ auch an sich noch immer die am häufigsten
genutzte Version des Handybetriebssystems.
Ich biete fünf Android-Apps im Play Store an. All diese Programme richten
sich an annähernd die gleiche Zielgruppe: Anwender, die sich auf einen
Segelschein vorbereiten und die Theoriefragen lernen wollen.
Version |
Durchschnitt lernen |
Sportboot binnen |
SKS |
UBI |
SRC |
LRC |
Android 2.3.3+ |
56,61 % |
45,1 % |
40,7 % |
42,0 % |
45,5 % |
49,5 % |
Android 2.2 |
15,51 % |
7,5 % |
6,6 % |
9,0 % |
7,5 % |
8,0 % |
Android 4.0.3+ |
15,23 % |
38,7 % |
41,5 % |
33,5 % |
32,0 % |
29,0 % |
Android 3.2 |
5,72 % |
6,2 % |
9,0 % |
13,0 % |
12,0 % |
12,0 % |
Android 2.1 |
3,87 % |
1,7 % |
0,9 % |
1,5 % |
1,0 % |
1,5 % |
Android 3.1 |
2,36 % |
0,5 % |
0,9 % |
0,5 % |
1,0 % |
– |
Android 2.3 |
0,32 % |
0,1 % |
0,1 % |
– |
– |
– |
Android 4.0 |
0,14 % |
0,1 % |
0,1 % |
– |
0,5 % |
– |
Android 3.0 |
0,13 % |
0,1 % |
0,1 % |
– |
0,5 % |
– |
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Die IPv4-Adressen gehen aus – so ließt man. Im Februar 2011 wurde die letzte
freie Adresse in Europa vergeben. Was seitdem getan wird: nichts. Trotzdem
leiste ich meinen Beitrag: ich spare IPv4-Adressen mit virtuellem Hosting auch
für HTTPS.
HTTPS und die IP-Adressen
Der wichtigste Grund warum ein Webserver mehrere IP-Adressen hat ist HTTPS.
Für jede HTTPS-Domain brauchte man bisher eine eigene IP-Adresse. Die
Verschlüsselung von HTTPS wird aktiviert bevor der Webbrowser dem Server sagt
welche Webadresse er abrufen möchte. Das Problem dabei: das Zertifikat welcher
Domain soll der Server nun benutzen? Verwendet er das falsche meckert der
Browser. Eine rote Seite erscheint und warnt den Internetnutzer, dass da etwas
nicht stimmt und die Seite vielleicht unsicher ist. Das wollen wir nicht!
Die Lösung bisher: jede Domain hat eine eigene IP-Adresse. Muss ein
Webserver eine HTTPS-Anfrage beantworten, schaut er welche IP-Adresse
angesprochen wurde. Kein Problem, das kann er. Für jede IP-Adresse weiß er die
zugehörige Domain. Er kann das richtige Zertifikat nutzen.
Schon 2003 aber wurde Server Name
Indication (engl. für
„Andeutung des Servernamens“) erfunden RFC 6066: Transport Layer Security
(TLS) Extensions: Extension
Definitions Moderne Browser
übermitteln hiermit schon bevor verschlüsselt wird welche Domain sie
erwarten. Wenn sich der Browser an diesen Standard hält, dann kann der Webserver
auch ohne verschiedene IP-Adressen erkennen welches Zertifikat er nutzen muss.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Vor ein paar Tagen habe ich - wie viel zu oft - wieder meinem Bildfernschreiber
(neudeutsch einfach kurz Fax genannt) nur Werbung entnommen. Jede dieser
Sendungen kostet mich ein paar Eurocent für das Thermopapier und strapaziert
darüber hinaus meine Nerven.
Als Gegenmittel habe ich mir neuerdings bei der Telekom das Dienstmerkmal
Abweisen unbekannter Anrufer
(ACR) beantragt. Ich gehe davon aus, dass
quasi alle Werbesendungen mit unterdrückter Rufnummer übermittelt werden, damit
die Absender möglichst nicht für Beschwerden erreichbar sind. Im Gegensatz dazu
stammen alle meine erwünschten Fernschreiben von Anschlüssen, die ihre Rufnummer
ganz normal übermitteln.
Angeboten wird dieses Merkmal von der Telekom kostenlos. Dass dies so ist liegt
vermutlich an der EU-Telekommunikations-Datenschutzrichtlinie
97/66/EC, die
fordert, dass der Angerufene die Möglichkeit haben muss, ankommende
Anrufe, bei denen die Rufnummernanzeige durch den Anrufenden unterdrückt wurde,
auf einfache Weise und unentgeltlich
abzuweisen.
(Zitiert aus einem Dokument der RegTP.) Umgesetzt
wurde dieses in der TDSV in § 11,
Abs. 1.
Dass dieses durch den Angerufenen auf einfache Weise möglich ist, möchte ich
jedoch noch bezweifeln. Zum einen kann ACR nicht selbständig aktiviert werden,
sondern muss bei der Telekom beauftragt werden und zum anderen ist die Ansage,
die ein abgewiesener Anrufer erhält für diesen nicht wirklich
hilfreich. (Dieser Anschluss ist aus technischen Gründen vorübergehend
nicht erreichbar. Bitte versuchen Sie es später wieder.). Aus den
Mobilfunknetzen sind wieder andere Ansagen oder gar einfach ein Besetztzeichen
zu hören.
Besser realisiert wurde dieses Dienstmerkmal von der Swisscom (schweizer
Telefongesellschaft), dort kann der Kunde ACR durch wählen von *99#
selbst aktivieren und mit #99# wieder deaktivieren. Auch die Ansage,
die ein Anrufer gegebenenfalls hört, ist für diesen aufschlussreicher: Der
Swisscom Kunde wünscht keine Anrufe mit unterdrückter Rufnummer. Es wäre
wünschenswert, dass die Telekom sich hieran ein Beispiel nimmt.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Wie an anderer Stelle auf meiner Website zu lesen ist, nutze ich als
Instant-Messenger-System Jabber. Oft werde ich gefragt, wieso ich nicht wie
„alle anderen” auch ICQ, AIM oder dergleichen nutze. Nun, das
kann ich erklären:
ICQ nutze ich nicht, da das Protokoll von vorn bis hinten unsicher ist. Viele
wissen wahrscheinlich (oder auch nicht), dass der Authorisierungs-Anforderung
bei ICQ nur ein Augenschein ist. Jeder kann jeden beliebigen ICQ-Nutzer zu
seiner „Contact-List” hinzufügen, auch ohne die Zustimmung des anderen vorher
einzuholen. Dass es so aussieht, als müsste man dies ist nur eine Sache der
Original-ICQ-Software. Mit den meisten Nachbau-Programmen geht es deswegen auch
ohne. Ebenso ist es nicht möglich jemanden, der einen in seiner "Contact-List"
hat, die Zustimmung dazu wieder zu entziehen.
Ein weiteres ICQ-Problem ist, dass wenn man diesen Dienst unbeschränkt nutzen
möchte, für alle anderen ICQ-Nutzer es kein Problem ist herauszufinden, welche
IP-Adresse man gerade hat. Zwar
lässt sich dies verhindern, indem man nur die Kommunikation über den Server
zulässt, dann aber ist z.B. die maximale Nachrichtenlänge beschränkt.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
IMUnified hat vor etwa zwei Jahren angekündigt, ein Protokoll zu schaffen, das
es ermöglichen soll, verschiedene Instant Messaging Systeme mit einem Client zu
benutzen. Gründungsmitglieder waren unter anderem MSN, Odigo und Yahoo!.
Inzwischen ist es wieder ruhig geworden, ob IMU jemals ernsthaft eingesetzt
wird, wird wage ich fast zu bezweifeln. Aber immerhin kann beispielsweise der
Yahoo!-Messenger das Protokoll, man muss es nur mit ein paar Registry-Änderungen
unter Windows einschalten. Danach hat man die Möglichkeit, sich zusätzlich zu
Yahoo! auch in andere IM Dienste anzumelden.
Dies habe ich zum Anlass genommen, mir IM Unified doch einmal anzuschauen und
habe ein paar Sessions mit einem Network-Sniffer protokolliert. Das Protokoll
ist an sich sehr einfach aufgebaut und erinnert etwas an Protokolle wie SMTP
oder HTTP.
Alle Daten werden über eine TCP/IP-Verbindung ausgetauscht. Der Client
konnektiert hierzu auf den Port 11319 des Servers. Über diese Verbindung macht
er zunächst ein Login-Handshake und tauscht danach Daten aus. Der Austausch
erfolgt in Blöcken.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
Darstellung von ganzen Zahlen
In einer vorgegebenen Anzahl von Bits (meist 8 Bit, 16 Bit, 32 Bit) kann eine
ganze Zahl in verschiedenen Weisen dargestellt werden. Drei davon haben wir
davon in der Zentralübung kennengelernt. Es ist aus der Darstellung selbst (und
damit dem Inhalt der Speicherzelle, des Registers oder wo auch immer die Zahl
gerade steht) nicht ersichtlich welche Darstellung gewählt wurde.
Je nach gewählter Darstellung kann mit der vorgegebenen Anzahl von Bits ein
verschiedener Wertebereich dargestellt werden.
Die nachfolgende Tabelle stellt für die kennengelernten Kodierungen dar, welches
die größte und welches die kleinste darstellbare Zahl ist, wenn n Stellen (Bits)
für die Zahl zur Verfügung stehen.
Darstellung |
kleinste Zahl |
größte Zahl |
„normal” (vorzeichenlos) |
0 |
2n-1 |
Einerkomplement |
-(2n-1-1) |
2n-1-1 |
Zweierkomplement |
-(2n-1) |
2n-1-1 |
Für gebräuchliche Stellenzahlen ergiben sich folgende Wertebereiche:
Stellenzahl |
Werteb. vorzeichenlos |
Werteb. Einerkompl. |
Werteb. Zweierkompl. |
8 Stellen = 8 Bit = 1 Byte |
0 … 255 |
-127 … 127 |
-128 … 127 |
16 Stellen = 16 Bit = 1 Word |
0 … 65535 |
-32767 … 32767 |
-32768 … 32767 |
32 Stellen = 32 Bit = 1 Long Word |
0 … 4294967295 |
-214748363 … 214748363 |
-214748364 … 214748363 |
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »