Если в проекте используется сторонняя библиотека, её надо объявить дерьмом и написать свою. Если в проекте встретилась слишком простая функция — её надо обязательно переписать на ассемблере.
Если поставлена задача написать виндовую программу, то надо обязательно писать кроссплатформанный проект, довести до половины, а потом потом бросить поддержку парочки платформ.
Если делать нечего и всё работает, надо объявить архитектуру устаревшей, придумать новую (упаси боже посмотреть при этом, как сделали другие) и переписать парочку подсистем, чтобы взвыли коллеги из соседних отделов.
Если можно прикрутить какой-то хак, специфичный для конкретного билда ОС или видеокарты, это сделать попросту обязательно.
Думаете, смешно? А я насмотрелся на поделки, где одновременно используется три самопальных класса для одних и тех же кнопок на тулбаре, три библиотеки для работы со строками и пять подпрограмм для умножения матриц — с ошибками, естественно. На программы, где на ассемблере с SSE переписаны функции копирования памяти, при этом один и тот же файл открывается и закрывается в цикле двадцать раз, чтобы прочесть первые три байта сигнатуры. На проги, где используются параллельно оконная библиотека MFC и своя, с ней несовместимая. Программы, у которых после наведения «архитектурной чистоты» начинались тормоза, а размер своп-файлов поднимался с единиц мегабайтов до терабайтов. Многопоточные программы, которые не в состоянии были загрузить процессор на 40%, потому что потоки дрались за критические секции...
КПД программерского коллектива — как у паровоза Черепановых: все пыхтят и создают работу друг для друга. Полезный выход — два процента.
Думаете, отчего я такой злой? Просто я всё это добро портирую с платформы на платформу, просматривая и исправляя чужой код по мегабайту в день.
#4350: Jack goes where?
13:00 06.10.2010, IT happens
Адаптер для модема с переменными 9 В. 12 В с плюсом на центре для USB-вайфай-роутера. 9 В с плюсом на корпусе для сканера штрих-кодов. Все к дной машине.
В конторе появляется новенькая светленькая девочка. Прибегает утром и плачет.
— Кто тебя довёл?
— Мужики — придурки! Кто придумал эти дырки сделать одинаковыми?
Я в шоке. Думаю, кто счастливчик, когда успел и когда приедет милиция.
Секунд через десять сдавленного хохота соседей и перетыкания штекеров я понял, что нам всё же нужен новый роутер. Сканер выжил, «омни-зухель» тоже.
#4351: Ни «X» себе
15:00 06.10.2010, IT happens
Жалоба: не открывается документ, говорит что-то о не найденном конвертере. Админских прав у пользователя нет. Коннекчусь, переустанавливаю конвертер, чтобы открывать документы 2007-го Ворда в 2003-м — иногда он отползает. Ан нет, то же самое: Офис хочет установить какой-то конвертер, выдаёт ошибку и предлагает на выбор кодировки.
Думал недолго, но метод перевода файла из новой версии Офиса в старую путем изменения расширения с .docx на .doc меня поразил.
#4352: Молодильные файлики
15:00 06.10.2010, IT happens
Позвонила одноклассница:
— Привет, Ром, у меня не работает вирус! Ой, антивирус. Пишет, что базы вирусов сильно устарели. Как сделать, чтобы они омолодились, а?
— В главном окне нажми «Обновить».
— Чёрт, ничего не получается! Не хочет. Говорит, не найден источник обновления.
— Э… Видимо, сервак упал.
— (удивлённо) Кто упал?!
— Источник обновления отключился. Подожди дня два и по всяким сайтам лишним не лазай.
— Ага. Ну ладно. Кстати, у меня тут собаки провод перегрызли.
— Какой провод?
— Как какой? Который интернет включает.
— Пока!
#4353: sleep 28800
15:00 06.10.2010, IT happens
Как положено ночью, сплю. Рядом спит ноут с Кубунтой. Около трёх часов ночи стало ясно, что в комнате спала и кошка, которая уже совсем даже не спит, а просится выйти из комнаты, царапая дверь. Надо вставать открывать, но нет: я же так сладко сплю! И тут приходит идея: надо открыть дверь, не вставая с кровати, то есть удалённо.
Разворачиваю Yakuake, но четвёртые «кеды» плохо работают на моих мозгах. Печатаю в консоли вместо символов абракадабру. Удивляться нечему: на сайте KDE нет ни слова о поддержке моей мозговой платформы. Перезапускаю KWin, снова консоль, и наконец-то могу печатать нормально. Набираю eject и крепко задумываюсь: какой девайс указать? Дверцу привода я могу открыть (/dev/sr0), но дверца комнаты не подключена к моей системе; более того, я даже не знаю, как она отображается в /dev!