bash.im ithappens.me zadolba.li

Факапы

9231

Стирать сотрётся палец

21 мая 2012, 10:00

Писал я скрипты для SMS-рассылки (курсы валют, погода и т. п.). Так вот, в процессе тестирования вбил свой номер, чтобы видеть, что и как приходит. Дописываю, с радостным видом запускаю на рассылку и начинаю тихонько офигевать.

При более подробном просмотре кода оказалось, что я просто не там поставил скобочку. На мобильник ушло порядка 600 SMS. После удаления первой полусотни я понял, что так дело не пойдёт. Пришлось звонить оператору и объяснять техсаппорту, что, где, с каких серверов и каким образом почистить очередь.

9191

Роботы не терпят измен

15 мая 2012, 11:45

В основе Google Android лежит Linux — это знают все. Это значит, что и мороки с ним бывает порой столько же. Вот и сейчас перелопатил кучу мануалов из-за своей невнимательности.

Переименовал папку с бэкапами системы, чтобы по ошибке потом вместо одного не восстановить другое. Потом думаю: а верну-ка я пока на свой Galaxy Ace эту альфа-версию CyanogenMod 9 (Android 4.0.4), поковыряюсь в новой «мороженке» от Гугла!

Не тут-то было: перезагрузив телефон, войдя в Recovery и сделав вайп данных на всякий пожарный, я обнаружил, что при попытке восстановить образ мне поступает жалоба на несоответствие хэшей MD5. У меня аж мороз по коже: неужели похерился? Ладно, вернём хотя бы старую инфу, а то после вайпа ставить все программы заново неохота. Выбираю бэкап CyanogenMod 7 (Android 2.3.7) — и у него та же ошибка. Тут мозг зашевелился и выдал мысль: если хэши не совпадают, значит, в файле, что лежит с архивами, зашифрованы пути. Ну и хорошо — по-быстрому гуглю онлайн-генератор хэшей, ввожу путь до бэкапа в обычном формате (/sdcard/…/data.ext4.tar), копирую в nandroid. Считаю md5 от полученных значений, сохраняю, пробую. С замиранием сердца смотрю, как телефон, проверяя хэш, долго сверяет его. «Съел! Сейчас пойдёт!» — уж было обрадовался я, но телефон огорчил меня, выплюнув ту же ошибку.

Ладно, если нельзя справиться с хэшем, значит, нужно искать другой путь восстановить информацию, ведь трафик тратить и заново настраивать телефон в два часа ночи очень неохота. Ведь можно создать зип-файл в виде обновления системы и залить его как это самое обновление. Только зип-то Андроиду не простой нужен, а подписанный, с сертификатами и manifest.mf — привет, Java!

Гуглю мануал по созданию такого архива. Пишу скрипт установки, создаю сертификат и ключ, запаковываю в архив и подписываю. Устанавливаю — и робот версии 2.3.7 шлёт меня лесом за то, что скрипт написан языком, который со времён версии 1.5 уже не использует. Ищу мануал, как переписать под 1.5+, нахожу, переписываю, перезапаковываю, переподписываю, снова пробую. «Еrror in update.zip (status 6)». Что теперь-то не так? Гуглю — либо что-то недописано в скрипте, либо кодировку такую Андроид не ест. Ага, ANSI-то не ест. Перепроверяю — вплоть до буквы всё верно, а не работает. Что, простите? Цитирую: «Note: you should add one extra line at the end of the file». Да, без лишней пустой строки скрипт не хочет запускаться.

Добавляю, провожу все операции снова — и опять, но на сей раз жалоба на update-binary. Ищу, как бороться с этим, и натыкаюсь на совет по перезагрузке Recovery. Пробую — и снова попадаю на ошибку «status 6». По запарке вместо пункта Install нажимаю Backup и наблюдаю, как радостно бегут буковки и прогресс-бар по маленькому экрану смартфона. Отменить процесс нельзя, поэтому, дождавшись завершения, решаю попробовать снова. Вновь подключение карты памяти к компьютеру и внезапное озарение экрана окном о том, что карту не помешало бы проверить на ошибки. Даю «окошкам» добро, жду окончания процесса и отключаю карту, пробую снова, возлагая на это одну из последних надежд, так как два часа плясок с бубном, скриптами и сертификатами на одном месте измотали очень сильно.

В конце концов я плюнул и просто прошил снова, устанавливая всё как обычно. Хоть и потерял многое, но запомнил снова забытое ранее правило: «Работает — не трогай!»

9168

Кто украл мои годы?

12 мая 2012, 08:00

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

Звонит знакомая знакомых и просит отредактировать немного фоток, где она с мужем на какой-то выставке. Договорились, слила она мне их на мыло. Работа закипела: малозаметная ретушь с сохранением текстуры кожи, цветокоррекция, кадрирование, удаление ненужных деталей… Дал жене на оценку (незамыленный взгляд и всё такое) — отлично, можно отправлять.

Отправил. Гордый собой, жду реакции. Перезванивает. Достаточно сухо благодарит, внезапно начинает рыдать и бросает трубку.

Жена позже выяснила, что эта знакомая, увидев отретушированные фото, поняла, что она может выглядеть значительно лучше, а сейчас — старуха старухой.

9163

Вы что курили?

11 мая 2012, 10:00

Работал я как-то в системном интеграторе на внедрении западной системы бюджетирования для крупного холдинга. Холдинг имел в своих активах множество разносторонних предприятий от детского парка до мясокомбината. Особо запомнились в местной столовой отбивные по 25 рублей размером больше тарелки, которые даже я с трудом доедал. Но главным бизнесом холдинга было производство сигарет, поэтому пряный запах табака стоял в радиусе квартала, за что всем сотрудникам с утра выдавали бутылку минералки и пакет молока.

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

При входе на фабрику бдительная охрана изъяла у нас все «носители информации» — штампованные диски с ПО. Наши флешки и КПК их совершенно не заинтересовали. Удалось договориться. чтобы диски с дистрибутивами разрешили пронести в сопровождении начальников охраны и отдела IT.

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

И вот когда система была отлажена, настало время презентовать. В небольшом актовом зале собрались финансовые руководители всех предприятий и прочие причастные люди. Мой коллега начал презентацию, демонстрируя различные этапы процесса работы. Но когда на экран были выведены списки мéшек табака для различных марок сигарет, главный технолог буквально побледнел и в стремительном порыве попытался закрыть своим телом проекционный экран. Коллега, почувствовав неладное, свернул окно, а технолог с негодованием прошипел, что это великая коммерческая тайна, которую даже у них мало кто знает. Я, похолодев, перебрал в памяти все папки с копиями базы системы на рабочем компе и решил удалить их от греха подальше. А ведь к нам эти мéшки попали благодаря простому импорту по ODBC из старой компанейской базы.

Преодолев момент неловкости, мы презентацию завершили и сдали систему «на руки» начальнику отдела бюджетирования холдинга. А потом к нему подошёл слегка опоздавший финансовый начальник того самого мясокомбината и в светской беседе похвастал свежекупленным учебником «Бюджетирование в Excel 2000», чем вызвал бурный хохот среди присутствующих.

9141

По-настоящему холодный душ

Пусконаладка завода по производству пива. Прибежало руководство: срочно обновить SCADA, переделать кое-что. Ну да ладно, дело лёгкое. Товарищ заливает обновления и…

И обливает гликолем +2 градуса целую бригаду монтажников, которые врезались в трубопровод. Оказывается, клапан охлаждения по умолчанию в SCADA был открыт. Хорошо, что это была не труба CIP, по которой иногда азотная кислота течёт.

Правильно говорят: проверяй умолчания!

9121

Всё правильно сделали

Сетевой администратор всё правильно сделал: управляемые свитчи, пропускающие трафик только после успешного получения адреса по DHCP.

Системный архитектор всё правильно сделал, установив в серверной два DHCP-сервера и затребовав ввод электропитания от двух подстанций и автомат включения резерва.

Электрики всё правильно сделали, подключив вместо сгоревшего кабеля на 10 кВ другой кабель от другой подстанции.

Но при работах на подстанции питание пропало на какие-то секунды. Автомат включения резерва переключился на другой ввод, но подсоединился ко второму вводу раньше, чем отключился от первого. Раньше фазы были в одинаковом порядке, так что ничего особенного не случалось. В этот раз они оказались в другом. Тем временем подключился обратно первый ввод. 380 вольт оказались закорочены. Оба 100-амперных автомата вводов выключились, и серверная (в том числе кондиционер) жила на источнике бесперебойного питания, о чём слала слёзные SMS администраторам. Но кто их читает среди ночи?

К утру заряд ИБП кончился, DHCP-серверы отключились. Затем истекло время аренды, и умные свитчи заблокировали все порты. Сеть была парализована полностью.

9117

Растворимый дамоклов меч

Если положено копировальной технике стоять в отдельном кабинете, оснащенном силовыми розетками, значит, нечего перемещать оную технику в неприспособленные для этого коридоры. Вот и в этот раз не разбирающиеся в оргтехнике менеджеры распорядились освободить помещение, выставив за дверь огромный копировальный аппарат, за глаза именуемый «комбайном».

Приютился комбайн в коридоре как раз напротив входов в уборные, сузив и без того небольшой проход с 1,4 метра до 0,6. Так как запитываться комбайну от 220 было неоткуда, прокинули удлинитель из соседнего кабинета. Некоторое время народ спотыкался об удлинитель. Потом силами IT-отдела в лице сисадмина (т. е. меня) было решено организовать розетку для комбайна.

За подвесным потолком как раз над местом дислокации монстра обнаружилась распределительная коробка, от которой запитывались кабинетные розетки. Свято веря в принцип цветовой дифференциации разводки проводов по схеме «бело-оранжевый — оранжевый — бело-зеленый - …», предположил, что электрики придерживаются такого же принципа при разводке силовых линий.

Ничтоже сумнящеся, я подключил желто-зеленый к желто-зеленому по схеме «земля», синий к синему по схеме «нуль» и коричневый к коричневому же по схеме «фаза». Воткнул вилку провода от комбайна в розетку.

Бахнуло так, что всё здание офиса обесточилось. Завоняло сгоревшей электроникой.

Первая мысль: «Придется покупать блок питания для комбайна за 26 тысяч наших русских за свои кровные». Стало совсем грустно.

Вторая мысль: «Хорошо хоть серверная, запитанная от „симметры“, не вырубилась». Настроение не изменилось ни на йоту, так как Дамоклов меч, нависший над моим и без того не толстым кошельком, испаряться не желал.

Как показало расследование, в распределительной коробке из ожидаемого оказалось только одно — однофазность. Но как электрики умудрились пустить одну и ту же фазу по «фазному» (коричневому) проводу и по «нулевому» (синему), я до сих пор не понял.

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

Замена керамического предохранителя оказалось делом более пустяковым.

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

9112

В пропасть и обратно

3 мая 2012, 10:00

Как лучше всего избавиться от депрессии, жаления себя любимого и вообще плохого настроения айтишнику? Поиграть в Doom? Мимо. Надраться и поорать песни? Нет. Может быть, устроить истерику с битьём посуды и морды? Тоже нет!

Лучший способ:

1. Обновить версию Убунты на сервере.
2. Зафигачить GRUB на раздел вместо диска.
3. Выругаться, когда не захочет грузиться.
4. Сделать Live USB, войти в терминал, переустановить GRUB.
5. …
6. PROFIT!

В результате имеем свеженькую версию на сервере и хорошее настроение.

9109

Сам такой!

3 мая 2012, 08:00

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

Захотелось одному нетерпеливому нецензурно оскорбить одного из игроков. Игрок заменял слова хорошо подобранными символами, чтобы чат их не блокировал. Решив приструнить наглеца, пишу в чат короткую фразу: «Оскорбление бан». Да вот только чат понял меня по-своему, сложив последние четыре буквы, и выдал мне кляп за нецензурную лексику. И где тут справедливость?

Программисты, будьте осторожнее и внимательнее при создании фильтров!