Work - work, but sometimes you want to relax. Suppose you are going on vacation in hot lands. You immediately have several questions, the main of which are:
1) Where to go to restIndeed, you need to re-read a lot of sources to determine where it is now (or when you gathered there) warmly, whether you need a visa to enter the country, how much is a ticket, etc.
2) When to go to restSuppose you know that you want to spend your vacation in Egypt, but do not know when. The most important question for many is when is it cheaper to go there? It is also important to know what the weather is like there, etc.
')

How it works
Loading
Many tour operators have so-called xml-gateways for downloading prices. Through these gateways you can get prices for certain tourist products. Unfortunately, to access this data, an agreement with a tour operator is often required. So just do the export will not work. To do this, we had to register as a legal entity and suffer through the signing of many documents.
The data supplied by tour operators looks like this:
<entry> <tour_date>18.11.2014</tour_date> <aircompany> ( / )</aircompany> <town> / Paphos</town> <room>STANDARD Inland View BB</room> <dt>18.11.2014</dt> <id_hotel>102610001680</id_hotel> <id_ns>104610415895</id_ns> <duration>1</duration> <o_duration>1</o_duration> <quota>9</quota> <id_price>121132934133</id_price> <price> <amount>435</amount> <RUR>25435</RUR> <ag>14+, 14+</ag> <id_vr>102510005340</id_vr> </price> </entry>
Once a week, the built-in Java scheduler begins the process of building information. In one pass, more than 4,000 hotels in 21 countries of the world are viewed.
Data collection is carried out with more than 100 tour operators.
Data carefully fit into the database on demand.
New hotels are also added automatically. This solves the problem of changing the name of the hotel or its closure.
The collection of additional information is also automatically carried out.
The approximate scheme of the database clearly demonstrates many parameters:

Currently, the Apache Derby database contains approximately 2 GB of data.
Where to go to rest
We start from the fact that the user knows some criteria for his future journey, but does not know his destination.
Based on statistical data on prices, as well as using auxiliary data, namely:
- Dates and a brief description of the holidays;
- Excursions, prices, a brief description and type (cognitive, extreme, review);
- The need for a visa to a particular country, as well as an approximate price, production time and place of its receipt;
- flight time;
- Dining at the hotel;
can be calculated as a percentage of how each of the 21 countries offered by the service fits.
All parameters are equilibrium, so applying a not very tricky formula you can get an interesting result:

When to go to rest
In this case, the user knows where he wants to go and just wants to see how the price and weather have changed, as well as additional parameters of the country.
In this case, we simply display the so-called "Country card", which will reflect a lot of useful information:

History of creation
The idea originated at the 3rd course (distant 2010) of my university (thanks to SPbSPU).
I wanted to go on vacation somehow, but a problem arose - it was not clear when it was cheaper and where it was warmer to rest.
On the forums they write different, sometimes contradictory information, but I have not found any sites with real statistics.
As is customary in the IT sphere, if you have not found a solution, write it yourself.
The first step was manual data collection. There was a table in Excel and a couple of functions that built graphs from the data. After a while, it became lazy (or simply forgot) to add data.
The second step was learning C ++. Almost at the university, we began to learn the C ++ language and make simple projects on it. I immediately wanted to automate the data collection process and I wrote a service that collects data from several tour operators. He put the data into a file and there was no talk about any databases or web servers. Crown service started on a home computer.
The third step was the complete rewriting of the project in Java with the simultaneous study of EJB (Java EE), the addition of a relational DBMS and a web server to display data to the user (table view).
Later I added various js-libraries for graphing, improved performance, fixed errors and so on.
Transferred the service to the "real" server from my home computer
I ordered the site design from my colleague from one of the past works.
Why all this?
In fact, everything is simple - the project was designed exclusively for its own use. I just wanted to get information for the cheapest and most enjoyable stay.
Then I wanted to share information with the world so that everyone could find useful information for themselves.
Now it is a hobby, from time to time I deal with its development. I do not make special investments of money, except hosting, domain, certificates, design and time (time is money).
There may be errors in the layout or other minor problems - please do not judge strictly.
Sheyring welcome
protury.info