RIA - Rich Internet Application.
Spring Framework - application framework.
Open Source - open source. Take it and use it.
About what
RIA application is developed, where you can watch it and take the source code under Habrakat.
Introduction
I think learning is worth it in practice. Practice should be meaningful and interesting. Those. we come up with an idea and try to implement it with all our might, using the studied technologies, tools, approaches, etc.
When I started learning the
Spring Framework, I had the idea of lists that simplify the process of repeating learned words. Those. reading the literature in the target language, we are faced with a word, the translation of which we do not know. We add it to our electronic dictionary, and in the evening we repeat new words, and we would like this list to be transformed for more effective repetition - to jumble words, and invert the direction of translation. Special entities have been created for the project:
- Memes are a unit of information. For example, a word with a translation.
- Maps - meme list.
- Space - a collection of maps.
Then came the idea to make different types of maps - not only a dictionary for learning the language, but also maps for abstracts. I wanted to be able to expand this diversity in the future. It was assumed that there would be a common part for all maps, and specific species should be inherited from it.
After a couple of months of leisurely work, the project was born. During this time, the design managed to change,
OpenJPA changed to
Hibernate , the js-object model was completely rewritten using
jQuery UI , but the layout as developed for Chrome remained only for Chrome, although Firefox also looked bearable.
Little about technology
Spring Framework 3 - mainly used native
DI ,
Spring MVC and
Spring Security .
Spring Security is configured only on the standard gears, using the differentiation of user rights using groups and roles. Direct access to the database on
JDBC , the notorious
remember me and
md5- hashing - all inclusive.
Hibernate - configured using notations. The search used hibernate-criteria and some
HSQL .
Tiles is a server side template engine.
View Resolver returns
Tiles View (pages) or
JSON if the template cannot be applied. Objects are converted to json format automatically using
JacksonJson .
All this mess is going to
Maven 'om.
Ajax is used extensively on the client side. Mostly too extensive. I would like to insert some caching layer. An object model has been created that replicates server-side entities, but with dynamic parsing of the structure of objects. Map objects are based on
jQuery UI . With its help, object inheritance is easily implemented.
EJS is a client-side template engine. He himself picks up the template files, which is very convenient. Implemented translator module based on
Microsoft Translator API , but not yet implemented in the system. Fonts are drawn using the
Cufon library.
')
Server matters
Since the start of development, the project repository has been lying in various places. Because project sources were needed from different computers, then I first used
Dropbox . I synchronized the project folder. After a week of torment, I started a local
SVN repository and synchronized it already. Then I transferred the project to an online repository. I wanted to transfer the project to Git in the future, but first I still wanted to use SVN. In this case, the repository should be private. A quick search found
unfuddle . Now, when I decided to seem, translated the project on
github .
Service is hosted on
jelastic . The project was developed for reverse proxy server architecture and under
jelastic had to redo it a bit. Because of this,
jelastic 'e has a strange bug - when you first enter the service, static resources are not given to the server. You need to update the page and then everything is ok.
Take away!
There are plenty of development examples on the Internet under the
Spring Framework , so there won't be any worse from one. Any activity associated with this project is welcome.
Links
Project:
http://memorized.jelastic.comSources:
https://github.com/evgenij-kozhevnikov/memorizedAdvanced analog:
trello.com (UPD. By
devIceMan )