Erstellen einer TimeSlider Animation mit GWT

In meiner letzten GWT-Webanwendung ging es unter anderem um die Animation von grafischen Elementen. Zum Beispiel sollten U-Bahnen in einem U-Bahnnetz dargestellt werden und der Nutzer sollte die Animation für einen selbstgewählten Zeitraum abspielen können. So sollten z.B. alle U-Bahnen, die zwischen 6 Uhr und 10 Uhr morgens eine bestimmte Station passieren, animiert werden. Diese Animationen habe ich mit JavaScript gebaut. Die Steuerung der Animationen wollte ich jedoch mit GWT-Elementen in die Anwendung einbauen. Dazu brauchte ich Buttons zum Starten und Stoppen der Animation, sowie eine Zeitanzeige, die den Fortschritt der Animation darstellt. Ich war mir ziemlich sicher, daß dies eine Standardfunktion ist, für die es passende Bibliotheken gibt.

Vorhandene Bibliotheken für einen GWT-Slider

Nach langwierigen Recherchen für diesen Anwendungsfall bin ich jedoch nicht fündig geworden. GWT bietet von sich aus keine fertigen Slideranimationen an. Es gibt zwar eine SliderBar im Inkubator, aber diese ist bisher nicht in die offizielle Bibliothek aufgenommen worden.

Ausprobiert habe ich unter anderem die gwt-slider-bar-Bibliothek.  Dies ging zwar in die richtige Richtung, aber der Overhead zum Installieren und Benutzen der Bibliothek war relativ groß und die grafische Umsetzung gefiel mir auch nicht besonders. Diese ist zwar komplett in CSS konfigurierbar, aber dann ist der Nutzen der Bibliothek insgesamt relativ gering. Ein Entwickler von devbliss bietet übrigens einen Cleanup dieser Bibliothek an, mit einer Mavenintegration und besserer Usability der CSS-Styles.

gwt-slider-bar

Schöne Slider gibt es von JQuery oder anderen JavaScript-Bibliotheken. Eine gute Lösung zur Einbindung eines JQuery-Sliders in GWT wird hier vorgestellt.

jquery-slider

Aber moment mal: ich wollte doch eigentlich in GWT mit Java programmieren! Die Integration von JavaScript in GWT ist immer etwas umständlich und man muss die JSNI-Methoden verwenden. Ich kam also zu dem Schluss, dass es einfacher ist, einen eigenen Slider mit den vorhandenen GWT-Elementen zu bauen. Da dies einwandfrei und relativ flott funktioniert hat, möchte ich euch diese Variante hier vorstellen.

 Grafische Elemente des TigerTech TimeSliders

Ein Slider besteht aus den folgenden Elementen: einem Hauptpanel, in welchem sich der Slider bewegt, einem SliderHandle, der von links nach rechts wandert und jeweils einem Panel auf der linken sowie der rechten Seite des SliderHandles, deren Größe sich während der Animation ändert.

slider-sketch

Weiterlesen

Kundenservice mit dem JIRA Issue Collector

Um Kunden eine zusätzliche Supportleistung anzubieten, kann mit dem JIRA Issue Collector ein Feedback-Formular in die Webseite eingebaut werden. Mit diesem kann jeder Webseitenbesucher ein Ticket an den Support erstellen, das direkt in einen JIRA-Vorgang umgewandelt wird. Im Gegensatz zu dem gerade neu veröffentlichten JIRA Service Desk, der sich vor allem für firmeninterne Supportleistungen eignet, ist diese Art des Supports nicht an die Lizenzgröße von JIRA gebunden und kostet auch nichts extra. Es ist dem Kunden allerdings nicht möglich, den Status des Vorgangs zu verfolgen, da er nicht unbedingt einen Zugang zu JIRA besitzen muss (wie es bei dem JIRA Service Desk Voraussetzung ist). Aber die Tickets landen direkt im JIRA-System und können dort bearbeitet werden. Es ist also kein Zwischenschritt der Übertragung  z.B. einer Email in das System notwendig.

Seit JIRA Version 5.1. ist der JIRA Issue Collector ein fester Bestandteil einer jeden JIRA-Instanz. Zur Erstellung eines neuen Issue Collectors sind Adminrechte erforderlich.

Erstellen eines neuen Issue Collectors

Ein Issue Collector gehört immer zu einem Projekt und wird auch innerhalb eines Projekts hinzugefügt. Als Administrator mit globalen Rechten wird das JIRA-Projekt, in welchem die Supporttickets gesammelt werden sollen, aufgerufen und unter Adminstration der Punkt Issue Collectors ausgewählt. Hier sind alle für das Projekt erstellten Issue Collectors aufgeführt und es kann auch eine neuer Collector angelegt werden.

issuecollector-project

Weiterlesen

Entscheidung für ein passendes Web Application Framework

Du hast eine spitzen Idee für eine Web-Anwendung und willst am liebsten gleich losprogrammieren. Aber beim Einrichten Deiner Entwicklungsumgebung fällt Dir ein, daß du gerne mal etwas Neues ausprobieren möchtest, das Dir ein paar Arbeitsschritte erspart und ein schickes modernes Design liefert. Du möchtest gerne ein Web-Application-Framework verwenden.

Ein Web Application Framework ist grundsätzlich für die Entwicklung von dynamischen Webseiten, Webanwendungen oder Webservices ausgelegt. Damit werden sich wiederholende Tätigkeiten vereinfacht, die Wiederverwendung von Code und die Selbstdokumentation der Software-Entwicklung gefördert. Begibt man sich allerdings auf die Suche stellt man schnell fest, daß es unendlich viele Möglichkeiten gibt. Deshalb sollte man zunächst festlegen, welche Anforderungen man an ein solches Framework hat und dann die Alternativen nach diesen Anforderungen hin abklopfen.  Die Frage nach richtig oder falsch läßt sich natürlich so einfach nicht beantworten, aber gut ist es doch ein paar Vor- und Nachteile zu kennen.

web-frameworks

Weiterlesen

Datenbanken für Couch Potatoes und Big Data Management

No more SQL?

Viele Entwickler verwenden heute Datenbanken, die ohne oder mit wenig SQL auskommen. Ein Trend der sich NoSQL nennt.

Der Begriff NoSQL wird zunächst durch das defniert was er nicht ist, nämlich kein SQL. Er wurde erstmalig 2009 von Eric Evans für ein Event in San Francisco verwendet. Vorrangig sollte er als provokative Phrase aufgefasst werden, als Abgrenzung zu der strukturierten Abfragesprache SQL. NoSQL hat zum Ziel, Alternativen zum allgegenwärtigen relationalen Datenbankmodell und üblichen Datenbanktechnologien aufzuzeigen, die für bestimmte Anwendungsfälle besser geeignet sind. Mit dem Web2.0 und dem damit einhergehenden Bedarf nach der Verarbeitung großer Datenmengen erfuhren NoSQL-Datenbanken ein sehr schnelles Wachstum. Die Vereinigung fast aller nicht relationaler Datenbanken unter dem Begriff NoSQL zeigte eine ernstzunehmende Alternative zu SQL-Datenbanken auf. Mittlerweile wird der Begriff von großen Teilen der Community als „Not-only-SQL“ aufgefasst, um somit die strikte Abgrenzung wieder aufzuweichen. Es gibt auch viele Hybrid-Lösungen. Je nach Anwendung gilt es die richtige Datenbank auszuwählen und in vielen (vor allem sicherheitskritischen und komplexen) Fällen ist eine relationale Datenbank auch nach wie vor die richtige Lösung. Die NoSQL-Bewegung setzt sich grundsätzlich für eine freie Datenbankauswahl ein und schärft das Bewußtsein für das große Spektrum an Datenbanken, das zur Verfügung steht.

Im NoSQL-Archiv von Dr. Prof. Stefan Edlich sind alle NoSQL-Datenbanken aufgeführt, aktuell bereits 150!

sql-vs-nosql

Weiterlesen

„Git“ your work done and don´t mess with your team!

Verteilte Versionsverwaltung mit GIT

Wichtigstes Tool für die Softwareentwicklung im Team ist eine funktionierende Versionsverwaltung. Nach den zentralisierten Systemen CVS, Subversion und anderen, ist aktuell das verteilte System Git das Tool der Wahl mit coolen neuen Features. Es ist besonders gut geeignet für große, verteilte OpenSource-Projekte, um viel Diskussion um Commit-Zugänge zu vermeiden und es jedem Entwickler einfach zu machen, seinen Code hochzuladen ohne alles kaputt zu machen. Bei Git gibt es kein zentrales Repository, sondern viele verteilte Branches die untereinander ausgetauscht werden können.

Git ist Open Source und wurde ursprünglich für die Quellcode-Verwaltung des Linux-Kernels entwickelt. Durch eine Lizenzveränderung des damals benutzten BitKeeper-Systems, konnten die Linux-Entwickler dies nicht mehr kostenlos verwenden, weshalb der Linux-Erfinder Linus Torvalds 2005 mit der Entwicklung einer neuen Quellcode-Management-Software begann, „because I hate CVS with a passion“. (Zitat aus seinem Vortrag bei Google Talks 2007, sehr empfehlenswert und sehr lustig, besonders seine grandiosen Slides :))

[youtube http://www.youtube.com/watch?v=4XpnKHJAok8]

Weiterlesen

AtlasCamp 2013: Plugin Developers United in Amsterdam

Just came back from Amsterdam and as the whole event was in english and my notes too, this blogpost will be an english one as well.

AtlasCamp is a yearly event which is organized since 2009 from Atlassian for Plugin Developers to give them insights in the product APIs, inform about new features and of course get to know each other. After 3 years of coding in California, last year was the first event in Europe (Wiesbaden/Germany) and this year in Amsterdam.

For the first time there was a ShipIt-Hackathon on the first day of the AtlasCamp at the Atlassian Amsterdam Office. Around 20 Plugin Developers were participating and competing for the best plugin shipped during one day. Most of them were fulltime plugin developers, who came with 2-4 people from the same company and had specific ideas for a plugin, for example a new feature for their already existing plugins, as the gliffy-team did, who also won the contest with a great performance at the end. It was quite difficult as a beginner to get involved, because teams were already formed by the people who came together and no introduction talks or tutorials were given. Thats why there was not much to do for me as a newbee who coded her first HelloWorld-Plugin a couple of days ago. But still i got some insider hints about where the flaws of the API can be found 🙂

The next two days were full of interesting talks about new features at atlassian and also very interesting live demonstrations in plugin coding, so on the third day I would have been ready to really try out what I´ve learned. I guess I will do so soon.

There were around 150 Plugin Developers from all over the world participating at AtlasCamp. They were showing a map at the beginning of the conference, which showed that Germany was with 37 participants by far the biggest group. Only 8 came from the netherlands as the guest country, and next were 6 from sweden, italy and another country which i just forgot. I met people from Belgium, 1 guy from Malaysia, some from Russia and many from the westcoast of the US (mainly San Francisco Atlassian Office). But also the polish community was represented by 6 people, which my polish collegue found out the next day. Atlassian itself came with around 30 people to the event.

For those who didn´t make it to the camp but are still interested in what its all about, I made a lot of notes and will present it to you in the following. Its a lot to read, but you can also pick the talks that you are interested in. Maybe Atlassian will also publish some of the slides later on. If so, I will collect the links in the link section below.

It has been an awesome location in the koepelkerk at the Renaissance hotel in Amsterdam. An old church with a huge organ, a big dome and a lot of atmosphere. And of course Amsterdam is beautiful too.

Weiterlesen

Atlassian-Plugins schreiben für Jedermann

In Vorbereitung auf das große Atlassian-Entwickler-Event „AtlasCamp“ in Amsterdam Ende Mai habe ich mir endlich mal angeschaut wie man denn ein eigenes Plugin für die Atlassian-Produkte schreibt. Die riesige Anzahl von Plugins im Atlassian-Marketplace läßt vermuten, daß die Pluginentwicklung von Atlassian gut unterstützt und gefördert wird und auch auf dem AtlasCamp ist sie das zentrale Thema.

Nachdem ich das nun ausprobiert habe kann ich nur sagen: Toll gemacht Atlassian! Ein erstes Plugin kann wirklich jeder ohne jegliche Hindernisse erstellen! Die Anleitung ist detailliert und gut verständlich, selbst für Nicht-Programmierer durchführbar und die Erfolgserlebnisse treten schon nach kurzer Zeit ein. Ein erstes HelloWorld-Plugin läßt sich in weniger als einer Stunde schreiben und in einer eigenen JIRA-Instanz, die gleich mitgeliefert wird, aufrufen und ausprobieren. Als einzige Systemvorraussetzung muss ein Java SDK 1.6.*  installiert und der Port 2990 offen und zugänglich sein, aber auch hierfür gibt es eine detaillierte Anleitung. Alles andere wird von dem Atlas-SDK mitgebracht, neben einer Jira-Standalone-Version auch Maven 2.1.0 und ein Tomcat 6-Server.

Die genaue Anleitung auf englisch von Atlassian findet ihr hier. Ich werde nur eine kurze Zusammenfassung geben, um euch auf den Geschmack zu bringen 🙂

Weiterlesen

Grenzen und Möglichkeiten von Scrum

Historische Hintergründe

Die Anfänge von Scrum lassen sich auf Ikujiro Nonaka zurückführen. Mit seinem Buch „The Knowledge-Creating Company“, legte der mittlerweile eremitierte Professor der japanischen Hitotsubashi-Universität 1991 zusammen mit Hirotaka Takeuchi die Grundlage für ein neues Wissensmanagement. Er unterscheidet zwei Arten von Wissen: explizites Wissen, das in Betriebsanleitungen und Prozeduren enthalten ist und implizites Wissen, das nur durch persönliche Erfahrungen erlernt werden kann. Dieses implizite Wissen ist subjektiv und intuitiv, es enthält unser Bild der Realität und unsere Vision für die Zukunft. Während explizites Wissen sich leicht darstellen und verarbeiten lässt, ist dies bei implizitem Wissen deutlich schwerer. Unternehmen wie Toyota oder Canon profitieren vom impliziten Wissen ihrer Mitarbeiter, indem sie hohen Wert auf die Interaktion zwischen ihren Mitarbeitern legen. Dieses implizite Wissen in explizites Wissen umzuwandeln, macht nach Nonakas Meinung den Erfolg japanischer Firmen aus und wird von ihm als das erstrebenswerte Modell dargestellt. Er bezeichnet Wissen als die Schlüsselkompetenz unseres Zeitalters und den Erwerb und die Anwendung von Wissen als einen wesentlichen Wettbewerbsfaktor. Dieses „Wissen sammeln durch gemeinsame Erfahrungen“ findet sich auch in Scrum wieder.

knowledge_creating_companyNonaka_Photo

Weiterlesen

Off Topic: Thoughts about money and responsibility

Beinahe täglich hört und sieht man in den Nachrichten wie die großen Banken ihr Geld unverantwortlich und unsinnig verspekulieren oder in fragwürdige Projekte investieren. Moment mal: ihr Geld? Banken haben kein eigenes Geld. Meine Gedanken zum Start in das Jahr 2013 betreffen daher die Mitverantwortung aller, auch meiner selbst, die diese fragwürdigen Methoden mit ihren Euros finanzieren. Hat man überhaupt das Recht sich darüber aufzuregen? Ist es denn etwa so, daß man keine Alternativen hat? Und wenn ich schon Geld übrig habe und es einer Institution anvertraue, warum kann ich dann nicht mitbestimmen, ob mein Geld in Kinderarbeit, Atomkraftwerke oder Militärwaffen oder aber in  Sozial- und Umweltprojekte investiert wird bzw. werde überhaupt darüber informiert oder kann irgendwo nachlesen was genau die Bank mit dem Geld macht? Dazu gehen Banken mittlerweile auch noch Pleite und müssen gerettet werden, weil sie scheinbar „systemrelevant“ (=sehr gross) sind. Um ihr Image zu retten, geben die großen Banken mittlerweile Millionen für Fernsehspots zur besten Werbezeit aus. Aber reicht das aus, um uns zu überzeugen, daß alles gut ist?

Fakt ist: es gibt Banken die ihre Kunden in ihre Entscheidungen mit einbeziehen und über ihre Geschäfte aufklären und es gibt Banken die dies nicht tun.

Zweiter Fakt ist: die wenigsten Kunden wissen das, bzw. haben sich jemals mit dem Thema auseinandergesetzt, weil man bei der Bank ist, bei der schon die Eltern waren und wo man in der Kindheit sein erstes Sparbuch eröffnet hat.  Oder bei der Bank, die ihre Filiale gleich an der Ecke hat und wo man irgendwann mal reingelaufen ist, um ein Konto zu eröffnen, ohne sich weiter mit deren Geschäftsmodell zu beschäftigen. Oder es ist schlicht eine Imagefrage, da große Banken für großen (auch persönlichen) Erfolg stehen.

Weiterlesen