I am one of the lucky guys getting this hyped discontinued tablet
from HP at the lowest price. I'll sum up here few things I did on
it.
First impressions
I am an iPad owner for almost a year now, so I have my habits and I
now know that tablets are mainly useful for consuming content
(producing content is not really convenient when you have to use the
virtual keyboard). The Touchpad is really what you expect from a
tablet, full web consuming, multitasking, flash support, at a really
decent speed.
After Continuous Integration, this is the word we see on the web
these days. Its meaning is really simple, it consists in reducing
steps in application deployment. In order to do so a set of tools
actually exists, you can use the same PaaS images (thanks to the
newcomer
Micro Cloud Foundry by VMWare
or use a special amazon ec2 instance) to have a development
environment similar to production one. And you can use
Chef to
manage and automate your configuration. While these alternatives are
really interesting, I think they are way too powerful and difficult
to setup in simple cases.
I will explain my "simple" solution based on maven, shell scripts
and hostname detection.
Example release archive
An example is better than a thousand words, you will find an example
of my solution in a github repository
Easy Release Archive. It is a maven project building a zip artifact containing
everything to be deployed, and an example script to setup the
Glassfish server.
What is inside ?
To understand how it works, the best thing is to look what's inside.
an
assembly.xml file
describing the files to include and their output name and
location.
a few scripts in /src/main/resources
sanityCheck.sh
: helper script sourcing the correct variables depending on
the hostname of the machine and ensuring variables are
correctly setup
setupGlassfish.sh
: a sample script used to setup a Glassfish server with its
required datasources and other parameters
a
global
folder containing global configuration files
a per hostname folder (in my case
samva-mbp) containing a
shell/envSetup.sh
shell script to setup necessary variables and a
config
folder for special environment configuration files.
the
pom.xml
file describing artifact versions to use in the assembly and the
lifecycle to use.
A simple mvn package will build the zip archive with everything
described in the assembly.xml file. You will just have to unzip and
run the script(s) corresponding to the application deployment for it
to be done. You can add this command line to your build server and
you will have a simple but powerful continuous delivery system !
I am a daily user of
IntelliJ IDEA to edit
my Java code and
Apache Wicket to write my web
application. I decided recently to use IntelliJ's annotations to
make my code a little more robust by using @Nullable,
@NotNull, @NonNls and
@PropertyKey. In this blog post I explain how to
manually add annotation to an external library.
A frequent problem when it comes to internationalisation is
proper handling of different charset. When you're using Java and Maven
it is relatively easy to set up source encoding to UTF-8, but the
frequent point of failure is in the SQL database.
If you use mySQL, and you have latin1 tables, but you should have
UTF-8 instead, use this little script to convert from latin1 to UTF-8
:
Generally speaking, don't hesitate to always put the
--default-character-set=utf8 on all the mySQL commands
you execute. Don't forget to add at the end of your jdbc connection
url the following parameters :
"useUnicode=true&characterEncoding=UTF-8" to ensure you
connect using UTF-8.