bash.im ithappens.me zadolba.li

Мысли о вечном

1008

Если б мишки были пчёлами

Забавная всё-таки штука — программирование!

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

Программа умеет работать как в интерактивном, так и в пакетном режиме, при этом может оставаться реентерабельной, не выполняя реинициализацию при повторном входе, и вызывается в разных режимах из нескольких прикладных пакетов.
И вот модифицированный код составляет уже 40% текста программы.

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

Что делает программа? Фигню — печатает PIN-конверты для банковских карточек. Обычная такая банковская программа, написанная не самыми бездарными программерами. У нас тут ещё миллион таких.

Как там у классиков? «Если бы строители строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию».

Верю!

997

Мёртвые души.part1

Девушка моя сейчас обитает в Штатах. Как-то раз она попросила меня помочь в работе над документами, прислав необходимый материал.

Уселся писать. Закончив довольно увесистую часть, решил выслать девушке этот кусок, назвав файл «Работа part1.doc». Весил файл немало, так что перед отправкой пришлось его заархивировать. Звоню узнать, как ей работа, и получаю ответ, что файл мой не открывается — дескать, поврежден.

В удивлении скачиваю файл со своего почтового ящика, открываю — и правда. Что ж делать, пакую еще раз, на этот раз не .rar, a в .zip. Отсылаю, звоню — то же самое. В голову начинают приходить мысли о «плохих» архиваторах. Сжимаю еще раз, сразу проверяю архив — опять ошибка.

Наконец моё внимание привлекает название файла. Файл с названием «Работа part1.doc» умный архиватор превратил в «Работа part1.zip», а при распаковке из лучших побуждений начинал искать другие части архива, которых, конечно же, не было. Вот и называй после этого файлы «человекопонятным» образом!

973

Чтоб два раза не ходить

Брат заканчивал подготовку к диплому. Осталось только написать презентацию в Microsoft PowerPoint, демонстрирующую работу программы расчёта САПР. Для наглядного примера попросил через QIP скинуть знакомого его вариант — знакомый долго ломался, не желая делится кровно выстраданным продуктом интеллектуального труда, но выслал архив на 4,5 МБ.

Кое-как приняв на маленькой скорости архив, брат распаковал его и обнаружил, что на ноуте у него стоит 2003 версия MS Office, а присланный файл сохранён для 2007. Покорячившись и так, и сяк, он решил попросить меня попробовать открыть образец — как назло, у меня «пауэрпойнта» не оказалось вовсе.

Брат опять стучит товарищу и просит сконвертировать презентацию в формат 2003 — заодно и размер должен был уменьшиться. Тот лёгких путей не искал и выслал пакет обеспечения совместимости MS Office (тот самый FileFormatConverters.exe), который занимал 27,5 МБ.

Вот такая у нас молодёжь пошла — продвинутая, но ленивая. Хорошо, хоть интернет теперь безлимитный...

970

Язык Кавычек и Треугольных Скобочек

В некоем учебном заведении преподавал я компьютерную графику, в частности, курс HTML/CSS. Дошло дело до экзаменов. Практику сдали, отвечают теорию; желающих нет, объявляю, что оценка на балл выше первому добровольцу.

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

— %Studentname%, хорошо, скажите мне, какой предмет вы сдаёте?
— HTML...
— Вот скажите мне, как название расшифровывается, и получите свою заслуженную тройку.

Должна ж она была как старательная девочка тупо зазубрить конспект... Не тут-то было. Я грустно вздыхаю:

— %Studentname, это очень просто. Вот пусть сейчас нам %Отличникname% ответит.

Гнетущая пауза.

— Не понял. Кто-нибудь может сказать, как расшифровывается аббревиатура HTML?

Вся группа ушла на пересдачу.

965

В Советской России Гугл ищет вас!

Работаю веб-программером — делаем разнообразные сайтики и интернет-магазины. Очередной клиент попросил, чтобы к сайту была прикручена статистика от Google. Я прикрутил, а до кучи поставил сайт в очередь на индексирование.

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

Прошло некоторое время. В аську стучится админ сервера компании-заказчика: «Твой проект грузит на 103% процессор MySQL-сервера!»

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

Поиск после этого доработали, бота от страницы выдачи отвадили и даже морфологию прикрутили. Вспомнили и бессмертную фразу Стива Макконнелла: «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете».

951

Термофидбэк

Работаю админом в большой конторе с несколькими филиалами по стране.

Проснувшись утром, понял, что у меня сильно поднялась температура. Учитывая прошлый опыт, решил сразу ехать в больницу — запускать болезнь не хотелось. Стоя в очереди за талоном в регистратуру, получаю звонок из одного филиала: опять на терминал-сервер попасть не могут. С матами плюю на всё и еду на работу. По пути звонят из трёх других филиалов со схожей проблемой. Ну, думаю, наверняка опять инет накрылся!

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

946

Мейнфрейм-секундомер

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

Как человека, склонного к оптимизации, меня немного озадачил такой метод измерения. Кроме того, у меня в арсенале имелось еще одно устройство, которого не было у остальных — ноутбук. Задумался, как бы использовать умную машину.

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

Попробовал поиграться с time /t и разочаровался, ведь эта команда возвращала время только в формате ЧЧ:ММ, в то время как нам требовалась точность в десятые доли секунды. Задумавшись, решил изменить формат приглашения командной строки: prompt $T$G.

Жизнь наладилась — при каждом нажатии на Enter на экране появлялся таймстамп с точностью до сотых долей секунды. Помните, даже в Windows, полностью завёрнутой в красивую графическую оболочку, не стоит сбрасывать со счетов консоль!

943

Linux дома. Но зачем?

Довольно давно я использую дома Linux и некоторое время назад решил поменять дистрибутив. Переехав с Ubuntu на openSUSE, я, как водится в открытых дистрибутивах, не обнаружил поддержки проприетарных мультимедиа-форматов.

Из сети-то это всё спокойно качается, только вот сразу после установки интернет по неизвестным причинам пропал — наверное, в очередной раз свитч из подъезда скоммуниздили. Провайдер обещал разобраться за два дня, а музыку слушать и фильмы смотреть хотелось прямо сейчас.

Ставлю Wine, под него вкатываю виндовый VLC (дистрибутив нашёлся у брата) — всё, фильмы и музыка играют! Так и просидел до появления интернета.

941

Занимательная аквариумистика

Недавно «Микрософт» выпустила релиз-кандидат Windows 7. Раз уж предлагают на халяву, надо потестировать. Скачал образ, установил в VirtualBox (не сносить же линукс), загрузился. Смотрю на стандартные обои с красивой рыбёшкой и чувствую, что есть в этой картинке какой-то скрытый символизм.

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

P.S. Читатели сообщают, что Betta splendens живут не дольше трёх лет. Ох, не к добру...