Windows aktualisiert automatisch Verknüpfungen

Hallo Welt,

hier mal ein kleines Windows Mysterium: Ich habe einige Projekte in einer Dropbox, um Ordnung zu schaffen gibt es an mehreren Stellen Verknüpfungen auf bestimmte Ordner. Da Windows in Verknüpfungen keine relativen Pfade erlaubt, habe ich eine Umgebungsvariable %Projekte% eingeführt, die auf den entsprechenden Pfad in der Dropbox verweist, damit auf jedem Rechner mit Zugriff auf die Dropbox die Verknüpfungen funktionieren. Jetzt kam das Problem auf, dass viele der Verknüpfungen automatisch aktualisiert werden und zwar mit dem absoluten Pfad statt dem „getricksten relativen“ Pfad mit der Umgebungsvariable. Nicht auf jedem Rechner ist die Dropbox unter C:\Dropbox zu erreichen, dies ist also ein durchaus nerviges Problemchen. Nach einiger Recherche kann ich nun aber sagen: Das Mysterium der wandelnden Verknüpfungen ist gelöst!^^
Windows überwacht die Ziele von Verknüpfungen (afaik nur in einem NTFS Dateisystem, keine Garantie auf diese Aussage) und sobald sich das Ziel ändert, wird die Verknüpfung entsprechend angepasst. D. h. wenn das Ziel ein Ordner ist, dann wird die Verknüpfung aktualisiert, sobald der Zielordner umbenannt oder verschoben wird und danach das nächste Mal die Verknüpfung benutzt wird. Windows trackt dabei die Zielordner über deren GUID in der Dateitabelle. Das Setzen der Verknüpfungen auf Schreibgeschützt verhindert das Aktualisieren durch Windows.

Umstellung auf WordPress

Nachdem ich jetzt lange Zeit alles manuell gemacht habe, habe ich jetzt doch auf WordPress umgestellt, zuerst nur, um es einfach mal auszuprobieren, es gefällt mir allerdings recht gut, so dass ich erst einmal dabei bleiben werde. Alles, was WordPress kann, kann ich auch (und habe ich zu großen Teilen schon selbst gemacht), aber es ist doch recht komfortabel … wenn man es denn endlich mal eingerichtet hat, die Theme-Auswahl fällt recht schwer, aber auch technisch läuft es noch nicht so wie ich will, denn die Umstellung auf meine Domain will einfach nicht richtig funktionieren, da muss ich wohl noch die Ordnerstruktur anpassen, aber das mache ich später, wenn ich die Zeit dazu habe. Alle alten Artikel sind jetzt auch hier zu finden und da es jetzt einfacher, vor allem aber schneller geht, werde ich vielleicht auch etwas öfter schreiben.

Sierpinski-Dreieck

Sierpinski-Dreieck

Ich habe kürzlich das Sierpinski-Dreieck für mich entdeckt, als ich einem Freund bei seinen Java-Aufgaben geholfen habe. Das Sierpinski-Dreieck ist ein Fraktal aus Dreiecken, die selbstähnlich sind, beschrieben von Waclaw Sierpinski, mehr dazu auf http://de.wikipedia.org/wiki/Sierpinski-Dreieck.
Ich dachte mir, dass muss doch auch für meinen kleinen Blog hier machbar sein, allerdings wollte ich kein JavaApplet haben. Auf http://www.walterzorn.de/jsgraphics/jsgraphics.htm habe ich eine JavaScript Bibliothek gefunden, mit der man mit Hilfe von farbigen DIV Containern malen kann, finde ich toll.
Diese habe ich dann auch benutzt, um das Sierpinski-Dreieck einmal in JavaScript zu implementieren.



Die Zeichnung besteht wirklich nur aus DIVs 🙂
Es folgt der JavaScript Code, den ich dazu geschrieben habe. Die Sierpinski Funktion war ursprünglich eine Java Methode aus einem Übungsblatt, die ich für JavaScript entsprechend angepasst habe.


Code Highlight von http://quickhighlighter.com

<!-- DIV Container, der die Zeichnung aufnimmt -->
<div id="canvas" style="position:relative;width:100%;height:450px;">
</div>

<!-- hier beginnt das Java Script -->
<script id="js" type="text/javascript">
<!--
    var jg = new jsGraphics("canvas"); //Variable für das Zeichenobjekt
   
    function triangle(x1,y1,x2,y2,x3,y3) //Objektdefinition für das Dreieck, inklusive Konstruktor
    {
        //Variablen für Start- und Endpunkte sowie Kantenlänge und Flächeninhalt
        this.x1=x1;
        this.x2=x2;
        this.x3=x3;
        this.y1=y1;
        this.y2=y2;
        this.y3=y3;
        this.a=0;
        this.b=0;
        this.c=0;
        this.area=0;
        //Kantenlängen und Flächeninhalt müssen berechnet werden
        this.update();
    }
   
    //Setter
    triangle.prototype.setx1 = function(x1){
        this.x1=x1;
    }
    triangle.prototype.setx2 = function(x2){
        this.x2=x2;
    }
    triangle.prototype.setx3 = function(x3){
        this.x3=x3;
    }
    triangle.prototype.sety1 = function(y1){
        this.y1=y1;
    }
    triangle.prototype.sety2 = function(y2){
        this.y2=y2;
    }
    triangle.prototype.sety3 = function(y3){
        this.y3=y3;
    }
   
    //Kantenlängen und Flächeninhalt neu berechnen
    triangle.prototype.update = function(){
        this.setA();
        this.setB();
        this.setC();
        this.setArea();
    }
   
    //Berechnung der Kantenlängen nach dem Satz des Pythagoras
    triangle.prototype.setA = function() {this.a = Math.sqrt((this.x2-this.x1)*(this.x2-this.x1)+(this.y2-this.y1)*(this.y2-this.y1));} //Länge eines Vektors a1,a2 ist Wurzel aus(a1*a1 + a2*a2), wobei a1 = this.x2-this.x1 ist usw.
    triangle.prototype.setB = function() {this.b = Math.sqrt((this.x3-this.x2)*(this.x3-this.x2)+(this.y3-this.y2)*(this.y3-this.y2));}
    triangle.prototype.setC = function() {this.c = Math.sqrt((this.x1-this.x3)*(this.x1-this.x3)+(this.y1-this.y3)*(this.y1-this.y3));}
   
    //Berechnung des Flächeninhalts nach dem Satz des Heron
    triangle.prototype.setArea = function()
    {
        this.area = 0.25*Math.sqrt((this.a+this.b+this.c)*(this.a+this.b-this.c)*(this.b+this.c-this.a)*(this.c+this.a-this.b));
    }
   
    //Verschiebung des Dreiecks um einen Vektor (v1,v2)
    triangle.prototype.move = function(v1,v2)
    {
        this.x1 = this.x1+v1;
        this.x2 = this.x2+v1;
        this.x3 = this.x3+v1;
       
        this.y1 = this.y1+v2;
        this.y2 = this.y2+v2;
        this.y3 = this.y3+v2;
    }
   
    //das aktuelle Dreieck wird gezeichnet
    triangle.prototype.draw = function()
    {
        jg.drawLine(this.x1,this.y1,this.x2,this.y2);
        jg.drawLine(this.x2,this.y2,this.x3,this.y3);
        jg.drawLine(this.x3,this.y3,this.x1,this.y1);
        jg.paint();
    }  

    //die Sierpinski Funktion
    function sierpinski(t)
    {
        t.draw();
        if( t.area < 100 ) {
            t.draw();
            return;
        }
        t.setx2((t.x1+t.x2)/2);
        t.sety2((t.y1+t.y2)/2);
        t.setx3((t.x1+t.x3)/2);
        t.sety3((t.y1+t.y3)/2);
        t.move(t.x2-t.x1, t.y2-t.y1);
        t.update();
        sierpinski(t);
        t.move(t.x3-t.x2, t.y3-t.y2);
        t.update();
        sierpinski(t);
        t.move(t.x1-t.x3, t.y1-t.y3);
        t.update();
        sierpinski(t);
        t.setx2(2*t.x2-t.x1);
        t.sety2(2*t.y2-t.y1);
        t.setx3(2*t.x3-t.x1);
        t.sety3(2*t.y3-t.y1);
        t.update();
    }

    //neues Dreieck erzeugen und nach Sierpinski zeichnen
    var t1 = new triangle(0,0,500,0,250,433);
    sierpinski(t1);
   
//-->
</script>

DSL Störung, Server offline

Heute morgen um 08:44 Uhr meldete mein Router, ADSL Medium getrennt.
Aha, verstehe. Die übliche Prozedur, Router Neustart, hat nichts gebracht. Also Kabel und Stecker checken, auch hier optisch alles in Ordnung, nur dass die Lämpchen am Router weder blinken noch dauerhaft leuchten, fällt mir auf. Na gut, es gibt ja noch die Hotline meines Providers, allerdings ist dort Dauerbesetzt, erst der Griff zum Handy verrät mir, dass mein Telefonanschluss auch nicht funktioniert.
Da ich nichts mehr machen konnte, bin ich zur nächsten Niederlassung meines Providers gegangen und habe dort mein Problem vorgetragen. Ein kurzer Anruf von denen beim technischen Service brachte keine Erkenntnis über mein Problem und auch, dass die Lämpchen aus sind, wollte man mir nicht so recht abnehmen. Auf Verdacht sollte ich meinen Splitter austauschen. Dieses habe ich gemacht, ohne Erfolg.
Nach der Arbeit bin ich erneut zum Laden gegangen und habe mein Problem erneut geschildert, dieses Mal wurde ein Test der Leitung in Auftrag gegeben und auch, dass die Lämpchen nicht leuchten, deutete jetzt auf ein Hardwareproblem hin.
Kurz nachdem ich wieder zu Hause war, rief mich die Hotline (auf dem Handy) an und teilte mir mit, dass es ein Problem mit der Leitung sei, dieses muss durch einen Techniker vor Ort behoben werden, was ca. 24 Stunden dauern kann.
Jetzt sitze ich hier (ohne Internet) und frage mich, warum das so kompliziert ist und vor allem, warum ein gründlicher Test seitens meines Providers erst gemacht wird, nachdem ich zum zweiten Mal in Persona vorstellig wurde. Natürlich glaube ich gern, dass die meisten Leute eher wenig Ahnung von der technischen Seite haben und einfach nur das Internet benutzen wollen und das ist auch völlig in Ordnung so, aber ein Mitarbeiter muss doch merken, wenn ein Kunde wie ich sein Problem und die bisherigen Lösungsversuche detailliert vorträgt und auf jede Frage sofort eine Nerdantwort weiß, dass man ihn nicht einfach abspeisen sollte, sondern annehmen, dass das Problem wirklich besteht und nicht an mir liegt. Zugegeben, es hätte an der Hardware liegen können, aber ganz offensichtlich war es kein so großer Aufwand, die Leitung zu prüfen, mich mit neuer Hardware auf Verdacht nach Hause zu schicken hätte man sich also sparen können. Vor allem hätte das mir und auch den Mitarbeitern im Laden Zeit gespart.
Ich bin gespannt, was der Tag morgen bringt, hoffentlich ein bißchen was von diesem Internet.