Schlagwort-Archive: Java

How to use Adobe’s Open Source Code Font in IntelliJ Idea on Ubuntu

Adobe has released a monospaced font specifically intended for displaying source code, called Source Code. You can download it on SourceForge, and I will show you how to use it in your favorite IDE on your favorite OS.

1) Download the zip file from SourceForge.

2) Open a terminal and enter the following commands to unzip the font, and recreate your font cache:

mkdir ~/.fonts
cd ~/Downloads
unzip SourceCodePro_FontsOnly-1.010.zip -d ~/.fonts/
fc-cache -f

3) Restart IntelliJ, open the settings (CTRL-ALT S), and filter for „font“

4) Create a new font scheme by clicking „Save as…“, if you don’t already have a scheme

5) Select „Source Code Pro“, and you’re finished.

So far I like it just a little bit more than the default „DejaVu Sans Mono“, but enough to keep using it. I really like how they used a very minimal design for the lower case i, and that there is a highly noticeable difference between 0 and O.

The blog entry by Paul goes into a lot of detail on what requirements he wanted to adress with his design on a font specifically for source code.

Integrate Picnik into your Wicket powered website

Mainly to use them at IndyPhone, I developed a bunch of Wicket components and helper classes to integrate the online photo editor Picnik via their API. I hope to get them released on Wicketstuff, but for now you can download the first beta here. Any feedback is welcome! I’ll be updating this post with some details on how to use the classes, and how Wicket helped in the implementation.

Download wicketstuff-picnik beta1

Released under Apache License 2.0

log4j und JMX-Maven-Dependencies

Ohne besonderen Grund und wie sich schnell herausstellte auch eher unbedarft änderte ich gerade in meiner pom.xml die verwendete log4j-Version von 1.2.14 auf 1.2.15. Keine große Sache sollte man meinen, doch bei der Aktualisierung des Projektes fielen mir dann schon die Fehlermeldungen auf:

[WARNING] An error occurred during dependency resolution.
Failed to retrieve com.sun.jmx:jmxri-1.2.1
Caused by: Unable to download the artifact from any repository

Try downloading the file manually from the project website.

Eclipse monierte dann auch prompt einen fehlerhaften Build Path. Offenbar hatten sich da einige Abhängigkeiten geändert. Warum das so ist, ist mir nicht klar – im Changelog findet sich da nichts erhellendes. JMX-Unterstützung scheint es schon länger zu geben.

Ärgerlich ist halt, dass diese Abhängigkeit in keinem meiner vier Repositories gefunden wurde. Und Bibliotheken manuell in seine lokale Sammlung aufzunehmen ist sehr nervig, vor allem wenn man eigentlich gar nicht weiß, wozu das ganze. Ist mir aber mit Sun-Bibliotheken schon öfter passiert.

Auf der Suche nach einer besseren Lösung lud ich mir erst mal log4j direkt herunter, und analysierte dessen pom.xml. Daraus wurde ersichtlich, dass es ein Maven Repository auf java.net gibt, was mir bisher nicht bekannt war. Da finden sich zwar nicht die vermissten JMX-Bibliotheken, aber offenbar alle sonstigen Sun-Bibliotheken, die in den Open-Source-Repositories immer fehlen. Tollerweise funktioniert nicht mal ein mvn install mit dem heruntergeladenem log4j tarball.

Einziger Ausweg für mich aus dieser JAR-Hölle: wieder zurück zu 1.2.14. Ich werde nichts vermissen, außer der Zeit, die mir diese eigentlich kleine Änderung gestohlen hat.

Wicket 1.3 final erschienen

Mein liebstes Java-Web-Framework Apache Wicket ist endlich in der finalen Version 1.3 veröffentlicht worden. IndyPhone verwendet schon seit einiger Zeit die letzten Betas bzw. RCs, und das war schon äußerst stabil. Wer mal schnell einen Einblick in die hervorragende Code-Qualität einer Wicket-Webandwendung bekommen möchte, schaut sich am besten die Live-Beispiele an; der zugehörige Quellcode ist jeweils oben rechts erreichbar.

Neben den vielen Online-Resourcen ist das Buch „Wicket in Action“ der beiden main contributors Martijn Dashorst und Eelco Hillenius sehr zu empfehlen. Das ist zwar erst zur Hälfte fertig, kann aber in dieser Form jetzt schon als Ebook gekauft werden. Sobald neue Kapitel fertig sind, kann man sie sofort herunterladen. Das Erste ist kostenlos, also schaut’s euch mal an!

IndyPhone erfolgreich gestartet

IndyPhone beta

Nach langer Entwicklungszeit haben wir es nun doch endlich geschafft, und können unser Großprojekt der Öffentlichkeit präsentieren.

IndyPhone.de ist online gegangen!

Doch was ist das nun eigentlich? IndyPhone ist ein Portal für mobile Inhalte, welche die Nutzer selbst gestalten können. Den Anfang machen unsere LogoKits, wo man beliebige Bilder hochladen, verfremden und sich aufs Handy schicken kann.

Das ganze wird natürlich noch stark ausgebaut, Ideen und Konzepte haben wir da sehr viele. Wie wir von unseren Betatestern erfahren haben, ist zum Beispiel das Verschenken der eigenen Kreationen ein ganz wichtiges Feature – möchte ich am liebsten auch gleich haben, schon alleine um diesem Clown aus M. zu zeigen, wie er wirklich aussieht. Das kommt also bestimmt sehr bald!

Das kann ich auch mit einer gewissen Authorität sagen, denn schließlich wird die Arbeit dafür bei mir als Hauptentwickler der ganzen Anwendung hängen bleiben ;-). Für die technisch Interessierten: die Seite ist komplett in Java implementiert, mit einem Grundgerüst aus Wicket, Spring und Hibernate (dem „WiSH come true“, wich das nenne). Dazu habe ich mich aber auch schon an anderer Stelle ausgelassen.

Tja, soviel erst mal dazu. Es würde mich freuen, wenn die wenigen menschlichen Besucher meines Blogs da mal vorbeischauen. Ich bin gespannt, wie es euch gefällt.

Leveraging Wicket templates for offline viewing with Dreamweaver

One of the many great features about Wicket is that all its templates are plain XHTML, with only a handful of special, unobstrusive tags. This has a number of advantages over templating languages like JSP-taglibs or Smarty.

  • Viewable in any browser – offline, without running a server.
  • Wicket Tags don’t destroy markup, they are just added to provide hooks for the web application.
  • Editable with existing, powerful webdesign software like Dreamweaver.

In this article, I want to focus on the last point, showing how to get the most out of combining Dreamweaver and Wicket. The goal is to have a functional offline-version of our Wicket application. All layout and design changes will be made to the actual Wicket templates – no more copy & paste between what your web designer made, and what you use in your application.

Leveraging Wicket templates for offline viewing with Dreamweaver weiterlesen

Guter Vergleich zwischen JSF und Wicket

JSF hat bei vielen Leuten keinen guten Ruf. Zu umständlich, nicht intuitiv, zu viel XML. Ich hatte nach einigen Tests auch keine Lust mehr darauf, und bin heilfroh, dass ich Wicket gefunden habe.

Peter Thomas hat JSF und Wicket für ein kurzes Beispiel direkt verglichen. Im direkten Vergleich stinkt nicht nur das EL-verseuchte Template gegen eine standardkonforme XHTML-Seite ab.

A Wicket user tries JSF

Mit ant vollständige Wicket-JavaDocs erzeugen

Bei der Zusammenstellung seines Software-Stacks tritt irgendwann das Problem auf, dass man auf viele verschiedene JavaDocs parallel zugreifen muss. Besonders wenn diese eigentlich zusammen gehören, wünscht man sich eine etwas engere Verknüpfung. Besonders unübersichtlich wird es, wenn ein einzelnes Framework aus vielen Modulen besteht. Bei Wicket ist das zum Beispiel der Fall. Das ist grundsätzlich ja eine gute Sache – nicht jeder braucht eine Integration von Spring oder Velocity. Aber wenn, dann will ich die JavaDocs alle zusammen haben, am besten noch mit Verknüpfungen auf diejenigen von Spring bzw. Velocity.

JavaDoc bietet ja diese Funktion, leider scheint sie von Maven nicht effektiv unterstützt zu werden. Also habe ich ein großes ant-Script geschrieben, was mir eine kombinierte Wicket-Dokumentation aus den Quellen erzeugen kann. Und weil ich schon dabei war, habe ich es auch gleich auf alle WicketStuff-Pakete erweitert.
Mit ant vollständige Wicket-JavaDocs erzeugen weiterlesen

Wicket: schneller und sauberer als JSF

Hier kam jemand nach sehr ausführlichen Tests zu einem ähnlichen Ergebnis wie ich: JSF ist einfach viel zu umständlich. Von einem komponentenbasierten Framework erwartet man einfach auch eine gewisse Eleganz.
„After closely considering Wicket and JSF (it was) decided to go with Wicket for our web development framework. This was based on a two week prototype effort between two teams of four developers each. The Wicket team made rapid progress and had extra time to add in unrequested features (…), while still producing a clear, readable code base.“

read more | digg story

NullPointerException by NamedQuery using Hibernate JPA

I just got a weird NullPointerException using Hibernate JPA. When creating my EntityManagerFactory, the usual logging started to appear and finished in stacktrace containing this:

Exception in thread "main" java.lang.NullPointerException
at org.hibernate.hql.ast.ParameterTranslationsImpl.getNamedParameterExpectedType(ParameterTranslationsImpl.java:63)
at org.hibernate.engine.query.HQLQueryPlan.buildParameterMetadata(HQLQueryPlan.java:296)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:97)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:400)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:351)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1218)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691)

I could root it down to a NamedQuery in one of my Entites; when commenting it out, the creation went through fine. The Query definition looked like this:

@NamedQuery(
name = "User.find",
query = "SELECT user FROM User user WHERE user.id =: id"
)

NullPointerException by NamedQuery using Hibernate JPA weiterlesen

Howto: wicket-stuff mit Eclipse und Subversion bei SourceForge downloaden

Neben den „offiziellen“ Wicket-Extensions gibt es auch noch den „wicket-stuff“ Katalog. Dessen Teilprojekte werden nicht unbedingt von den Wicket-Core-Developern betreut, sondern von einer breiteren Community. In den meisten Fällen handelt es sich um Integrationsmodule, um von Wicket aus auf andere Frameworks zugreifen zu können, beispielsweise auf Hibernate, TinyMCE oder script.aculo.us. Leider gibt es hierfür keine festen Releases, man kann sich allerdings bei SourceForge den aktuellen Entwicklungsstand downloaden.

Howto: wicket-stuff mit Eclipse und Subversion bei SourceForge downloaden weiterlesen