Special Olympics: итоги
Feb. 7th, 2012 03:26 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Итого, в результате специальной олимпиады:
Постановщик задач с меня печальный. Надо было в два раза больше пунктов в задание написать и более подробно.
kometa_zxc справилась с адовым деплойментом двух кромешных оперденей на убунте. Тестировать, по причине нехватки времени и того, что
theiced обвинил ее в неумении читать вывод команд, не стала.
По результатам
theiced и
artureg: деплоймент у обоих - кромешный хардкорный ад. Уровня "пришли с дискетами сдавать контрольную, а у препода на машине нет vcl70.bpl и какой-то непонятной либы". Артурегов оказался проще, но: после суток участия в установке айседовой, перепроверки его инструкции целым чатиком гурей и, по словам айседа, работает только на убунте 10.04.
Подключение базы: у обоих ок. Айсед создал еще и тестовую базу (для чего внезапно понадобился nodejs). А для артурега мы использовали айседову базу.
По запуску и использованию приложения.
Если использование гуманное, без попыток сломать приложение - айседовое работает более логично.
Артурегово работает нормально, но были баги с парсингом кривых чисел и показом клиенту бессмысленных сообщений типа "null"(исправлено, но исправление сообщает клиенту в ответе cтек-трейс в json).
Обработка кривого ввода пользователя сделана лучше у айседа.
По редактированию файла настроек, который по условию редактирую специально обученные люди-настройщики:
Айсед: игнорирует регистр символов, неважные ошибки, выводит предупреждения в лог, при невалидном xml - показывает "Отчетов не найдено". Был только один баг, который приводил к невозможности запустить рельсы при формально валидном xml.
Артурег: регистрозависимый, показывает клиенту безумные сообщения из исключений, если xml кривой. Причем кривость может заключаться тупо в опечатке в имени атрибута, которая xml оставляет валидным, но убивает только один отчет, а не все.
Какой вариант работы с xml лучше - спорный вопрос. Главное, чтобы корректно можно было найти и починить в случае надобности.
Проверка собственно сервиса отчетов:
Айсед: от входа работает в wget, RESTful, метод GET, параметры в url, понимает хидер Accept: на предмет - ответить json,xml или html, иначе - говорит что не может ответить в таком формате.
Артурег: Использует json-rpc, метод POST, не работает без хидера "--header=Content-Type: application/json-rpc; charset=UTF-8" и строгого json в теле POST:
query.json: {"params":["datetime1",[{"name":"datetimevalb","value":1328047200000},{"name":"datetimevale","value":1330552799999}]],"method":"runReport","id":-1}
При поверхностных попытках слома: айседовское ведет себя более гуманно - отвечает 403 или 500, и осмысленное сообщение. Было пару багов, приводящих к странному большому сообщению.
Артурегово выдает либо стектрейсы в json, либо в html, в зависимости отфазы луны места, где сломалось - в его либах или не в его.
Короче, по деплойменту: оба еле доползли до финиша при поддержке зрителей.
В рунтайме по очкам выиграл
theiced. Явных багов было все таки больше у артурега, особенно малопонятный с таймзонами дефолтных значений времени.
По айседу остается открытым спорный вопрос с парсингом sql-параметров с помощью regexp и sanitize. Пока внятных аргументов за или против кроме "здесь так принято", я не слышал.
При практическом использовании: работает и то и другое, но привести обе софтины в идеальное состояние понадобится дофига времени, как минимум на то, чтобы сформулировать, каким должно быть это идеальное состояние.
Да, финальный штрих: после установки приложений, все потроха:
Айсед:248 мег из них .rvm - 237 мег, worm_reports - 5 мег)
Артурег:160 мег из них .m2 - 27 мег, operden - 133 мег)
Айсед: после rvm cleanup all - 109 мег, из них .rvm 97 мег
Артурег: mvn clean скачал еще немного жабы, но ничего сделать не смог. 160 мег осталось.
Артурег 2: поправил настройки базы в pom.xml. mvn clean поработал, выдал 100500 ошибок (хардкодед имя базы в sql :) и теперь размер 109 мег, из них 81 - приложение. и еще 170 мег жабы в /usr/lib/jvm
Объемы кода:
У артурега там весь dojo лежит, так что жабаскрипта там 100500.
Постановщик задач с меня печальный. Надо было в два раза больше пунктов в задание написать и более подробно.
![[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)
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Подключение базы: у обоих ок. Айсед создал еще и тестовую базу (для чего внезапно понадобился nodejs). А для артурега мы использовали айседову базу.
По запуску и использованию приложения.
Если использование гуманное, без попыток сломать приложение - айседовое работает более логично.
Артурегово работает нормально, но были баги с парсингом кривых чисел и показом клиенту бессмысленных сообщений типа "null"(исправлено, но исправление сообщает клиенту в ответе cтек-трейс в json).
Обработка кривого ввода пользователя сделана лучше у айседа.
По редактированию файла настроек, который по условию редактирую специально обученные люди-настройщики:
Айсед: игнорирует регистр символов, неважные ошибки, выводит предупреждения в лог, при невалидном xml - показывает "Отчетов не найдено". Был только один баг, который приводил к невозможности запустить рельсы при формально валидном xml.
Артурег: регистрозависимый, показывает клиенту безумные сообщения из исключений, если xml кривой. Причем кривость может заключаться тупо в опечатке в имени атрибута, которая xml оставляет валидным, но убивает только один отчет, а не все.
Какой вариант работы с xml лучше - спорный вопрос. Главное, чтобы корректно можно было найти и починить в случае надобности.
Проверка собственно сервиса отчетов:
Айсед: от входа работает в wget, RESTful, метод GET, параметры в url, понимает хидер Accept: на предмет - ответить json,xml или html, иначе - говорит что не может ответить в таком формате.
wget "http://192.168.240.63:3000/reports/datetime?parameters%5Bdatetimeval%5D=2012-02-14+01%3A01%3A01" "--header=Accept: application/json"
Артурег: Использует json-rpc, метод POST, не работает без хидера "--header=Content-Type: application/json-rpc; charset=UTF-8" и строгого json в теле POST:
wget --post-file=query.json "--header=Content-Type: application/json-rpc; charset=UTF-8" http://localhost:9090/so/smd/so.action
query.json: {"params":["datetime1",[{"name":"datetimevalb","value":1328047200000},{"name":"datetimevale","value":1330552799999}]],"method":"runReport","id":-1}
При поверхностных попытках слома: айседовское ведет себя более гуманно - отвечает 403 или 500, и осмысленное сообщение. Было пару багов, приводящих к странному большому сообщению.
Артурегово выдает либо стектрейсы в json, либо в html, в зависимости от
Короче, по деплойменту: оба еле доползли до финиша при поддержке зрителей.
В рунтайме по очкам выиграл
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
По айседу остается открытым спорный вопрос с парсингом sql-параметров с помощью regexp и sanitize. Пока внятных аргументов за или против кроме "здесь так принято", я не слышал.
При практическом использовании: работает и то и другое, но привести обе софтины в идеальное состояние понадобится дофига времени, как минимум на то, чтобы сформулировать, каким должно быть это идеальное состояние.
Да, финальный штрих: после установки приложений, все потроха:
Айсед:248 мег из них .rvm - 237 мег, worm_reports - 5 мег)
Артурег:160 мег из них .m2 - 27 мег, operden - 133 мег)
Айсед: после rvm cleanup all - 109 мег, из них .rvm 97 мег
Артурег: mvn clean скачал еще немного жабы, но ничего сделать не смог. 160 мег осталось.
Артурег 2: поправил настройки базы в pom.xml. mvn clean поработал, выдал 100500 ошибок (хардкодед имя базы в sql :) и теперь размер 109 мег, из них 81 - приложение. и еще 170 мег жабы в /usr/lib/jvm
Объемы кода:
To work\Ruby>cloc-1.51.exe iced-worm-reports-8681544 66 text files. 66 unique files. 18 files ignored. http://cloc.sourceforge.net v 1.51 T=1.0 s (48.0 files/s, 3212.0 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Javascript 2 140 162 1013 Ruby 39 240 158 770 CSS 2 33 163 382 HTML 3 3 3 71 XML 1 0 0 51 YAML 1 2 0 21 ------------------------------------------------------------------------------- SUM: 48 418 486 2308 ------------------------------------------------------------------------------- To work\JAVA\artureg_ex>cloc-1.51.exe src 3487 text files. 3296 unique files. 285 files ignored. http://cloc.sourceforge.net v 1.51 T=6.0 s (526.0 files/s, 50597.5 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Javascript 2501 1612 6552 189839 CSS 554 2166 0 91501 SQL 2 5 0 5339 HTML 69 147 418 2123 XSLT 2 47 155 955 PHP 4 137 288 516 Java 12 122 7 488 ActionScript 3 119 157 374 JSP 1 32 3 220 XML 5 21 7 162 Bourne Shell 2 6 5 28 DOS Batch 1 7 3 24 ------------------------------------------------------------------------------- SUM: 3156 4421 7595 291569 -------------------------------------------------------------------------------
У артурега там весь dojo лежит, так что жабаскрипта там 100500.
no subject
Date: 2012-02-07 12:59 pm (UTC)no subject
Date: 2012-02-07 01:03 pm (UTC)(no subject)
From:no subject
Date: 2012-02-07 03:55 pm (UTC)是故百戰百勝,非善之善者也;不戰而屈人之兵,善之善者也。
Hence to fight and conquer in all your battles is not supreme excellence; supreme excellence consists in breaking the enemy's resistance without fighting. --Сунь Цзы
no subject
Date: 2012-02-07 01:00 pm (UTC)no subject
Date: 2012-02-07 01:06 pm (UTC)теперь давайте кто нить оценит лёгкость модифицирования и поддержки данных двух поделок. just in case.
no subject
Date: 2012-02-07 01:08 pm (UTC)про расширяемость, пусть кто нибудь оценит
(no subject)
From:(no subject)
From:no subject
Date: 2012-02-08 03:58 pm (UTC)или в комфорт обслуживания это не входит?)
no subject
Date: 2012-02-07 01:11 pm (UTC)no subject
Date: 2012-02-07 01:16 pm (UTC)скриншот без js
скриншот с js
скриншот отчета
работает!
айсед
скриншот
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-07 01:12 pm (UTC)[15:38:16] iced: ты тупой
[15:38:54] artureg: ты тупой
no subject
Date: 2012-02-07 01:43 pm (UTC)(no subject)
From:no subject
Date: 2012-02-08 03:40 pm (UTC)no subject
Date: 2012-02-07 01:15 pm (UTC)no subject
Date: 2012-02-07 01:18 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-07 01:26 pm (UTC)no subject
Date: 2012-02-07 01:28 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2012-02-07 02:31 pm (UTC)no subject
Date: 2012-02-07 02:14 pm (UTC)no subject
Date: 2012-02-07 02:54 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-07 03:05 pm (UTC)no subject
Date: 2012-02-07 03:06 pm (UTC)(no subject)
From:no subject
Date: 2012-02-07 03:07 pm (UTC)no subject
Date: 2012-02-07 03:59 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-07 05:11 pm (UTC)no subject
Date: 2012-02-07 05:12 pm (UTC)no subject
Date: 2012-02-07 08:34 pm (UTC)А то я бы поучаствовал в следующем забеге (с петоном и билдаутом)
no subject
Date: 2012-02-07 08:54 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-08 09:01 am (UTC)