Выбрать главу

Проблема нашлась гораздо раньше: СУБД категорически отказалась выдавать нам информацию о миллисекундах. Даже под пытками. И даже с Гуглом. При этом информации в интернете было на удивление мало; у меня даже закралось страшное подозрение, которое со временем окрепло, что народ свои базы вообще не оптимизирует. В конце концов Гугл раскололся и выдал ссылку на точное описание проблемы… в багрепорте разработчиков. Читая добросовестное описание проблемы, я испытывал невероятное умиление: моя ситуация один в один! Сейчас дочитаю до ответа разрабов, пойму, где я дурак, всё сделаю как надо… Ответ разрабов был как ушат холодной воды: «Да. Такая проблема существует. MySQL не умеет возвращать миллисекунды».

Не было информации о том, что ведутся работы по устранению проблемы. Ни слово о том, что в версиях с xx.x.xx проблема решена. Просто признание, что жопа есть.

Произнеся приличествующие случаю слова скорби и смирения, я стал думать, как быть в данной ситуации.

На помощь мне пришёл метод Монте-Карло. В моём случае вероятность изменения значения секунды во время атомарной операции была пропорциональна количеству миллисекунд, на эту операцию затрачиваемых. Тут-то и пригодился ввод из 10К строк.

Не могу сказать, что найденное решение уникально. Но в процессе этой разработки я приобрёл полезный опыт, являющийся синтезом двух крылатых фраз: «жизнь — сука, никому нельзя верить» и «на хитрую задницу найдется хвост с винтом».

Кстати, в результате оптимизации я довольно много узнал о внутренней логике MySQL, встроенных в него инструментах отладки и оптимизации и всерьёз зауважал его разработчиков. Временные таблицы, индексы, JOIN вместо вложенных SELECT — и время внесения 10K строк сократилось с двух часов до трёх минут.

#12144: Камера! Моторчик!

12:12 27.04.2014, IT happens

Обнаружил, что при съёмке видео мобильником в конце каждого ролика слышится отчётливое «гав». Оказалось, я сам настроил телефон так, чтобы в момент выключения съёмки срабатывал виброзвонок. Его звук микрофон и воспринимает как лай. Вот где «собака» зарыта!

#12145: В одну погибель

12:24 27.04.2014, IT happens

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

Работаю в новой компании почти месяц. Когда устроился, в части офиса был ещё ремонт, все коммуникации провели до меня, и я, понадеявшись на благоразумность моего предшественника, особо сильно не вдавался в подробности. Ну, работает — и нехай работает. Настал день, когда ремонт был завершён. Приходят ко мне и говорят: «Надо бы нам главного акционера в его новый кабинет перевезти». Ну, не вопрос. Делов-то — компик из одного кабинета в другой, проводок туда, проводок сюда. Все перенёс, начал подключать. И вот тут случился ужас. Розетки не подписаны. И как быть? Ни LAN-тестера, ни схемы, вообще ничего у меня нету. И возле стола розетка только одна. То есть либо подключаем телефон, либо комп. С компом долго мучиться не стал: моноблок, слава великому Туксу, оснащён модулем «вайфай». Ну, значит, розетку отведём под телефон. Съездил в магазин, купил LAN-тестер, отыскал, где же наша розетка находится в стойке, и занялся уже механической работой…

Перенёс, поставил, подключил — и вижу фигу. «Server connected» — и на этом разговор закончился.

Что я только не пытался сделать! Сначала тщательно проверил, правильно ли я всё воткнул. Да, всё верно, провода подключены как положено. Втыкаю провод с тестером в розетку, в стойке ответка. Линк есть. Втыкаю в телефон… «Server connected» — и тишина.