Algorithmen zur Sortierung von Arrays in Java

- , ,

Heute haben wir im Modul “Algorithmen und Datenstrukturen” die Sortierungsalgorithmen insertion sort und selection sort angeschaut und verglichen. Bei dem selection sort geht man das Array  durch und sucht nach einem grössten Element. Einmal gefunden, wird es hinten hingesetzt. Danach wird das zweitgrösste Element gesucht und vor das grösste Element gesetzt. Bei dem insertion sort hingegen setzt man beim durchgehen des arrays das element jeweils gleich an die richtige stelle des bereits sortierten Teils des Arrays.

Wenn man die beiden Algorithmen vergleicht stellt man fest, dass der insertion sort in den ersten zwei Durchläufen um etwa den Faktor 5.3 schneller ist.  Nach dem zweiten Durchlauf kommt die interne Optimierung von Java zum Zug und beide Algorithmen werden schneller. Dadurch fällt der Faktor auf 1.5 bis 1.4. Vergleicht man jedoch die beiden Algorithmen mit dem von Java – Arrays.sort() - stellt man fest, das der Java interne noch um einiges schneller ist.

(weiterlesen …)

Eine generische Liste erstellen

- , ,

In dieser Woche mussten wir eine generische Liste programmieren welche Element für Element nach einander auflistet. Nach der positiven Ressonanz möchte ich natürlich auch diese Lösung meinen Klassenkammeraden nicht vorenthalten. Für das Testen habe ich die alte Main Klasse ein wenig erweitert. Diese noch einmal zu posten sollte nicht notwendig sein. Bei Bedarf könnt ihr euch bei mir melden.

(weiterlesen …)

FHNW Connector in AppleScript

- , , ,

Da es and er FHNW noch keinen VPN Connector für OS X gibt und ich nicht mehr jedesmal das Passwort eingeben mochte, habe ich mir etwas ähnliches in AppleScript nachgebaut. Als Basis für mein Script welches sich automatisch mit dem VPN verbindet habe ich das Script von Andy Breuhan und Corey Gilmore genommen. Zusätzlich zu der VPN Verbindung erstellt das Script, wie auch der FHNW Connector, die Verbindung zum Netzlaufwerk.

Ich benutze die native Cisco IPsec implementation von OS X benützt wird und meine Verbindung mit dem Namen “VPN FHNW” benannt ist. Um das Passwort automatisch zu befüllen, benützte ich den Schlüsselbund von OS X damit das Passwort nicht im Klartext abgespeichert ist. Es wird im Schlüsselbund das Passwort des Eintrages mit dem Namen “FHNW” ausgelesen und verwendet. Wer die gleiche Konfiguration wie ich verwendet kann das Script einfach hier herunterladen uns selbst verwenden. Alle anderen können gerne den folgenden Code des AppleScripts an ihre Bedürfnisse anpassen. Eine Dokumetation über AppleScript findet man hier.

(weiterlesen …)

Java Datenstrukturen

- ,

In meinem Studium müssen wir im Modul OOP2 die Datenstrukturen ArrayList, TreeSet und HashMap ausprobieren. Für jene, welche Probleme mit der Umsetzung haben, habe ich hier eine mögliche Implementierung, wie diese drei Datenstrukturen verwendet werden könnten.

(weiterlesen …)

JavaScript String manipulation

-

Einmal mehr musste ich heute wieder per JavaScript die URL einer Grafik verändern. Ich brauchte aber nicht eine komplett neue URL sondern nur ein Parameter verändert. Nun kann man ja nicht immer davon ausgehen, dass der Parameter den man verändern möchte immer am Ende ist. Er kann sich irgendwo im String befinden. Diesen jedes Mal zu suchen und zu manipulieren war mir zu wieder. Einfacher ist es wenn man einen Parameter einfach entfernen könnte und neu hinten dran zu hängen.  Da diese Funktion bei allen URL-Strings nützlich wäre kann man diese einfach zu den Standartfunktionen einfach hinzufügen:

String.prototype.removeParam = function (param) {
    var url = this;
    var aTmp = this.split('?');
    var url = aTmp[0] + '?';

    var aParams = aTmp[1].split('&');
    for (var i in aParams) {
        var aTmp = aParams[i].split('=');
        if ( aTmp[0] != param ) {
            url += '&'+aTmp[0]+'='+aTmp[1];
        }
    }
    return url;
}

So man die Parameter einfach entfernen und neu hinzufügen:

url = url.removeUrlParam('SORT') + '&SORT=name';

Datenschutzlücke in allen Browsern

- , , , ,

Wie der Mozilla Hacks Blog beschreibt gibt es eine Datenschutzlücke in so gut wie allen Browsern. Und zwar geht es um den CSS Selector :visited. Dieser erlaubt dem Webdesignern das hervorheben von Links welchen der Benutzer bereits besucht hat. Dieses CSS Element allein, ist aber noch nicht gefährlich denn es ist der Browser selbst der entscheidet welcher Link der Benutzer bereits besucht hat anhand der Browser Historie. Datenschutztechnisch gefährlich wird dies allerdings erst mit der JavaScript Funktion getComputedStyle(). Mit dieser Funktion lässt sich per JavaScript herausfinden was für ein Design der Browser in einem bestimmten Moment für ein Element generiert hat. Nun lässt sich darüber herausfinden, ob ein Benutzer eine bestimmte Seite bereits besucht hat oder nicht. Was auf den ersten Blick nicht so tragisch klingt ist aber verheerend. Dadurch, dass die modernen Browser die Geschwindigkeit von JavaScript dermassen gesteigert haben lassen sich über 200’000 Links pro Minute überprüfen.

Mozilla plant, wie im Mozilla Hacks Blog angekündigt, diese Datenschutzlücke so bald als Möglich zu schliessen. Bestrebungen anderer Browser Hersteller wie Google, Apple oder Microsoft sind mir nicht bekannt. Bleibt zu hoffen, dass zumindest Mozilla dies bald einschränkt und bis dahin sollte man möglichst oft die Browser Historie löschen.

jQuery 1.4

- ,

Letzten Donnerstag ist ein neues grösseres Release von jQuery erschienen. Welches neben vielen neuen Funktionen auch grosse Geschwindigkeits Verbesserungen mit sich bringt. Neue Funktionen sind zum Beispiel Funktionen wie detatch() oder unwrap(). Bei einemUpdate von Versionen 1.3.* sollte meistens keine Probleme auftreten.  Falls doch, sollte dieses Plugin abhilfe verschaffen. Zudem gibt es neben der total überarbeiteten API Dokumentation einen sehr Praktischen dynamischen API Browser welcher neben den jQuery Funktionen auch die jQuery UI Funktionen beinhaltet. Eine Auflistung aller Neuerungen findet man hier und hier.

Verringerung der komplexität der beliebtesten Funktionen

HTML5 – Die Zukunft des Webs

- , ,

Der Begriff Web 2.0 ist schon lange Mode und betitelt die moderne Art Webseiten zu bauen. Doch eigentlich ist dieser Begriff falsch, denn es hat sich nichts wirklich geändert ausser das die Entwickler angefangen haben, die Möglichkeiten der Browser auszuschöpfen. Was aber nicht bedeutet, dass wir bei der Version 1 des Webs stehen. Viel mehr sind wir bei der Version 4, oder besser gesagt bei HTML4. HTML steht für Hypertext Markup Languageund bieted die Grundlage für Webseiten. Das HTML ist eine Beschreibungssprache mit welcher dem Browser beschrieben wird, wie die Webseite aussehen soll. Jeder Browser liest dieses HTML dan und baut damit, und dem beigelegten CSS Stylesheat die Webseite auf. Wie die Browser das zu machen haben wird vom W3C Consortium in Standarts festgelegt. Weil sich nun aber nicht ganz alle an alle Standarts zu 100% halten, kommt es eben auch vor, dass eine Webseite nicht in allen Browsern gleich aussieht. Die Erste version vom HTML erschien erstmals im Jahre 1992. Das heute HTML 4.01 ist aus dem Jahre 1999! Obwohl sich in den letzten 10 Jahren so viel getan hat im Internet hatt es sich überhaubt nicht weiterentwickelt. Dies soll sich ändern und deshalb wird an HTML 5 gearbeited. Der Firefox, Safari und Chrome unterstützen auch schon erste Bruchstücke des neuen Standards. Zum Beispiel die Einbindung von Video oder Audio Dateien ohne Adobe Flash. Damit währe es möglich, dass man für Seiten wie YouTube überhaubt kein flash mehr benötigt.

Clemens Kaposi hat fürs Dr Web Magazin einen schönen Beitrag geschrieben wo er die wichtigsten neuerungen von HTML5 gut beschreibt.

Firefox ueberholt den Internet Explorer

Seit im November die Version 1.0 von dem Browser Mozilla Firefox erschienen ist, gewinnt er immer mehr Marktanteile. Dies vor allem auf die Kosten des Internet Explorers von Microsoft. Microsoft hat die Weiterentwicklung ihres IE 6 schlicht verschlafen. Dieser war im Jahre 2004 bereits 3 Jahre alt und es dauerte nach dem Erscheinen des Firefox nochmals 2 Jahre bis Microsoft den IE 7 herausbrachte. Dieser konnte aber nicht annähernd mit dem Firefox mithalten. Noch immer hinkt der Internet Explorer, mittlerweile in der Version 8, dem Firefox hinterher was die Umsetzung von modernen Webstandards anbelangt.

Nun ist es, laut einer Studie von Fittkau & Maass Consulting, erstmals soweit, dass der Firefox mehr Marktanteile hat als die verschiedenen Versionen des Internet Explorers zusammen. Der Firefox  kommt dort auf 45,6% während der Internet Explorer auf 44,4% kommt.

Firefox 3 ist mit Abstand der meistgenutzte Internet Browser

jQTouch

- , , ,

Lange ist es her, dass ich ein interessantes Thema gefunden habe über welches ich schreiben wollte. Doch ich habe wieder einmal etwas hübsches gefunden. Ein jQuery Plugin welches die Entwicklung von Web Applikationen für das iPhone erleichtern soll: jQTouch. Es erweitert zum Beispiel die Events von jQuery um iPhone-Spezifischen Events wie: ‘turn’ oder ‘swipe’. Ausserdem lässt es isch einfach auslesen ob das iPhone im Hoch- oder Querformat gehalten wird. Das Plugin unterstützt auch Themes und bringt auch gleich zwei vorgefertigte mit womit alles schnell nach iPhone WebApp aussieht.

Das Projekt befindet sich zwar noch im beta Status, sieht aber doch schon ziemlich gut aus.

jQTouch