Tag archive of » programmierung «

JavaScript Beautifier – Code schön gemacht

Tuesday, 8. September 2009 15:32

Beim Debuggen von Webanwendungen steht man oft vor einem Haufen Javascript-Code, der eingedampft wurde, um Bandbreite zu sparen und die Verarbeitungszeiten zu drücken.

Der JavaScript Beautifier ist eine schnelle und elegante Lösung, den Code wieder einigermaßen lesbar zu bekommen.

Topic: Links, Software Development | Comments (0) | Autor: Rene

Skype ist wohl mit Delphi programmiert worden

Thursday, 16. July 2009 15:24

Skype FehlermeldungSkype scheint mit Delphi geschrieben worden zu sein. Ja, das Entwicklungswerkzeug, das von Borland hergestellt wurde. Damals… vor langer langer Zeit.

Interessant…

Topic: Software, Software Development | Comments (2) | Autor: Rene

Singletons auf die faule Art

Tuesday, 24. March 2009 21:36

Wir hatten heute eine kurze Diskussion über Singletons und die Art und Weise ihrer Erzeugung, speziell wenn man sie faul (lazy) erzeugen möchte. Die Wikipedia hat dazu diesen schönen Eintrag – On Demand Holder Idiom:

In software engineering, the Initialization on Demand Holder idiom (design pattern) is a lazy-loaded singleton. The idiom can be implemented in both single-threaded/serial and concurrent environments, but care must be taken to correctly implement the idiom under concurrent conditions.

Ganz besondern wichtig ist die Erklärung, warum Lazy in diesem Fall so und nicht anders funktioniert:

The implementation relies on the well-specified initialization phase of execution within the Java Virtual Machine (JVM); see section 12.4 of Java Language Specification (JLS) for details.

When the class Something is loaded by the JVM, the class goes through initialization. Since the class does not have any static variables to initialize, the initialization completes trivially. The static class definition LazyHolder within it is not initialized until the JVM determines that LazyHolder must be executed. The static class LazyHolder is only executed when the static method getInstance is invoked on the class Something, and the first time this happens the JVM will load and initialize the LazyHolder class.

Topic: Java, Software Development | Comments (0) | Autor: Rene

Die richtigen Leute für den Job?

Saturday, 7. March 2009 20:31

Wenn man in einer Webseite diesen Text findet und weiss, dass eine angeblich professionelle Webagentur/Webdesign-Firma ihre Hände im Spiel hatte, dann sollte man sich fragen, ob es die richtigen Leute für den Job sind… oder nicht?

<!--
Since margins/padding looked different in diff browsers, use a
transparent image to get spacing above and below actual footer...
-->

Topic: Software Development, Things went wrong | Comments (0) | Autor: Rene

OCR-Erkennung in JavaScript

Saturday, 24. January 2009 23:36

Ein Captcha DemoMich erstaunen die Talente vieler Leute immer wieder. Jemand hat ein Script geschrieben, das Captchas automatisch löst und das ganze in JavaScript. Das Ding läuft auch noch im Browser… wow! Nun gut, es löst nicht alle Captchas… aber immerhin.

Wenn es interessiert, hier geht es zum Artikel: Captcha cracking in JavaScript with Canvas and neural nets

Topic: Software Development | Comments (0) | Autor: Rene

Sparen beim String bauen

Saturday, 14. June 2008 17:23

Viele Java-Programmiere denken oft beim Schreiben Ihres Codes wenig über Müll nach. Natürlich nimmt man zum Bauen eines Strings aus vielen kleinen Puzzleteilen einen StringBuilder. Den StringBuffer nimmt man nicht mehr, weil der im Regelfall unnötig synchronisiert ist. Schliesslich löst das im Java Memory Model ab JDK 5 eine Synchronisation mit dem Hauptspeicher aus (JSR-133), die wir überhaupt nicht wollen.

Einen kleinen Trick für unnötige Objekt-Erzeugung und damit für weniger Müll im System, gerade wenn immer wieder Strings gebaut werden müssen, ist die korrekte initiale Größe des StringBuilders. Ein new StringBuilder() reserviert zunächst nur ein Array mit 16 Characters. Wenn wir also recht viel zusammenbauen, muss mehrmals eine neues grösseres Array (2 * ggw. Grösse + 1) erzeugt und der Inhalt umkopiert werden.

Wer also weiss, dass er ca. 100 Zeichen aneinanderhängt, der lässt sich gleich einen StringBuilder mit Grösse 120 geben – new StringBuilder(120) – und spart damit das Anlegen von drei Arrays und drei Copy-Operation ein. Gerade bei intensiven Operationen mit Strings macht das eine Menge aus.

Wer würde schon bei einem Umzug zuerst mit dem kleinsten Karton anfangen und dann wegwerfen, weil nicht alles reinpasst? Man schätzt doch am Anfang schon vernünftig ab, wie groß der Karton sein sollte.

Topic: Java | Comments (0) | Autor: Rene

Java Concurrency – A Tutorial

Monday, 9. June 2008 16:41

Heute habe ich eine wunderbare Webseite zum Thema Java Concurrency gefunden. Jakob Jenkov hat hier viele interessante Themen zur parallelen Programmierung mit Java zusammengefasst. Ein Bookmark wert und in einer ruhigen Minute unbedingt mal lesen.

Java Concurrency – A Tutorial

Java was one of the first languages to make multithreading easily available to developers. Java had multithreading capabilities from the very beginning. Therefore, Java developers often face the problems described above. That is the reason I am writing this trail on Java concurrency. As notes to myself, and any fellow Java developer whom may benefit from it.

Topic: Java, Software | Comments (0) | Autor: Rene