2012-07-23

Величайшее стремление

В понедельник новичок спросил Мастера Банзена: что есть величайшее стремление?

Банзен ответил: знать всё что можно познать, чтобы писать такой код, который нельзя улучшить.

Во вторник другой послушник спросил: что есть величайшее стремление.

Мастер ответил: всегда быть окруженными коллегами, знания которых превышают твои, чтобы находиться в постоянном совершенствовании.

В среду третий ученик заметил, что ответы взаимоисключающие, более того они почти точные противоположности.

Банзен ответил: так и есть.

Ученик, считавший себя первым, спросил мастера, как же достичь величайшего стремления.

Разгневавшись, Банзен ответил: в понедельник меня попросили назвать максимальное положительное число; во вторник половину этого. Я ответил на одном дыхании. Но если бы меня попросили досчитать до этого числа, луна успела бы превратиться в пыль, едва я начал считать.
Пристыженный ученик поклонился и вышел.

Садовник подстригавший бонсай на столе мастера Банзена признался, что он не понимает как новичок мог впасть в заблуждение, ведь вопросы в понедельник и вторник были идентичны.

Банзен ответил: бонсай на столе и дуб за окном одинаково нуждаются в воде.

 The Codeless Code

2012-07-21

Дело о пропавшей памяти

Начали тестировать наш продукт, и система мониторинга на железке, оставленной на выходные неизменно рапортовала об отсутствии памяти. Причем график потребления памяти подозрительно линейно рос даже на простаивающей системе. И если на девелоперской среде можно было списать на отладочный режим, то на продакшене ничего подобного не было.

Сначала подключили родной профайлер, но без NetBeans он ничего интересного не показывал. Пришлось подключать тяжелую артиллерию в лице JProfier. Поковырявшись в огромной куче разных метрик нашли хотспоты в памяти. Подозрение пало на ту самую систему мониторинга. После рассматривания исходников выяснилось, что гибернейтовский EntityManager перзистил в базу собранные показатели жизнедеятельности системы и после этого не очищался. Контекст за день распухал на десятки тысяч объектов, которые были недосягаемы для мусорщика. Принцип неопределенности мониторинга: неправильно написанный мониторинг успешно убивает наблюдаемую систему.

Вывод капитана: в долгоживущих демонах и приложениях, написанных на java все так же нужно следить за памятью, чтобы не оставалось ссылок на ненужные объекты. По ощущениям ошибка того же уровня, что и склеивание большого количества строк: такая же простая и настолько же драматически влияющая на производительность.

2012-07-20

Linux magic

В каждой шутке есть доля шутки. Дистрибутив собирается из огромного числа разрозненных компонентов, и отсутствуют официальные рекомендации, разве что FHS, которой восемь лет и которая описывает результат неконтролируемой эволюции. И расположение конфига зависит от того, с какой ноги встал разработчик или майнтейнер.

2012-07-19

My SSD is faster then your HDD?

Решил устроить себе вчера день миграций: ноут на SSD, а десктоп с IDE на SATA. Для этого взял Vertex 4 и большую флешку, чтобы залить на неё установочный образ семерки.


Ноутопроблемы



Разобран
Надеюсь, оно будет работать

На ноуте стояла x86 Ubuntu начиная с 10.10, с разной степенью успешности пережившая три обновления и представлявшая из себя странную конструкцию с неработающим вайфаем (эксперименты по поднятию хотспота), эзернетом жившим до первой гибернации (жутко бесило) и прочими невоспроизводимыми проблемами оставшимися после разнообразных экспериментов.


Сделал резервную копию home и приступил. Но дальше первых четырех винтов разобрать не смог и пришлось смотреть инструкцию по разбору девайсов. Оказалось проектировщики отсыпали защелок не жалея. В инструкции предлагали открывать защёлки заглушкой для флешек. Тем не менее, одну я таки отломил. Больше всего поразило примитивное устройство внутренностей и полностью извлекающиеся шлейфы, которые очень страшно было вставлять.

+1 наклейка
Диск был успешно вставлен, и тестовый запуск показал. что клавиатура всё еще работает. Собрал полностью и загрузился с liveusb, чтобы залить в SSD новую прошивку. При скачивании прошивальщика оказалось, что не работает тачпад: пришлось разобрать второй раз и пошевелить шлеф - благо, что достаточно было только снять клавиатуру. Загрузился в прошивальщике, тачпад заработал, но выяснилось что одна из опорных защелок в клавиатуре не была вставлена - третий раз раскрутить было уже делом техники.

После этих манипуляций поставил amd64 12.04. С удивлением обнаружил, что он выглядит совсем не так, как после апдейта. В пятом часу утра закончил заливаться хоум.

Масдай

Параллельно с предыдущим процессом пытался перенести образ Семерки, которая досталась в совершенно безд-возд-мездное пользование три года назад и с тех пор не переустанавливавшаяся. Трижды утилита резервного копирования отказывалась делать образ системы, выдавая информативную ошибку 80070015. На форумах предлагали перезагрузиться в безопасном режиме, проверить диск на ошибки, но особенные ржаки вызвало предположение, что виноват файрвол. Проверка диска не состоялась по причине отсутствия ошибок. Подозреваю, что был виноват постоянный гибернейт вместо выключения. В итоге образ системы и загрузочная флешка сделались.

При попытке восстановления системы из образа на другом диске, оболочка показала много страшных слов среди которых было format, lost, warning. Тем не менее, я не испугался и получил всё тут же 80070015. Дальше были попытки залить образ с другого диска, развернуть образ через оснастку diskmgmt, просто залить файло и проставить загрузчик - ни одна не увенчалась успехом, а более радикальные эксперименты предпринимать без бекапа на терабайтник не хочется.

Итого

/dev/zero пишет на диск со скоростью 150 МБ/с, что в три раза меньше заявленного предела, а читает со скоростью 280 МБ/с что меньше идеала всего в два раза. Предполагаю что проблемы в SATA второй версии. Винда откладывается до появления бекапного диска.

2012-07-17

Хождение налево

В марте 2012 ездили мощным десантом на CodeFest, где на обеденном перерыве зазнакомились с двумя HR-щицами. Как оказалось, они активно хантили жабо-программистов. Первая оказалась из ЦФТ, вторая искала разработчиков для своего бывшего работодателя и особо не распространялась. Поговорили о проектах, работе, условиях и больной теме планирования. Что поразило, так это подозрительно низкая зарплата в ЦФТ - столько вполне мог затребовать выпускник какого-нибудь НГУ. Девушки записали контакты и обещали написать.