About Philosophisches und anderer Schmalz

This page contains an archive of all entries posted to /blog/wvk in the Philosophisches und anderer Schmalz category. They are listed from oldest to newest.

Modellierung is the previous category.

Ruby, Rails und 'drum und 'dran is the next category.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31

Main

Philosophisches und anderer Schmalz Archives

September 7, 2007

Mein erstes Mal

class HelloSayer
  def scream
    3.times do 
      puts "hello world!".upcase
    end 
  end
end
h = HelloSayer.new
h.scream

Nun, wo dies gesagt ist: Willkommen zu meinem Diplomarbeits-Blog, wo in der nächsten Zeit das eine oder andere mehr oder minder Interessante zum Fortschritt meiner Arbeit zu finden sein wird. Pro Forma soll hier erst eine kleine Zusammenfassung dessen erfolgen, wie das Ziel dieser Arbeit (neben der Erlangung des akademischen Grades des "Diplom-Ingenieur (FH)", aussehen wird. Genaueres befindet sich in der ausführlichen Konzeptbeschreibung, die ich gleich mal versuchen werde als PDF hier anzuhängen.

Die Ausgangsituation: Ich habe momentan einen Hostingserver laufen, der von seiner Softwareauswahl her als typisches LAMP-System angesehen werden kann. Dafür gibt es zwar eine teilamputierte Hand voll webbasierter Administrationsoberflächen, jedoch keine die so wirklich meine Ansprüche abdeckt. Deswegen werde ich im Rahmen dieser Diplomarbeit eine eigene Server-Administrations- und Kundenverwaltungs-Applikation entwickeln, die
a) meinen Ansprüchen gerecht werden,
b) komplett in Ruby geschrieben und
c) sinnvollen Gebrauch von Web 2.0-Technologien machen soll.

Was meine Serverkonfiguration nicht ganz alltäglich macht, ist die Tatsache dass ein Großteil der Software ihre Informationen nicht aus Konfigurationsdateien wie /etc/passwd, /etc/aliases oder ~/.forward bezieht, sondern aus einer MySQL-Datenbank. Das schreit für mich förmlich nach einer Verwaltungsoberfläche in Ruby on Rails mit seinem ActiveRecord-Konzept.

Nundenn, soviel zur Einführung. Mehr Info dazu gibt's in dieser PDF-Datei.
Momentan beschäftige ich mich mit der Erstellung der Use-Case- und Klassen-Spezifikation. Diese liegt in ihrer jeweils aktuellsten Version unter http://chaos.hobby-astronomie.net/dipl/consolvix/consolvix.html. eine XMI-Datei befindet sich unter http://chaos.hobby-astronomie.net/dipl/consolvix.xmi. Ratschläge, Ideen und Wünsche sind jederzeit gern gesehen, auch wenn das alles noch weit von einer brauchbaren Spezifikation entfernt ist.

September 22, 2007

Prozess != Prozess

Den heutigen und gestrigen Tag habe ich etwas intensiver mit Klassendesign und Überlegungen zum Datenbankschema gemacht. Zwar ist es in Anbetracht der Tatsache, dass ich noch nicht einmal meine Use Case-Sammlung Fertig habe, etwas verfrüht um mir schon konkrete Gedanken zur genauen technischen Implementierung zu machen, aber ich denke mal dass diese Tätigkeit durchaus gerechtfertigt ist. Warum? Ich habe technische Vorgaben durch das System selbst, die ich verwalten möchte. Andererseits habe ich natürlich auch meine "Vorgaben", wie die Verwaltung im Endeffekt für den Benutzer aussehen soll, und diese sollten möglichst nicht durch technische vorgaben beeinflusst werden.
Momentan laufen also zwei Entwicklungsansätze Ansätze parallel, und das sorgte just heute für Verwirrung. Das gestern noch vorgeschlagene Klassendesign für die Benutzerverwaltung (insbesondere aus E-Mail-systemtechnischer Sicht) war heute wieder mehrfach zentrale Bestandteil meiner Überlegungen. Und siehe da, es wurde wieder mehrfach verändert.
Nun ist mir als Ursache dafür klar geworden, dass ich hier zwei Prozesse miteinander zu verquirksen versuche, die in erster Linie nichts miteinander zu tun habe: Der technische/systemverwalterische Prozess und der Geschäftsprozess. Mal modelliere ich etwas nach den Vorstellungen des einen, mal nach denen des anderen. Und das sollte hier und jetzt aufhören, denn sonst komme ich nie auf einen grünen Zweig.

Ein paar Dinge sollten mir klarer sein, und hier ist ein Versuch der Klärung:


Wer wird die Software am Ende einsetzen?

Ich selbst, meinen Server. Aber: es gibt andere Menschen, die bereits ihr Interesse bekundet haben.

Soll Consolvix eine möglichst flexible Softwarezusammenstellung unterstützen?

Nein. Consolvix soll, insbesondere zu Beginn, genau die vorgegebene Systemkonfiguration möglichst optimal, sprich vollständig, verwalten können. Für andere Softwarekonfigurationen sollen aber später Zusatzmodule geschrieben werden können. Was also an Consolvix flexibel und universell gestaltet werden soll, ist "lediglich" die Modul-API.

Soll die Software Geschäftsprozesse vorgeben oder soll sie möglichst Geschäftsmodell-unabhängig, also eher systemorientiert sein?

Das ist die schwierigste Frage. Ich tendiere zur Antwort, dass sie möglichst meine Vorstellungen des Hostinggeschäftsmodells vorgeben soll. Grundgedanke ist dieser: die rein technische Administration lässt sich auch sehr gut mit Software wie Webmin erledigen, außerdem ist durch die Verlagerung der Konfiguration in die Datenbank bereits eine gewisse Abstraktion zum System gegeben. Insofern ist es möglich, die Systemverwaltung zu einem Großteil über PHPMyAdmin zu erledigen (mache ich zur Zeit). Außerdem spielt der buchhalterische Aspekt eine elementare Rolle: zwar werde ich im Rahmen der Diplomarbeit vermutlich nicht die ganze Rechnungsverwaltung implementieren, aber letzten Endes sollte sich Consolvix doch auf genau diese Aufgabe ausrichten.

Nundenn, mal schauen was diese Antworten mir bringen werden.

October 2, 2007

Assoziation und Aggregation in Rails

Weil ich immer mal wieder eine Weile überlegen muss, wie nun genau die verschiedenenen Assoziationen wie has_one, has_one und has_and_belongs_to_many gebildet werden (im Sinne der Fremdschlüssel in der Datenbank), hab ich hier mal eine Grafik aus meiner Bachelorarbeit angefügt, die vielleicht auch dem einen oder anderen Rubyisten unter euch eine Hilfe sein wird.

Well, here goes:
RailsClassAssociations.png
Oben ist die Klassen-Assoziation angegeben, in der Mitte der verwendete Ruby-Code und unten die Tabellen mit den Fremdschlüsseln.

Ergänzung zu Philipps Kommentar: Wenn man 10 Aggregationen hat, kommen die einfach nacheinander, genau. Man kann sich auch über die Namenskonventionen hinwegsetzen und z.B. die Fremdschlüssel- und Tabellennamen explizit angeben. Allerdings wollte ich hier jetzt keine Einführung in ActiveRecord geben, da verweise ich gerne auf die Doku ;-). Hier aber mal eine Beispielklasse meines Systembenutzers (siehe Klassendiagramm für Details):

class SystemUser < ActiveRecord::Base
  belongs_to :client
  has_and_belongs_to_many :system_groups
  has_many :user_access_rights
  has_one :reseller_account, :foreign_key => 'reseller_id'
end

Oder hier die Assoziationen des AccessRights, hier sind die Zusammenhänge im Datenmodell etwas komplizierter. Die Vergknüpfung erfolgt über eine Tabelle, die mehr informationen als nur die Fremdschlüssel beeitstellt. Außerdem, um Daniels Kommentar zu würdigen, kann man so auch mit Verknüpfungstabellen arbeiten, deren Namen sich nicht aus der in alphabetisch richtiger Reihenfolge zusammengesetzten Namen der verknüpften Entitäten/Tabellen besteht:

class AccessRight < ActiveRecord::Base
  belongs_to :consolvix_module
  has_and_belongs_to_many :system_users,
                          :join_table => 'user_access_rights',
                          :foreign_key => 'access_right_id',
                          :association_foreign_key => 'user_id'
  has_and_belongs_to_many :system_groups,
                          :join_table => 'group_access_rights',
                          :association_foreign_key => 'access_right_id',
                          :foreign_key => 'group_id'
end
class UserAccessRight < ActiveRecord::Base
  belongs_to :system_user, :foreign_key => 'user_id'
  has_one :access_right
end
usw.

December 19, 2007

Faktensammelsurium

Der heutige Tag hatte es mal wieder in sich. Erst eine mühselige Reise aus .nl (familiäre Gründe...) zurück, die doppelt so lange dauerte als eigentlich nötig gewesen wäre, dann die Feststellung dass ich abgesehen von der Diplomarbeit auch noch andere Arbeitsberge zu bewältigen habe, dann ein Bug der sich einfach nicht lokalisieren geschweige denn beheben ließ, und dann noch ein durch ein fehlgeschlagendes glibc-Update unbrauchbar gewordenes Betriebssystem auf meinem Hostingserver. Während nun also das 4 Stunden alte Backup über die DSL-Leitung gequetscht wird, kann ich mir ja ein paar Minuten des Zusammenfassens meines Arbeitsfortschrittes widmen.

Erste Feststellung: Ich hatte gehofft, die während der letzten beiden Tage weiter zu kommen -- weiter, als ich jetzt gekommen bin. Aber das ist ja eh immer dasselbe...

Zweite Feststellung: Nach einem Gespräch mit Prof. Klingspor letzte Woche habe ich nun eine relativ kontrastreiche, wenn auch noch etwas unfokussierte Vorstellung davon, wie ich meine Arbeit strukturieren werde und was nicht reinkommen wird.

Dritte Feststellung: Ich werde voraussichtlich in drei Wochen so weit sein, dass ich nur noch an der Arbeit schreiben muss. Natürlich funktioniert noch nicht alles so wie es funktionieren soll, aber ich behaupte, die wichtigsten Aspekte der "Kern-Infrastruktur" mittlerweile berücksichtigt zu haben -- mindestens theoretisch, und eine Diplomarbeit ist nunmal auch eine Menge Theorie. Vom Umfang des produzierten Codes her bin ich schon lange weit genug, eigentlich.

Ich hoffe, in einem Monat eine Consolvix-Version zu haben, die sich zumindest für den Admin rudimentär produktiv einsetzen lässt -- und das gleich auf einem niegelnagelneuen Server, den zu bauen es allerdings auch noch gilt...

Doch nun geht's weiter mit dem Wiederherstellen des o.g. Servers, rsync hat seinen Job offensichtlich getan.

NACHTRAG: Lang lebe rsync, der Server geht wieder. Der rest bleibt beim alten.

December 31, 2007

Nichts Weltbewegendes...

Ein Jahr neigt sich dem Ende entgegen,
ein weiteres lässt nicht lange warten,
eine neue Chance, die Welt zu bewegen,
auf neue, noch nicht erprobte Arten ;-)

Allen Lesern dieser Zeile wünsche ich ein angenehmes Jahr 0x7D8, Gesundheit, Freude am Dasein, und dass ihr im neuen Jahr all das schafft, was ihr letztes Jahr nicht geschafft habt -- und noch ein Wenig mehr :)

Möge der Code mit euch sein!

neujahreskarte.png

January 14, 2008

Neue Hardware braucht der Mensch

Neues Jahr, neuer Rechner, so dachte ich mir. Endlich war es dann letzte Woche auch so weit, dass hier ein Paket nach dem anderen eintrudelte und sich im Laufe eines Nachmittags ein neuer Rechner zusammenfügte. Nach vielen Jahren erfüllte sich endlich mal wieder ein kleiner Traum, nämlich die von schneller Hardware und t<\epsilon Reaktionszeit für flüssiges Arbeiten. Man mag staunen, aber ein AMD Athlon mit 1200MHz und 1GB Speicher ist nicht mehr ausreichend, um mit KDE flott Webentwicklung betreiben zu können. Nun steht hier also ein schöner Core2Quad mit 6GB Speicher und der rennt mir sozusagen davon -- sogar mit transparenten Fenstern und Schatten und allem trallala :-). Der Bootvorgang dauert keine Minute und 4-6 Sekunden nach dem Login ist KDE vollständig geladen. WOW!

Aber es hat leider mehr als drei Tage gedauert, bis dieses System mal vernünftig lief (und einen Tag bis sich überhaupt erstmal ein Installationssystem booten ließ). Ich sage nur: 64Bit sind so viel Fluch wie Segen. Von allen Live-CDs die Philipp und ich durchprobiert haben (Debian, Knoppix, Ububntu, SuSE, Sidux) wollten gerade mal zwei starten und bei keinem funktionierten die Onboard-LAN-Ports -- Stichwort nVidia nForce. Das forcedeth-Modul was zum Betrieb der Ethernetports nötig ist, wurde zwar unter Sidux geladen, auch ließen sich beide Ports einrichten und ansteuern, aber tatsächlich wurde nichts über die Leitung geschickt. Ein Glück dass hier noch eine alte 3Com-Karte herumschwirrte, mit der bin ich jetzt online. Schließlich gelang es, über Philipps Mac eine 64-bit Debian-Netinst-CD zu laden (Hier der Hinweis an potentielle Nachahmer: ia64 ist NICHT, wie es der Name nahe legt und ich es erst vermutete, die Archikektur eines Intel Core2Duo/Quad -- es SOLLTE i386 gehen (ging dann auch, nachdem im BIOS gerumgedreht wurde, ganz komisch alles g), richtig ist aber amd64, auch wenn's ein Intel-Prozi ist. Damit lief jedenfalls der Rechner ziemlich bald und mit einem selbst kompilierten Kernel (t_compile < 30 min) ohne die ganzen optionalen Komponenten rennt er gar.

Irgendwie muss man aber die überschüssige Rechenleistung auch wieder los werden, und somit erachte ich es als selbstverständlich, die als RAID1 geschalteten Platten zu verschlüsseln. der neue Debian Sid-Installer macht es gar möglich, schon bei der Installation ein Software-RAID und Verschlüsselung mit allem drum und dran einzurichten. Das Problem ist nur: es funktioniert nicht so wie man erwartet. Der Installer ermöglichte es mir problemlos, /dev/sda1 und /dev/sdb1 zu einem RAID1-Verbund zusammenzufassen, das entstandene /dev/md0 zu verschlüsseln und darauf wiederum zwei Partitionen (/ und swap) anzulegen. Das System ließ sich absolut einwandfrei installieren. Nur leider konnte das System danach nicht booten, da der Device-Mapper, der für das mounten verschlüsselter Partitionen zuständig ist, noch nicht geladen sein kann, bevor der Kernel das RAID zusammengefügt hat, und das RAID nicht zusammengefügt werden kann, bevor / gemountet ist -- jedenfalls ist das ein bekannter und gemeldeter Bug und ich vermute stark, dass das nächste Release von Debian diese Möglichkeit nicht mehr im Installer eingebaut haben wird. Jedenfalls liegt / jetzt weiterhin unverschlüsselt auf der Platte, aber die restlichen Dateisysteme sind allesamt mittels dm-crypt verschlüsselt. Ich kann nicht behaupten, dass dadurch wie Performanz des System in irgendwelcher Weise beeinträchtigt wird.

So, doch nun: auf ins (endlich wieder) produktive Arbeiten! Nebenbei kann ja mal KDE 4 compilen, bin gespannt wie lange das dauert (Qt alleine brauchte 15 min mit 10 Threads)...

January 16, 2008

Neues Aussehen

Wie man sieht ist diese Nacht nicht ganz spurlos an diesem Blog vorbeigezogen. Ich hoffe das neue Layout gefällt dem einen oder anderen. Anregungen. Kritik und scharfe Munition nehme ich gerne entgegen, dafür gibt's ja die praktische Kommentierfunktion.

Und: huch, wer hätte das gesacht, auch ich kann kurze Posts schreiben! ;-)

March 24, 2008

Eine Sorge weniger! -- und die nächste folgt sogleich.

Die Zeit des Schweigens ist vorbei, die Diplomarbeit ist abgegeben und nun ist wieder viel Zeit für anderes. Natürlich wird die Entwicklung von Consolvix nicht stillstehen und genau genommen hat sich in der Hinsicht seit letzten Mittwoch auch wieder etwas getan. Dieses "etwas" hat hauptsächlich mit der Benutzeroberfläche zu tun, damit am Freitag im Kolloquium auch alle was Schönes zu sehen bekommen werden ;-)

Des Weiteren hab ich endlich mal Zeit gefunden, zusammen mit Philipp den endlich eingetroffenen Server aufzusetzen. Die Kiste ist handlich und fast schon schnuckelig:

Doch wehe, man schaltet das Gerät ein -- die dann aufheulenden Lüfter lassen ein gewisses Luftalarm-Ambiente aufkommen... Dafür ist die Kiste mit ihrem 1.8 GHz C2D und 4GB RAM ganz schön flott und mittlerweile laufen auch schon ein paar virtuelle Maschinen unter Xen darauf. Allerdings hat es die Kombination Xen + Netzwerk in sich, ich hoffe dass wir die auftretenden Probleme bald gelöst bekommen (dazu vielleicht später mehr).

Und ja, richtig geraten: Consolvix soll dereinst genau diesen Server administrierbar machen. Entsprechend wird eine der nächsten Erweiterungen von Consolvix eine Oberfläche für die ganzen xm-Scripte und Xen-Tools-Befehle sein, damit Kunden dann auch ihre eigenen VMs hochfahren, neu starten etc. können.

Stay tuned!