Kategorien
Arbeit Diplomarbeit PC & Accessoires Sonstiges Spass Studium

Jahr 2009

Das Jahr ist rum, jeder macht seine Jahresrückblick und da bin ich auch einfach mal dabei. Ist tatsächlich relativ viel passiert.

Januar

Der war jetzt nicht besonders spektakulär, da ich ja noch an meiner Diplomarbeit geschrieben habe. Das Einzige erwähnenswerte wäre da jetzt das Assessment-Center das ich mitgemacht habe. War eine kostenlose Veranstaltung eines unabhängigen Finanzdienstleister und ich als Schwabe lass mir sowas nicht entgehen 🙂

Februar & März

Noch weniger los als im Januar. Schaffe, Schaffe und bissle an der Diplomarbeit arbeiten. Und abgeben. Leider hatte damals die Weiterbeschäftigung bei meiner Diplomarbeitsfirma nicht geklappt. Macht aber auch nicht allzuviel 🙂

Ausserdem hatte ich noch mein Projektmanagement-Seminar, d.h. den ersten von drei Blöcken. Dazu hab ich gar nichts geschrieben, wie mir jetzt auffällt. Naja, brauch ich jetzt auch nicht mehr anfangen.

Auf die Cebit hab ich mich auch begeben. Allerdings war die nicht besonders spannend. Leider in der vollen Wirtschaftskrise, in der ich den Firmen meist nur ein Praktikum aus den Rippen leiern hätt können. Oder halt zu einer der großen Ingenieurdienstleistungsfirmen. Naja, zumindest damals konnt ich mir das gar nicht vorstellen.

April & Mai

LANGWEILIG. Klassische Bewerbungsphase, ein paar Späße mit dem Arbeitsamt. Aushilfe bei meiner Diplomarbeitsfirma. Blablabla. Es war Jurten-WG ein paar kleinere Privatparties und natürlich mein erster Arbeitstag bei meinem inzwischen ehemaligen Arbeitgeber.

Naja, wenn man mein Archiv mal durchforstet, findet man noch die Bacon Explosion. Ein Festmahl 🙂

Juni

Auch hier nix besonderes. Warum hab ich am Anfang des Posts eigentlich erzählt das ne Menge passiert ist? Nunja, ich hab meine Wohnung bezogen, mein Cousin hat geheiratet und mein Internet wurde geschaltet. Mikrige 2Mbit. Aber besser als Modem ist es allemal 🙂

Juli

David in England besuchen. Standesamt von De und Josi und später im Monat dann noch die kirchliche Trauung. Dazwischen dann noch der Junggesellenabschied. Feuchtfröhlich, alles drei zusammen 🙂

August

Sommerlager. Pfadfinder. Zelten. Lagerfeuer. Leider durfte ich nur ein Wochenende daran teilnehmen, aber das war echt gut. Die guten alten Zeiten.

Nachdem ich die ersten Einrichtungsgegenstände nach Karlsruhe transportiert habe, musste die Einweihungsparty natürlich stattfinden. Teilnehmer waren international. Badener, Schwaben, Engländer und Bayern 🙂

September

Auf diesen Monat hab ich mich eigentlich am Meisten gefreut. Ich durfte nämlich nach Hamburg und eine Bekanntschaft vertiefen. Details gibts keine, aber Bilder hier, hier und hier. Ausserdem hab ich den Arbeitgeber gewechselt und arbeite jetzt bei einem großen Telekommunikationsunternehmen. Unbefristet 🙂

Oktober

Diplomabschlussfeier. Relativ fad, viele Reden, blabla, wie toll wir doch alle sind und ein mittelmässiges Essen. Nunja, dafür die offizielle Verabschiedung vom Studentenstatus. Und danach noch ein paar leckere Cocktails 🙂

Ben Hur war auch. Wagenrennen innerhalb der Halle in Stuttgart. Ich dachte ich hätte was darüber geschrieben, ich finds aber nicht mehr :/

November

Auch hier gibt es jetzt nur ein paar Sachen die hängengeblieben sind. Einmal war die die W-JAX. Ich hab da zufälligerweise die Eintrittskarte gewonnen und durfte dann drei Tage lang an einer “professionellen Konferenz” teilnehmen. War schon sehr spannend.

Mein Bruder hat für Familienzuwachs gesorgt, somit bin ich jetzt Onkel einer Nichte 🙂

Jennifer Rostock. Ich mag die Band. Defintiv hoffe ich das die noch ein paar mehr Alben rausbringt. Inzwischen hab ich ja auch Singstar und ein Lied von denen auf der PS3. Jippie 🙂

Dezember

Ui. Viele Parties, jede Menge Singstar, einmal Speeddating, ne Menge eisdiele und den Zoo so oft gesehen wie das ganze Jahr über nicht. Eigentlich wollte ich auch noch Avatar anschauen, allerdings hatte ich echt keine Zeit bisher 🙂

Ausblick

Was soll nächstes Jahr passieren? Ich weiß es nicht. Ich hoffe meine Probezeit läuft weiterhin so gut und ich werde nicht spontan rausgeworfen. Ich hoffe das sich was für mich in der holden Frauenwelt ergibt. Ich hoffe ich komme dazu mir mal Flensburg, Graz, Wien und nochmals London anzuschaun. Ausserrdem steht noch Lausanne auf dem Plan. Im Sommer gibt es defintiv zwei Wochen Sommerlager und eine Woche wandern in Schottland oder Irland.

Der Blog wird weiterexistieren, ich werde hoffentlich wieder mehr schreiben (der Dezember hatte nur drei Einträge, Schande, Schande) und Schweine werden fliegen 🙂

Kategorien
Diplomarbeit PC & Accessoires Sonstiges

Openoffice Calc-Chart als SVG

Stephan hat mich auf ein viel schnelleres Verfahren hingewiesen. Update am Ende des Artikels

Da Speichern eines Diagramms als SVG sollte keinen so grossen Aufwand machen. Hinzu kommt noch, das ich Inkscape nicht wirklich bedienen kann, deswegen macht gerade der Schritt keinen Spass. Für Ergänzungen bin ich SEHR dankbar:

1-create-chart

Zuerst erstellen wir ein Diagramm mit Calc. Dieses wird dann einmal mit der linken Maustaste ausgewählt und dann mit STRG+C in die Zwischenablage kopiert. Danach öffnen wir Openoffice Draw und drücken einfach mal STRG+V um das Diagramm aus der Zwischenablage in Draw einzufügen.

2-cnp-drawDanach müssen wir das ganze noch Umwandeln in ein Metafile und noch die Konturen übernehmen. Das sieht man auf den nächsten zwei Bildern.

3-convert-to-metafile4-convert-to-konturDies ist jetzt schon intern eine Vektorgraphic, jetzt muss das ganze nur noch als SVG exportiert werden. Hier bietet Openoffice Draw zwar einen Haken „Selektion“, aber dieser hat bei mir irgendwie keine Wirkung, bei mir bleibt das ganze DINA4.

5-export-as-svgDie exportierte SVG-Datei können wir dann mit Inkscape öffnen. Hier kommt mein Unwissen zum Tragen, ein „Crop to Selection“ scheint mir nicht einfach möglich. Hier die „ugly“-Anleitung:

  1. STRG+A um alles zu markieren.
  2. Oben in der Symbolleiste von Inkscape gibt es dann ein B und H für Breite und Höhe der Selektion. Diese Werte merken wir uns.
  3. Mittels STRG+SHIFT+D die Dokumenteinstellungen geöffnet werden.
  4. Hier die gemerkten Werte aus 2.  in den „Benutzerdefiniert“-Kasten in der Karteikarte „Seite“ eintragen. Dabei wir die Selektion irgendwie automatisch angepasst in den Proportionen.
  5. Wieder zurück im SVG-Dokument, gibt es oben neben den B und H-Werten noch die Werte X und Y. Diese beide auf 0 setzen. Danach in die inzwischen anderen Werte bei B und H wieder die Werte von 2. eintragen

6-fiddle-to-fit

Jetzt haben wir ein manuelles „Crop to Selection“. Lästig. Dies kann man jetzt wieder als SVG speichern. Ich brauch noch „Kopie speichern unter“ und dann „PDF über Cairo“, damit ich das mittels Latex auch benutzen kann.

UPDATE:

Anstatt sich zu zwingen den Weg über Inkskape zu gehen, kann man auch einfach von Calc nach Draw und dort die Seite an das Diagramm anpassen. Danach einfach ein PDF-Export mit „Verlustfreier Kompression“ und man spart sich den langen Weg.

Kategorien
Diplomarbeit PC & Accessoires

Tastenkürzel beim TeXnicCenter

Ich nutze gerade das TexNicCenter zum Schreiben meiner Diplomarbeit. Nachdem ich bereits „texify“ benutze, hab ich jetzt endlich entdeckt, wie ich bekannte Tastenkürzel aus Officeprogrammen auch hier verwenden kann. Unter dem Menüpunkt Extras > Anpassen findet sich folgender Dialog:

texnicshortcuts

Dort einfach die Kategorie Format wählen, dann noch den Befehl FormatZeichenFett und in das Feld Neue Tastenkombination einfach reinklicken und dann z.B. STRG+B drücken. Dann noch auf Zuweisen, Schließen, Fertig.

Kategorien
Diplomarbeit Sonstiges Spass Studium

Weihnachten, Silvester und „Urlaub“

Die Feiertage sind rum, morgen gehts wieder ins Ausland nach Karlsruhe. Die letzten 1,5 Wochen waren sehr ausgiebig und gut, fast jeden Tag hab ich was mit eisdiele gemacht, viel gefeiert, viel getrunken, gelacht, gelabert, gut gegessen und ne Menge Spass gehabt. Jetzt muss ich mir noch bissle Gedanken über meine Diplomarbeit machen, ist noch bissle Papier bis Mittwoch zu produzieren.

Juppheida, 2009, ich komme.

Kategorien
Diplomarbeit

Javascript: getter und setter

Nix spektakuläres, bin ich gerade rübergestolpert. Nachdem ich mich ja schon über Sichtbarkeit ausgelassen habe, kommt jetzt der Trick wie man getter und setter definiert.

Bisher hab ich das immer so gemacht:

function Field(val){
    /** @private */
    var value = val;

    /** @public*/
    this.getValue = function(){
        return value;
    };

    /** @public*/
    this.setValue = function(val){
        value = val;
    };
}

Ist auch wunderbar, allerdings bissle lästig das immer zu schreiben. Deshalb hier das ganze im „Mozilla Style“:

function Field(val){
    var value = val;

    this.__defineGetter__("value", function(){
        return value;
    });

    this.__defineSetter__("value", function(val){
        value = val;
    });
}

Potthässlich in der Tat, aber macht genau dasselbe wie der Code drüber. Wenn man jetzt ignoriert das „value“ umbedingt private sein muss, dann sieht das sogar „schön“ aus:

function Field(val){
    this.value = val;
}

Field.prototype = {
    get value(){
        return this._value;
    },
    set value(val){
        this._value = val;
    }
};

Bringt mir jetzt nicht so besonders viel, aber vielleicht brauchts ja jemand anders.

Links:

Kategorien
Diplomarbeit Linux PC & Accessoires

Unix vs. Dos

Jaja, UNIX („\n“) und DOS („\r\n“) Zeilenenden … FALSCH:

./funD.reinstallExtension.sh
: No such file or directoryh: line 3: cd: /cygdrive/c/Dokumente und Einstellungen/matthiasc/Eigene Dateien/Diplomarbeit/
./funD.reinstallExtension.sh: line 4: $'\r': command not found
: No such file or directorysion.sh
: No such file or directory.sh
: No such file or directorynsion
./funD.reinstallExtension.sh: line 8: $'\r': command not found
: No such file or directoryh: line 9: cd: /cygdrive/c/Dokumente und Einstellungen/matthiasc/Eigene Dateien/Diplomarbeit

RICHTIG:

11:20:34 matthiasc@fungdenhut /cygdrive/c/Dokumente und Einstellungen/matthiasc/Eigene Dateien/Diplomarbeit $ ./funD.reinstallExtension.sh
11:20:36 matthiasc@fungdenhut /cygdrive/c/Dokumente und Einstellungen/matthiasc/Eigene Dateien/Diplomarbeit $ 
Kategorien
Diplomarbeit

Einmal mit Profis

Wie soll ich so arbeiten:

Kategorien
Diplomarbeit

jQuery, Tooltip, show() und hide()

Nunja, endlich hab ich das Problem gelöst das ich hatte. Schön wenn man auf Banalitäten hingewiesen werden muss …

var _PendingHideLink;
var _PendingHideDiv;
$("#someDivId").hover(function() {
    if (_PendingHideLink) {
        clearTimeout(_PendingHideLink);
    }
    if (_PendingHideDiv) {
        clearTimeout(_PendingHideDiv);
    }
}, function() {
    _PendingHideDiv = setTimeout(function() {
        $("#someDivId").hide();
    }, 2000);
});
$(".someLinks").hover(function(e) {
    $("#someDivId").show();
}, function() {
    _PendingHideLink = setTimeout(function() {
                $("#someDivId").hide();
            }, 5000);
});

Das macht: Beim positionieren des Mauszeigers übern einen Link („mouseover“) mit der Klasse „someLinks“ wird das div mit der Id „someDivId“ eingeblendet und nach 5 Sekunden wieder ausgeblendet. AUSSER man geht auf das eingeblendete div, dann bleibts offen, solange bis man das div wieder verlässt („mouseout“). Dazu sollte man noch wissen das jQuery „hover“ als Kombination versteht ($().hover == ($().mouseover; $().mouseout;)). Nunja, UND man sollte wissen das setTimeout eine Id zurückliefert die man mit „clearTimeout“ wiederverwenden kann

Kategorien
Diplomarbeit PC & Accessoires

MochiTest-Lite

Just a reminder to myself, because I want to try that extension:

Mochitest is a unit testing framework created by contributors to Mozilla projects. Mochitest is based on MochiKit , the incredibly useful Javascript library. MochiKit as the basis for writing unit tests has been proven very useful to developing Mozilla applications because of the thick layers of Javscript code in applications like Firefox.

What then, is Mochitest-Lite?
Mochitest, as it is used at Mozilla, requires Python to drive the command line interface, and automate the testing. Python is a very powerful tool for this purpose because, along with automation, it can overwrite and then rewrite configuration files like manifests and preferences, all while having a minimal impact on the application being tested. Mochitest also uses a client-server architecture to serve test documents to the application being tested. On top of that, an application needs to be built with the Mozilla build system to work with Mochitest.

This makes sense for large applications like Firefox, but what about a unit testing framework for developers of small XULrunner applications and extensions for existing Mozilla applications? These developers have different requirements. Mochitest-Lite is a way to get the same test writing tools and automation without the overhead of running Mochitest the same way it is used to test Mozilla code.

Kategorien
Diplomarbeit

Vererbung in Javascript anhand von Exceptions

Hab noch zwei weitere Artikel gefunden, beide englisch:

Jop, ein weiterer Artikel zu Javascript. Und zur „komischen“ Vererbung von Javascript.

Jeder Programmierer kennt Exceptions, diese netten Fehler die einen an den Kopf geschmissen werden, wenn was schief läuft. Auch sowas gibts bei Javascript:

try {
  doSomething();
} catch(e) {
  alert(e.toString());
}

Klassisches try/catch-Statement. Demnächst muss ich nochmal nachschauen wie man „verschiedene“ Exceptions erkennt und dann getrennt behandelt. Nunja, weiter gehts, wir bauen uns eine Exception:

throw 42;
throw "I'm a string";
throw {toString: function() { return "I'm an object!"; } };

Alles wunderbar, aber String-Nachrichten schmeissen kann ja jeder. Kommen wir also zu der „BaseException“:

function BaseException(_message) {
	this.name = "BaseException";
	this.message = _message;
}
BaseException.prototype = {
	name : null,
	message : null,
	toString : function() {
		return this.name + ': "' + this.message + '"';
	}
}

Erstmal was ganz simples. Kann man z.B. so schmeissen und fangen:

try {
  throw new BaseException("foobar");
} catch (e) {
  alert(e.toString()); // alerts: "BaseException: foobar"
}

Schön, nicht wahr? Jetzt brauchen wir noch Vererbung:

// ripped from http://www.sitepoint.com/blogs/2006/01/17/javascript-inheritance/ 
function extend(descendant, parent) {
	var sConstructor = parent.toString();
	var aMatch = sConstructor.match(/\s*function (.*)\(/);
	if (aMatch != null) {
		descendant.prototype[aMatch[1]] = parent;
	}
	for (var m in parent.prototype) {
		descendant.prototype[m] = parent.prototype[m];
	}
};

Dies ist wohl leider notwendig. Diese „extend“-Function macht das irgendwie wohl cross-browser-kompatibel. Nunja, für Mozilla-only geht es auch anders. Nunja, „geerbt“ wird jetzt so:

function OtherException(_message) {
	// call "super" constructor
	this.BaseException(_message);
	this.name = "OtherException";
}
// OtherException inherits from BaseException
extend(OtherException, BaseException);

Voilà. Fertig ist das Butterbrot:

try {
  throw new BaseException("foobar");
} catch (e) {
  alert(e.toString()); // alerts: "BaseException: foobar"
}
try {
  throw new OtherException("foobar");
} catch (e) {
  alert(e.toString()); // alerts: "OtherException: foobar"
}