Skip to content

Fish & Chips Incident-Process

Ein anderer Titel für diesen Blog ist: „How to get a cup of coffee for free, learn about Incident management and understand the need for a security concept.“ Doch dieser Titel ist etwas lange... Ich war mal wieder „dienstlich“ in England unterwegs. Eigentlich sollte ich für meine Firma herausfinden, was man dort alles besser machen kann. Nun zumindest für das Leben habe ich etwas gelernt. Trotz, oder wegen, meines Übergewichts kann ich nicht darauf verzichten Fish & Chips zu kaufen. Natürlich mit Salt and Vinegar. Also, ich gehe in den nächsten Futterladen und finde vier Frauen und einen Mann vor. Die Personen möchte ich mit Fischfrau 1, Fischfrau 2, Fischfrau 3, Cheffischfrau und John den Fischgriller bezeichnen. Mich selbst nenne ich Kunde 1. Fischfrau 1: "Hello" Kunde 1: "Hello, one fish and chips please." Fischfrau 1: "John, one fish and chips please!" John stürzt sich an die Fritiermaschine und der Fisch wird generiert. Fischfrau 1: "3,50 please." Kunde reicht eine zwanzig-Pfund-Note. Fischfrau 1 benutzt die Registrierkasse und liefert 6,50 Pfund zurück. Außerdem schließt sie die Kasse. Kunde 1 wundert sich und erwähnt, dass er gerne noch zehn Pfund change mehr hätte. Immerhin bedeuten zehn Pfund später ungefähr drei Biere, die Kunde 1 benötigt um diesen Blog formulieren zu können.

Juchu! Wir haben einen Incident!

Fischfrau 1 erkennt, dass sie einen Fehler gemacht hat. Sie ruft nach der Cheffischfrau. Das klappt aber nicht, da Fischfrau 2 besorgt heranstürmt und sich die Sachlage erklären lässt. Das Problem lässt sich schnell und einfach eingrenzen. Kunde hat zwanzig Pfund gegeben und nur für zehn Pfund Ware und Geld erhalten. Die beiden haben eine erste Lösung erarbeitet. Fischfrau 2 fragt den Kunden 1, ob er wirklich zwanzig Pfund gegeben hat. Dieser beantwortet die Frage mit „yes“. Beide Fischfrauen rufen nach der Cheffischfrau und erklären dem Kunden „I am sorry“. Ein weiterer Kunde kommt vorbei und fragt wie lange der Fischladen heute offen hat. Fischfrau 2 sagt ihm, dass bis um halb zehn offen ist. Es wird ein weiteres „I am sorry“ dem Kunden 1 entgegen geschmettert. Dieser denkt sich noch nichts dabei, da John den Fisch fertig gebraten hat und in den Fischzwischenspeicher überführt hat. Die gesamte Aufmerksamkeit des Jägers (Kunden 1) ist nun auf den Fisch gerichtet. Eventuell kann via Telepathie der Fisch herüberwachsen? Cheffischfrau erscheint und erkennt, dass die Kasse geöffnet werden muss. Cheffischfrau: „John, I need the key!“ John liefert den Schlüssel an Fischfrau 3, die sich an Fischfrau 1, Fischfrau 2 und Cheffischfrau vorbeizwängt um die Kasse zu öffnen. Cheffischfrau generiert eine Abrechnung der Kasse. Hierzu wird der Saldo über alle vorhandenen Tagestransaktionen ausgedruckt. Fischfrau 1 steht nebenan und ist vollkommen von Scham und Schande eingewickelt. Sie kann außer '„I am sorry“ sagen' nichts mehr tun. Cheffischfrau fängt an, vor allen Gästen die Münzen, die sich in der Kasse befinden, zu zählen. Die weiteren Kunden bezahlen ohne change zu benötigen. Dreimal klappt das auch und Fischfrau 2 und 3 können die Lage unter Kontrolle halten. Beim Kunden 4 geht das schief. Er benötigt Wechselgeld. Der Betrieb muss eingestellt werden. Eine Schlange williger Fischkäufer bildet sich. Fischfrau 1 kann kaum noch atmen, generiert jedoch in regelmäßigen Abständen ein „I am sorry“. Kunde 1 beteuert, dass so etwas ja mal passieren kann. Die weiteren Kunden sehen das vermutlich anders und beginnen den Kunden 1 als alleinigen Schuldigen zu deklarieren. Cheffischrau ist mit dem Zählen der Münzen durch und macht sich an die Scheine. Kunde 1 beginnt Strategien zu erarbeiten.
  • Geld zurück geben lassen?
  • 10 Pfund abgeben und auf drei Biere verzichten? (kaum vorstellbar)
  • Weiter lächeln oder doch den deutschen Proll auspacken?
  • Einfach gehen und zwanzig Pfund abschreiben? (sicher nicht, bin Schwabe)
  • Kontrolle, ob er tatsächlich 20 Pfund übergeben hat oder ob der Fehler doch bei ihm liegt. (klingt verlockend und wird als Zwischenlösung angesehen.)
Cheffischfrau hat fertig gezählt. Alle vier Frauen und John ziehen sich nach hinten zurück und beraten die Lage. Kunde 1 hört ein paar sehr beunruhigende Worte: „I can't pay him 10 pound back!“ Nach weiterer Kontrolle kommt Cheffischfrau wieder nach vorne. „You gave us 20 pound?“ Kunde 1 bejaht. Sie zeigt die Kassenabrechnung und ihr Zählergebnis. Die Zählung ergab, dass sich 978,50 Pfund in der Kasse befinden. Die Abrechnung behauptet, dass nur 968,50 Pfund vorhanden sein sollen. Es könnte also durchaus sein, dass der Kunde 1, zehn Pfund zu wenig Wechselgeld erhalten hat. Die Entscheidung ist getroffen worden, der Kunde 1 erhält zehn weitere Pfund zurück. Fischfrau 3 fragt Kunden ob er ein "Coffee" aufs Haus haben will. Dieser bejaht. Fischfrau 2 verpackt den Fisch und fragt nach salt & vinegar. Fischfrau 1 japst ein letztes „I am sorry“. Kunde 1 wird mit seinem Fisch, Geld und Kaffee entlassen und verschwindet. Der Incident-Fall wird abgeschlossen.

Ergebnis des Incidents:

Mindestens vier Gäste sind verschwunden und entschieden sich für Diät oder einen anderen Fischladen. Der Incident verursachte 15 Minuten Stillstand im Laden. Weiterhin mussten Löhne für 5*15 Minuten bezahlt werden was somit 75 Minuten Arbeitszeit ausmacht. Ein Kaffee (Kosten ca. 50 Pence) musste mitgegeben werden. Für die 15 Minuten musste die Arbeit eingestellt werden und dennoch Raummiete, Strom usw. bezahlt werden.

Folgende Behauptung wird aufgestellt:

Wenn die 10 Pfund sofort zurückgegeben worden wären, wären die Kosten geringer gewesen. Faszinierend finde ich allerdings, dass sich Cheffischfrau nicht verzählt hat. :-) Jetzt kommt aber der Hammer! Stellt euch vor ich wäre ein Krimineller.
  • Ich weiß, wann der Fischladen zugemacht wird (halb zehn)
  • Ich weiß, dass mindestens 968,50.- Pfund in der Kasse vorhanden sind.
  • Ich komme um halb zehn mit meinem Freund Revolver vorbei und erhalte nicht nur einen Kaffee umsonst sondern auch noch 968,50 Pfund.
Daraus folgt, dass der Verlust sich um mindestens 968,50 Pfund erhöht. Der Incident Prozess führt zu sehr hohen Verlusten. Es wird den Verbrechern direkt mitgeteilt was an einem Freitag ungefähr in der Kasse ist. => Die Gefahr dass die Räuber am Freitag öfters vorbei kommen wird erhöht. Gegenmaßnahmen:
  • Zählen von Geld immer ohne direkten Blickkontakt der Kunden
  • Security Konzept ist notwendig und führt zu einem sichereren Betrieb.
  • Keine 1000 Pfund in der Kasse deponieren. Ab- und zu mal Geld entfernen und an einem sicheren Ort lagern.
  • Fünf Personen sind für den Fischladen gleichzeitig zu viel. Man kann z.B. mit drei Personen den Laden laufen lassen und die Ladenöffnungszeiten mit gleichem Personal verlängern. Die treten sich dann nicht auf den Füßen herum und haben alle ein bisschen was zu tun.
  • Die Mehreinnahmen können zu mehr Lohn für die Mitarbeiter führen.
  • Mehr Spaß an der Arbeit, da sie nicht mehr so langweilig ist.
Ich werde jetzt auf alle Fälle meinen Job kündigen und mich als Fischladen-Optimierer durchschlagen. ;)

Barcamp Bodensee - Web-Konferenz im Mai 2008 in Friedrichshafen

Beim Barcamp Bodensee gibt es vor allem für Studierende und Teilnehmer aus anderen Ländern als Deutschland noch Plätze. Anmelden kann man sich im Wiki des Barcamps. Das Barcamp findet vom 31. Mai bis 1. Juni 2008 in Friedrichshafen statt. Für Studenten insbesondere aus der Region bietet das Barcamp eine tolle Möglichkeit sich in lockerer Atmosphäre weiterzubilden. Aus unserer Sicht kann es kaum ein näher gelegenes Barcamp geben, daher freuen wir, Roland und ich uns darauf erstmals teilzunehmen. Aus den Anregungen, welche Themen interessant wären, hat Roland sich entschlossen die Anregung "Softwarentwicklung in verteilten Teams - Tools, Vorgehensweisen" aufzugreifen und dieses Thema anzubieten. Wenn es so interessant wird, wie es klingt, dann wird es sicherlich nicht das letzte Barcamp, an dem jemand von miradlo teilnimmt.

Ausschnitt aus der offiziellen Ankündigung

Wie sehen Konferenzen von Leuten aus, für die Weblogs und Wikis - wie Wikipedia - Alltag sind? Sie heißen „Barcamps", und ihr Programm wird von den Teilnehmern komplett selbst bestimmt und getragen. Ein solches Barcamp wird von 31. Mai bis 1. Juni 2008 in Friedrichshafen stattfinden. Gastgeber ist die Zeppelin Universität (ZU). Gerechnet wird mit bis zu zweihundert Teilnehmenden. „Friedrichshafen ist ein idealer Standort für ein Barcamp", betont der ehrenamtliche Organisator Oliver Gassner, der im Hauptberuf Kommunikationsberater ist, „ein Universitätsstandort mit Flughafen, kurzen Wegen zum deutschsprachigen Ausland und mitten in einer Technologieregion". Die Veranstalter hoffen vor allem auf internationales Publikum und auf Zustrom aus den Schulen und Hochschulen des Umlandes und der Anrainerstaaten. (...) Ein Eintritt übrigens fällt bei Barcamps nicht an. (...) Die Barcamp-Idee entstand vor zweieinhalb Jahren in den USA. Weitere Informationen zum Barcamp Bodensee unter http://barcampbodensee.mixxt.eu

Episode 6: Grenzen des Refactorings ::: Softwareprojekte

Zu Episode 1 wurde ein Kommentar geschrieben der mir zeigte das auch noch andere Mitstreiter das Problem des Refactorings aktiv angehen. Die Aussage „Andererseits weiß ich, dass wenn ich die Firma verlasse, dann werden die Projekte andere nach mir übernehmen und wieder alles reverseengeneeren müssen. ...wenn ich das Unternehmen verlasse, muss von vorne begonnen werden“ fand ich sehr passend. Mit Refactoring kann man nicht die Welt retten. Ein Softwaresystem ist für mich wie ein lebender Organismus. Unsere Haut wird beispielsweise alle sieben Jahre erneuert. Bei Software verhält sich das im Prinzip genauso.

Orlando war mal wieder auf einer Schulung

Ok, da war er schon in Episode 3 und das hat auch seinen Grund. Orlando ist Single und liebt es in Hotelzimmern herumzuhängen. Da das Familienunternehmen zur Zeit noch nicht in mehreren Ländern vertreten ist, ist es für ihn die einzige Möglichkeit das Jet-Set-Gefühl zu erleben. Bei der Schulung wurde der Model Driven Architecture-Ansatz besprochen. Wieder kam er freudestrahlend zurück und wollte das Erlernte sofort ausprobieren. Das ist auch eine typische Orlando Eigenschaft. Er nimmt gerne Neues an und versucht so viel wie möglich gleich zu implementieren. Da es sich bei dem, von Hans, Karl und Orlando, betreuten System um ein hochriskantes, produktives System handelt, ist diese Freude an Neuem für Hans und Karl nicht unbedingt nachvollziehbar. Zuweilen sind Orlandos Kollegen sonderbar altmodisch und wollen vor allem ein überlebensfähiges, stabiles System haben. Vielleicht liegt das an den Betonschuhen die am Ausgang von den schweren Jungs abgestellt wurden... Wie dem auch sei. Hin- und wieder werden Hans und Karl von Orlando überredet etwas Neues zu implementieren. Die Drei wollten erreichen, dass die Entwicklung auf Dauer gesehen immer stabiler und sicherer wird. Deshalb schauten sie sich ihr System genauer an und überlegten ob Model Driven Architecture eventuell eingeführt werden kann.

Keine Architektur?

Karl schaute sich die bisherigen Architekturkonzepte an. „Also im Moment sind wir mit einem Mischmasch zwischen prozeduraler Programmierung und objektorientierter Programmierung konfrontiert. Wenn wir das ändern wollen, müssen wir das ganze System am Besten wegwerfen und neu bauen.“ Die drei waren sich hier sehr einig. Ein Neubau würde jedoch einem langanhaltenden Tauchgang im Familienteich nahe kommen. „Vielleicht können wir uns wenigstens eine Architektur überlegen wie es aussehen sollte und das als unsere Strategie definieren. Dann könnten wir beim Review darauf achten in die Richtung der Strategie zu arbeiten“, bemerkte der geschulte Orlando. Hans nickte zustimmend. „Das klingt schon eher machbar. Wir werden also mit dem Refactoring keine endgültige Lösung finden. Wir werden die, zur Zeit erkannten Fehler und Missstände, aufdecken und korrigieren können. Das System wird also nie fertig werden.“ Orlando überlegte: „Ich glaube, dass ist eine normale Eigenschaft in komplexen Systemen. Jede neue Idee führt zu einer Änderung und diese Änderung erfordert neue Vorgehensweisen. Ich glaube das Geheimrezept liegt im Changemanagement und in der Umsetzung der Strategievorgaben. Lasst uns zuerst einmal eine Strategie für die nächsten drei- bis fünf Jahre definieren. Wir sollten dringend mit Giuseppe reden um zu erfahren was er alles vor hat. Dann können wir unsere IT-Bemühungen entsprechend auslegen.“ Vielleicht habt ihr euch schon hin- und wieder gefragt warum Firmen viel Geld für Enterprise Architektur ausgeben. Ich habe im Moment das Vergnügen mit den Architekten eng in einer Gruppe zusammen arbeiten zu können. Die Kollegen produzieren im Prinzip (außer Papier und endlosen Telefongesprächen ;) ) nichts. Doch der Gewinn für die Firma ist, dass sie sich über die weiteren Jahre Gedanken machen. Es ist wichtig die IT-Landschaft, wie jede andere Prozesslandschaft, über die Jahre hin proaktiv zu bewirtschaften. Unsere drei Freunde haben aus Angst vor Betonschuhen bisher nur reagiert. Mit dem Handwerkzeug Reverse Engineering, haben sie erreicht sich über Wasser zu halten und nicht zusammen mit ihrem alten System zu sterben. Doch um wirklich eine gute Zukunft zu haben, kommen sie um eine Strategie und eine sinnvolle Planung nicht herum. Es wird Zeit das wir eine Koordination in die Geschichte bringen! Um ehrlich zu sein, ich bin gespannt wo dieses Blog noch hinführt...

Wörter und Zeichen eines Beitrags zählen : TinyMCE in Wordpress anpassen

Mal möchte man Beiträge nur veröffentlichen, wenn sie eine Mindestanzahl an Wörtern haben, z.B. bei trigami-Rezensionen, oder man will einen Beitrag in mehrere aufteilen, sobald eine bestimmte Anzahl an Wörtern überschritten wird. Wer daher ab und zu mal Wörter oder Zeichen eines Beitrags zählen möchte, kann sich natürlich einfach den Text in ein Textverarbeitungsprogramm oder einen Editor auf dem Rechner kopieren, die diese Funktion haben. Sei es der OpenOffice.org Writer oder ein Editor wie KWrite, alternativ Microsoft Word oder ähnliches, dort gibt es diese Funktion bereits. Will man diesen Umweg vermeiden, dann lässt TinyMCE, der in Wordpress integrierte WYSIWYG-Editor ebenfalls anpassen.

Anleitung Wörter zählen im Wordpress-Editor

Um innerhalb von Wordpress Wörter zählen zu lassen, gibt es ein Plugin. Für den genutzten Editor TinyMCE gibt es das Plugin "charcount". Damit lassen sich die Wörter eines Artikels zählen. Angezeigt werden: die Anzahl an Wörtern und die Anzahl an Zeichen, sowohl mit, als auch ohne Whitespaces (Whitespaces sind alle Leerzeichen, Absätze usw.) Das Ganze klappte bei mir wie folgt:
  • Das Plugin charcount runterladen
  • entpacken
  • ins Verzeichnis /wp-includes/js/tinymce/plugins/ kopieren
  • die Datei /wp-includes/js/tinymce/tiny_mce_config.php an zwei Stellen anpassen:
    • dem Array plugins charcount hinzufügen: $plugins = array('charcount');
    • dem Array mce_buttons charcount hinzufügen: $mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'charcount',));
  • alles hochladen
  • den Editor eventuell mit STRG und neu laden, aktualisieren
  • der neue Button "123 ABC" wird angezeigt.
  • Dieser Beitrag hat dann:
    • Wörter: 224
    • Zeichen ohne Leerzeichen: 1570
    • Zeichen mit Leerzeichen: 1803
Getestet in Wordpress 2.3, viel Spaß und Erfolg damit.

Aktualisiert Februar 2009

Ab der Version WordPress 2.7 werden die Wörter von Haus aus gezählt und nach jedem Speichern unterhalb des Eingabefensters des Editors angezeigt. Für eine Anzeige auch von einzelnen Zeichen ist auch weiterhin ein Eingriff nötig.

Softwareprojekte Episode 5 ::: Coderefacturing und Lavacode Beseitigung

Begonnen habe ich mit der Vorgeschichte und den Episode 1, Episode 1, 2, 3 und 2, 3 und 4 in diesem Teil geht es um Coderefacturing In Episode 3 (Refacturing kann helfen) habe ihref="http://miradlo.net/bloggt/index.php?79-s""> 3 und 4 in diesem Teil geht es um Coderefacturing In Episode 3 (Refacturing kann helfen) habe ich schon ein bisschen über Lavacode und Reviewzyklen gesprochen. Jetzt möchte ich ein paar Beispiele, wie Lavacode aussieht und wie man ihn wegputzen kann, aufzeigen. Die Review-Sessions von Hans, Karl und Orlando liefhref="http://miradlo.net/bloggt/index.php?80-s""> 4 in diesem Teil geht es um Coderefacturing In Episode 3 (Refacturing kann helfen) habe ich schon ein bisschen über Lavacode und Reviewzyklen gesprochen. Jetzt möchte ich ein paar Beispiele, wie Lavacode aussieht und wie man ihn wegputzen kann, aufzeigen. Die Review-Sessions von Hans, Karl und Orlando liefen schon einige Wochen. Im Schnitt schafften sie zehn Klassen pro Woche und mittlerweile konnten sie schon diverse Probleme und Schwachstellen ausloten und flicken. Orlando war gerade dabei einen Observer zu putzen. Im Dateisystem fanden sich folghref="http://miradlo.net/bloggt/index.php?79-s"">Episode 3 (Refacturing kann helfen) habe ich schon ein bisschen über Lavacode und Reviewzyklen gesprochen. Jetzt möchte ich ein paar Beispiele, wie Lavacode aussieht und wie man ihn wegputzen kann, aufzeigen. Die Review-Sessions von Hans, Karl und Orlando liefen schon einige Wochen. Im Schnitt schafften sie zehn Klassen pro Woche und mittlerweile konnten sie schon diverse Probleme und Schwachstellen ausloten und flicken. Orlando war gerade dabei einen Observer zu putzen. Im Dateisystem fanden sich folgende Dateien:
  • lavaklassen
  • TestDummyModel Eine Unit-Testklasse mit der das DummyModel auf Funktion überprüft wurde.
  • BaseUIElement Der Observer mit dem das Subjekt überwacht werden soll.
  • TestBaseUIElement Ratet mal ;) Ist wohl eine Testklasse.
  • BaseModel Beinhaltet die Basis-Modell Information und schlussendlich die echte Subjekt-Methode.
Um das BaseModel testen zu können, wurde ein TestBaseModel eingeführt. Das DummyModell wurde nur dazu benötigt um die protected-Methoden der BaseModelklasse testen zu können. Der Aufwand, um DummyModel und TestDummyModel entwickeln zu können, betrug in etwa einen Arbeitstag. Jetzt kommt aber der Hammer: Die Wartung von DummyModel und TestDummyModel kostete zwei Stunden. Im zweiten Jahr wuchsen die Wartungsaufwände auf zwei Tage an. Das bedeutet, dass die Wartung mehr kostete als die ursprüngliche Herstellung. Wie konnte das passieren? DummyModel wurde nicht nur für den Test von BaseModel verwendet, sondern wurde in vielen anderen Testszenarien als einfache Lösung angesehen, die protected-Methoden von BaseModel zu verwenden.
  • lavaexplosion
Eine Änderung am DummyModel verursachte nun enorme Kosten bei den Testklassen.

Was kann man da besser machen?

Ok, zuerst kann man mal über ein sauberes Konzept und „wir programmieren nur gegen Schnittstellen“ und all die schönen Regeln beherzigen. Manchmal sieht man aber den Klassenwald vor lauter Methoden nicht mehr. Lavacode entsteht, niemand kann ihn 100% verhindern. Wenn aber so ein Problem erkannt wurde, muss man handeln. Orlando griff in die Tasten und entfernte das DummyModel. Das Testen der protected-Methoden löste er durch eine Wrapperklasse im TestBaseUIModel und die Testklassen wurden so umgebaut, dass sie sich wieder an Schnittstellen halten und keine Wartungsexplosion zu erwarten ist. Karl hatte an einem nebligen Freitag ein Problem beim Review. „Jungs schaut mal her: Diese Methode hier verursacht das Problem, dass wir an zwanzig Stellen im Programm Abhängigkeiten schaffen. Das ganze ist nicht modular sondern vernetzt. Wenn ich das jetzt aber ändern soll werde ich nicht fertig und außerdem müssen wir das extrem gut testen. Was sollen wir machen?“ Termine drücken im Familiengeschäft immer. Wenn die drei den nächsten Release vergeigen ist mindestens einer der Drei bei Fred. Dementsprechend sind Klaus, Orlando und Hans etwas vorsichtig beim kompletten Umstellen der Systemkomponenten. Hans schaute sich das Problem an: „Also gut, wir schaffen das jetzt nicht. Geh doch durch alle dir bisher bekannten Komponenten durch und schreibe ein TODO hinein. Wir analysieren das Thema über die nächsten Wochen und falls wir dann glauben, dass wir es schaffen können, putzen wir den Code.“ Diese Idee beruhigte die Nerven der drei gestressten Entwickler doch sehr. Vier Review-Zyklen später war das Problem vollständig analysiert und sie konnten ohne Familienteich die Abhängigkeiten auflösen. Wenn beim Codereview festgestellt wird, dass ein größerer Aufwand vorhanden ist, muß dies vermerkt werden. Der Projektleiter muss eine Issue-Liste führen und neue Anforderungen und Probleme dort hinterlegen. Es werden immer Problemstellungen vorhanden sein, die nicht sofort gelöst werden können. Die schlechteste Alternative ist diese einfach zu verdrängen. Wenn im Sourcecode dokumentiert ist, dass noch Nacharbeiten notwendig sind und Zeit und Aufwand für diese Nacharbeiten im Projekt budgetiert worden sind, stellen diese notwendigen Korrekturen kein Problem dar.

Abendwolken : geändertes Design auf miradlo bloggt

Am 12. April war bei uns unser Tag der Ofentür;-) dafür gab es einige Tage das dazu passende Design. Inzwischen ist dieser Aktionstag abgeschlossen, mehr dazu in einem eigenen Beitrag in den nächsten Tagen.
  • Screenshot Designmiradlo Tag der Ofentür
Wie gewohnt also wieder einmal ein Designwechsel, dieses Mal halt ein bisschen schneller als gewohnt. Da das Ofentür-Design sehr ablenkend ist, wollte ich es nicht zu lange online lassen.

Informatiküberraschung gewinnen am Samstag bei miradlo in Konstanz

Unser Tag der Ofentür;-) findet von 9 bis 17 Uhr statt. Mehr zum Programm auf www.miradlo.com. Unser Gewinnspiel ist bereits online, teilnehmen kann man jedoch ausschließlich:

morgen, Samstag von 9 bis 1630 Uhr

Mitmachen kann man beim persönlichen Besuch unseres Aktionstags, aber auch online, können alle Interessenten mitspielen.

Gewinnspielteilnahme

Die Teilnahme am Gewinnspiel auf www.miradlo.de ist online und persönlich möglich am Samstag, den 12. April von 9 bis 1630 Uhr. Zu gewinnen gibts eine Informatiküberraschung... Genaueres wird nicht verraten, außer: Es lohnt sich und viel Glück!

Diskussionen zu Microsoft und dem IE8 : III.

Diese Serie startete mit I. den guten Nachrichten von Microsoft, dem folgte das II. der Webtrend: stahref="http://miradlo.net/bloggt/index.php?75-s"" title="Webdesign-Trend Webtrends 2008">Webtrend: standardkonformere Seiten, dieses ist das III. der letzte Teil der Serie über die Diskusssionen unter Webentwicklern und die Bedenken zur Standardkonformität des IE8. Ich finde es schade, dass es Diskussionen gibt, die sich an diejenigen richten, die an den Gesprächen mit Microsoft beteiligt waren. Jens Grochtdreis schreibt z.B. in Microsoft hört zu unter anderem:"Gustafson, Eric Meyer, Zeldman und die anderen sollten in sich gehen und fragen, ob sie noch wirklich unabhängig denkende Geister sind oder ob sie sich zu sehr haben vereinnahmen lassen." Klar gerade Jeffrey Zeldman hatte gesagt, dass auch die Lösung, in der der IE8 sich eher wie IE7 verhält, akzeptabel wäre. Auch ich hielt das für den falschen Ansatz und glücklicherweise hat sich Microsoft dagegen entschieden. Allerdings schrieb Zeldman auch folgendes in seinem Kommentar (eigene sinngemäße Übersetzung des englischen Kommentars): "Wenn genügend Webentwickler glauben, dass der Standard sein sollte 'aktuelle Version' statt 'IE7' - und falls sie schlüssig und sachlich argumentieren - dann könnte es sein, dass Chris Wilson und seine Kollegen ihnen zustimmen und den Standardwert so setzen, wie ihr es wollt und nicht wie zuerst vorgeschlagen. " Damit schrieb er meines Erachtens keineswegs, dass er die von Microsoft ursprünglich vorgeschlagene Lösung für optimal hielt. In demselben Artikel schrieb er später ergänzend in einem weiterem Kommentar (eigene sinngemäße Übersetzung der Frage und des Kommentars aus dem englischen Original): Brian Warshaw: "Wenn die Versionsangabe im Metatag bedeutet, dass ein heute erstelltes Design auch noch in zehn Jahren gut aussieht, ist das nicht diese eine Zeile Code wert? " Jeffrey Zeldman: "Ja, für mich ist es so, auch wenn es das glatte Gegenteil an Browserverhalten ist, für das ich seit 1998 kämpfe. Meine Motivation war niemals religiös sondern praktisch. Ich möchte, dass die Seiten, die ich entwerfe funktionieren. Wenn diese Lösung hilft dieses Ziel zu erreichen, dann ist sie eine gute Sache. " Noch deutlicher äußerte sich Eric Meyer in einem Kommentar zu dem Thema auf der Webseite von Jeremy Keith (eigene sinngemäße Übersetzung des englischen Kommentars): “Wie schon gesagt, ich hoffe sehr dass du mit deiner Meinung diese Diskussion gewinnst; denn mir geht es genauso, ich möchte dieses Vorgabeverhalten. Ich habe genau das vergeblich anzubringen versucht, nun hoffe ich, dass andere ebenso argumentieren und weiterhin versuchen Microsoft zu überzeugen. ” Insofern bin ich, anders als Jens Grochtdreis, nicht der Meinung, dass sich die beiden von Microsoft haben vereinnahmen lassen. Klar, gerade von diesen Gurus der Webstandards, erhofft sich mancher, dass sie immer bis zum letzten Moment kämpfen. Andererseits zeigt das jetzige Ergebnis, dass das nicht der einzige Weg ist. Ich hoffe, dass die Entscheidung fiel, weil sich viele andere Webentwickler dafür eingesetzt haben. Manche Unkenrufe vermuten allerdings, dass es rechtliche Gründe gegeben haben könnte, die Microsoft zu diesem Schritt bewogen haben.

...doch nicht standardkonformer IE8

Andere, die den IE8 in seiner ersten Beta-Version getestet haben, befürchten, dass es trotz bestandenem Acid2-Test wieder viele Fehler geben könnte, die schon IE7 hatte. IE8 soll im Herbst veröffentlicht werden, ich halte es für verfrüht bei jedem Fehler in der Beta I anzunehmen, dass dieser auch noch in der endgültigen Version vohref="http://miradlo.net/bloggt/index.php?60-s"" title="Glossar Acid2">Acid2-Test wieder viele Fehler geben könnte, die schon IE7 hatte. IE8 soll im Herbst veröffentlicht werden, ich halte es für verfrüht bei jedem Fehler in der Beta I anzunehmen, dass dieser auch noch in der endgültigen Version vorhanden sein wird. Insgesamt meine ich, es ist ein sehr gutes Zeichen für die Webstandards, wenn der Riese aus Redmond nicht nur einen Browser entwickelt, der den Acid2-Test besteht; sondern darüber hinaus zulässt, dass nun eher die Webentwickler, die für IE6 oder IE7 optimiert haben, gefragt sind und an ihren Seiten etwas ändern müssen, statt derjenigen, die standardkonform entwickeln. Das Webstandards Projekt schreibt dazu (eigene sinngemäße Übersetzung): Was bedeutet diese Entscheidung? Nun, einiges, z.B:
  1. Webautoren, die standardkonforme Seiten erstellen müssen keine Änderungen an ihrem Markup vornehmen, um ihre Webseiten vom IE8 in seinem neuesten bestmöglichen Modus darstellen zu lassen.
  2. Alle Webautoren, die nicht standardkonforme Seiten entwickeln, müssen entweder lernen das zu tun oder aber sie müssen ihrem Markup einen Hinweis hinzufügen, dass ihre Seiten entsprechend einer älteren Version des IE angezeigt werden sollen.
  3. Jeder, der JavaScript nutzt, um je nach Browser einen anderen Code auszugeben, muss das ändern, da viele Annahmen über die Rendering Engine des IE auf die Version des IE8 nicht mehr zutreffen.
Mir gefallen diese Konsequenzen, weil damit der Trend hin zu standardkonformeren Webseiten zwangsläufig verstärkt wird. Ein weiterer informativer Artikel zum Thema Microsoft und Webstandards wurde von Mathias Schäfer (molily) auf dem SELFHTML-Blog veröffentlicht. Zu den genutzten, nicht erklärten Begriffen siehe Glossar zu Web, Webdesign und Webapplikationen.href="http://miradlo.net/bloggt/index.php?60-s"" title="Glossar">Glossar zu Web, Webdesign und Webapplikationen.

Gewinnspiel bei miradlo am Tag der Ofentür

Wie schon berichtet haben wir am Samstag, den 12. April von 9-17 Uhr unseren Tag der Ofentür;-). Im Rahmen dessen gibt es ein Gewinnspiel dessen Sieger um 16:30 Uhr bekannt gegeben wird. Teilnehmen dürfen alle, die persönlich vorbeikommen und alle Interessenten die Interesse an einer Beratung, Schulung... haben, können online am Gewinnspiel teilnehmen, wenn sie uns Namen und E-Mailadresse zur Kontaktaufnahme hinterlassen. Das Gewinnspiel dessen Preis wir noch nicht genau verraten, läuft für alle Teilnehmer von 9 - 16:30 Uhr. Natürlich machen wir unser Spiel nicht mit Zettel und Stift, sondern über ein spezielles Kontaktformular, dass an diesem Tag auf www.miradlo.de nutzbar sein wird.
"Gewinnspiel bei miradlo am Tag der Ofentür" vollständig lesen

Softwareprojekte Episode 4 ::: Testen hilft

Die bisherigen Teile Episode 1, Episode 2 und Episode 2 und Episode 3 über die Vorgehensweisen bei Softwareprojekten starteten mit der Episode 3 über die Vorgehensweisen bei Softwareprojekten starteten mit der Vorgeschichte, heute geht es ums Testen, insbesondere um Unit Tests. Ein paar Wochen später fand Hans im Netz diverse Testvorgehen und Tools. „Fred schau dir das mal an, die Unit Tehref="http://miradlo.net/bloggt/index.php?69-s"">Vorgeschichte, heute geht es ums Testen, insbesondere um Unit Tests. Ein paar Wochen später fand Hans im Netz diverse Testvorgehen und Tools. „Fred schau dir das mal an, die Unit Tests sind wirklich cool!“ Er war auf der Seite JUnit und beide studierten die Beschreibung. „Das ist aber verflixt aufwändig umzusetzen. Wir müssten mindestens ein Personenjahr aufwenden, um unser System damit auf Funktion zu überprüfen“, bemerkte Karl. Orlando kam um die Ecke und klärte die Beiden auf: „Wir müssen ja nicht alles auf einmal testen. Wir bauen die Testfälle für neue Funktionalität. Wenn wir unser wöchentliches Refactoring durchführen können wir die wichtigsten Testfälle für den bestehenden Code erstellen. Auf diese Weise werden die dunklen Stellen im System weniger und wir können ruhiger schlafen.“ Dies erschien den Kollegen eine gute und einfache Vorgehensweise zu sein.

Beim Unit Test sollten (mindestens) die folgenden Dinge beachtet werden:

  • Unit Test bedeutet wirklich Unit. Teste vor allem einzelne Komponenten und keine komplexen Abläufe mit Unit Test. Für komplexe Abläufe und Interaktionen mit mehreren Klassen bietet sich z.B. ein ANT Script eher an.
  • Teste die Übergabeparameter.
  • Wenn möglich teste jeden Übergabeparameter ob die Methode auf Grenzwerte (negative Zahlen, zu große Werte usw.) korrekt reagiert. Teste weiterhin, ob die Eingabewerte nur korrekte Werte annehmen können, (z.B. kein 30. Februar bei einer Datumgsübergabe). Teste auf Nullwerte und bei nicht typsicheren Sprachen, wie PHP, ob falsche Typen übergeben werden können, Beispiel: String erwartet, Array übergeben)
  • Falls möglich teste sämtliche Pfade (Pfadabdeckung) innerhalb der Methode.

Beispiel:

if($i == 0){ // do something }else{ // do something else } Hier sind zwei Pfade zu überprüfen. Nur wenn beide Pfade vernünftig reagieren, kannst du dir sicher sein, dass alles gut ist.

Für Projektleiter und gute Entwickler:

Es ist eine sehr schnelle und effiziente Art zu entwickeln, wenn man nicht mit dem Programm sondern mit den Testfällen anfängt. Die Zeit, die für die Erstellung der Testfällen benötigt wird, wird durch krampfhafte Fehlersuche am Ende des Projekts locker eingespart. Ein einziges Mal war ich mit Unit Tests bei einer Änderung langsamer, da ich vom Observer auf Eventpattern umstellte und dabei viele Testfälle wirklich manuell überarbeiten musste. Dies war jedoch eine Ausnahme. Wenn eine Änderung am System durchgeführt wird, kann mit Unit Test sehr schnell ein Regressionstest durchgeführt und die Funktionalität überprüft werden. Also nochmal: Es ist ein Aberglaube, dass die Erstellung von Unit Tests irgendwie die Entwicklung bremst. Das Gegenteil ist in deutlich über 95% der Fall. Das Einzige was Zeit kostet, ist es als Projektleiter den Mut zu haben diese Vorgehensweise zu wählen und die Einlernzeit neuer Mitarbeiter in Unit Tests. (Die Einlernzeit ist übrigens nicht sehr hoch.) Für Tester ist das auch eine coole Sache. Sie können die Detailkonzepte direkt in automatische Tests überführen und Regressionstests werden regelrecht spaßig!

E-Mailpasswort ändern Tuxtools : Hostloco

Bei Hostloco-Domains legt man Mailadressen zunächst im Administratorbereich an. Dort können die Passwörter natürlich geändert werden, damit wäre es jedoch immer die Sache des Administrators. Daher gibt es noch einen weiteren Weg, auf dem auch die Benutzer selbst ihr Passwort ändern können.

Ablauf: Passwort ändern

  • im Browser aufrufen: http://tuxlogin.com/mailpassword/
  • die E-Mailadresse eintragen, für die das Passwort geändert werden soll
  • es erscheint folgender Text:
    • "eMailaccount-Passwort ändern Eine Email wurde erfolgreich an die angegebene Adresse gesendet. In ihr befindet sich ein Bestätigungslink, durch dessen Aktivierung das Passwort geändert werden kann."
  • Screenshot TuxwebmailMailpasswort ändern
Die Nachricht, dass das Passwort geändert werden kann, kann wegen des Greylisting bei Hostloco verzögert ankommen. Sollte jedoch auch nach zwei Stunden noch nichts da sein, dann stimmt etwas nicht. Ankommen sollte eine Mail, die etwa so lautet: "Hallo, diese eMail wurde an diese eMailadresse gesendet, weil eine Passwortänderung für diesen eMailaccount beantragt wurde. Sollte der Antrag auf Passwortänderung nicht vom Accounteigentümer gestellt worden sein, kann diese eMail einfach ignoriert werden. Das aktuelle Passwort bleibt in diesem Fall weiterhin gültig. Sollte eine Passwortänderung beabsichtigt sein, kann mit einem Klick auf den folgenden Link neues Passwort gesetzt werden: http://tuxlogin.com/mailpassword/j623fTs4fdgnZsc13RUl5GIe0ZK93t8E (der Link wird für jede Anfrage neu generiert) ... Mit besten Grüßen, Tuxtools Emailrobot"
  • Screenshot TuxwebmailNeues Mailpasswort angeben
Hier das neue Passwort angeben, ebenso die Wiederholung und mit "Passwort setzen" bestätigen. Das wars auch schon. Im Grunde ist es so einfach, dass es kein Problem wäre, immer mal wieder das Passwort zu ändern und die Sicherheit damit zu erhöhen.

Neues Design auf miradlo bloggt ::: Tag der Ofentür

Passend zu unserem Tag der Ofentürsmilie gibt es diese Woche das Design dazu; deshalb musste die Amaryllis weichen.
  • Screenshot DesignAmaryllis-Design auf miradlo bloggt
Auf unserem Schaufenster läuft seit kurz nach Ostern der Countdown bis zum Aktionstag und wechselnde Hinweise auf den Tag. Die Deko im Fenster ist an den Flyer zum Tag der Ofentür;-) angepasst. Aktuelles dazu gibts es jeweils auf www.miradlo.com. Wir sind in den letzten und den kommenden Tagen überwiegend mit den Vorbereitungen beschäftigt. Unter anderem planen wir ein Gewinnspiel, an dem man auch online teilnehmen kann.

Tuxwebmail nutzen : Mailpasswort ändern :: Webseiten bei Hostloco

Die meisten miradlo-Seiten liegen auf unserem eigenen Server bei Hostloco. Einige Kundenseiten betreuen wir ebenfalls auf diesem Server. Für die eingerichteten Adressen wird natürlich auch Webmail angeboten. Es ist damit möglich E-Mails per Webmail abzuholen und E-Mails zu schreiben. Die Oberfläche ist bei weitem nicht so auf die Webmailfunktionalität angepasst, wie bei den großen Freemailanbiertern, beispielsweise web.de oder gmx.de. Um jedoch von jedem beliebigen Internetanschluss aus E-Mails nutzen zu können, reicht es aus.

Anleitung für Tuxwebmail

  • Screenshot Tuxwebmailtuxtools Webmail Login
  • Screenshot TuxwebmailOberfläche Tuxwebmail
  • Screenshot TuxwebmailWebmail Einstellungen
Sehr praktisch finde ich, dass die Adresse für jede Domain gleich aufgebaut ist. Bei großen Hostern, wie z.B. Strato gibt es nur eine spezielle Adresse, die für alle Domains gleich ist. Bei Hostloco ist Webmail über den entsprechenden Domainnamen und den Zusatz tuxwebmail erreichbar. Für E-Mails mit der Mailadresse @miradlo.com beispielsweise mit: http://www.miradlo.com/tuxwebmail. Dieser Aufruf führt zur Loginmaske, dort gibt man die entsprechende E-Mailadresse und das Passwort, sowie die gewünschte Sprache an, siehe auch das Bild Webmail Login. Die Oberfläche des Webmails erwartet, dass die E-Mails zunächst mit Mail(s) empfangen abgerufen werden.

Einstellungen

Unter Einstellungen findet man einige Einstellungsmöglichkeiten, die selbsterklärend sind wie Absendername, Sprache und Ordnereinstellungen. Die anderen beiden Punkte sind:
  • Eine Kopie gesendeter Nachrichten im Postausgang behalten
  • Mails beim Löschen auch vom POP3-Server löschen

Eine Kopie gesendeter Nachrichten im Postausgang behalten

Hier ist die Voreinstellung ungewohnt. Denn diese lautet auf "Nein" belässt man es dabei, werden keine Kopien der gesendeten E-Mails behalten. Bei üblicher Nutzung des Webmails möchte man jedoch meist auch die gesendeten E-Mails noch behalten, um später alle Ein- und Ausgänge lokal wieder abspeichern. Der einfachste Weg ist, sich selbst direkt von jeder Nachricht eine Kopie zu schicken, wenn man Webmail nutzt. Falls man das vergisst, ist es sinnvoll, wenn die Voreinstellung für Kopien "Ja" ist, dann kann man sich auch später noch eine Kopie schicken. Diese Voreinstellung gibt es wahrscheinlich deshalb, weil die Kopien der Mails nicht automatisch gelöscht werden. Man muss also selbst dafür sorgen, den Postausgang immer mal wieder aufzuräumen.

Mails beim Löschen auch vom POP3-Server löschen

Lässt man hier die Voreinstellung stehen, werden alle Mails, die man im Webmail löscht, weiter behalten und werden beim nächsten Abholen vom Server lokal runtergeladen. Hier ist das meist die gewünschte Version. Wie man das Mailprogramm einrichtet, habe ich im Beitrag Mailprogramm beschrieben, der Artikel Mailpasswort erklärt wie man das Mailpasswort bei Hostloco ändert.href="http://miradlo.net/bloggt/index.php?92-s"">Artikel Mailpasswort erklärt wie man das Mailpasswort bei Hostloco ändert.
tweetbackcheck