Artikel von Stefan Lieser
Als Abonnent haben Sie vollen Zugriff auf alle Artikel im Archiv.
Zum Download eines Artikels und/oder der zugehörigen Quelltexte, klicken Sie
den gewünschten Artikel einfach an.
(
dotnetpro 03/2012,
Seite 108)
Viele Websites bieten ihre Daten und Services auch über eine Programmierschnittstelle (API) an. Wenn eine solche Schnittstelle nicht existiert, bleibt als Ausweg nur Screen-Scraping.
(
dotnetpro 03/2012,
Seite 109)
Mit Flow-Design lassen sich auch parallele Vorgänge modellieren. Standardbausteine erleichtern die Umsetzung.
Diese Übung ergänzt die neuen Bausteine Scatter und Gather.
(
dotnetpro 02/2012,
Seite 109)
Sie sollen aus vielen JPEG-Dateien die Stichworte extrahieren. Eine ideale Aufgabenstellung für Parallelverarbeitung.
Aber läuft das Programm damit auch wirklich schneller?
(
dotnetpro 02/2012,
Seite 110)
Mit den Formaten Exif und IPTC können Sie JPG-Dateien Stichworte zuordnen.Viele Hersteller von Grafikprogrammen
nutzen dieses Format aber nicht. Dieses und weitere Probleme löst Stefan auf seinem Weg zur digitalen Fotosammlung.
(
dotnetpro 01/2012,
Seite 110)
Früher habe ich meine Fotos in Tüten gesteckt und in Schuhkartons gesammelt. Heute im Digitalzeitalter stehen mit Tags bessere Ordnungssysteme zur Verfügung. Doch was passiert da hinter den Kulissen?
(
dotnetpro 01/2012,
Seite 26)
.NET-Entwickler fühlen sich in der Welt von Windows Phone 7 sofort zu Hause, da sie die gewohnte Programmiersprache, das gewohnte Framework und die gewohnten Tools verwenden können.
Doch wenn es ans automatisierte Testen gehen soll, ist es vorbei mit der Gewohnheit.
(
dotnetpro 01/2012,
Seite 111)
Texte mit Markdown-Auszeichnungen in einem Control darzustellen, das war die Aufgabe. Natürlich ist bei der Lösung
wieder alles im Fluss. Und weil das im echten Leben auch so ist, muss wieder einmal eine Lösung her, die evolvierbar
ist. So ist sichergestellt, dass spätere Anforderungen einfach umsetzbar sind.
(
dotnetpro 12/2011,
Seite 100)
Es muss nicht immer HTML oder RTF sein.Wer Texte auszeichnen will, kann auch MarkDown verwenden.
Dieses Format ist besonders einfach und aus vielenWikis bekannt.Also lautet die Übung: Schreiben Sie ein Control,
das MarkDown-Texte darstellen kann.
(
dotnetpro 12/2011,
Seite 101)
Mit TagClouds lassen sich textlastige Oberflächen gut auflockern. Sie präsentieren die häufigsten Themen in bunt
gemischter Form. Ein entsprechendes Control ist gut mit Silverlight zu realisieren.
(
dotnetpro 11/2011,
Seite 108)
Im Web haben sich Tag-Clouds eingebürgert. Sie bieten eine alphabetische Liste von Einträgen, die durch die
Größe der Schriftart einen Hinweis darauf geben, wie wichtig das Thema für die jeweilige Website ist.
Ein Control für solche Wortwolken wäre sicher praktisch.
(
dotnetpro 11/2011,
Seite 110)
Die Kugel rollt, die Pins fallen, und der Kopf des Entwicklers raucht. Berücksichtigt der Algorithmus auch alle
Sonderfälle für Spares und Strikes? Auch hier gilt wieder: Nachdenken hilft. Und Flow-Design und der Werkzeugkasten
für Event-Based Components bieten nützliche Hilfe.
(
dotnetpro 10/2011,
Seite 96)
Manche dojos in den vergangenen dotnetpro-Ausgaben waren ziemlich schwer. Diesmal soll es übersichtlicher sein.
Stefan, kannst du mal eine hübsche, kleine Übungsaufgabe stellen?
(
dotnetpro 10/2011,
Seite 16)
Die Datenbank SimpleDB von Amazon ist ein hochverfügbares, skalierbares, schemaloses Datenbanksystem.
Allerdings ist der Umgang mit der Schnittstelle des entsprechenden Webdienstes nicht sehr bequem.
Das Open-Source-Framework Simol vereinfacht den Zugriff auf SimpleDB für .NET-Anwendungen stark.
(
dotnetpro 10/2011,
Seite 22)
Entwickler sind es gewohnt, Daten in relationalen Datenbanken abzulegen. Doch wie so oft im Leben lohnt sich auch
hier ein Blick über den Tellerrand.
(
dotnetpro 10/2011,
Seite 64)
Testen ist gut, aber manchmal sind Tests ziemlich schwer verständlich. Leicht lesbar sind Spezifikationen im Stile des
Behavior Driven Developments. Sie lassen sich mit dem Framework Machine.Specifications umsetzen.
(
dotnetpro 10/2011,
Seite 97)
Energiesparen beginnt damit, sich regelmäßig einen Überblick über die Verbräuche zu verschaffen.
Das kann man auf Papier machen, aber mit einerWindows-Phone-7-App ist es natürlich viel cooler.
(
dotnetpro 09/2011,
Seite 104)
Das Thema Energiesparen hat zwar nicht unmittelbar mit Softwareentwicklung zu tun, dürfte aber dennoch
den einen oder anderen Leser umtreiben. Stefan, kannst du zu diesem ganz praktischen Thema eine Übung stellen?
Die Leser sollen etwas lernen und mit dem Ergebnis Energie sparen können.
(
dotnetpro 09/2011,
Seite 106)
Im vorangegangenen Heft haben Sie einen Fahrkartenautomaten erstellt. Jetzt kommt noch ein Bus dazu.
Und zwar einer, der Nachrichten transportiert.
(
dotnetpro 08/2011,
Seite 110)
Im vorangegangenen Heft haben Sie sich einen Fahrkartenautomaten erstellt. Und jetzt bauen Sie noch einen Bus
dazu.Allerdings einen für Nachrichten.
(
dotnetpro 08/2011,
Seite 111)
Ein Fahrkartenautomat lässt sich über einen Zustandsautomaten implementieren. Die Eingänge und Ausgänge des
Automaten ermöglichen es, ihn als Funktionseinheit im Sinne des Flow-Designs zu betrachten.
(
dotnetpro 07/2011,
Seite 118)
Informatiker kennen das Konzept der „endlichen Automaten“. Der Durchschnittsbürger kennt Fahrkartenautomaten.
Stefan, was verbindet die beiden Arten von Automaten miteinander?
(
dotnetpro 07/2011,
Seite 119)
Trennen Sie eine Funktionalität von einem nicht-funktionalen Aspekt wie dem der asynchronen Ausführung.
Das gilt nicht nur für die Implementierung, sondern auch bereits für den Entwurf.
(
dotnetpro 06/2011,
Seite 103)
Inkrementelles Suchen hat etwas von Hellsehen an sich.Man tippt ein paar Buchstaben ein, und schon während
des Eintippens bekommt man die ersten Ergebnislisten angezeigt. Stefan, kannst du dazu eine Übung stellen?
(
dotnetpro 06/2011,
Seite 104)
Seine Daten will man am liebsten überall von verschiedenen Geräten aus verfügbar haben. Kein Problem, wenn man
sie über die Cloud synchronisiert. Und das ist gar nicht so schwer.
(
dotnetpro 05/2011,
Seite 112)
Über die Cloud wurde genügend spekuliert. Es wird Zeit, sie konkret anzuwenden. Stefan, kannst du zu diesem
wolkigen Thema eine möglichst handfeste Übung stellen?
(
dotnetpro 05/2011,
Seite 107)
Das Data Binding von WPF bietet beeindruckende Möglichkeiten. MVVM ist für WPF-Anwendungen das geeignete
Konzept. Flow-Design erlaubt eine sehr natürliche Art der Modellierung. Und Event-Based Components stellen
ein universales Konzept für Modellierung und Implementierung. dotnetpro zeigt, wie Sie diese Konzepte gemeinsam
nutzen können.
(
dotnetpro 05/2011,
Seite 116)
MVVM-Pattern? Kennt man. Flow Design? Schon mal gehört. Event-Based Components? Klar, das ist die Spezialität
von Ralf und Stefan. Aber alles zusammen auf einmal? Ist noch nicht da gewesen. Geht aber, auch wenn Stefan bei der Umsetzung ins Schwitzen kam.
(
dotnetpro 04/2011,
Seite 120)
Software modellieren: Ja, dem gehört die Zukunft. Aber was soll man eigentlich genau modellieren?
Datenflüsse oder Abhängigkeiten von Funktionseinheiten? Stefan, kannst du dazu eine Übung stellen?
(
dotnetpro 04/2011,
Seite 121)
„Adjazenz“ bezeichnet keinen geistlichen Würdenträger und ist auch kein militärischer Dienstgrad, sondern steht für
die Beziehung zwischen Knoten und Kanten. Über adjazente, also miteinander verbundene Knoten kann man
Zusammenhänge modellieren und erforschen. dotnetpro macht einen Ausflug in die Graphentheorie, für die es viele
praktische Anwendungen gibt.
(
dotnetpro 03/2011,
Seite 108)
Mit einem Graphen kann man darstellen, wie die Dinge miteinander zusammenhängen.Weil aber alles mit allem irgendwie zusammenhängt, kann man mit Graphen eigentlich alles darstellen. Das ist interessant, und deswegen gibt es hier dazu eine Übung.
(
dotnetpro 03/2011,
Seite 109)
Hat da jemand 'piep' gesagt? Der Zwitscherfinder weiß die Antwort.Alle paar Minuten checkt er die Twitter-Website nach dem gesuchten Schlüsselwort und präsentiert das Ergebnis. Übrigens lässt sich auch ein Zwitscherfinder vorteilhaft über Event-Based Components realisieren.
(
dotnetpro 02/2011,
Seite 118)
Gute Übungsaufgaben müssen cool sein. Sonst macht das Herumtüfteln keinen Spaß.Also, Stefan: Kannst du
eine Aufgabe stellen, bei der ein cooles Programm entsteht, das zugleich technisch herausfordernd ist?
(
dotnetpro 02/2011,
Seite 120)
Grundlagen muss man gut verstanden haben.Wer sie besonders gut verstehen will, sollte sie nachbauen. Bei dem
Versuch, LINQ selbst zu implementieren, hat auch Stefan wieder etwas dazugelernt.
(
dotnetpro 01/2011,
Seite 112)
Manche Grundlagen versteht man besser, wenn man sie einmal selbst implementiert hat.
Stefan, kannst du dazu eine Übung stellen?
(
dotnetpro 01/2011,
Seite 116)
Im .NET Framework gibt es keine vordefinierte Datenstruktur für Bäume.Wer seine Daten in einer Baumstruktur
ablegen will, muss sich diese Struktur selbst implementieren. Eine ideale Aufgabe für das dotnetpro.dojo!
(
dotnetpro 12/2010,
Seite 108)
Baumstrukturen sind in der Informatik allgegenwärtig.Wer selbst Bäume implementiert, lernt dabei viel über ihre Arbeitsweise. Stefan, kannst du dazu eine Übung stellen?
(
dotnetpro 12/2010,
Seite 109)
Das Konzept der Event-Based Components einzuüben – das war das Ziel dieses dojos. Die konkrete Aufgabe bestand darin, eine Komponente für den Textumbruch mit Silbentrennung zu entwickeln. Zum Glück hat Stefan Lieser ein eigenes Test-GUI entwickelt, denn damit konnte er viele Fehler entdecken und beseitigen.
(
dotnetpro 11/2010,
Seite 112)
Softwarekomponenten so einfach wie Legosteine zusammenstecken zu können – mit diesem Versprechen tritt das Konzept der Event-Based Components an. Stefan, kannst du dazu eine Übung stellen?
(
dotnetpro 11/2010,
Seite 113)
Ein Windows-Dienst ist eng in die Infrastruktur des Betriebssystems integriert.
Das erschwert automatisierte Tests.Wenn Sie den eigentlichen Kern des Dienstes unabhängig von der Infrastruktur halten, ist er dennoch für automatisierte Tests zugänglich.
(
dotnetpro 10/2010,
Seite 100)
In der Unix-Welt heißen sie Dämonen: die Dienste, die im Hintergrund ihre Arbeit verrichten.
Stefan, stell doch mal eine Aufgabe, die in die Unterwelt derWindows-Dienste führt.
(
dotnetpro 10/2010,
Seite 107)
Immer hübsch der Reihe nach: Das gilt nicht nur imWartezimmer, sondern auch im Stack und in der Queue der
Informatiker. Und wer sich das Entwicklerleben vereinfachen will, sollte auch bei ihrer Implementierung
die richtige Reihenfolge einhalten: Erst planen, dann Tests entwickeln, dann implementieren.
(
dotnetpro 09/2010,
Seite 104)
In den Zeiten der großen Programmier-Frameworks geht leicht das Wissen um die grundlegenden Algorithmen und Datenstrukturen verloren. Stefan, kannst du mal eine Aufgabe stellen, die zu den Wurzeln der Programmierung zurückführt?
(
dotnetpro 09/2010,
Seite 111)
Zum Entwickleralltag gehört es, sich in neue Technologien einzuarbeiten, beispielsweise in eine NoSQL-Datenbank.
Der Code, der dabei entsteht, muss nicht die Qualität von Produktionscode haben. Ein testgetriebener Ansatz ist dafür
aber dennoch nützlich, denn die Tests dokumentieren die gewonnenen Erkenntnisse in leicht nachvollziehbarer Form.
(
dotnetpro 08/2010,
Seite 86)
Kaum eine Software kommt ohne Persistenz aus.Auf diesem Gebiet stehen die relationalen Datenbanken in fest gefügter Phalanx.Aber geht Persistenz nicht auch anders? Da gibt es doch diese NoSQL-Dokumentendatenbanken. Stefan, fällt dir dazu eine Übung ein?
(
dotnetpro 08/2010,
Seite 87)
Statistik hat immer mit Zahlen zu tun. Und Zahlen kann man immer irgendwie grafisch darstellen, eine Zahlenreihe
zum Beispiel in einem Boxplot.Aber wer versucht, ein entsprechendes Silverlight-Control testgetrieben zu entwickeln,
muss feststellen, dass auch Silverlight 4 die testgetriebene Entwicklung nur mangelhaft unterstützt.
(
dotnetpro 08/2010,
Seite 80)
Es hat sich herumgesprochen: Auf externe Ressourcen imWeb sollte man immer asynchron zugreifen. Denn nur
dann ist gewährleistet, dass die Benutzeroberfläche nicht einfriert, wenn die Reaktion auf sich warten lässt.
Doch wie geht man in automatisierten Tests damit um?
(
dotnetpro 07/2010,
Seite 110)
Wie lange dauert und was kostet dies und jenes im Durchschnitt, höchstens, mindestens und am wahrscheinlichsten?
Statistik ist das halbe Leben, in Form von Zahlen und in Form von Grafiken. Stefan, kannst du dazu eineAufgabe stellen?
(
dotnetpro 07/2010,
Seite 111)
Den Mogelzettel für ein Minesweeper-Minenfeld erstellen Sie nach dem EVA-Prinzip: Eingabe,Verarbeitung,Ausgabe.
Die Lösung gestaltet sich nach gründlicher Planung recht einfach. Da im Detail aber Variationen möglich sind, können
Sie diese Übung mit Gewinn auch mehrmals lösen.
(
dotnetpro 06/2010,
Seite 112)
Eingabe,Verarbeitung,Ausgabe: Das EVA-Prinzip durchdringt die gesamte Softwareentwicklung. Eine Analyse
der Datenstrukturen und die Verwendung der passenden Algorithmen spielen dabei eine herausragende Rolle.
Stefan, fällt dir dazu eine Übung ein?
(
dotnetpro 05/2010,
Seite 108)
Nach wie vor spielt die klassische „Forms over Data“-Anwendung eine große Rolle. Daten aus einer Datenbank sollen
per Formular bearbeitet werden.Wenn diese Applikationen getestet werden, spielen Testdaten eine zentrale Rolle.
Möglichst viele sollten es sein und möglichst realistisch geformt noch dazu. Stefan, fällt dir dazu eine Übung ein?
(
dotnetpro 04/2010,
Seite 104)
Die Aufgabe war, das Spiel „Vier gewinnt“ zu implementieren. Auf den ersten Blick ist das eine eher leichte Übung.
Erst bei genauerem Hinsehen erkennt man die Schwierigkeiten. Wie zerlegt man beispielsweise die Aufgabenstellung,
um überschaubare Codeeinheiten zu erhalten?
(
dotnetpro 03/2010,
Seite 108)
Eine Hilfsklasse stellt eine Methode zur Verfügung. Die übergeordnete Klasse ruft die Methode auf. Resultat: Die übergeordnete Klasse ist von der untergeordneten Klasse abhängig. So sollte es aber gerade nicht sein.Abhilfe schafft das
Dependency Inversion Principle. Durch die Einführung expliziter Schnittstellen bleiben übergeordnete Klassen unabhängig.
(
dotnetpro 02/2010,
Seite 116)
Der Stecker für den Monitor muss nicht auch für den Drucker passen. Der Monitorstecker ist auf eine einzelne
Aufgabe spezialisiert, und das ist gut so. Das Gleiche sollte für Softwareschnittstellen gelten. Spezialisierte Interfaces
verringern die Kopplung zwischen Klassen und erleichtern die Testbarkeit.
(
dotnetpro 11/2009,
Seite 98)
Es dürfte sich mittlerweile herumgesprochen haben, dass Softwareentwicklung nach wasserfallartigen Modellen nur
selten funktioniert. Die Alternative lautet: agile Softwareentwicklung. dotnetpro erläutert die Unterschiede, wie
agile Entwicklung in der Praxis funktioniert und wie sich die Anforderungen des Kunden sicher umsetzen lassen.
(
dotnetpro 10/2009,
Seite 82)
Eine wichtige Errungenschaft der objektorientierten Programmierung ist die Vererbung. Richtig eingesetzt, kann sie helfen, Komplexität in Softwaresystemen zu reduzieren. Doch Vererbung ist nicht gleich Vererbung. Nur wenn sich der Entwickler an einige Prinzipien hält, spielt sie ihre Stärke aus.
(
dotnetpro 08/2009,
Seite 68)
Bei der Entwicklung von Software können nicht alle Aspekte von Anfang an ausreichend berücksichtigt werden.
Was kann man tun, um neue oder geänderte Anforderungen später noch umzusetzen? Der Artikel geht dieser Frage
nach und erläutert, warum Klassen offen für Erweiterungen, aber geschlossen gegenüber Modifikationen sein müssen.
(
dotnetpro 06/2009,
Seite 10)
Dieser erste Beitrag einer fünfteiligen Serie über die SOLID-Prinzipien erläutert, warum eine Codeeinheit nur für
eine einzige, klar definierte Aufgabe verantwortlich sein sollte: Nur so bleibt Software langfristig erweiterbar,
nur so kann letztlich sichergestellt werden, dass die Software die gestellten Anforderungen korrekt erfüllt.
(
dotnetpro 05/2009,
Seite 52)
Im VIP-Tipp stellt ein Experte Buchtitel vor, die er persönlich für besonders lesenswert hält. Der VIP-Tipp soll
als Entscheidungshilfe für Softwareentwickler bei der Auswahl der passenden Fach lektüre dienen.
Die Aktion ist eine Kooperation zwischen der Fachbuchhandlung Lehmanns (www.lob.de/viptip), dem Seminar -
anbieter Professional Developer College (www.prodevcollege.de) und der dotnetpro (www.dotnetpro.de).