Mozilla added a function to search on the web in the latest versions
of Thunderbird.That's nice, but the default search engine is bing. As
a DuckDuckGo user, I wanted to add my favourite search engine and use
it by default. So here's how to do it.
I recently bought the
Alfred.app Powerpack. It is
byfar the best application launcher / automation engine I've ever
used. One of the new features of the second version of this
application is user customizable workflows.
In my daily activities, I start, stop, restart and kill my
Glassfish
server several times a day. In order to save me a few keystrokes and
a few alt-tabbing, I created this small workflow allowing me to
manage my local Glassfish instance.
You can find the Alfred worfklow at the following url http://bit.ly/alfred-glassfish. You will probably need to adapt the GF_PATH variable in the
script to point to the root of your Glassfish installation.
Once this small step is done, you'll end up with the following
prompt in your Alfred :
As an Apache Wicket user
for more than five years I really enjoy its programming model. I
recently played with
Play Framework 2.1 and
Scala and discovered that deploying to
Heroku is as easy as a git
push. I wondered how difficult it could be using this mechanism to
deploy a Wicket application.
Existing attempts
My initial investigation led me to this
blog post from Martijn Dashorst explaining how to deploy a Wicket 1.5 application to Heroku, the
service has slightly evolved since and the quickstart no longer
deploys (Maven repository is no longer available to the
run environment).
Adding JPA in the mix
I adapted it to deploy and use Wicket 6 instead of 1.5. And as I am
a CDI fan I completed the quickstart with the CDI Wicket module
(inspired from
this post from Igor Vaynberg) and made the necessary steps to use the heroku bundled PostgreSQL
database as a JPA datasource.
The key to make the database works correctly on Heroku resides in
the following code snippet, where we parse the provided environment
variable to populate hibernate properties.
try{URIdbUri=newURI(System.getenv("DATABASE_URL"));Stringusername=dbUri.getUserInfo().split(":")[0];Stringpassword=dbUri.getUserInfo().split(":")[1];StringdbUrl="jdbc:postgresql://"+dbUri.getHost()+':'+dbUri.getPort()+dbUri.getPath();System.setProperty("hibernate.connection.url",dbUrl);System.setProperty("hibernate.connection.user",username);System.setProperty("hibernate.connection.password",password);}catch(Exceptione){LOGGER.error("Unable to extract database url");}
Session replication
On Wicket mailing lists,
a user recently asked
the steps required to get the data store works correctly on Heroku
(as the disk space is ephemeral), the key is using a NoSQL backend
like Redis. So I wrote a simple and
basic implementation of IDataStore using Redis (I think it can be
optimized by someone familiar with Redis, pull requests are
welcome).
Hands on
The quickstart can be found
at the following address
and deploys fine on a stack with
Redis Cloud and PostgreSQL add
ons enabled.
In the end you got :
Wicket 6
CDI via Weld
JPA with PostgreSQL
Redis datastore
You can see it live at the following address : http://wicket-6-sample.herokuapp.com/, the app can take a few seconds to start, as Heroku will stop it
if it is idling for too long.