metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-02-07 03:26 pm

Special Olympics: итоги

Итого, в результате специальной олимпиады:
Постановщик задач с меня печальный. Надо было в два раза больше пунктов в задание написать и более подробно.
[livejournal.com profile] kometa_zxc справилась с адовым деплойментом двух кромешных оперденей на убунте. Тестировать, по причине нехватки времени и того, что [livejournal.com profile] theiced обвинил ее в неумении читать вывод команд, не стала.

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

Подключение базы: у обоих ок. Айсед создал еще и тестовую базу (для чего внезапно понадобился 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] 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


Объемы кода:

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.

[identity profile] artureg.livejournal.com 2012-02-07 01:08 pm (UTC)(link)
ты опять хуиты понаписал, которую даже опровергать бессмысленно, ибо это очевидная хуита

про расширяемость, пусть кто нибудь оценит

[identity profile] theiced.livejournal.com 2012-02-07 01:12 pm (UTC)(link)
почитай про хттп статус коды в рфц а не на башоргру.

[identity profile] theiced.livejournal.com 2012-02-07 01:12 pm (UTC)(link)
и таки ты любишь купаться в говне потому что жабист или жабист потому что любишь купаться в говне?