bash.im ithappens.me zadolba.li

Программы

938

Краткость — сестра таланта, но тёща пользователя

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

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

В один прекрасный день моему коллеге понадобилось загрузить новую прошивку. Он поинтересовался, что означает фраза «щёлкни тумблером». Я объяснил в двух словах. Какое-то время коллега меня не беспокоил, но чуть позже появился над моим столом с пунцовым лицом и вежливо, но громко вопросил: «Какого хрена? Ты что, издеваешься? Я уже полчаса щёлкаю этим @#$ным тумблером!»

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

928

Привет из подземелья

Я уж думал, что совсем свихнулся. Моя числодробилка периодически показывает, какую итерацию она сейчас считает. Запустил, понял, что надо бы немного поменять алгоритм. Нажал Ctrl+C, поправил код, снова пускаю. Пишет:

а = -1
а = -0.9
а = -0.8
а = 0.3
а = -0.7

И почему же она на 0.3 скакнула, а потом вернулась обратно на –0.7 вернулась? Опять жму Ctrl+C, снова лезу в алгоритм, всё просматриваю — не может такого быть! Я этот код долго вылизывал, нечему там ломаться. Запускаю по новой.
а = -1
а = -0.9
а = 0.6
а = -0.8
а = -0.7
а = 0.7

Такого не может быть, потому что такого не может быть никогда! Я поиском по коду смотрел — переменная меняется только в строчке «for a = -1:0.1:1».
Понял, в чём было дело, только когда появилось сообщение «запущенный в бэкграунде процесс завершён». Я случайно не прервал выполнение программы, а отправил её в фон, откуда она и посылала мне свои «приветы».

891

Пятилетку за три года

Работаю в небольшой компании программистом. Чаще всего мне приходится писать программки ленивым студентам.

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

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

В четверг после обеда от студента приходит ещё одно сообщение: «Так уж и быть, можно до вечера пятницы».

888

Сила привычки

Работаю в небольшой конторке, занимаемся поставкой различной съедобной продукции.
Имеем две базы 1С: одна управленка, а другая чисто бухгалтерия. И так уж вышло, что директория с бухгалтерией находится в директории базы-управленки. Всё это бэкапится хорошей (на мой взгляд) программкой-бэкапером.

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

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

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

870

Вдруг COUNT() ошибётся?

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

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

Разговорился с админами. Краем уха слышу, как Жека что-то бубнит под нос. Наверное, думаю, мантры программерские читает. Поворачиваюсь и вижу, что это чудо, отсортировав строки по датам, с помощью стрелки «вниз» пересчитывает строки вручную. Долго смеялись, но он их всё-таки пересчитал — когда статистику в итоге починили, количество сошлось.

853

Перегрузка лингвистического анализатора

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

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

В один день моя расшатанная дебаггингом нервная система не выдержала — в ответ начальнику отдела была выдана фраза, после которой он долго боялся меня о чём-либо спрашивать:

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

843

Бабушкины рецепты на полях

Решил тут ради эксперимента сделать из своей машины «хакинтош» — благо, болванка с какой-то сборкой Леопарда уже давно валялась. Естественно, что Mac OS на чужом железе сразу работать не возжелала и периодически «радовала» меня kernel panic. Получилось, что переустанавливать всю систему приходилось много раз.

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

841

Теперь твой экран покроется маленькими цветными точками!

Было это в далёком девяносто восьмом. Компьютеры ещё были чем-то загадочным, и те, кто хоть как-то в них разбирался, своим сленгом внушали простому обывателю уважение и страх перед неизведанным.

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

— А что это?
— Этот... весь в вирусах. (Такие вещи лучше новичку не давать, решил я).

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

— Что же мне теперь делать!

Друга успокоил, вручив свежих игр и посоветовав хорошо помыть руки.

838

Paper-ROM

Однажды я проходил собеседование на должность программиста. HR-менеджер в числе прочего спросила: «Как вы начали программировать?» Никогда об этом не задумывался, но всё-таки вспомнил.

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

Наконец красавец-компьютер был куплен. 48 Кбайт ОЗУ и процессор Z80 — это был всем известный ZX Spectrum. Подразумевалось, что дисплеем должен служить телевизор, а в качестве внешнего накопителя использоваться кассетный магнитофон. Вооружившись паяльником, к телевизору я «спектрум» подключил , а вот с магнитофоном повезло меньше — его не было. Свовсем.

Все игры были записаны на кассеты — загрузить их было нельзя, а играть-то хотелось. Пришлось писать игрушки самому — совсем простенькие, зато свои!

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

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