Skip to main content


Showing posts from 2012


A few days ago, one of my colleague wrote a really interesting blog about TDD. He has explained benefits of using it,  and he introduced some lacks when you are using TDD, and he provided a really nice example how to use TDD. So this blog post is my reaction on it.

Checking file's "magic numbers"

Few days ago I had very interesting task. Our customer required that we perform checking of so called file's "magic numbers" to determinate does uploaded file correspond to it's extension. 
We are already allowed only to upload files with some predefined extensions (PDF, DOC ...). But this can not prevent some evil user to update an exe file after renaming it to PDF or DOC.
So first of all I will explain what are "magic numbers", and then I will show how we handle them.

Clean code with aspects

In my previous post I've described the alphabet conversion, and I've mentioned that we used AspectJ to resolve that task, but i did not mention how AspectJ works and what are aspects generaly. So in the next few lines i will explain:
what is Aspect Oriented Programming and why we need itwhat is AspectJusing AspectJ with Spring (configuring AspectJ and spring to work together)and i will explain aspects on the example from previous post.

Alphabets Conversion

In one of company's last projects we supposed to implemented support for usage of Latin and Cyrillic alphabet. This could sounds like an easy task, the Java have a real good support for the multi language application, but what is with languages which have multiple alphabets.
When I said supporting more alphabets, I mean on possibility of choosing between different keybord layouts, not only on showing messages from different properties files, also content saved in database should be transformed from one to other alphabet.
To accomplish these requirements, we made few decisions. We've decided to save data in Latin form and then transform it in Cyrillic if it is needed. This also mean that complete input from user side will be transformed to latin alphabet.
I've almost forgot to mention technologies used in this project. It is a web application, devloped with next technologies:

JSP + Servlet for front endSpring + Hibernate as backendand it is running on Tomcat 6