Archive for category Programmieren

Lotus Domino und C#

Mittlerweile darf ich mich beruflich ja ein wenig mit Lotus Domino Softwareentwicklung auseinandersetzen. Die Dominowelt ist eine ganz ganz eigene Welt – aber schön langsam gewöhne ich mich daran.

Meine ersten Schritte passierten allerdings von ausserhalb, Ziel war der Zugriff auf Dominodatenbanken von Java Programmen (Servlets) aus. Dies funktioniert auch ganz gut, vielleicht veröffentliche ich später einmal ein paar Codeschnipsel.

Heute hab ich mich einmal daran versucht das ganz in C# zu testen, und als Ergebnis gilt es zu sagen, dass das auch viel besser funktioniert, vor allem weil man die COM Klassen ja direkt aus C# raus ansprechen kann.

Dabei ist folgender Codeschnippsel entstanden, der nix anderes macht als die lokale Maildatenbank zu öffnen, alle Mails zu durchwühlen, die Attachments die sich darin befinden an einen “sicheren” Ort speicher und dann aus dem eigentlichen Mail rauslöscht, aber nicht ohne vorher einen Hinweis zu hinterlassen wo sich denn nun der Anhang befindet.

Vielleicht braucht ja sowas mal wer wirklich. :)

Read the rest of this entry »

Tags: , , , , , ,

StringInputStream StringOutputStream

Nach einigen Überlegungen und Tests sind mir meine alten StringBufferInputStream und StringBufferOutputStream Konstrukte von ein paar Posts früher irgenwie buggy vorgekommen. Vor allem gab und gibts Schwierigkeiten mit Sonderzeichen – dieses Thema hatte ich bis heute eigentlich total ignoriert.

Nunja, aufgeben darf man ja nie – daher hab ich einen neuen Ansatz versucht, der besser funktioniert – und man muss auch nicht mehr den Umweg über einen StringBuffer machen.

Read the rest of this entry »

Tags: , , , , ,

C# Farbenmanagement #2

Ein paar kleine Optimierungen / Refactorings haben sich in meiner Farbenkonvertierungsklasse breitgemacht.

Zum einen habe ich den Code vereinfacht, indem ich sich wiederholenden Code entfernt habe, zum anderen brauchte ich noch eine weitere Konvertierungsart, und zwar vom XYZ Farbraum zurück in den L*ab Farbraum.

Farbmessgeräte werden üblicherweise einmal am Tag kalibriert, dazu haben sie einen Weiß-Standard der gemessen wird und an dem sich das Gerät orienterien kann. Somit werden die Alterungserscheinungen des Blitzlichtes wieder kompensiert und man bekommt gleichmässige Messergebnisse.

Die Werte dieses Standards liegen aber nur als XYZ Werte vor, das Messgerät liefert aber in der gebrauchten Einstellung nur L*ab Werte zurück, daher die kleine zusätzliche Konvertierungsmethode.

Bei den Refactorings hat sich gezeigt wie unendlich praktisch Unit-Tests sind. Man kann seine Methoden optimieren, kürzen, verändern. Ist man fertig lässt man die Unit-Tests drüberlaufen und kann sich dann sicher sein, dass die Überarbeitungen nichts an den Ergebnissen geändert hat.

Und hier nun der gesamte neue Code:

Read the rest of this entry »

Tags: , , , , , , , , , ,

C# Farbenmanagement #1

Für eine Auftragsarbeit musst ich mich Farbräumen und deren Konvertierungen herumschlagen. Herausgefallen ist dabei so eine Art kleine “Farbverwaltungs”-Klassenbibliothek, mal sehen vielleicht wird ja in Zukunft noch mehr draus, es gibt ja noch viele Farbräume zu begutachten.

Anfangen tut das mit den verschiedenen Farbmodellen die es gibt, konkret brauchte ich nur einige wenige:

  • L*ab – ein gängiger (uralter) Standard in der “Farbenindustrie”
  • L*CH – eine andere Darstellung der Farbwerte
  • XYZ – eine Beschreibung des CIE Farbraumes
  • sRGB – wird u.a. von Windows verwendet um Farben auf dem Bildschirm darzustellen

Falls ihr mehr zu diesem Thema wissen wollt findet ihr ganz viele Ressourcen unter: Easy RGB

Um kurz auf die Programmiertechnik einzugehen: ich habe mich dazu entschieden die Klassen so in der Art immutable zu machen, das heisst eine einmal erzeugte Instanz kann nicht mehr geändert werden. Man kann die Werte einer Instanz nur über den Konstruktor ändern. So richtig immutable ist es aber wiederum doch nicht programmier, weil instanzen der gleichen Klasse bzw. die von einer dieser Modelklassen erben könnten ja theoretisch Werte ändern. Aber ich hatte jetzt keine Lust mich da im Moment weiter einzulesen und das wirklich 100%ig zu machen.

Und nun zu den Listings, die Namespaces hab ich rausgenommen, könnt ihr ja euch ganz einfach dazudenken ;)

Read the rest of this entry »

Tags: , , , , , , , , , ,

StringBufferInputStream

UPDATE: siehe auch den neuen Post StrinInputStream StringOutputStream der einige Schwächen dieser Lösung hier beseitigt.

Da programmiert man vor sich hin und vor sich hin, man will ein Java Objekt, oder besser gesagt ein Bean in ein XML-Format bringen (bzw. serialisieren).

Es gibt ja diese wunderbare Library die auch Java RMI verwendet, aber leider kann die nur in Streams schreiben, bzw. von Streams lesen.

Will man aber das XML (warum auch immer) als String haben, kann man den Umweg über ein File gehen – das ist eher doof – oder sich einen StringBuffer-Stream schreiben.

Hört sich vielleicht ein wenig kompliziert an, aber eigentlich sind die Java Streams recht einfache Konstrukte.

Da wäre diese zwei Streamchen zu erwähnen:

Will man nun eigene Streams schreiben, implementiert man einfach seine eigene Java Klasse die von dem jeweiligen Stream erbt.

So sieht dann mein StringBufferInputStream aus:

Read the rest of this entry »

Tags: , , ,

All form fields are required.







All form fields are required.