DSL Projekt aufsetzen (mit Xtext)


Flattr this

Motivation

Da es ein wenig Mühe bereitet hat und ich nach einem Jahr nicht noch einmal den Aufwand investieren möchte schreibe ich hier eine kleine Anleitung wie man ein DSL Projekt unter folgenden Randbedingungen aufsetzt:

  • Als Entwicklungsumgebung wird eclipse eingesetzt
  • Zur Sicherstellung einer einheitlichen eclipse Installation wird yatta-profiles genutzt
  • Zur Modellierung der DSL wird Xtext verwendet
  • Die Sourcen werden auf github.com gehostet
  • Als CI System kommt travis-ci.org zum Einsatz
  • Zur Verteilung der Releasestände wird bintray.com genutzt

Die Eclipse aufsetzen

Lange habe ich nach einer Möglichkeit gesucht um diesen Schritt zu automatisieren. Angefangen über das Niederschreiben der Installation hier im Blog (Eclipse konfigurierenEclipse aufsetzen) über CloudConnect bin ich letztlich auf Yatta-Profiles gekommen. Yatta Profiles hat sich für meine Arbeitsweise als am besten geeignet erwiesen um die zu installierenden Plugins und die aus zu checkenden Projekte einheitlich für ein Team zu verteilen (Allerdings nutze ich das Angebot nicht als Team sondern als einzelner Entwickler. Halte mir aber die Möglichkeit offen mit mehreren Leuten zu gleich an einem Projekt zu entwickeln.)

Bleibt das Speichern der eigentlichen Konfiguration der installierten Plugins. Diese Arbeit kann ich an das Oomph Plugin delegieren. Zum Glück hat das Projekt jetzt eine Reife erlangt die zur produktiven Arbeit genügen sollte. 

Wer meine Eclipse Installation ausprobieren möchte, kann sich einfach das Yatta-Profile installieren: ECLIPSE XTEXT DSL TOOLS

Die Sourcen erstellen

Generell beginne ich mit dem Anlegen eines leeren Repositories (Projekt) auf Github. Dabei wähle ich zunächst den Namen aus, dann gebe ich java als Programmiersprache an und wähle eine mir genehme Lizenz aus. Weiterhin selektiere und aktiviere ich die Checkbox „Readme erstellen“. Nach dem Fertigstellen bietet github.com ein neues Projekt zum clonen an und genau das mache ich dann auch – ich klone das Projekt mittels git clone <url> in ein lokales Verzeichnis auf meinem PC. 

Nun starte ich eclipse und erzeuge über den Dialog „Neu/Projekt/Xtext“ ein neues xtext Projekt.

Hierbei sind bereits ein paar wichtige Dinge zu beachten. Da ich später auf bintray deployen möchte benötige ich eine einheitliche GroupId über alle Projekte hinweg. Gern hätte ich hier com.github.funthomas424242.dsl verwendet, doch das funktioniert nicht mehr falls ich mal ein Maven Plugin entwickeln sollte dann hätte ich nämlich gern die gropuId com.github.funthomas424242.maven.plugins verwendet. Damit bräuchte ich aber zwei groupId’s und das würde zwar gehen aber ist von bintray nicht gewünscht. Da man nie weiß wann solche Wünsche mal in Vorgaben umgewandelt werden (besonders wenn man die kostenlosen Services nutzt) habe ich mich also für die groupId com.github.funthomas424242 entschieden. Als Folge daraus muss ich meine Projekte mit dieser groupId versehen. Damit das funktioniert und ich trotzdem noch verschieden DSL Projekte verwalten kann gehe ich wie folgt weiter vor. 

Die nachfolgenden Einstellungen im Wizard werden am Beispiel meines Projektes ahnen.dsl auf github erklärt. Und so fülle ich die erste Dialogseite des Wizards aus:

Xtext Projekt Basisdaten

 

Ja, der Projektname ist richtig. Zwar wird dieser als groupId verwendet doch lässt sich das später manuell gut abändern.

Xtext Projekt Settings

 

Als Source Layout wurde Plain gewählt da eine andere Kombination mit der Einstellung Eclipse Plugin aktuell noch nicht unterstützt wird.

Nun werden diverse Projekte vom Wizard in der eclipse erzeugt.  Von jedem Projekt öffnen wir nun die pom.xml und korrigieren die groupId manuell auf z.B. com.github.funthomas424242 Anschließend selektieren wir alle Projekte und führen ein Maven update Projekt über das Kontext Menü in der eclipse durch. Nun sollten alle Projekte wieder fehlerlos erscheinen. Falls nicht einfach die Xtext Datei öffnen und noch mal alle Sourcen generieren lassen. 

Bevor wir einen commit durchführen sollten wir noch im parent Projekt eine .gitignore anlegen. Meine sieht wie folgt aus:

.settings/
target/
src-gen/
xtend-gen/
.project
.classpath
*_gen

Man beachte, dass ich hier die führenden / (Slashes) weggelassen habe damit die Regeln auch für die Unterprojekte gelten. Nun testen wir zunächst unser Projekt indem wir eine Eclipse Instanz mit Runtime Workspace starten:

Runtime Start

 

In der gestarteten Runtime Eclipse legen wir ein einfaches Projekt „Test“ an und darin eine Datei test.ahnen. Beim Öffnen dieser Datei können wir sehen ob unser Plugin prinzipiell schon funktioniert, denn es muß der entsprechende Editor zum Öffnen angeboten werden. In meinem Fall nennt sich dieser Ahnen Editor und ist vorhanden. Verwenden wir diesen Editor zum Öffnen werden wir gefragt ob das Projekt in ein Xtext Projekt konvertiert werden soll – ja natürlich. Wir müssen nichts dazu tun eclipse trägt nun ein paar Metadaten in die Projektbeschreibungsdatei .project ein und das scheint es gewesen zu sein. Den Editor prüfen wir indem wir seine Vorschlagsfunktion unter Ctrl+Space nutzen und den ganzen Beispieltext damit eingeben.

Das war es erstmal. Jetzt können wir die Runtime Instanz der eclipse schließen und unseren Projektstand commiten (aber noch nicht pushen). Wir müssen zwar noch alle Projekte ein Verzeichnis nach oben verschieben aber das sollte git als Verschiebung erkennen und somit sollte dies kein Problem ergeben. Also commited ist.

Jetzt löschen wir alle Projekte aus unserer eclipse aber nicht auf der lokalen Festplatte!!!

Nun unbedingt die eclipse schließen da sie meist die Projekte trotzdem noch lockt und dadurch nachfolgende Schritte fehlschlagen würden. 

In einer Shell navigieren wir jetzt zum Parent Projekt (in diesem ist die pom.xml des parents zu finden) von dort aus verschieben wir alle Verzeichnisse und Dateien ins übergeordnete Verzeichnis. Anschliessend navigieren wir selber in das übergeordnete Verzeichnis und löschen das nun leere alte parent Projekt.

Jetzt ist unser normales root Verzeichnis aus dem github repository das parent Projekt und wir können es ganz normal in  unsere Eclipse neu importieren. 

Diesen Stand commiten wir ebenfalls wobei wir ihn dem letzten Commit hinzufügen (amend commit). Jetzt noch ein kurzer Test mit der Runtime eclipse. Wenn alles noch so funktioniert wie vorher, dann können wir jetzt pushen.

Maven Build anpassen

Durch die manuelle Umbenennung der groupId haben wir unser Definitionsfile der target platform invalidisiert. Das sollten wir unverzüglich beheben. Das Problem wird deutlich wenn wir im Root Verzeichnis unseres Projektes ein mvn clean install ausführen.

Das Problem lässt sich leicht korrigieren durch eine Anpassung in der parent/pom.xml. Dort muss die groupId der TargetPlatform angepasst werden. Ich bevorzuge eine generische Lösung. Anbei der relevante Abschnitt aus der parent/pom.xml:

<plugin>
 <groupId>org.eclipse.tycho</groupId>
 <artifactId>target-platform-configuration</artifactId>
 <version>${tycho-version}</version>
 <configuration>
  <target>
   <artifact>
    <groupId>${project.groupId}</groupId>
    <artifactId>com.github.funthomas424242.dsl.ahnen.target</artifactId>
    <version>${project.version}</version>
   </artifact>
  </target>

So jetzt funktioniert der Maven Build wieder. Zeit für einen neuen commit. Aber mit dem Push ruhig noch warten, den wollen wir gleich durch das CI System schicken.

Das CI System aktivieren

Dazu gehen wir auf travis-ci.org und loggen uns mit unserem github.com Account per OAuth ein. In der rechten oberen Ecke wird der Nutzername angezeigt beim überstreichen mit der Maus ploppt ein Menü auf. Daraus wählen wir den Punkt Accounts aus. Da das Repository neu ist, wird es travis-ci noch nicht kennen und wir nutzen den Sync Button oben rechts um unsere github Projekte zu importieren. In der erscheinenden Liste an Projekten suchen wir unser Projekt und aktivieren den Schalter davor. Ab jetzt sucht travis-ci bei jedem push in das Projekt eine Datei .travis.yml und falls gefunden wird anschließend ein Build ausgeführt.

Natürlich müssen wir diese Datei noch ins Projekt einchecken. Sie gehört ins parent Projekt und muss wirklich mit einem Punkt beginnen (also ein Problem für alle Windows Freunde – aber ein lösbares🙂 )

language:
 - java

jdk:
 - oraclejdk8

Nun noch ein commit und ein push und die Maschinerie springt an🙂 Nach ungefähr 10 Minuten sollte das Projekt in travis erscheinen und der Build lässt sich prüfen. Es empfiehlt sich ein entsprechendes Build Icon von travis in die Projekt Readme zu integrieren. So kann man auf einem Blick erkennen wenn der Status auf rot geht. 

Bintray Deployment anbinden

Zu den Formalitäten wie Registrierung und ähnliches bei bintray.com möchte ich hier nicht eingehen. Nur eins dazu das Passwort für die oss.jfrog.org Seite ist Euer API Key von bintray.com. Möglicherweise müsst ihr Euch erst freischalten lassen etc. Aber das sollte sich jeder selbst durchlesen, da es teilweise auch Sicherheitsrelevant ist.

Weiterhin ist bei maven die settings.xml anzupassen. Hier sind die Zugangsdaten für den Server zu hinterlegen. Vorsicht – die Datei darf kein Anderer in die Hände bekommen. Idealerweise nutzt ihr die Verschlüsselungsmechanismen. 

Im Projekt ist auch noch eine Anpassung durchzuführen. Die Deplyoment Repositories sind im parent/pom.xml bekannt zu geben. Dazu fügen wir folgenden Eintrag in die parent/pom.xml ein.

<distributionManagement>
 <snapshotRepository>
  <id>snapshots</id>
  <name>oss-jfrog-artifactory-snapshots</name>
  <url>https://oss.jfrog.org/artifactory/oss-snapshot-local</url>
 </snapshotRepository>
 <repository>
  <id>bintray-funthomas424242-dsl</id>
  <name>oss-jfrog-artifactory-releases</name>
  <url>https://oss.jfrog.org/artifactory/oss-release-local</url>
 </repository>
</distributionManagement>

Mit einem mvn deploy lassen sich ab jetzt Snapshots und Releases nach oss.jfrog.org deployen. Von dort aus können diese im angemeldeten Zustand über das Kontextmenü nach bintray.com in ein beliebiges Package kopiert werden. Jedes Package muss auf bintray in einem Repository liegen. Ein Package welches im jCenter veröffentlicht werden soll muss einigen Anforderungen genügen (mindestens ein jar, ein src.zip, ein pom.xml und optional noch ein javadoc archive). Die Freischaltung für das jCenter dauert ein wenig Zeit – am besten rechnet man mit 24h – und erfolgt nur auf Antrag. Eine weitere Freischaltung für das maven central erfordert dann noch ein Sonatype Login. Parallel zur Beantragung der ganzen Accounts kann dann schon mal Fachlichkeit umgesetzt werden🙂

Noch ein paar Tipps

  1. Tycho kann bereits in der Version 0.25.0 benutzt werden. Das muss man manuell in der parent/pom.xml in den Properties eintragen. 
  2. Um das Deployment zu verringern nutze ich in der parent/pom.xml:
    <maven.deploy.skip>true</maven.deploy.skip>
    und in der pom.xml des repository Subprojektes:
    <maven.deploy.skip>false</maven.deploy.skip>
    So wird nur das Zip mit der eclipse update site hochgeladen.

Soweit zum Aufsetzen eines DSL Projektes und viel  Spass beim Ausprobieren. Jetzt muss nur noch die Fachlichkeit umgesetzt werden😉

 

KNF Kongress ’15


Flattr this

Motivation

Ich war heute auf dem KNF Kongress ’15 weil ich gestern per eMail informiert wurde das dieser heute stattfindet. Nun gut es ist Sonntag und ich konnte mein WE nicht so schnell umplanen aber immerhin ich bin gegen 14:00 Uhr dort aufgeschlagen und habe spätestens 18:00 Uhr festgestellt, dass sich der Besuch gelohnt hat. Daher werde ich hier meine Eindrücke kurz wiedergeben. Evtl. sollte ich noch erwähnen, dass ich den Verein bis zur eMail nicht einmal kannte.

Das Programm

An dieser Stelle könnte ich einfach einen Verweis auf das Programm hinterlegen aber da sich Verweise im Internet schnell ändern gebe ich den Programminhalt kurz als Tabelle wieder:

Uhrzeit Hörsaal E013 Hörsaal E014
10:00 Bau und Installation von Android-Apps aus verfügbaren Sourcen im Internet. „Domain Driven Design“ bei kleinen Projekten – geht das?
11:00 Mit Daten leben und sterben. UML für Hobbyprojekte
12:00 Mittagspause Mittagspause
13:00 Wie man seine DIY 3D-Drucker, Fräsen, Folienschneider und LASER-Plotter mit Open Source-Software, Firmware und sogar Hardware aufbauen kann. Warum bruachen wir eine neue Programmiersprache wie Perl6? Haben wir nicht schon genug Programmiersprachen? Jetzt kommt Perl 6.
14:00 Freifunk, ein dezentrales Wireless Mesh-Netz Doppelvortrag: „Konfiguration durch Konvention: Warum Dinge ganz einfach funktionieren und trotzdem flexibel sind“ und „Sprachgepflogenheiten beim Umgang mit Computern“
15:00 Kaffeepause Kaffeepause
15:30
  • Fehler bei der GNU PG Konfiguration vermeiden
  • vi in 5 + 10 Minuten – alles was man wissen muss.
GitLab Einführung
16:30 KNF Jam Session

Expertentipps in jeweils 5 Minuten

Quelle: http://www.franken.de/veranstaltungen/knf-kongress/2015/

 

Wie bereits erwähnt ich traf kurz vor 14:00 Uhr ein und hörte mir die Vorträge im E013 an, also Freifunk, GNU PG und vi.

Der Vortrag über Freifunk hat mir sehr gefallen. Dabei habe ich endlich mal erfahren was im groben alles hinter dem Router in unserem Flur steckt und wie das so grob zusammen arbeitet. Auch Themen wie Störerhaftung wurden angesprochen. Das Ganze aus einer sehr praktischen Perspektive in der auch durchaus auf aktuelle Problemstellungen wie das gerade im Umbruch befindliche Monitoring hingewiesen wurde.

Den Vortrag über GNU PG habe ich dann soweit verpasst als das ich noch die letzten 5 Minuten mitgenommen habe. Vorher war ich noch in Gesprächen zu Freifunk – sorry dafür.

Dafür hab ich dann viel Neues über den bei mir manchmal aus Versehen startenden vi Editor erfahren. Vor allem aber ein sicheres „Keine Panik“ Rezept für Unix DAUs wie mich bekommen. Ich nutze zwar Linux bin aber letztlich Java Programmierer und IDEs wie Eclipse gewöhnt und wenn sich dann ein Wesen öffnet welches mir eine Datei anzeigt und beim ersten Tastendruck irgendwelche mit unbekannten Kommandos ausführt bin ich immer etwas verunsichert🙂 Das wird sich in nächster Zeit wohl ändern, denn ich habe heute durchaus erkannt das ein Beherrschen dieses Editors durchaus seine Vorteile haben kann.

Ganz spannend fand ich dann auch die KNF Jam Session. Zunächst dachte ich mich würde etwas wie ein Poetry Slam für ITler oder eine Art Quiz erwarten. Dem war aber nicht so. Bei der Veranstaltung handelte es sich einfach um die Möglichkeit sein persönliches Projekte in 5 Minuten vorzustellen und um Mitstreiter zu werben. Hier wurden sehr interessante Projekte vorgestellt. Das größte lokale war vermutlich ein Perl 6 Treffen in Nürnberg im nächsten Jahr (2016). Ein weiteres Projekt war Open Sea, welches scheinbar gut läuft aber auf seinem youtube Kanal aktuell noch 80 Abonnenten benötigt um eine sprechende Kanal-URL erhalten zu können.

Fazit

Soweit also die Infos zum heutigen KNF Kongress. Aus meiner Sicht eine Veranstaltung deren Besuch sich lohnt – zumindest für mich. Hier ist es möglich schnell regionale (evtl. sogar überregionale) Kontakte für alle möglichen Themen rund ums Internet zu finden. Gut für den Ausbau eines Netzwerkes das man benutzen möchte um konkrete Hilfe im persönlichen Gespräch zu erhalten.

 

Getting Class values from Annotations in an AnnotationProcessor


Ein sehr hilfreicher Blogeintrag zum Verarbeiten von Annotationen ab Java6

Peter Mount's Blog

In annotation processors one common use case is to read the values contained within an Annotation. In most cases this works fine, however there are some caveats when it comes to accessing values within Annotations that are either Class or a Class array. It’s even worse if you are trying to access an annotation on a method within a super type of the class you are processing. Here I’ll go through how to access those Class values and how to get those values when they are in a super type – specifically when a method has been overridden.

First why?

Well inside retepTools we have an AnnotationProcessor that checks to ensure that certain annotations are used correctly, specifically the @ReadLock and @WriteLock annotations. It’s invalid for those annotations to be used together on the same method. It’s also invalid for a method to be annotated with one and then overridden…

Ursprünglichen Post anzeigen 2.958 weitere Wörter

Videos vom Desktop erstellen


Flattr this

Motivation

Ab und zu benötigt man zur Erklärung von Programmen ein kleines Video. Meine Video’s stelle ich auf youtube zur Verfügung. Tools zur Erstellung gibt es einige und die Erfahrungen welche ich damit sammle werde ich in diesem Post nach und nach ergänzen.

Screen Recorder

Zunächst muss man in der Lage sein die eigenen Aktionen auf dem Computerbildschirm als Film aufnehmen zu können. Unter Windows eignet sich dazu CamStudio sehr gut. Das Programm lässt sich auch unter Linux nutzen allerdings ist dann das Paket wine zu installieren und es geht etwas Performance drauf. Aus Angst vor Performanceeinbussen und Problemen wie Hängen und Absturz habe ich CamStudio nicht unter wine ausprobiert. Unter Windows allerdings hat es mir lange Zeit sehr gute Dienste geleistet.

Aktuell nutze ich Ubuntu und habe mir dort Kazam installiert. Der erste Eindruck ist sehr gut aber ein richtiges Video für meinen Kanal habe ich damit noch nicht erstellt. 

Audio Recorder

Einen Audio Recorder habe ich noch nicht benötigt aber ich halte es für das Beste einen zu verwenden welcher mp3 Format als Ausgabe liefert.

Schneiden

Zur Bearbeitung von Urlaubsvideos habe ich auf Windows gern als Toolchain die Werkzeuge dvdx, cuttermaran und dvdstyler genutzt.


Cheaten per Sheet


Flattr this

Motivation

Jeder von uns benutzt täglich eine Vielzahl an Werkzeugen. Nach längerer Pause werden die Tastenkürzel oder Kommandos vergessen. Dann greift man sich ein Cheat Sheet und schon läuft’s wieder. Auf manchen Cheat Sheets fehlt etwas, was man daher manuell per Stift ergänzt hat. Der Zettel ist nun leider weg aber ein eigenes Cheat Sheet zu entwerfen dafür fehlte immer die Zeit. Erst ein Template bauen und dann noch den Inhalt ausdenken – gibts da nicht was von der Stange? Und so fand ich Cheatography.

Cheatography

~, dies ist eine Plattform auf welcher sich auf einfachste Art einfache Cheat Sheets erstellen lassen. 

Zunächst muss man sich registrieren😦 Ja ohne Daten geht es leider nicht und ein brauchbares Video ob sich die Registrierung lohnt war auch nicht im Netz zu finden. Darum hab ich das für Sie mal ausprobiert und muss sagen es lohnt sich.  Nach der Registrierung kann man direkt loslegen. Anzahl der gewünschten Spalten festlegen und Hintergrundfarbe definieren und los geht es.

Im ersten Versuch habe ich mich für ein 4 Spalten Layout entschieden – nach der Veröffentlichung war es mir aber doch zu doof und dann habe ich noch auf ein 3 Spalten Layout gewechselt. Alles kein Problem. Veröffentlichen geht nur einmal ab da wirken sich die Änderungen direkt aus. Also vor der ersten Veröffentlichung lieber 10 mal überlegen und Andere nach ihrer Meinung fragen. Nach der Veröffentlichung ist es wie bei einer Webseite, wenn der erste Eindruck schlecht ist, kommt niemand wieder. 

Inhalte erstellt man einfach als Blöcke welche man in den Spalten beliebig anordnen kann. Jeder Block ist von einer bestimmten Art zwischen denen man aber live wechseln kann. Der Inhalt der alten Art bleibt eine Weile erhalten. Falls die neue Art nichts ist wechselt man einfach zurück und hat nix an Inhalt verloren – sehr gut gelöst. Es werden folgende Arten angeboten:

  • Plain: Text oder Code
  • Lists: Ein bis Vier spaltige Listen, Bar Chart, Q&A Style
  • Media: Image/Photo oder Video (Video wird nicht ins PDF exportiert)
  • Live Content: URL zu einer dynamisch erzeugten Ressource im Netz
  • Column Break (erzeugt eine neue Spalte im PDF)
  • Page Break (erzeugt eine neue Seite im PDF)
Damit lies sich jeder meiner Wünsche erfüllen und so denke ich braucht es kein anderes Tool um mal schnell einen Spickzettel zu erstellen.

Anbei mein erstes Cheat Sheet für Apache-Karaf:




Code mittels NDepend analysieren


Ein sehr guter Post von Johnny Graber – sehr lesenswert.

Johnny's Blog

Um möglichst schnell in ein komplexeres Projekt einzusteigen hilft einem eine gute Übersicht. Visual Studio bietet je nach Ausgabe eine recht gute Code Analyse. Will man mehr wissen oder ist man an bestimmten Konstellationen im Code interessiert, stösst man aber schnell an Grenzen. Hier benötigt man einmal mehr die Werkzeuge und Ergänzungen von Drittherstellern.

Als ich vor einigen Wochen gebeten wurde mir NDepend anzuschauen kam mir dies sehr gelegen. NDepend ist ein Tool zur statischen Code Analyse für .Net. Damit lässt sich der Code nicht nur auf vorgefertigte Qualitätskriterien überprüfen, sondern man kann auch eigene Abfragen definieren.


Download und Installation

Auf NDepend.com kann man die Demo-Version als Zip herunterladen. Die Installation beschränkt sich aufs entpacken der Datei und einem Doppelklick auf die Installationsdatei.

Wenn einem die Möglichkeiten von NDepend gefallen bekommt man eine entsprechende Lizenz ab 299€. Leider gibt es keine GUI-basierende Möglichkeit um den Lizenzschlüssel einzugeben. Die Lizenzdatei…

Ursprünglichen Post anzeigen 527 weitere Wörter

Einheitliche IDE erstellen


Flattr this

Motivation

Kennen Sie das auch? Sie haben gerade eine Open Source Software installiert, alles funktioniert einwandfrei und doch eine Kleinigkeit könnte angepasst werden. Ein Blick in die Quellen verrät Ihnen es ist ganz einfach und kein großer Aufwand. Sie starten ihre IDE laden die Sourcen herunter und … kämpfen mit nicht aufgelösten Abhängigkeiten. Ok, hier noch ein Plugin nachinstalliert und dort noch ein Plugin aktualisiert. Die meisten Probleme sind jetzt behoben aber ein oder zwei Probleme bleiben hartnäckig und es gelingt Ihnen erst nach intensiver Suche in Foren und im Web oder nach einer Kontaktaufnahme mit dem Projektgründer. Nach ein paar Tagen geben Sie auf und nutzen lieber eine andere Software. 

Oder Sie sind Mitglied in einem Entwickler Team und dürfen einen neuen Kollegen einarbeiten. Also zunächst einmal den Arbeitsplatz einrichten, eclipse aufsetzen und konfigurieren, Projekt auschecken und Server starten und … Mist irgendetwas läuft nicht. Das ging aber bisher immer und keiner hat damit Probleme! Ja klar seit dem letzten Zugang ist die Architektur oft geändert wurden aber das dürfte nicht diese Auswirkungen haben – es beginnt eine Fehlersuche welche manchmal Tage dauert und auf die Performance des Teams drückt. 

Im Eclipse Umfeld gab und gibt es Projekte welche sich dieses Thema’s annehmen. Als Beispiele seien hier die folgenden genannt:

Erste vollständige Lösung

Bis auf den untersten Eintrag erbrachten alle in obiger Liste aufgeführten Projekte nur Teillösungen. Kick your eclipse in the cloud ist das erste Projekt welches aus meiner Sicht eine vollständige Lösung zur Herstellung identischer Entwicklungsumgebungen bietet. Dabei wurde wirklich an alles gedacht. Zunächst wird im Web nach einem Baukasten System die gewünschte Eclipse zusammen geklickt. Dann wird das ganze Paket mit einem Namen versehen und zusammengeschnürt. Nach ca. 15 Minuten steht das Paket zum Download bereit. Das herunter geladene Paket kann plattformunabhängig gestartet werden (Window Vista und Lubuntu habe ich selbst ausprobiert). Es erscheint ein Installer welcher die lästigen Arbeiten übernimmt. Er erkennt auch wenn das Paket früher schon installiert wurde und stellt dann die Optionen: Aktualisieren, Reparieren, Löschen und Beenden bereit. Nach Durchführung der Installation steht eclipse in Ihrer Wunschkonfiguration zum Start bereit. Jetzt können noch weitere administrative Tasks durchgeführt werden. So können noch weitere Plugins installiert werden, Einstellungen in den Preferencen vorgenommen oder Projekte ausgescheckt und konfiguriert werden. Mit einem einfachen Klick lässt sich danach die in der Cloud liegende Konfiguration um die durchgeführten Tätigkeiten aktualisieren. Beim nächsten Download steht die Eclipse dann in der neuen Konfiguration bereit. Bestehende Installationen können über die Update Suche ebenfalls auf den aktuellen Konfigurationsstand gebracht werden. 

Teilen im Web

Die so erstellte Konfiguration kann dann per URL im Web verbreitet oder gezielt anderen Team Mitgliedern zur Verfügung gestellt werden. Dabei ist zu beachten, dass jeder den den URL besitzt ebenfalls das Recht besitzt die Konfiguration selbst zu ändern. Generell kann ein Passwort gesetzt werden. Dadurch wird die Installation nur für Personen die das Passwort kennen möglich. Allerdings hat jeder der eine Installation besitzt auch das Recht die Konfiguration in der Wolke zu ändern. Dies kann nach meinem Verständnis aktuell nur durchNutzung einer privaten Cloud geändert werden. 

Die eigene Wolke

Verständlicherweise werden Systemhäuser oder Behörden den oben beschriebenen Weg nicht einfach so nutzen können. Immerhin würden diese dann eine nicht gewollte Abhängigkeit zur Verfügbarkeit der Webseite erzeugen. Eine Nichtverfügbarkeit der Seite würde dann zu einem massiven Blocker im Kerngeschäft, ganz abgesehen von diversen Sicherheitsproblemen welche eine solche Online Lösung aufwirft. 

Für die Bedürfnisse des Goverments steht eine eigene Cloud Lösung zur Verfügung. Dazu ist ein Programm im Firmennetz zu installieren. Dieses stellt einen Server bereit welcher die einzelnen Eclipse Konfigurationen im Firmennetz bereitstellt. Um diesen Server zu Betreiben ist keine Online Verbindung zum Hersteller notwendig. Alles was auf dem Server passiert steht vollständig unter der Kontrolle des eigenen Firmennetzes. 

Während die Online Lösung kostenfrei ist, fallen für die eigene Wolke Lizenzgebühren an. Diese gestalten sich aus meiner Sicht jedoch recht moderat so das diese auch für Mittelstandsunternehmen interessant sein dürften – Preisliste.

Ausprobieren

Wer jetzt Lust bekommen hat seine eigene Konfiguration zu erstellen und einen Startpunkt sucht, kann sich gern versuchsweise meine Beispielkonfiguration installieren.


=-=-=-=-=
Powered by Blogilo

Code Generation using Annotation Processors in the Java language – part 2: Annotation Processors


Zu diesem Thema habe ich auch ein kleines Beispiel Projekt aufgesetzt. Dies findet sich unter: https://github.com/FunThomas424242/annotation-processor-plugin.example

dr. macphail's trance

This post is the second part in my series about Code Generation using Annotation Processors in the Java language. In part 1 (read it here) we introduced what Annotations are in the Java language and some of their common uses.

Now in part 2 we are going to introduce Annotation Processors, how to build them and how to run them.

Code Generation using Annotation Processors in the Java language – part 2: Annotation Processors

Annotations are great, sure. You can set any kind of metadata or configuration with them, with a well defined syntax and different types to use.

From what we have seen until now, annotations have advantages compared with Javadocs but not enough to justify their inclusion into the language. Therefore, is it possible to interact with annotations and get the most from them? Sure it is:

  • At runtime, annotations with runtime retention policy are accessible through…

Ursprünglichen Post anzeigen 1.656 weitere Wörter

Jahresrückblick 2013


Die WordPress.com-Statistik-Elfen fertigten einen Jahresbericht dieses Blogs für das Jahr 2013 an.

Hier ist ein Auszug:

Ein New York City U-Bahnzug fasst 1.200 Menschen. Dieses Blog wurde in 2013 etwa 4.700 mal besucht. Um die gleiche Anzahl von Personen mit einem New York City U-Bahnzug zu befördern wären etwa 4 Fahrten nötig.

Klicke hier um den vollständigen Bericht zu sehen.

BitCoin in der Praxis


Heute einfach nur der Hinweis auf einen kleinen Artikel über meine ersten Gehversuche mit BitCoins auf meinem Partner Blog. Letzterer befasst sich weniger mit technischen als eher mit sozial politischen Themen.

Doch sowie ich die technischen Konzepte von BitCoin besser verstanden habe, werde ich auch über diese hier auf meinem Entwickler Blog berichten.

Huluvu's Blog (de)

Flattr this

Motivation

Schon seit einiger Zeit habe ich BitCoins erworben und suche nach Möglichkeiten diese wieder auszugeben. Ich halte diese Währung nicht für ein Allheilmittel – im Gegenteil – aber ich finde es gut, dass an dem veralteten Währungssystem eine Neuerung vorgenommen wurde, die Dezentralisierung. Viel Leid und Elend auf dieser Welt entsteht durch eine zentrale Kontrolle von Weltwährungen. Obgleich sich jeder demokratische Staat über den Zentralismus in sozialistischen Staaten aufregt so stört es doch keinen, dass das Geld stets zentral vom Staat kontrolliert wird. Sogar weltweit gibt es zentrale Banken von denen in der Regel nicht einmal bekannt ist wer eigentlich die wirklichen Eigentümer (Aktionäre) im Hintergrund sind – siehe Federal Reserve System .

Daher suche ich also ein Geldsystem bei dem ich Geld erwerben, lagern und ausgeben kann ohne das Risiko eingehen zu müssen das man mir morgen erklärt das mein Geld wegen einer Finanzkrise nicht mehr verfügbar…

Ursprünglichen Post anzeigen 845 weitere Wörter

Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 203 Followern an