metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-01-31 12:31 pm

Special Enterprise Programming Olympics

[livejournal.com profile] theiced и [livejournal.com profile] skif_by и [livejournal.com profile] artureg решили устроить соревнование на тему "какой язык программирования более адекватен в руках профессионала" и попросили придумать им задание. Поскольку синтетические задания с результатом в виде консольных утилит это скучно, а они все умеют веб хорошо, я им придумал задачку с не сильно сложным веб-приложением. Условие под катом:

Special Enterprise Programming Olympics

Problem 1:

You need to implement universal web-based application for report generation.

Application consists of:
* Database. You can use any relational DBMS you like, but you should have in mind ease of linux deployment.
* Web application deployed to your favorite web-server, app-server, whatever.
* Client-side JavaScript application working in modern browsers (>=IE7,Firefox>=5,Chrome)

* Web application must have report configuration file which contains:
** Unique system report id. Any string
** User-friendly name of report. For report titles and page headers.
** SQL query for report generation. SQL query is arbitrary and should contain parameters. SQL query will be in native format of used RDBMS.
** Query parameter description list.
Each parameter description contains parameter name, user-friendly caption,type,
output format and default value.
If you can infer parameter list from SQL query then this information is optional and
parameter list can be generated automatically.

** Query result field list. Field description should contain name, user-friendly name,
visibility flag(visible/not visible) and output format.
Field descriptions are optional - without description report should contain field
with default(returned from query) name and default output format.

* Types allowed for query parameters: integer,double,date,datetime,string,bool,decimal (money)

* Default values allowed for date or datetime parameters:
** Culture-invariant (!) string representation of any date or datetime
** If default value is prefixed with “@” then default parameter value is calculated as follows:
** @now - today (date) or current time(datetime)
** @prevmonthbeg - beginning of previous month
** @prevmonthend - end of previous month. Beware of difference in date and datetime (last day of month is 30/31, but last datetime of month is <00:00:00 01-of-nextmonth)
** @currmonthbeg - beginning of current month
** @currmonthend - end of current month
** @prevyearbeg - beginning of previous year
** @prevyearend - end of previous year
** @curryearbeg - beginning of current year
** @curryearend - end of current year

* Report configuration file will be edited once in a while based on
customers (report end-user) requirements.

Errors in configuration file format or in queries should be processed with
displaying of user-friendly error messages in client application and
error logging on server.


* Client application must show report list in any usable way(list of links, menu, tree, etc)
* Click on report must open report page which consists of:
** Report header (user-friendly report name)
** Report parameters table with user-friendly labels and editable parameters.
** "Refresh Report" button
** Report result table which is populated after click on "Refresh Report" button
or after Enter key press in any of parameter's edit controls.

* Paging or lazy result loading is not usually needed - most reports contains no more than 5 pages of data.

* When printing, report should follow the same structure as page, except for "Refresh" button.

* Report data is desirable to return in json or xml format, so it will be possible to
use wget/curl/any http client application to connect to server and get report data.


* Problem solution must contain:
** Deployment package for linux (any distro you like, but Ubuntu 10.04 LTS is preferred ). Also any deployment/configuration management system can be used.
** Deployment instructions.

Configuration file example: http://www.cacodaemon.org/content/so/ReportConfig.xml

Времени им - вообще до понедельника, но я бы добавил еще несколько дней на доработки по результатам.

[identity profile] permea-kra.livejournal.com 2012-01-31 10:12 am (UTC)(link)
Тоже, что ли, нарисовать нетривиальную задачку? =))). Жизненная будет шо писец.

[identity profile] gineer.livejournal.com 2012-01-31 10:15 am (UTC)(link)
Это действительно задача на языки программирования?
Или все же на системы веб-программирования...

[identity profile] falcrum.livejournal.com 2012-01-31 10:18 am (UTC)(link)
Чё-та, видя контингент, вспомнился анекдот старый - перефразирую: победитель будет премирован минетом в исполнении проигравшего? :)))

[identity profile] metaclass.livejournal.com 2012-01-31 10:25 am (UTC)(link)
На языки+инфраструктура (либы, сервера, деплоймент, стиль разработки).
Языки отдельно уже никто не оценивает, они одинаковые, почти.

[identity profile] artureg.livejournal.com 2012-01-31 10:28 am (UTC)(link)
оценивать язык как будете? скобочки считать?

[identity profile] xeno-by.livejournal.com 2012-01-31 10:45 am (UTC)(link)
открыл пачку попкорна

[identity profile] justy-tylor.livejournal.com 2012-01-31 10:53 am (UTC)(link)
"You need to implement universal..." - ключевая фраза, её прям в требования к оформлению задачника для специальных олимпиад выносить можно.

[identity profile] gineer.livejournal.com 2012-01-31 10:59 am (UTC)(link)
Дык... целей сравнения тоже не сформулировано.

[identity profile] gineer.livejournal.com 2012-01-31 11:00 am (UTC)(link)
Тогда не ясен смысл такого сравнения.

[identity profile] artureg.livejournal.com 2012-01-31 11:11 am (UTC)(link)
срач вышел: я со своей жабой против айседа на руби, и скифа с пхапе :)
Они пытались травить жабу, не зная матчасти

[identity profile] plumqqz.livejournal.com 2012-01-31 11:18 am (UTC)(link)
Общество взаимного удовлетворения
:-)))

[identity profile] permea-kra.livejournal.com 2012-01-31 11:21 am (UTC)(link)
А где и за что, собственно?

[identity profile] falcrum.livejournal.com 2012-01-31 11:23 am (UTC)(link)
Не скажи - виртуозным владением техникой можно занять второе место! :)

[identity profile] artureg.livejournal.com 2012-01-31 11:23 am (UTC)(link)
в чатике

да ни за что, один вбил себе в голову, что жаба, цитирую "хымыль, говно и все пидарасы", а второй поел интерпрайза чутка

[identity profile] slach.livejournal.com 2012-01-31 11:27 am (UTC)(link)
Скиф!!! ЖГИИ!!!!
=)

[identity profile] permea-kra.livejournal.com 2012-01-31 11:33 am (UTC)(link)
Инфраструктура жавы действительно производит на выпуклый взгляд устрашающее впечатление. Неужто там не за что травить?

[identity profile] artureg.livejournal.com 2012-01-31 11:39 am (UTC)(link)
ну я напишу - потравите :)

[identity profile] litvin-v.livejournal.com 2012-01-31 11:54 am (UTC)(link)
Какая-то сферическая опердень в вакууме. Ничего полезного не делает, зато у нея внутре SQL, в середине XLM или JSON, а снаружи HTML5.

Лучше б написали прогу с одной кнопкой "сделать за...сь" и посмотрели бы у кого лучше бы вышло.

[identity profile] gineer.livejournal.com 2012-01-31 11:55 am (UTC)(link)
Неплохо бы вынести это http://metaclass.livejournal.com/658955.html?thread=11049227#t11049227
в апдейт поста

Еще, было бы отлично найти кого-нибудь с Эрлангом/Хаскелем,
было бы еще более представительно. ;)

[identity profile] nealar.livejournal.com 2012-01-31 12:13 pm (UTC)(link)
С Хаскелем пусть ребе топикстартер выходит сам.

А в обдейт поста надо вынести вот это: http://metaclass.livejournal.com/658955.html?thread=11047435#t11047435

[identity profile] metaclass.livejournal.com 2012-01-31 12:14 pm (UTC)(link)
Таки это именно она и есть. Список отчетов+кнопка "Сделать заебись".

[identity profile] nealar.livejournal.com 2012-01-31 12:15 pm (UTC)(link)
Шарик заклинило?

[identity profile] litvin-v.livejournal.com 2012-01-31 12:18 pm (UTC)(link)
Да всё нормально, это у вас браузер старый, не показывает JPEG-анимацию.
:) На самом деле он примёрз.
Edited 2012-01-31 12:30 (UTC)

[identity profile] devnu11.livejournal.com 2012-01-31 12:19 pm (UTC)(link)
ставлю на артурега жабу

[identity profile] wildman.livejournal.com 2012-01-31 12:23 pm (UTC)(link)
травить есть за что. но для этого надо быть хоть чуть в теме.

Page 1 of 10