Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

26. Januar 2009 um 22:33

gerne gemachte Fehler

Nachdem mir jetzt schon von zwei Seiten der Hinweis auf die TOP 25 Most Dangerous Programming Errors erreichte, gibt mir das jetzt schon etwas zu denken. Denken meine Kollegen ich programmiere so schlecht? 😉

Naja, immerhin ist die Liste ganz interessant und die meisten Fehler wird wohl auch kaum jemand zugeben, z.B. SQL-Injection…

27. Dezember 2008 um 14:06

Jenny-Dateien

Da staunte ich nicht schlecht als ich Jenny-Dateien auf meinem Rechner entdeckte: Im versteckten Pfad "F:\Dokumente und Einstellungen\username\.jenny\" standen zwei tmp-Dateien rum. Der Inhalt ist netterweise im Editor lesbar und wurde ganz offensichtlich von der dm-Fotosoftware dort hingeschrieben:
count = 2
picture_0 = 36701b38:11e2d351b64:-7fcb
filename_0 = D:/temp/alexandra.jpg
count_0 = 1
type_0 = local
order_0_quantity_0 = 1
order_0_format_0 = 11er
picture_1 = 36701b38:11e2d351b64:-7fca
filename_1 = D:/temp/alexandra2.jpg
count_1 = 1
type_1 = local
order_1_quantity_0 = 1
order_1_format_0 = 11er

Legt der professionelle und sprechende Verzeichnis-Name ".jenny" nahe, dass hier eher ein Hobby-Entwickler am Werk war? Wenn nicht, warum schreiben die solche Dateien nicht dahin, wo sie hingehören??? Es kann doch nicht so schwierig sein eine Windows-Software zu schreiben, die sich an die grundlegenden Konventionen hält… 🙁

Die Software taugt übrigens nicht für meine Zwecke: man kann damit zum Bleistift keine Fototassen bestellen. Daher kann ich die Software ohnehin nicht empfehlen.

22. Dezember 2008 um 19:24

SQL-Kenntnisse gerne gesehen

SQL ist bei Gulp in letzter Zeit die Top Programmiersprache. Immerhin 20% alles Projekte setzen SQL-Kenntnisse voraus. Das finde ich prima. Der durchschnittliche Stundensatz ist mit 65 Euro aber eher im unteren Spektrum… Die meist angefragten Kenntnisse bei DB-Systemen sind übrigens Oracle (14%) und DB2 (6%). SQL-Server-Kenntnisse sind mit 5% nicht so begehrt. Das wundert mich jetzt echt.
Woran liegt das? Wird Oracle so viel mehr eingesetzt? Oder benötigt man bei Einsatz von Oracle viel wahrscheinlicher externe Beratung? Der höhere Stundensatz bei Oracle-Projekten spricht eher für letztere These. Naja, was solls…

Hier sind die Details: GULP IT-Projektmarktindex

30. September 2008 um 19:00

VS Developer- und Database-Edition werden zu einem Produkt

Heute veröffentliche Microsoft eine Pressemitteilung in der alle möglichen tolles Features des Visual-Studio-2010 veröffentlicht werden. Das ist schon interessant, aber was mich glatt von Sockel haute: Die Developer- und Database-Editionen werden zu einem Produkt! Die Database-Edition ist einfach klasse, aber wahnwitzig teuer, weil die meisten Entwickler ohnehin auch schon die Developer-Edition haben. Das kam bei Microsoft inzwischen wohl auch an. Ich bin ziemlich aus dem Häuschen, weil uns damit das Leben zukünftig schon gewaltig erleichtert wird.

In VSTS 2010 werden die derzeit separat verfügbaren Development Edition und Database Edition miteinander zu einem einzelnen Produkt kombiniert. Um den Vorteil dieser Kombination schon jetzt zur Verfügung zu stellen, erhalten alle Software Assurance-Kunden und Besitzer einer Version von Visual Studio Team System 2008 (Developer oder Database Edition) die jeweils andere Vollversion ab 1. Oktober 2008 kostenlos.

Ich bin mir nicht sicher, ob das gut oder schlecht ist. Es ist gut, weil wir die Database-Editon aus Kostengründen nicht in der Firma hätten verteilen können. Es ist schlecht, weil damit die Database-Edition faktisch aufhört zu existieren. Wer weiß, ob die Weiterentwicklung der Database-Teile weiterhin so voran getrieben wird. Wer alles davon profitiert beschriebt Gerd Drapers in seinem Blog:

As an MSDN subscriber we want you to realize the benefit of this merged feature set now, which is why we are extending this exclusive offer. If you have either the Visual Studio Team System 2008 Development Edition with MSDN Premium subscription or the Visual Studio Team System 2008 Database Edition with MSDN Premium subscription, on October 1, 2008 you will have access to both the Development Edition and Database Edition through MSDN Subscriber Downloads. This change also applies to customers who purchased Visual Studio 2005 Team Edition for Software Developers with MSDN Premium Subscription and Visual Studio 2005 Team Edition for Database Professionals with MSDN Premium Subscription.

Der Blog-Artikel hat den Titel "Team Developer + Team Data = Team Developer!". Ich finde, sein Artikel klingt weniger nach Enthusiasmus als nach Wehmut. Das drückt mir dann schon eine Träne aus dem Knopfloch…

27. Juli 2008 um 13:14

Was macht denn ein "Smoke Test Team"?

Letze Woche las ich in einer Mail von Microsoft zum ersten Mal etwas über "Smoke-Tests". Konkret schieben die Kollegen, dass dem "Smoke Test Team" ein Fehler aufgefallen sei. Das finde ich in doppelter Hinsicht interessant:

Mich interessiert grundsätzlich wie die MSler so arbeiten, meist dringen ja keine Details nach außen, was da in welcher Reihenfolge gemacht wird. Und so kann man sich dann oft nur wundern, warum eine Fehlerbeseitigung für den SQL-Server-2005, die bereits im April im kummulativen Updatepaket 7 (CU7) enthalten war, erst im Juli-Patchday als superwichtiger Security-Hotfix ausgeliefert wird.

Hier ei Auszug aus der Wikipedia, was ein Smoke-Test überhaupt ist:

Es bezeichnet den ersten Probelauf nach einer Reparatur oder der ersten Implementierung eines neuen Algorithmus um sicherzugehen, dass das Gerät oder die Programmfunktion nicht schon ansatzweise fehlschlägt. Nachdem der smoke test zeigt, dass die Rohre nicht lecken, die Stromkreise nicht durchbrennen oder das Programm nicht gleich abstürzt, kann die Apparatur eingehender geprüft werden.

Bei uns machen das die Entwickler selber, am besten gleich mit automatisierten Tests. Erst danach werden die einzelnen Komponenten im Testraum getestet. Danach kommen Integrationstests mit der Software der anderen Abteilungen zusammen.

10. Juli 2008 um 19:27

NArrange – Source-Code verhübschen

Auf Steinis Blog fand ich einen Hinweis, den ich gerne weiter geben möchte: Mit NArrange kann man sehr schön automatisiert seinen .Net-Source-Code verhübschen. Der Code wird dadurch zwar länger, aber durch die Aufteilung in Regionen doch viel übersichtlicher. Wer von Hause aus schon einen sehr hübschen und übersichtlichen Code produziert benötigt das natürlich nicht, aber für mich ist das schon ehr nützlich…

9. Juli 2008 um 22:58

öffentliche Design-Diskussion für das Entity-Framework 2.0

Als uns Darius Parys letzte Woche das neue Entity-Framework vorstellte, machte er uns darauf aufmerksam, dass das Entwicklerteam hier absolutes Neuland betritt. Das Team stellt bereits die Entwürfe zur Version 2.0 öffentlich auf deren Weblog "Entity Framework Design" bereit und bittet um Feedback von den Entwicklern, die das einsetzen. Das beeindruckt mich schon.

Transparency in the design? Over the years Microsoft has been opening up the engineering processes incrementally. Long ago there were only betas, and that was the only chance to see and give feedback about a product before it shipped. Then we started to do Community Tech Previews (CTPs). CTPs enabled us to provide bits more often and gather feedback frequently. The goal with increasing the transparency of design is to take this one step further: we would like to enable folks that are interested in Entity Framework version 2 to follow the design topics as we discuss them, and have the opportunity to provide feedback right during the time where we are actively discussing a certain aspect and before we have made a final decision.

Es würde mich sehr freuen, wenn das Schule macht. Leider werden die Anwender (in dem Fall sind das wir Entwickler) bei solchen Sachen in der Regel nicht wirklich einbezogen. Hier bietet sich die Chance frühzeitig seine Vorschläge einzubringen und sich aktiv einzubringen. Das funktioniert bei Open-Source-Projekten ja schon länger ganz gut. Hier zeigt sich auch, dass sich da wirklich nur die einbringen, die sich echt für das Thema interessieren. Ich rechne nicht mit einer "Kommentar-Flut"… 😉

25. Juni 2008 um 22:05

Hilfe gegen SQL-Injection

Wer selber Software schreibt, insbesondere ASP-Projekte, der weiß ein Liedchen davon zu singen, dass man sich gegen SQL-Injection wappnen muss. Eigentlich ist das gar nicht schwierig, man darf halt nichts was vom Benutzer oder über Schnittstellen kommt einfach so an die DB weiterreichen. Schlimm ist es beispielsweise, wenn man SQL-Befehle dynamisch zusammensetzt. Dann muss man den Input filtern (z.B. mache aus einem einfachen Anführungszeichen zwei). Alternativ kann man auch mit gebundenen Parametern arbeiten, was sich übrigens auch positiv auf die Performance auswirkt.

Wer sichergehen will, dass diese Probleme in der eigenen ASP-Lösung nicht drin sind, dem bietet Microsoft nun als Unterstützung das Security Advisory 954462 mit dem Titel "Rise in SQL Injection Attacks Exploiting Unverified User Data Input". darin wird auch auf ein neues MS-Tool verwiesen, den "Microsoft Source Code Analyzer for SQL Injection". Mit dem Tool werden ASP.NET-Anwendungen automatisiert untersucht. Das finde ich echt gut.

Eine ganz gute Erklärung wie SQL-Injection funktioniert steht bei Heise.de.

9. Juni 2008 um 20:32

Die Größte gewinnt, aber nicht immer…

Am Wochenende musste ich an meine ersten Versuche denken, eine KI-Komponente in ein Spiel zu bauen. Das müsste in der 11ten oder 12ten Klasse gewesen sein.
Als Schüler versuchte ich immer wieder Spiele zu schreiben – keine Grafischen, das ging da noch nicht wirklich. Damals gab es in der Zeitschrift "Spektrum der Wissenschaft" einen Artikel über ein Spiel, dass mir so gefiel, dass unser Informatik-Lehrer mich das netterweise implementieren ließ (anstelle irgendeiner langweiligen, regulären Aufgabe). Es ging etwa so:

  • Zwei Spieler schreiben verdeckt eine Zahl zwischen 1 und 6 auf.
  • Dann werden sie verglichen:
    • die höhere Zahl gewinnt,
    • es sei denn die Differenz ist 1, dann gewinnt die niedrigere,
    • bei Gleichstand gewinnt keiner (unentschieden).
  • Gewonnen hat, wer an Ende
    • Variante A: die meisten Gewinne hat oder
    • Variante B: die höhere Summe seiner Gewinnzahlen hat.
  • Es wird eine vorher festgelegte Anzahl an Runden gespielt.

Beispiel:
A: 5 B: 6 --> A gewinnt
A: 5 B: 5 –> unentschieden
A: 5 B: 4 –> B gewinnt
A: 6 B: 5 –> B gewinnt

Interessant wird es dadurch, dass man irgendwann anfängt das Verhalten des Gegners einzuschätzen, um erfolgreich zu sein.

Ich versuchte damals erfolglos auf den alten Apple-II-Rechnern eine gute Strategie für das Programm als Gegenspieler zu implementieren. Dass die Ergebnisse mager waren lag aber eher nicht an den damaligen Rechnern, sondern daran, dass ich keinen Schimmer hatte, wie ich das Problem angehen sollte. 🙂
Im ersten Wurf wählte ich statistische Verfahren, um das bisherige Verhalten auszuwerten, was natürlich nicht so prickelnde Ergebnisse brachte. Dann versuchte ich so eine Art Mustererkennung, um das Verhalten vorherzusagen, was mir aber nicht gelang. Damals empfand ich das als große Niederlage und konnte nicht verstehen warum mir der Lehrer trotzdem eine gute Note gab. 😉

17. Mai 2008 um 14:26

schlampige Software

Es passiert ja selten, dass in den regulären Nachrichten mal von Software die Rede ist. Wenn dann aber so ein Urteil gefällt wird, dann dürfte das für den verantwortlichen Projektleiter der Mega-Gau sein (Hervorhebung von mir):

eBay soll sicherer werden, versprach das Unternehmen im April und führte ein neues Sicherheitssystem ein. Ein Programmierfehler bewirkt nun das Gegenteil: Internetbetrüger haben wegen schlampig produzierter Software bei eBay leichtes Spiel.

Quelle: heute.de. Programmierfehler lockt eBay-Betrüger

So ein Fehler ist leicht durch ein Review auszuschließen. Mir ist völlig schleierhaft, wie dort Software entworfen wird. Kann es sein, dass hier am Budget gespart wurde? Oder wurde die Verantwortung in die Hände eines einsamen Entwicklers gelegt, der in völliger Selbstüberschätzung keine zweite Meinung einholen wollte. OK, mir passieren auch Fehler. Aber wenn man sich die strategische Bedeutung der Software für das Unternehmen ansieht, dann wirft das ein ganz schlechtes Licht auf die Firma.

4. April 2008 um 21:29

Jenga-Design

Jenga
Mein Kollege Felix erklärte mir heute was Jenga-Design ist: Ohne Rücksicht auf die Folgen oder das ursprüngliche Konzept werden Teile der Software entfernt und dafür an anderer Stelle Funktionen draufgepackt. Ich fand das Bild sehr schön und verstand sofort was gemeint ist. Es ist quasi das Architektur-Pendant zum Spaghetti-Code. Ich denke, mir fallen da Beispiele ein, kannte das aber bisher unter dem Ausdruck "Rucksäcke dran bauen" (früher auch mal "Balkone anbauen", das habe ich aber schon ewig nicht mehr gehört).

Damit will ich nicht sagen, dass jede Art der Erweiterung gleich zu Jenga-Design führt. Aber wenn die Änderung ganz fix gehen muss ("mal eben schnell") oder das Gesamtkonzept nicht berücksichtigt wird, dann kann das schnell passieren… 😉

3. April 2008 um 18:50

Manche Fehler sind eine Klasse für sich

Ein Kollege machte mich die Tage darauf aufmerksam, dass bei der Bitkom der Leitfaden zur Fehlerklassifikation für Software letzte Woche endlich online verfügbar gemacht wurde. Darin wird ziemlich gut beschrieben, warum die Klassifizierung von Fehlern sinnvoll ist. Die Beispiele im Anhang finde ich dabei ziemlich nützlich.

Hier der Link zum PDF.