Истории с тегом: программы

Всего историй: 796

973

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

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

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

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

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

971

Зелёный змий, истребляющий баги

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

С утра Костян был обнаружен за компом. Он сидел, держась за больную голову, и бубнил себе под нос одну фразу: «Как же я это написал?..»

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

945

Профессиональный синхронизатор БД

В 2002 году я работал автоматизатором в городском отделении пенсионного фонда. Где-то в апреле пришла из Москвы БД с данными пенсионеров-участников войны с графической оболочкой на Visual FoxPro. Задача: открыть в одном окне эту оболочку, в другом — нашу пенсионную базу и сверить данные по всем имеющимся пенсионерам: ФИО, адрес и ещё около тридцати пунктов.

Трудность в том, что пенсионеров в базе несколько тысяч, а интерфейс оболочки был написан в каком-то особо извращённом стиле. За давностью лет подробностей не помню, но для просмотра параметров нужно было нажать правую кнопку на фамилии, потом клавиш 5 на клавиатуре, а для перехода к следующему полю ещё какой-то хитрый аккорд.

Посмотрев на этот кошмар, я понял, что задача проста: надо лишь вытащить из нашей основной БД (благо, тоже написанной на FoxPro) необходимые данные по этим пенсионерам и поместить их в столичную базу. За пару часов пишу программку, дампящую из одной базы нужные поля и заливающие их в другую. Через двадцать минут, когда винчестер перестаёт шуршать, открываю московскую оболочку — всё отлично!

Отдаю работу начальству со словами: «Давайте остальным отделениям мой скрипт отправим, чего они зря мучаться будут?» В ответ получаю гневную тираду о том, чтобы и мыслей таких не было — ни в коем случае нельзя никому рассказывать о том, как у нас всё быстро получилось.

Потом я расспросил коллег из соседних отделений, как они справились с этой задачей. Все, кроме меня, стали строго следовать инструкциям Москвы и, потратив количество времени, прямо пропорциональное объёму БД, всё сделали вручную. В отделении с примерно нашим количеством пенсионеров работала пара айтишников: один смотрел в одну базу и читал записи вслух, другой сравнивал со второй базой и впечатывал отличия. Ушло у ребят на это две недели.

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. Получилось, что переустанавливать всю систему приходилось много раз.

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