Showing posts with label Software-Development. Show all posts
Showing posts with label Software-Development. Show all posts

February 10, 2010

Best Practices für die Entwicklung von DSLs

Einen sehr interessanten Vortrag von Markus Völter auf der JAX 2009 gibt es jetzt als Video Stream. Seine Ausführungen stimmen zu sehr großen Teilen mit meinen Erfahrungen/Erkenntnissen im Bereich der modellgetriebenen Softwareentwicklung überein.

An dieser Stelle ein paar unsortierte Erkenntnisse, die mir nach dem Ansehen des Vortrags im Kopf herumschwirren. Für eine konkrete Einordnung in den Kontext sei an dieser Stelle nochmals das Video empfohlen.
  • Verwendung von Standards ≠ Verständnis
    • gutes Beispiel UML + Profil was Standard (OMG) ist, aber durch die spezifische Stereotypen etc. nicht zwingend verständlich ist
    • eine klar definierte DSL mit begrenztem Scope ist meistens die bessere Alternative, da einfach auch die Toolunterstützung bzw. die Handhabung einfacher ist (z. B. Xtext)
  • die Spezifikation eines UML Profils ist mühselig, komplex und unnötig aufwändig ebenso die Verwendung/Interpretation (bspw. in einem Generator)
  • die Verwendung von verschiedenen Tools ist problematisch, erzeugt inhaltliche Brüche und führt zu unnötigen/nervigen Problemen
  • Modell-zu-Modell (M2M) Transformationen sind sinnvoll um die Komplexität von Generatoren bzw. Templates zu reduzieren
  • Prozess von Entwicklung DSLs:
    • siehe Bild rechts (Screenshot aus den Video)
    • viele, sehr kurze Iterationszyklen
  • Textuelle DSLs sind eine pragmatische Lösung, die schnell zu ersten Ergebnissen führen
    • fühlt sich an sich wie Programmieren an
    • Benutzung von seit Jahren bewährten und ausgereiften Konzepten/Tools (z. B. Eclipse Editoren)
    • wenig Probleme hinsichtlich Zusammerarbeit, da bekannte Konzepte/Techniken für Quellcode verwendet werden können (CVS/SVN, Diff/Merge, ...) - das geht natürlich auch mit XMI (abstrakte Syntax), aber das ist wirklich nicht praxistauglich » bei textuellen DSLs funktioniert das auf der konreten Syntax!
    • einfache Skalierung, Partitionierung
    Teilschritte einer Iteration zur Entwicklung einer DSL

January 11, 2010

Drupal: Benachrichtigung wird nur angemeldeten Benutzer angezeigt

Diese Phänomen stellte sich mir vor einger Zeit. Für angemeldete Benutzer, egal welcher Gruppe sie zugeordnet waren, wurden die Benachtigungen des Drupal Benachrichtigungssystems angezeigt. Allerdings tauchten diese unverständlicherweise für unangemeldete Besucher nicht auf.


Nach stundenlangem Debuggen und Suchen im Netz fand ich dann eine triviale Lösung. Drupal erwartet einen Benutzer mit der uid 0 in seiner User-Datenbank. Anscheinend wird die Benutzer-Session von anonymen Besucher auf diesen Datensatz referenziert. Warum versteh ich zwar immer noch nicht, aber durch eine update-Funktion, die diesen Datensatz (User) anlegt, war das Problem gelöst.

December 2, 2009

Spring Webanwendung generieren

Inspiriert durch den Artikel Spring ROO - Codegenerierung "the Spring Way" von Mike Wiesner in Novemberausgabe des Java Magazins, probierte ich das neue Framework vor Kurzem mal aus. Der Ansatz CRUD-Anwendungen zu generieren ist zwar nicht neu, allerdings wirkt die Entwicklungsumgebung enorm leistungsstark. Zudem erscheinen mir die verwendeten Konzepte zur Organisation/Trennung von generierten und manuellen Artefakten recht praktikabel, so dass ein leichter Einstieg in die Domain-Driven Entwicklung von Anwendungen möglich ist.

Mit Spring Roo können komplette CRUD-Webanwendungen inklusive Zugriff per REST erzeugt werden. Die umfangreiche Konfiguration, die dafür notwendig ist, wird einfach generiert. Das stellt natürlich eine enorme Erleichterung dar und die ersten Schritte zu einer minimalen Anwendung sind schnell erledigt. Wie aufwendig die manuelle Implementierung einer solchen einfachen Anwendung ist, musste ich bereits in diesem Posting feststellen.

November 25, 2009

(English) Wordpress Plugin: Download Counter Visualization

Widget Chart example
Widget Chart example

last update: 2010-04-14

This plugin adds a widget to display download statistics based on the Download Counter plugin on your site. The sidebar widget will show a highly configurable chart based on the Google Chart API. Furthermore it offers a dashboard widget that summarizes your downloads, to get information quick at a glance.

The plugin supports following chart types:
  • Bar (horizontal)
  • Pie
  • Pie 3D

You can include a chart of your downloads on a page or in a post using the downloadcounterchart-shortcut. Of course a download chart is includable in your theme. See extended documentation for detailed explanations for that.

June 29, 2009

Quellcodeschnipsel in Eclipse

Innerhalb des WTP-Eclipse-Plugins gibt es eine Snippets-View, die zur Verwaltung von häufig verwendeten Quellcode-Abschnitten fungiert. Standardmässig sind bereits einige JSP-Codeschnipsel, wie z. B. der Include-Direktive, enthalten. Allerdings kann die Auswahl um weitere Kategorien (z. B. Java, PHP) und natürlich Codeschnipsel erweitert werden. Dabei lassen sich auch Platzhalter definieren, die beim einfügen per Doppelklick oder Drag´n Drop mit konkreten Werten ersetzt werden.

Interessant ist auch die Aktivierung/Deaktivierung der Anzeige von bestimmten Schnipsel-Kategorien je nachdem, was für ein Dateityp gerade in einem Editor geöffnet ist. Beispielsweise werden so Java-Schnippsel nur bei Java-Quellcode-Dateien angezeigt. Ebenso ist für einen Import und Export der Schnipsel im XML-Format gesorgt, so dass man seine Schnipsel auch mit anderen teilen kann.

June 27, 2009

Kurzevaluation Modellierungswerkzeuge (UML)

Auf der Suche nach einem leichtgewichtigen UML-Werkzeug zur Modellierung eines Klassendiagramms probierte ich einige aus und möchte kurz meine Eindrücke beschreiben. Der Fokus lag dabei auf kostenfreien Tools, die auch nur die grafische Modellierung von Klassendiagrammen ermöglichen sollen. Genauer gesagt kann ich gut auf die ganzen CASE- bzw- MDA-Features verzichten, da diese die Modellierung nur unnötig verkomplizieren. Außerdem kann ein solches Modell immer noch mit anderen Tool, wie beispielsweise oAW, nach eigenen Anforderungen verarbeitet werden.

Betrachtete Features:

  • Modellierung von Klassendiagrammen
  • Speicherung im XMI-Format bzw. Exportfunktion
  • Export für die Dokumentation (diverse Bildformate)

Fazit:

Für meine wenigen Anforderungen scheint ArgoUML am besten geeignet. Es ist schlank, also schnell heruntergeladen. Eine Installation ist nicht notwendig, da es als Java JAR ausführbar ist und somit auch auf allen Betriebssystemen läuft. Vom Funktionsumfang nimmt sich ArgoUML grob überblickt eigentlich nichts gegenüber den grafischen Editoren der Eclipse UML Tools. Allerdings lässt sich ArgoUML meiner Meinung nach einfacher bedienen und arbeitet direkt auf XMI in Version 1.2. Die UML Tools arbeiten dagegen mit einem XMI-Dialekt, der zwar auf XMI 2.x aufsetzt, sich aber einfach etwas von der originalen XMI-Spezifikation unterscheidet. Inwiefern sich beide Tools hinsichtlich der Weiterverarbeitung der Modelle - Stichwort MDA - eignen, lässt sich von mir nicht beurteilen.

Hinsichtlich der Komplexität der Handhabung der UML Tools könnte Topcased noch eine Alternative darstellen. Ich verwendete dieses Eclipse-Plugin, was auch auf dem Eclipse UML2-Projekt basiert vor zwei Jahren. Schon damals gab es eine reduzierte Property View, nichtsdestotrotz stellte sich die Modellierung mit diesem Werkzeug als enorm schierig dar. Ich kann nicht sagen, ob das Topcased-Plugin seither verbessert wurde, da zur Zeit die Website offline ist.

Die restlichen von mir kurz betrachteten Modellierungswerkzeuge sind hinsichtlich meiner Anforderungen schlichtweg ungeeignet, da meistens das XMI-Format nicht unterstützt wird oder eine Exportunktion für die Dokumentation fehlt.

Details zu verschiedenen Tools:

TinyUML

UMLet

  • kein XMI
  • merkwürdige Auswahl und Bearbeitung von Diagramm-Elementen
  • Java Standalone, Eclipse Plugin
  • viele Diagrammartens
  • Export in SVG, PDF, EPS
  • http://www.umlet.com/

BeoModeler

  • Webbasiert, Speicherung im XMI-Format (aber nicht valide, evtl. führt ein wenig Bearbeitung im Texteditor zu validen Dateien?!)
  • nur einfache Klassendiagramme (z. B. keine Typisierung von Attributen)
  • Export: Rational Software Modeler, Topcased
  • kein Bildexport
  • http://www.beotic.org/

Jink UML

ArgoUML

  • viele Diagrammarten
  • für den Funktionsumfang relativ schlank (8 MB)
  • Speicherung als komprimiertes XMI
  • Export und Import von XMI-Dateien
  • Bildexport: PNG, SVG, GIF, PS, EPS
  • Java, auch als Webstart Anwendung verfügbar
  • http://argouml.tigris.org/

Eclipse UML Tools

  • viele Diagrammarten
  • Modeling Distribution sehr groß (>300 MB)
  • arbeitet auf Basis vom Ecore UML2 XMI-Dialekt
  • Export: GIF, BMP, JPG, PNG, SVG, PDF
  • integriert in der Eclipse-IDE
  • Bearbeitung von Eigenschaften über die Property View ist immer noch etwa gewöhnungsbedürftig - hier wünscht man sich die Möglichkeit die angezeigten Eigenschaften zu definieren/einzuschränken, wie es z. B. bei MagicDraw funktioniert
  • Speicherverbrauch erfahrungsgemäß sehr hoch
  • http://www.eclipse.org/downloads/

Links

December 17, 2008

HCI-Patterns

In meiner Masterarbeit beschäftigte ich mich mit Patterns (dt. Muster) für den Bereich der Human Computer Interaction (HCI), also der Mensch-Computer-Interaktion und möchte in diesem kurzen Beitrag erörtern, was HCI-Patterns charakterisiert und wie sich diese beispielsweise hinsichtlich der Software-Patterns einordnen.

Patterns allgemein

Zunächst muss der Begriff des Pattern im Allgemeinen geklärt werden. So ist ein Pattern als eine Vorlage von Schritten zum Erreichen eines bestimmten Ziels beschrieben [Crowther 1995]. Weiter wurde der Begriff grundlegend durch den Architekten Christopher Alexander, der 253 Patterns im Bereich der städtischen Architektur definierte, geprägt. Alexander [1977] zufolge ist ein Pattern eine dreiteilige Regel, die eine Beziehung zwischen einem bestimmten Kontext, einem Problem und einer Lösung ausdrückt, wobei es sich um ein wiederkehrendes Problem handelt, das mit der entsprechenden Lösung immer behoben werden kann.

Software-Patterns

Die Idee etabliert Lösungswege in Form von Patterns zu beschreiben, fand mit den Design-Patterns der Gang of Four (GoF) Einzug in das Software-Engineering. Allerdings sind diese Patterns lediglich von Sofwareentwicklern zu verstehen, da diese häufig technische Konstrukte umschreiben. Dies steht im Widerspruch zu der ursprünglichen Idee von Alexander [Borchers 2000b, van Welie 2001, 98f], da die Patterns von Alexander das Ziel verfolgen möglichst benutzerfreundliche Lösungen zu beschreiben. Diese können auch von Laien verstanden werden, so dass sie mit den Spezialisten besser kommunizieren können, wobei die Zusammenarbeit zwischen Bauherr und Architekt ein Beispiel darstellt.

Zwar verwenden die Software-Patterns die gleiche Form zur Beschreibung, aber im Unterschied zu den Architektur-Patterns verfolgen sie andere Ziele, wie Wiederverwendbarkeit, Flexibilität und Effizienz eines Systems [van Welie u. a. 2000]. Obwohl die Patterns in der Softwaretechnik nicht dazu dienen, dass der Endbenutzer seine eigene Software-Architektur beschreiben kann, haben sie dennoch ihre Daseinsberechtigung: Sie schaffen ein Vokabular zur Kommunikation zwischen Softwareentwicklern [Borchers 2000a].

HCI-Patterns

Die Patterns im Bereich HCI unterstützen den ursprünglichen Gedanken von Alexander stärker, da diese Probleme des Endbenutzer lösen [Borchers 2000b, van Welie 2001, 98f]. Ein HCI-Pattern kann folgendermaßen definiert werden:
„An HCI design pattern captures the essence of a successful solution to a recurring usability problem in interactive systems.“ [Borchers 2001, S. 179]

Demnach fokussieren sich HCI-Patterns auf wiederkehrende Usability-Probleme, wobei Usability als die „Qualität eines Systems hinsichtlich der leichten Erlernbarkeit, Bedienbarkeit und der Benutzerzufriedenheit“ [Rosson und Carroll 2000, S. 9] dargestellt wird und als Gebrauchstauglichkeit übersetzt werden kann. Deshalb findet sich auch häufig der Begriff des Usability-Patterns [Borchers u. a. 2001, Mahemoff und Johnston 2001, Henninger und Ashokkumar 2005]. Einige Ausführungen konzentrieren sich besonders stark auf die Usability, wonach ein Pattern, das nicht mindestens eine Usability-Eigenschaft aus einer vorgegebenen Menge von Eigenschaften positiv beeinflusst, kein HCI-Pattern ist [van Welie u. a. 2000]. Allerdings existiert keine Einigkeit über die Eigenschaften, so dass exemplarisch die von van Welie u. a. [2000] und Mahemoff und Johnston [1998] aufgelistet sind:
van Welie u. a. [2000] Mahemoff und Johnston [1998]
- Lernfähigkeit - Aufgabeneffizienz (Einfacheit, Effizienz)
- Einprägsamkeit - Wiederverwendung (Konsistenz)
- Geschwindigkeit der Durchführung - Benutzer-Maschine Kommunikation (Rückmeldung)
- Fehlerhäufigkeit - Robustheit
- Zufriedenheit - Flexibilität
- Erledigung der Aufgabe - Verständlichkeit (Einfachheit, Vertrautheit, Visueller Aufbau)

Beispiele für HCI-Patterns

Zum Abschluss sind einige Patterns aus dem Bereich der HCI aufgeführt, so dass der Anwendungsbereich deutlicher erscheinen sollte. Des Weiteren sind zahlreiche Sammlungen angegeben, die HCI-Patterns beschreiben. Diese Liste ist allerdings nicht vollständig und bei der Verwendung sollte der Nutzen eines beschriebenen Patterns immer kritisch hinterfragt werden. Auch wenn ein Pattern in einer der Sammlungen aufgelistet ist, so ist das keine Garantie für die "Korrektheit" der beschriebenen Lösung.
Sammlungen von HCI-Patterns:

Shopping Card
Shopping Card

Literatur


[Borchers 2000a] BORCHERS, Jan: A Pattern Approach to Interaction Design. In: ACM (Hrsg.): Proceedings of the 3rd conference on Designing interactive systems: processes, practices, methods, and techniques, 2000 (Symposium on Designing Interactive Systems.), S. 369–378

[Borchers 2000b] BORCHERS, Jan O.: Interaction Design Patterns: Twelve Theses. In: The CHI 2000 Conference on Human Factors in Computing Systems, ACM, 2000, S. 2–3

[Borchers 2001] BORCHER S, Jan: A Pattern Approach to Interaction Design. John Wiley Sons, 2001. – ISBN 978-0-471-49828-5

[Borchers u. a. 2001] BORCHERS, Jan 0. ; FINCHER, Sally ; GRIFFITHS, Richard N. ; PEMBERTON, Lyn ; SIEMON, Elke: Usability pattern language: Creating a community. In: AI Society 15 (2001), Nr. 4, S. 377–385

[Crowther 1995] CROWTHER, Jonathan (Hrsg.): Oxford Advanced Learner ’s Dictionary of Current English. Bd. 5. Oxford University Press, 1995

[Henninger und Ashokkumar 2005] HENNINGER, Scott ; ASHOKKUMAR, Padmapriya: An Ontology-Based Infrastructure for Usability Design Patterns. In: Semantic Web Enabled Software Engineering (SWESE), 2005, S. 41–45

[Mahemoff und Johnston 2001] MAHEMOFF, Michael ; JOHNSTON, Lorraine J.: Usability Pattern Languages: the ”Language” Aspect. In: HIROSE, M. (Hrsg.): Human-Computer Interaction: Interact ’01. Tokyo, Japan : IOS Press, 2001, S. 350–358

[Rosson und Carroll 2000] ROSSON, Mery B. ; CARROLL, John M.: Usability engineering : scenario-based development of human-computer interaction. Morgan Kaufmann, 2000. – ISBN 1558607129

[van Welie 2001] WELIE, Martijn van: Task-based User Interface Design, Vrije Universiteit Amsterdam, Dissertation, 2001

[van Welie u. a. 2000] WELIE, Martijn van ; VEER, Gerrit C. van der ; ELIENS, Anton: Patterns as Tools for User Interface Design. In: VANDERDONCKT, Jean (Hrsg.) ; FARENC, Christelle (Hrsg.): Tools for Working With Guidelines: Annual Meeting of the Special Interest Group, Springer Verlag, 2000

November 30, 2007

Tools für (Web-)Entwickler: Firefox Add-ons

Geeignete Werkzeuge können die Entwicklung und das Testen von Webanwendungen erheblich erleichtern. Nachfolgend eine kurze Aufzählung von Add-ons, die jeder Entwickler installiert haben sollte:

Firebug

Schon lange kein Geheimtipp mehr, dient dieses Tool zum Debugging von JavaScript. Vor allem untertützt es bei der Überprüfung von AJAX-Funktionen, da es XMLHttpRequests anzeigen kann und zum Profiling von JavaScript geeignet ist. Daneben bietet Firebug ebenso Hilfestellung beim Debugging von XHTML und CSS.

Web Developer

Wie der Name schon sagt dient dieses Add-on dazu, die Erstellung von Webanwendungen zu erleichtern. Ebenso wie Firebug kann der XHTML-Code sowie das dazugehörige CSS inspiziert werden. Allerdings bietet es zusätzliche Funktionen, wie die Deaktivierung der Stylesheets oder JavaScript. Es können Webseiten und CSS validiert werden, Accessibility Tests angestoßen oder die Ansicht im PDA simuliert werden.

Selenium IDE

Der Test von Webseiten war bislang ein schwieriger Teil. Mittels Selenium gehört dies der Vergangenheit an, da Testszenarien einfach einmalig mit allen Klicks und Eingaben aufgenommen werden können und dann beliebig oft wiederholbar sind. So ist die Erstellung von Testfällen sehr einfach. Bezüglich der Continuous Integration sollen die Selenium Testfälle auch mit Ant ausführbar sein, was ich bisher noch nicht getestet habe.

August 22, 2007

Verwendung vom Eclipse UML2 Projekt zur Bearbeitung von UML2-Modellen und Profilen

Das Eclipse UML2 Projekt findet bereits in einigen Werkzeugen (z. B. Topcased UML Editor) Verwendung. Allerdings sind diese Tools zumeist Eclipse-Plugins die das Projekt innerhalb der Eclipse Umgebung verwenden. Möchte man UML2 in einer eigenständigen Java-Anwendung oder im Rahmen eines Unit-Tests verwenden, müssen einige Initialisierungen durchgeführt werden. Das nachfolgende Listing zeigt das erforderliche Setup:
protected static void registerResourceFactories(){
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().
put(UMLResource.FILE_EXTENSION, new UML22UMLResourceFactoryImpl());
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().
put("ecore", new EcoreResourceFactoryImpl());
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().
put("ecore2xml", new EcoreResourceFactoryImpl());
}

protected static void registerPathmaps(URI uri) {
URIConverter.URI_MAP.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP),
uri.appendSegment("libraries").appendSegment(""));
URIConverter.URI_MAP.put(URI.createURI(UMLResource.METAMODELS_PATHMAP),
uri.appendSegment("metamodels").appendSegment(""));
URIConverter.URI_MAP.put(URI.createURI(UMLResource.PROFILES_PATHMAP),
uri.appendSegment("profiles").appendSegment(""));
final String UML2_200_NS_URI = "http://www.eclipse.org/uml2/2.0.0/UML";
EPackage.Registry.INSTANCE.put(UML2_200_NS_URI,
EPackage.Registry.INSTANCE.get(UMLPackage.eINSTANCE.getNsURI()));
Ecore2XMLPackage.eINSTANCE.getEClassifiers();
}

private static void registerMapping(URI uri) {
final String ECORE2XML = "platform:/plugin/org.eclipse.uml2.uml/
model/UML2_2_UML.ecore2xml";
URIConverter.URI_MAP.put(URI.createURI(ECORE2XML),
uri.appendSegment("model").appendSegment("UML2_2_UML.ecore2xml"));
}

Mit Hilfe der vorhergehenden Initialisierungen lässt sich ein UML2-Profil (XMI Version 2.x) laden und kann zur Modellierung verwendet werden.
 private Profile loadProfile() {
registerResourceFactories();
URI uri = URI.createURI("resources");
registerPathmaps(uri);
registerMapping(uri);
URI profileFile = URI.createFileURI("MyProfile.profile.uml");
Resource r = new ResourceSetImpl().getResource(profileFile, true);
Profile p = (Profile) EcoreUtil.getObjectByType(r.getContents(),
UMLPackage.Literals.PROFILE);
return p;
}

July 31, 2007

JBoss AS und Portal

Mittlerweile gibt es von JBoss den Application Server in der Version 4.2.1. Zur vorherigen 4.0.x Version gab es umfangreiche Änderungen des Webcontainers. Zum einen wird nun ein Tomcat6 und zum anderen die JSF Implementierung von Sun verwendet. Möchte man trotzdem MyFaces einsetzen, kann der Servletkonfiguration (web.xml) ein zusätzlicher Paramter übergeben werden, so dass die Bibliotheken des WARs benutzt werden.

<context-param>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>true</param-value>
</context-param>

Auf Grund der Änderungen am Web Deployer kann das Portal in Version 2.4.1 nicht mehr verwendet werden, da es nicht korrekt geladen wird. Man erhält die Nachricht, dass die PortalWebApp nicht vom Web Deployer gehandhabt werden kann.

Folglich muss eine aktuelle Version des Portals genutzt werden. Ab Version 2.6 ist das Portal wieder mit dem JBoss AS 4.2.x lauffähig. Allerdings sollte unbedingt 2.6.1 verwendet werden, da das Portal 2.6.0 einige Bugs enthält. Diese wirken sich auf andere Anwendungen, die MyFaces verwenden, negativ aus, so dass diese nicht mehr lauffähig sind.

March 14, 2007

Alfresco in JBoss 4.0.5 integrieren

Seit Kurzem ist das Document Manangement System Alfresco in der Community Edition in Version 2.0 verfügbar. Leider gibt es einige Schwierigkeiten das neue Release mit JBoss AS in der Version 4.0.5 lauffähig zu bekommen.

Zwar erscheint Alfresco, man kann es aber nicht benutzen, da die Links JavaScript Fehler produzieren. So etwas zum Beispiel:

Error: document.forms.dashboard['dashboard:act'] has no properties


Grund dafür scheint eine fehlerhafte MyFaces Bibliothek zu sein.

Um Alfresco doch unter JBoss 4.0.5 zum Laufen zu bekommen, muss man unter $JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/jsf-libs/ die MyFaces Jars (in Version 1.1.4) gegen eine ältere Version (1.1.1) austauschen. Mit dieser Version von MyFaces kann Alfresco auch unter JBoss AS 4.0.5 benutzt werden. Unter 4.0.4 ist ein Austausch nicht notwendig, da dort MyFaces eh in Version 1.1.1 vorliegt.

Soweit so gut. Möchte man Alfresco 2.0 auch noch in einem Portlet unter JBoss Portal 2.4.1 benutzen, wird es komplizierter. Doch es gibt eine Lösung, die hier beschrieben wird.

May 31, 2006

Web 2.0 - Ajax

Im Rahmen unseres Softwareprojekts streifte ich zum ersten mal die neue "Wundertechnik" Ajax. Schon beeindruckend was damit alles möglich ist (siehe Googles Calendar, wenn man es bis auf die Spitze treiben möchte), aber eigentlich nur Javascript.

Egal wie man darüber denkt, ich benötigte einige Zeit, um ein brauchbares und kostenloses Ajax / Javascript Framework zu finden. Nachdem ich Prototype gefunden hatte, musste ich mich nur noch auf die Suche nach einer geeigneten Dokumentation machen.

Außerdem bin ich auch auf Rico gestoßen. Rico setzt auf Prototype auf, bietet aber schon grafische Elemente (z. B. Accordeon) und etwas mehr Dynamik.

March 14, 2006

Prog: Best Practices

Was sich jeder Programmierer anschauen sollte, ist da Refactoring von Code. Hier gibt es die gängigsten: Refactoring