Entry tags:
Special Enterprise Programming Olympics
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
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
Времени им - вообще до понедельника, но я бы добавил еще несколько дней на доработки по результатам.
no subject
no subject
no subject
а потом взлетает платформонезависимо. при желании вообще не используя ресурсы операционки
у мя сча на работе какое. правда осложнено тем что в проекте есть j2me, iphone, android и blackberry клиенты + 2 веб прилаги. пришлось сильно поковыряться чтобы заставить это работать без привязки к платформе
no subject
"Вот за это нас и не любят". Приложение на рельсах деплоится в один клик из коробки.
no subject
у меня проект собирается на ГОЛОЙ СИСТЕМЕ:
0. скачиваю android-sdk, wtk, jdk в любую локальную директорию
1. git pull
2. правлю руками в custom.properties пути к android-sdk, wtk, jdk
3. gradle dist-package startServer
всё.
при этом получаю *.apk для андройда, *.jar|jad для j2me, собранные клиенты для blackbery и ios + *.war для всех веб приложений в директории dist и запущенный tomcat с приложениями
для запуска на боевом сервере надо только подкинуть war в нужное место.
linux или windows вносят изменения только в пункт 0. берутся другие архивы.
а теперь раскажите мне минимальные телодвижения для запуска рельсовой апликухи?
no subject
no subject
bash: cap: команда не найдена
с удовольствием погляжу на тот мануал который вы отсылаете заказчику
no subject
no subject
гарантирую что смысл вывода не поменяется.
no subject
на серваке достаточно голой системы с ssh и ruby из репозиториев.
no subject
а ссшд? и вообще вопрос установки sshd на например w2k3 сервере - отдельная песня.
и очень интересно как поднять на машине деплоера руби с инфраструктурой и capistrano одной командой.
в сценарии описаном мной - на машине заказчика нужны git и доступ в инет.
зы. я в начальном описании немного ошибся :( блекбери и iphone клиенты собираются отдельно. в общую систему не внедрены
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject
(no subject)
no subject
ему для работы нужен руби. поскольку в репозиториях различных дистров руби разных версий, да и гемы там обновляются через одно место, руби оказывается удобнее ставить из исходников, с помощью rvm (ссылку я привёл ниже)
no subject
no subject
5 (+поставить из репозиториев компилятор и хедеры) команд из https://rvm.beginrescueend.com/rvm/install/
вытащить исходники проекта из VCS
сказать bundle install
запустить сервер: rails server
делается не приходя в сознание. и это ещё не прибегая к vagrant.
no subject
это всё давно известно. вот только "есть нюансы..." например я не вижу тут решения для произвольной платформы :)
может я не ясно выражаю мысли...
я далеко не против того что в руби есть неплохие инструменты для деплоя.
но "одна команда" - это феерический детско-пионерский бред. от чего - от незнания реалий или фанатического максимализма - отдельный вопрос.
например существуют ли настолько же вменяемые решения для php я незнаю. т.к. никогда не интересовался.
так же я слабо представляю как нормально деплоить руби в случае если целевая платформа не *nix. (кстати если сталкивались или знаете где глянуть - было бы очень интересно послушать для общего развития)
no subject
no subject
no subject
no subject
no subject
no subject
no subject