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 more

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 more

Teamarbeit

Arbeiten in Großen Teams

1. Entscheiden und Realisiern unter Einbindung vieler Personen

Die Willensbildung in Organisationen, und im engeren Sinne die Entscheidungs- und die Konsensfindung, ist längst nicht mehr eine Frage weniger Personen. In vielen Situationen ist die Einbindung vieler Personen in wesentliche Entscheidungen notwendig. Grund dafür ist die fortschreitende Spezialisierung und damit die Zunahme von Abhängigkeiten, nicht nur in Organisationen, sonderen zunehmend auch zwischen Organisationen.

1.1 Zunehmende Arbeitsteilung führt zu Reduktionismus und Umsetzungsschwäche

Spezialisierung hat den Vorteil tieferer Einblicke und präziseren Wissens innerhalb eines Aktivitätsfeldes. Sie führt zu Fokussierung und Konzentration und wirkt dadurch Kompetenz- und Produktivitätsteigernd. Sie bringt aber die Gefahr der reduktionistischen Betrachtung mit sich. Ein Spezialist sieht die Welt eben in der speziellen Optik seines Fachgebietes und beurteilt sie danach. Problemlösungen sind aber nicht immer nur in einem Fachgebiet zu finden, vielmehr ist auch der Beitrag von Fachleuten aus anderen Bereichen notwendig um eine Situation in alles Aspekten zu erfassen und dann auch erfolgreich zu bewältigen.

Read more