Ruby ist cool (und Java leider nicht ganz so)

Ruby ist cool, das ist wohl jedem klar, oder? :) Falls nicht, schaut euch mal den Beitrag von Daniel Berger an. Sieht doch wirklich chic aus, wenn man die korrekten, mathematischen Symbole benutzen kann.

“Hm, mit Java müsste das doch auch gehen, immerhin wissen wir, dass auch Umlaute erlaubt sind”. Also, Eclipse gestartet und ausprobiert:

java_sigma.png

Den Screenshot von der Greenbar muss man sich halt vorstellen.. ;)

Mit Lambda kann man unter Java eh nichts rechtes Anfangen, und das Wurzelzeichen wurde leider auch nicht als gültiger Identifier akzeptiert. Also leider nur ein Teilerfolg.

Ach ja, wie tippt man denn überhaupt beliebige Unicode-Zeichen? Mit der Kombination Ctrl+Alt+Shift+u und dann die Hex-Nummer das Codes, also beispielsweise 3A3 für Σ. Ich weiss aber nicht, ob das unter Windows so auch funktioniert, die Kombination ist, soviel ich weiss, GTK-spezifisch.

5 comments »

Bracket Matching in Kate

Oder heisst das Ding eigentlich “Bracket Marking”? Oder “Bracket Highlighting”? Auf jeden Fall, nun sollte jeder wissen um was es geht. Nein? Ok, ist eigentlich ganz einfach: Beim programmieren ist es sehr nützlich, wenn man weiss, welches die korrespondierende Klammer zur aktuellen unter/neben dem Cursor ist. Sollte eigentlich meiner Meinung nach jeder anständige Editor unterstützen, Kate für KDE 4.0 kann es auf jeden Fall jetzt (wieder).

Im IFS sind wir ja jeweils recht stolz, wenn wir was besser machen bei unseren Refactorings als das JDT. Ich finde, auch das Bracket Matching in Kate ist besser als in Eclipse, oder wer kann mir ohne zu zählen und mehrmals links und rechts zu kucken sagen, zu welcher Klammer rechts die markierte links gehört:

bm_jdt.png

Ist doch viel einfacher so, nicht?

bm_kate.png

Ok, zugegeben, man könnte auch einfach wissen, dass die Klammer einfach links vom Cursor sein muss.

Ausserdem habe ich beim Ausprobieren des Matchings herausgefunden, dass man damit recht lustige Effekte erzielen kann:

Als nächstes werde ich wohl noch den Wunsch dieses Users erfüllen, der gerne den ganzen Bereich innerhalb der Klammern gehighlighted hätte.

5 comments »

Einfach Eclipse Plug-in Buildskripte erstellen mit pluginbuilder

Pluginbuilder ist ein Eclipse Plug-in (wie könnte es auch anders sein), mit dem man relativ leicht Ant-Skripts zum erstellen von Eclipse-Plug-ins generieren kann.

Für “normale” Java-Projekte mag es ja noch gehen, build.xml Dateien von Hand zu schreiben, sobald man aber Eclipse Plug-ins schreibt, ist man auf den PDE (Plug-in Development Environment) build angewiesen. Zumindest ist es empfehlenswert. Jeder der das mal versucht hat weiss, wie mühsam das ist. Mit dem Pluginbuilder kann man sich die Konfiguration einfach zusammen klicken und generieren lassen, in rund 10 Minuten hatte ich alle nötigen Ant-Dateien um RDT erstellen zu können.

Ein weiteres Feature ist die automatische Ausführung von JUnit-Tests, ich hatte allerdings noch Probleme mit unseren Plug-in-Tests, aber ein Versuch ist es allemal Wert. Und ansonsten lassen sich die Scripts ja auch Problemlos von Hand erweitern.

Wenn man nun also so ein schönes Skript zusammen hat, liegt es nahe das ganze mit CruiseControl auf einem Server auszuführen, dafür dient der ‘main-cc’-Task, den man von CruiseControl aus ausführen kann.

Insgesamt also ein recht interessantes Projekt, das einem viel mühsame Arbeit ersparen kann.

2 comments »

SWEN Vortragsreihe: C++ Unit Testing

Nachdem wir beim letzten SWEN-Vortrag Alistair Cockburn bei uns hatten, geht es nun weiter mit einem (zumindest bei uns) nicht weniger bekannten Referenten, nämlich Prof. Peter Sommerlad mit dem Thema:

Green Bar for C++ – C++ Unit Testing Easier mit CUTE und Eclipse

Etwas ausführlicher wird es auf dem Flyer beschrieben, mit dem man sich auch, kostenlos, für den Event anmelden kann. Das ganze findet schon bald, nämlich am 27. September statt. Ich glaube, dass der Vortrag auch für Nicht-C++-Entwickler interessant sein wird und würde mich natürlich auch wieder freuen, ein paar Ehemalige wiederzusehen :-) .

3 comments »

Wie man Eclipse unter Linux dazu bringt, auf einem Desktop zu bleiben.

Sorry für den Titel, fiel mir irgendwie nichts besseres ein :-) Also, das Problem ist: Wenn man unter Linux mit Eclipse arbeitet und beispielsweise länger laufende Plug-In-Tests oder einfach eine “Eclipse Application” startet und darauf den Desktop wechselt um in der Zwischenzeit etwas anderes zu tun, dann folgt einem die neue Eclipse-Instanz auf den anderen Desktop. Das nervt ziemlich.

Natürlich gibt es eine Lösung dazu, zumindest für KWin (falls jemand für Gnome auch eine hat, bitte melden): Im Kontextmenu des Eclipse-Fensters unter Advanced -> Special Application Settings

eclipse_special_application_settings.png

folgendes Anhaken:

eclipse_special_application_settings_dialog.png

Und schon ist Ruhe und neue Eclipse-Fenster bleiben auf dem ursprünglichen Desktop.

No comment »

Eclipse 3.3 Europa

Endlich ist es so weit: Nach einem Jahr wurde soeben der neuste Eclipse Release namens Europa freigegeben. Den Download gibt es hier, vielleicht braucht es aber ein wenig Geduld, da der Ansturm bestimmt gross sein wird.

Ich arbeite seit M3 mit Eclipse 3.3, deshalb habe ich mich an die meisten neuen Features bereits gewöhnt, für diejenigen die noch bei 3.2 sind hier mal die meiner Meinung nach wichtigsten Features:

h4. Save Actions

Sehr nützlich sind die neuen Save Actions (Java -> Editor -> Save Actions), insbesondere um Organize Imports durchzuführen.

organize_imports_on_save.png

h4. plugin.xml als Participant beim Refactoring

Beim Umbenennen von Elementen (Klassen, Packages), die auch im plugin.xml oder Manifest vorkommen, werden diese nun auch mit umbenannt.

h4. Whitespaces anzeigen im Editor

Ein manchmal durchaus nützliches Feature ist die Anzeige der Whitespace-Zeichen im Editor, oder auch in der Diff-View von JUnit. Emanuel und ich fanden das sogar so nützlich, dass wir das auch für die Diff-View fürs Cute, bzw. RDT angepasst haben. Eigentlich haben wir sogar die bessere Implementierung, nicht wahr Emanuel? ;-)

h4. Quick Outline für den plugin.xml-Editor

Überschrift und Bild sagen wohl alles, aufzurufen mit Ctrl+o:

plugin_xml_quick_outline.png

h4. Code Completion für Exceptions

Die Code-Completion innerhalb eines Catchs bietet eine Liste der möglichen Exceptions an:

exception_assistant.png

h4. Drucken unter Linux

Endlich kann man auch unter Linux/GTK drucken..

h4. Step-Into mit Ctrl+Alt

Beim Debuggen muss man nicht mehr die Methode markieren und Ctrl+F5 drücken um direkt in einen Aufruf zu steppen sondern kann stattdessen Ctrl+Alt benutzen, was einiges komfortabler ist.

h4. Content Assistant für plugin.xml

Ok, nur interessant wenn man selber Plug-Ins schreibt, dafür aber sehr nützlich ist der neue Content Assistant fürs schreiben von Extensions. Funktioniert auch in den Manifest-Dateien.

plugin_xml_assistant.png

h4. Inline Rename Refactoring

Das Rename Refactoring funktioniert nun standardmässig inline, also wie das Rename In File, ohne dass ein Dialog aufpoppt.

inline_rename.png

h4. Quick Access für Views

Mit Ctrl+3 bekommt man den neuen “Quick-Access für Views, Commands und so weiter Dialog” zu sehen:

quick_access.png

Schade, da muss ich den coolen Alt+Shift+Q Q Shortcut wieder verlernen ;-)

h4. Introduce Parameter Object Refactoring

JDT bietet nun auch das Introduce Parameter Object refactoring an.

h4. Nerviges

Allerdings sind auch nervige Features hinzugekommen, wie beispielsweise den Spellchecker, den ich gleich nach wenigen Minuten wieder deaktiviert habe. Auch ziemlich verwirrt hat mich, dass defaultmässig beim klicken auf den Run-Button, oder mit (Ctrl+)F11, nicht die zuletzt ausgeführte Konfiguration ausgeführt wird, sondern diejenige die mit der aktuell geöffneten Resource zusammenhängt. Das ist aber eher nervig, da beispielsweise nicht die Unit-Tests nochmals ablaufen sondern das Plug-In gestartet wird.

h4. Fazit

Eclipse 3.3 bringt einige neue Features mit die sehr nützlich sind, aber wohl eher nur dem Poweruser (oder Power-Developer? ;-) ) auffallen werden. Infolge des ganze Europa-Release-Trains erscheinen natürlich auch viele weitere Projekte in einer neuen Version, beispielsweise das CDT.

Danke an all die Leute die mitarbeiten, dass das Entwickeln mit Java nicht ganz so schlimm ist ;-) .

No comment »

Ab nach Hamburg: SE 2007

In wenigen Stunden gehts zusammen mit Thomas ab nach Hamburg an die Software Engineering 2007. Unser Chef wird natürlich auch mitkommen.

Morgen geht es dann los mit dem Nachwuchs-Workshop an dem wir teilnehmen werden, am Abend dann ans Konferenzdinner in “angemessener Kleidung”. Grund genug also, den Anzug der Diplomfeier wieder aus dem Schrank zu holen :-)

Mittwoch, Donnerstag und Freitag werden wir wohl an Diverse Vorträge gehen, interessant sind sicher folgende:

  • From Eclipse to Jazz von Erich Gamma
  • Automated Unit Testing – A Practitioner’s and Teacher’s Perspective von Peter Sommerlad
  • Advanced Test-Driven Development von Peter Zimmerer
  • Contributing to Eclipse: A Case Study
  • Ist Programmieren ein Mannschaftssport?
  • Auf der Suche nach Werten in der Softwaretechnik: Werte und Objekte in objektorientierten Programmiersprachen
  • C++ ist typsicher? Garantiert!

Am Freitagabend gehts dann schon wieder nach Hause. Wenns alles klappt probiere ich auch von vor Ort zu berichten, aber zuerst muss ich noch einen Adapter für CH -> DE finden an den ich den 3-poligen Stecker meines Netzteils anschliessen kann..

1 comment »

Linux vs. Vista, Eclipse-Performance Vergleich

Heute haben wir, eigentlich unfreiwillig, einen Performance-Vergleich zwischen Vista und Linux gemacht.

Aber von Anfang an: Ich habe unsere Refactoring-Tests umgeschrieben um externe Sourcen per Resource-Bundle zu laden. Ganz nett dabei ist, dass man automatisch Verzeichnisse nach gewissen Pattern durchsuchen lassen kann (leider keine RegExps, nur mit * als Wildcard). Auch rekursiv in die Unterverzeichnisse. Da wir in einem Durchlauf aber mehrere tausen Dateien laden und pro Ladevorgang zuerst alle Verzeichnisse durchsuchten, ist die Performance natürlich ziemlich eingebrochen… bei mir unter Linux ging es noch relativ gut (90 Sekunden für alle Tests) aber bei Thomas unter Vista dauerte das ganze 500 Sekunden! Und das bei gleicher Hardware, gleichem Eclipse und gleicher Java VM (1.6). Das Dateisystem war natürlich unterschiedlich, ReiserFS bei mir, NTFS auf der anderen Seite. Hätte ich echt nicht erwartet :-)

Und ja, natürlich haben wir das ganze gefixt, einmal beim Start eine HashMap über die Resourcen erstellen und das ganze läuft auf beiden Plattformen in unter 3 Sekunden durch, unter Vista sogar wieder etwas schneller.

1 comment »

Refactorings sind im RDT Nightly-Build

Endlich ist es soweit, unsere Refactoring Plug-ins habens ins RDT geschafft und stehen somit im Nightly-Build zur Verfügung! Warum es so lange gedauert hat lässt sich relativ einfach sagen: JRuby ist schuld! Nein, in der Zeit der Diplomarbeit wurden einige Änderungen am abstract syntax tree vorgenommen und da wir sehr eng damit gekoppelt sind mussten wir einiges umschreiben und anpassen. Dank der ziemlich guten Testsuite ging das recht gut. Auch unsere Patches für JRuby wurden alle akzeptiert und commit Rechte fürs RDT haben wir ja schon seit längerem.

Also, installieren und Bugs bitte hier melden.

Wie gehts weiter? Wir haben noch einige Bugs zu fixen und auch neue Features sind vorstellbar — zum Beispiel Rails Integration.

No comment »

Eclipse: Navigation im Projekt

Heute geht es um die Navigation in Eclipse Projekten. Über das arbeiten mit Working Sets habe ich ja schon einmal geschrieben, hier möchte ich ein paar grundlegendere Tipps geben:

h3. Resourcen öffnen

Mit Ctrl+Shift+R oder T lassen sich Resourcen (darunter versteht man alle Dateien im Projekt) oder Java-Klassen recht schnell öffnen. Das ist wahrscheinlich nichts neues. Beim öffnen von Java-Klassen gibt es aber einen Trick, und zwar das sogenannte CamelCaseSearching und das funktioniert folgendermassen: Nehmen wir an, wir wollen die Klasse RenameMethodConditionChecker öffnen. Dazu tippt man einfach die Grossbuchstaben, also RMCC, ein — fertig:

rmcc.png

Bei unseren Refactorings haben wir meistens dasselbe Namensschema verwendet, es gibt also auch einen InlineClassConditionChecker und so weiter. Dadurch lassen sich die Klassen sehr schnell finden.

h3. Editoren

Mehrere Dateien öffnen sich in verschiedenen Tabs, und das kann mitunter ziemlich unübersichtlich werden. Wenn man häufig wechseln muss bieten sich die zwei Shortcuts Ctrl+F6 und Ctrl+E an. Ctrl+E öffnet das bekannte Menu:

ctrle.png

und bei Ctrl+F6 erscheint ein ähnliches Fenster wie man es vom Alt+Tab des Betriebssystems kennt:

ctrlf6.png

Am besten einfach mal ausprobieren!

3 comments »