metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-01-06 01:02 pm

Программистсткие комплексы

"Отладочные логи и вызовы профилировщика в код вставляют только трусы, неудачники и /забыл слово для тех, кто плохо работает из-за своей тупости/, которые не могут программу написать правильно и эффективно сразу".

[identity profile] kiryl.livejournal.com 2009-01-06 08:26 pm (UTC)(link)
Какую ересь только не придумают проприетарщаки.

[identity profile] metaclass.livejournal.com 2009-01-06 09:26 pm (UTC)(link)
А чего ересь, вполне себе идея для уменьшения нагрузки при логгинге.

[identity profile] kiryl.livejournal.com 2009-01-07 09:44 am (UTC)(link)
Простой текстовый лог намного удобней. Хотя бы потому, что не требуется сторонних средств для его расшифровки. Если волнует размер -- можно агрессивно пожать, например в lzma. Не думаю, что overhead на логинг может быть существенным.
Описанный подход может быть интересен, только для сокрытия информации, что бы людишки ни в коем случае не догадались как эта ентерпрайзная поделка работает.

[identity profile] metaclass.livejournal.com 2009-01-07 10:33 am (UTC)(link)
Если сервер хорошо нагружен, там лишний обмен с диском и расход проца на lzma однозначно ни к чему. Да и сокрытие информации тоже идея хорошая, каким-нибудь конкурентам или местным криворуким админам вовсе ни к чему знать подробности работы софта.

[identity profile] kiryl.livejournal.com 2009-01-07 12:46 pm (UTC)(link)
Лог, в нормальной ситуации, вряд ли привысит 1Mb/час. Даже на загруженном сервере это не создаст большой нагрузки. А жать можно только при пересылке или logrotate.
И, да, я всегда догадывался, что проприетарщики считают всех вокруг тупыми.

[identity profile] metaclass.livejournal.com 2009-01-07 01:46 pm (UTC)(link)
1 мегабайт в час?
А 100 кб в секунду не хотите ли при отладке, причем отладка именно производительности, т.е. логгинг должен отъедать как можно меньше, чтобы не повлиять на отлаживаемый аспект системы.

[identity profile] kiryl.livejournal.com 2009-01-07 02:43 pm (UTC)(link)
Я полагаю, вы не производите отладку на стороне клиета? Или производите?
"Отладка производительности" -- это профайлинг? Для этого существуют более эффективные средства, чем логгинг.

[identity profile] 1ceheart.livejournal.com 2009-01-07 04:25 pm (UTC)(link)
При управлении железкой 10 мб лога в минуту - сплошь и рядом. Бывают и метры в секунду. Потому что когда в цеху встает конвейер, а на вопрос "что случилось" разработчики недоуменно разводят руками и говорят "ну знаете, нам надо посмотреть отладчиком", их немедленно увольняют.

[identity profile] 1ceheart.livejournal.com 2009-01-07 11:19 am (UTC)(link)
Если вы читали мой коммент внимательно, вы бы заметили, что там написано "для дров". Если в обработчике прерывания будет происходить printf и lzma, вы сильно удивитесь, что это у вас Core2 Duo окошки перерисовывает со скоростью 386.

Простой текстовый лог, конечно, удобней, но не всегда.

[identity profile] kiryl.livejournal.com 2009-01-07 12:39 pm (UTC)(link)
Если у вас обработчик прерывания настолько сложен, что требует логирования чего-либо кроме ошибок, то вы, очевидно, пишете что-то не правильно.

[identity profile] metaclass.livejournal.com 2009-01-07 01:45 pm (UTC)(link)
Вот про это я и написал "логи пишут только трусы и неудачники".
Потому что настоящие гуру и ковбои от программирования сразу пишут правильно, а причину проблем у клиента узнают с помощью телепатической силы.

[identity profile] kiryl.livejournal.com 2009-01-07 02:40 pm (UTC)(link)
В обработчике прерывания, если всё верно спроектировано верно, выполняется очень мало работы и отладить его не очень сложно.

[identity profile] 1ceheart.livejournal.com 2009-01-07 04:22 pm (UTC)(link)
А логи пишут только трусы и неудачники :)

[identity profile] blackyblack.livejournal.com 2009-01-10 08:02 am (UTC)(link)
Логи из обработчика прерывания не очень удачная идея. Да и этот самый бинарный лог тоже может навернуться - его кто будет анализировать?

[identity profile] 1ceheart.livejournal.com 2009-01-10 11:55 am (UTC)(link)
Не самая, но как-то отлаживать нужно. Breakpoint-то туда можно поставить только один раз по понятным причинам, а просто DbgPrint таки вносит коррективы :) Конечно, есть и плугин к kd, и если сказать /debugport=1394, то даже и с DbgPrint можно жить, но тем не менее.

Для слива и анализа бинарных логов они там дают тулзу. Все это довольно надежно работает, как ни странно.

Разумеется, оставлять даже бинарный лог в обработчике прерывания в релизе не сильно кошерно. Хотя некоторые оставляют, а некоторые даже это оговаривают в спецификации, что WMI tracing должен быть в релизе. Там действительно performance overhead очень маленький.