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] w00dy.livejournal.com 2012-01-31 02:28 pm (UTC)(link)
вроде как день-два на .net, и должно даже взлететь на mono.

[identity profile] metaclass.livejournal.com 2012-01-31 02:31 pm (UTC)(link)
Да, я наверно на дотнете бы тоже поднял.

[identity profile] metaclass.livejournal.com 2012-01-31 02:31 pm (UTC)(link)
Тьфу, чорт, забыл, я похожее на дотнете уже сделал, только без аякса, с постбаками и перегрузкой страницы(сто лет назад было)

[identity profile] w00dy.livejournal.com 2012-01-31 02:31 pm (UTC)(link)
шоле поучавствовать с этой специальной олимпиаде :)

Взять pgsql, asp.net, jquery и взлететь :)

[identity profile] theiced.livejournal.com 2012-01-31 02:34 pm (UTC)(link)
артурег почему то решил что мы травим жабу, котя мы травили его расовый индуистский код ;]

[identity profile] w00dy.livejournal.com 2012-01-31 02:34 pm (UTC)(link)
я тоже делал, правда репорты были описаны не в xml, а вшиты в файл с данными (их юзер готовил, а потом файл-проект со всей требухой вгружал на сайт)

[identity profile] theiced.livejournal.com 2012-01-31 02:34 pm (UTC)(link)
мммм... 3 года плотного использования в кровавом энтерпрайзе - это в теме?

[identity profile] theiced.livejournal.com 2012-01-31 02:35 pm (UTC)(link)
готов поставить бабло туда-сюда? ;]

[identity profile] w00dy.livejournal.com 2012-01-31 02:35 pm (UTC)(link)
Кстати, все эти постбеки легко заменяются на аякс через реализацию страницей интерфейса ICallbackHandler (вроде так называется). Я даже наколхозил прозрачное использование - есть js и работает, тогда аякс, не работает - тогда как деды делали, через постбеки.

[identity profile] wildman.livejournal.com 2012-01-31 02:39 pm (UTC)(link)
судя по тому что ты ничего внятно сказать по теме не можешь (или мне таких высказываний не попадалось. с удовольствием почитаю если таковое есть) - видимо нет. не в теме.

[identity profile] theiced.livejournal.com 2012-01-31 02:56 pm (UTC)(link)
30 минут на рельсах и оно работает ;]

[identity profile] d4s.livejournal.com 2012-01-31 02:56 pm (UTC)(link)
о! а ставки будут?

[identity profile] w00dy.livejournal.com 2012-01-31 02:56 pm (UTC)(link)
поздравляю, возьми с полки пирожок.

[identity profile] dnnx.livejournal.com 2012-01-31 03:00 pm (UTC)(link)
Не верю.

[identity profile] go-bender.livejournal.com 2012-01-31 03:00 pm (UTC)(link)
Кто ставки принимает?

[identity profile] w00dy.livejournal.com 2012-01-31 03:03 pm (UTC)(link)
Да как вы можете сомневаться в словах ребе зейседа?!!

PS Я в общем-то тоже не верю, но кому какое дело ;)

[identity profile] craneop.livejournal.com 2012-01-31 03:07 pm (UTC)(link)
Пара-олимпиада :)

[identity profile] inhate.livejournal.com 2012-01-31 03:23 pm (UTC)(link)
гыгыг, давайте мне результаты на тестирование адекватности деплоя ;)

[identity profile] bagamut.livejournal.com 2012-01-31 03:24 pm (UTC)(link)
"Как надежный метод диагностирования, психологические тесты для умственно отсталых предоставляют возможность охарактеризовать заданные психологические свойства и ориентации. Условное деление любых тестов на многосторонние и специализированные, позволяет осуществлять поставленные цели любой степени трудности. К самым известным и повсеместно доминирующим психологическим тестам для умственно отсталых относят разноплановые вопросники МMPI 2 и Кеттелла. К этого класса психологическим тестам для умственно отсталых прибегают при групповом или универсальном диагностировании сразу нескольких личностных свойств и качеств.

А вот с целью дополнительной психодиагностики и уточняющего практикума наоборот, берут специализированные психологические тесты для умственно отсталых. К такому типу могут быть отнесены, скажем, методики: К.Леонгарда-Шмишека, Д.Холланда, М.Рокича-С.Швартца, ДМO Т.Лири, KОT и т.д." (с)

[identity profile] tdebug.livejournal.com 2012-01-31 03:25 pm (UTC)(link)
Это только для спортивного интереса такое задание?
Для реальной enterprise отчётности вроде ж как существует приличное количество готовых продуктов, разных по цене.

[identity profile] asvil (from livejournal.com) 2012-01-31 03:29 pm (UTC)(link)
Все строчки задачи не читал, но помню на common lispe выгружал данные из postgresql представлений и через postmodern, restas, closure-templates, jquery вприпрыжку и вприсядку выдавал страничку с табличкой для белорусского автошкольного бизнеса. Все вычисления в sql. Код получился спонтанный, но вроде читаемый. html для разметки удобный, для печати совсем нет, но впринципе повыкручивать css помогает. Думал про latex, но решил не заморачиваться. Подходит по заданным условиям, наверно, процентов на пятьдесят.
Да, я сначала по принципу минимизация затрат, хотел все нарисовать мышкой в eclipsике, но как-то не заладилось с этими jasperами и т.п.

P.S. Ну и капча у вас в жежешечках.

[identity profile] abadonne.livejournal.com 2012-01-31 03:39 pm (UTC)(link)
Надо ещё опросец прикрутить, кто на кого ставит, кто за кого болеет, лично я за Скифа. )

[identity profile] asvil (from livejournal.com) 2012-01-31 03:49 pm (UTC)(link)
А стоп, участники-то уже определены. Как-то я совсем мало информации из поста почерпнул.

Но напоследок хочу отметить, что я это все под windows xp запустил, спасибо akovalenko и tomas.hlavaty.

[identity profile] messirvoland.livejournal.com 2012-01-31 03:49 pm (UTC)(link)
опросец говно, нужен нормальный тотализатор :)

[identity profile] nicka-startcev.livejournal.com 2012-01-31 03:51 pm (UTC)(link)
Классная мета-олимпиада! Или Мета-классная.

Page 2 of 10