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
а потом взлетает платформонезависимо. при желании вообще не используя ресурсы операционки
у мя сча на работе какое. правда осложнено тем что в проекте есть 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
sshd вполне себе есть на w2k3 поскольку есть cygwin
no subject
в моей практике в большинстве случаев они требуют мануал как собрать и развернуть систему у себя. и не допускают никого внутрь своей инфраструктуры.
no subject
Вообще, отличная логика: руби - это, значит, левый софт, а ява, значит, правый.
(no subject)
(no subject)
no subject
no subject
Да как обычно, apt-get install ruby rubygems && gem install bundler && bundle install. Вообще говоря, вашу телегу можно прекращать читать с первого пункта "неизвестно откуда скачать либы и положить неизвестно куда". Ничего, что на оракловском сайте без яваскрипта фиг что скачаешь?
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