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

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

7935

Ку-ку, Берлин!

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

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

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

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

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

В итоге переговоры в Берлине провалены, часть сотрудников в Кукуеве просто потеряна, а другая делает совсем не то, что от них ожидали. И если срыв берлинских переговоров ещё как-то можно было пережить, диссидентов реально было поймать и уволить, то потеря сотрудников становится полным крахом для компании. Когда вы пытаетесь позвонить захваченному сотруднику, сидящему в кукуевском подвале, происходит unhandled exception.

* * *

Именно так чувствовал себя управляющий поток в моём приложении и созданные им объекты, когда диспетчер отправил их на обработку не в те очереди из-за неправильного if().

7911

Отказ по тайм-ауту

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

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

Неожиданно на пороге комнаты появляется Галочка, сорокалетняя сотрудница кафедры информатики, и громко заявляет:

— Жора, вы не могли бы посмотреть моё тело?

Разговоры замолкают. Головы поворачиваются к двери, челюсти падают, глаза расширяются. Жора выдавливает:

— Э-э-э… Пожалуй, нет.

Галочка смотрит на мальчиков, мальчики смотрят на Галочку. Наконец та уточняет:

— Ну, тело моей программы, оно там ошибку выдаёт.

Мальчики выдыхают. Галочка краснеет и убегает. Жора нервно хихикает.

7903

Широковещательно

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

Вдруг мне понадобилось сходить в другой отдел. Проходя мимо одного кабинета, я увидел, как принтер настойчиво выплёвывает листы. Так было в одном, другом, третьем кабинете подряд. Моя программа настойчиво обошла все принтеры в локальной сети, а так как ограничения я не поставил, то на каждом принтере скопилось порядка тридцати заданий. Больше всего не повезло принтеру у кладовщицы, не умудрённой знаниями о технике. Когда принтер начал печатать сам, она испугалась. Жалко человека. Хорошо, что удалось отмазаться, сославшись на технический сбой.

Всегда ставьте ограничение в цикле и будьте внимательны.

7893

А теперь — дискотека!

На втором или на третьем курсе колледжа писали лабы на С++ Builder 6. Лабы эти все я сдавал быстро, и всегда оставалось время до конца занятий на всяческие эксперименты.

Один раз я баловался с функцией Random() и цветом формы. Сделал почти прозрачную форму, поставил ей разворот на весь экран при запуске, убрал бордюры, а на форму кинул таймер, который с дикой скоростью рандомно менял её цвет. Поменял на десктопе иконку запуска Билдера на иконку моего эксперимента, после звонка свалил и забыл о замене.

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

Препод заявил, что я украл у него 15 минут времени и испортил комп. Мы пришли в кабинет, где шла пара; я показал, как избавиться от адского цветного моргания рабочего стола (Alt+F4). Вернулись в кабинет завотделением, она для вида попросила меня больше так не делать, я для вида пообещал.

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

7882

А мы тут ни при чём

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

writeln('Введите строку');

readln(str);

writeln('Сколько раз в этой строке встречается подстрока "мн"?');

readln(n);

writeln('Такая подстрока встречается ',n,' раз');

7845

Пи-пижды пи-пи-пи

В начале девяностых в школе, где я учился, все БК-0010 отдали ученикам после того, как их заменили на IBM PC. Одна машина досталась мне.

Наступило лето, собрались на дачу. Я стал уговаривать родителей взять компьютер с собой. Они очень удивились, ведь там нет телевизора. Но я уговорил: «Вот увидите, я и там найду ему применение».

И нашёл. Не поверите, но я вслепую написал на Бейсике Вильнюс программу-калькулятор. Работала она так: вводишь выражение, она считает и выводит ответ через динамик морзянкой.

7795

Куй тебе, а не железо

Впервые в жизни писал программу для общения с микроконтроллером через COM-порт. К концу рабочего дня выражение «послать NAK» стало восприниматься несколько иначе.

7794

Вернулся с true

Подвязались как-то раз на шабашку: собрать подвесные потолки у одного клиента. Дело нехитрое, и мы с энтузиазмом принялись за работу. Среди нас был кодер до мозга костей.

В один из таких шабашных дней нужно было спуститься на склад за траверсами (основа каркаса потолка), причём мы не могли решить, сколько их нужно: 15 или всё-таки 16. Пресекая споры по этому вопросу, Валера сказал, обращаясь к кодеру:

— Вася, ну глянь, что там в пачке, и, наверное, тащи её сюда.

— Не вопрос.

Славный программист выполнил задачу на все сто процентов! Этот чудак, не заметив начатую пачку, взял новую, прочитал на этикетке, что в ней 20 штук, вскрыл её, пересчитал содержимое и принёс — правильно, все 20 штук.

Корректно ставьте задачи, особенно кодерам.

7782

Не прошёл по цвету глаз

Давным-давно, когда ПО не стеснялось подменять стандартные библиотеки на свои, а компы были чем-то полумагическим, я был маленький и глупый, поэтому сидел на винде.

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

В те времена я увлекался программированием на С и даже думал идти учиться в IT-сферу, поэтому я решил попробовать портировать свои досовские программы на Mandrake. Это сейчас найти документацию легко и в магазине и в сети, а тогда интернет был довольно дорог, Фидо в наших местностях не пошло, а книг по линуксу в магазинах не было. Поэтому мне пришлось ограничиваться встроенным man. Через него был найден компилятор gcc.

Сперва gcc ругнулся на conio.h. Ну и фиг с ним: я оттуда только getch() использовал. А потом он заявил на все косинусы и синусы: «Undefined reference». Мозги, испорченные виндовыми и досовскими IDE, долго не давали понять, что на самом деле это линковщик кричал о неподключённой библиотеке. Потом я, правда, догадался, но вместо -lm давал опцию -l libm.a, на что ld резонно заявлял: «Cannot find».

В итоге бросил я это дело и не пошёл учиться на программиста, так как понял: если я не могу заставить скомпилироваться программу под линуксом, мне там делать нечего.

7780

Антиантикопипейст

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

Автор скриптов оперативно доступен не был, поэтому начали копать. Дело дошло до пошаговой отладки и попытки понять, почему две строки «Заказ» и «Зaказ» (проверялся заголовок письма, дабы не реагировать на спам) система считает различными.

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