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

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

3378

Пробежимся по-быстренькому

Если девушка вам говорит: «Милый, @#$, иди спать уже!», то её нужно слушаться.

Второй час ночи. PHP-код. Цикл, в котором должны выводиться из базы категории товаров. «Должны», потому что на самом деле выводится только последний элемент. Грешил на базу — двадцать минут проверял данные. Поубирал кучу условий выборки, оставив банальное WHERE 1. Потом просто закомментил всё внутри цикла и поставил вывод счётчика. Не помогает! Сношу всё, переписываю с нуля — работает. Возвращаю код назад и вижу такой ужас:

for ($i=0; $i<20; $i++);

Проверяйте наличие пустого оператора после цикла — сэкономит кучу времени!

3352

Два из трёх

Написал форму с иерархическим деревом. Процедура, формирующая дерево, называется BuildTree. Кроме того, есть функция AddChild. Думаю, куда бы присобачить функцию GrowHouse, чтобы состояться как мужчина.

3326

Подставка не под кофе

Был как-то у меня такой предмет в универе — «Архитектура ЭОМ». Смысл заключался в изучении ассемблера. Весь семестр я (как, впрочем, почти все) ничего не делал. Подошла зачётная неделя, и надо было сдать хотя бы пару лаб. Решил я обзавестись компилятором (вернее, интерпретатором) ассемблера и полез поискать в сеть. Быстро нашел нужное ПО, скачал и приступил, так сказать, к работе.

Так как ассемблер на протяжении семестра изучался мною не очень усердно, решил я почитать примеры. Пролистнув пару заумных программ по сто-пятьсот строчек каждая, остановился на одной короткой. Чтобы узнать, что данный код делает, запустил прилагающийся экзешник. На экране появилось окно с кнопками «Да» и «Нет». Машинально жму «Да», инстинктивно полагая, что другой вариант завершит прогу. Окошко закрылось, и через секунду из системника вылез привод. Смысл проги я понял, однако стало интересно, что же за текст был в сообщении — ничего вроде «CD-ROM» я там не заметил. Повторно запускаю программу, на этот раз не спеша щёлкать по кнопкам.

«Нужно дополнительное место для пива?» — вопрошала по-английски программа. Да, прислушиваются программисты к потребностям простых людей!

3306

Исходники нараспашку

Спасибо незнакомым добрым людям,

Что в сей угрюмый копирайта век

Исходников рабочих не жалеют,

Спасая от провала мой проект.

Спасибо вам, коллеги-программисты,

Всем тем, кто тоже за открытый код.

Без вас нам, молодым специалистам,

Значительно б прибавилось забот.

Спасибо тем «компьютерным поэтам»,

Кому нетрудно комментарии вписать.

Что код работает — спасибо и на этом,

Но так ещё ведь можно и понять,

Прочесть, обдумать, вникнуть, научиться,

Ваш программистский опыт перенять,

И с ним ещё быстрее развиваться,

И что-то новое, полезное создать.

Мы, программисты — творческие люди.

Творец творца всегда поддержит и поймёт.

Давайте ж помогать друг другу будем,

Пусть будет он всегда — открытый код!

3277

Init, redirect, overflow

К девушкам из техподдержки провайдеров (как и к настройкам железа, ОС и программ) каждый находит свой подход. Кто-то упрощает, кто-то обвиняет (почему-то не свои кривые конечности), а кто-то взламывает, используя недокументированные возможности (по сути — знание основ или аппаратной части).

Примерный диалог с девушкой из техподдержки (с комментариями):

— Здравствуйте, %providername%, оператор %girlname%. # init-пакет

— Здравствуйте, это ваш абонент %companyname%. # reply с авторизацией

Соедините, пожалуйста, с техническим специалистом. # запрос на redirect на нужный сервис

— Что у вас случилось? # отказ в redirect из-за запроса без комментария

— Проблемы с интернетом на вашей стороне. Соедините, пожалуйста, с техническим специалистом. # повтор запроса на redirect на нужный сервис с комментарием в начале

— Что у вас случилось? # отказ в redirect из-за несоответствия комментария шаблону. шаблонная схема, значит, буфер ограничен

— У нас не пингуется ничего дальше вашего третьего хопа по данным traceroute. # пакет с данными, содержащий ссылки на внешние источники информации

— (Пятисекундная пауза.) Переключаю... # buffer overflow

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

3271

Накося, выкуси

Заказчик письменно наехал из-за не появивишегося в репорте сервера «обязательного тега», значение для которого... не предоставила программа заказчика. Поле пусто, потому что пусто (генератор так решил), но тег-то обязателен — выньте да положьте. Отфутболили подачу к аналитикам. Полученный ответ заставил разработчиков где-то даже почувствовать себя отмщёнными: «При отсутствии во входных данных нужного значения ставить строковое значение „N/A“». Тут и спокойное «на, возьми», и ехидное «накося, выкуси», да и направление просматриватся тоже достаточно чёткое.

3263

Программирование в храме уединения

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

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

3253

Погоди, Сатана

1999 год, лето, утро. Я, молодой специалист, пишу прогу для микроконтроллера. После ассемблирования и линковки объем BIN-файла получается 666 байт. Заливаю. Не работает. Курю документацию, смотрю в код.

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

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

— Не работает! — сказал я.

— Паца-а-ан! — сказал Программист.

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

Обед, я у Программиста. У него бегающий взгляд и пепельница, наполовину забитая окурками.

— Попозже зайди — буркнул программист.

— А-а-а, б#я! — подумал я и удалился.

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

— Завтра зайди! — рыкнул Величайший.

— У-у-у, б#я! — подумал я и пошёл домой.

День третий, утро. Я у Программиста. Он, похоже, не спал. Глаза красные и какие-то шальные.

— @#$ %&*#@! #%$#@$#@!!! — сказал Величайший.

Я забрал макет. Я впал в когнитивный диссонанс. Я зашёл к себе, выкурил подряд две сигареты, дописал в конце проги одну-единственную команду nop. Прога стала весить 667 байт.

Ассемблер.

Линковщик.

Программатор.

Макет.

Питание на борту.

Всё работает.

А вы говорите: материализм, материализм... Фигня ваш материализм, коллеги!

3247

Зелёнка против запретов

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

3237

Гладкая сталь точёного манипулятора

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

— А ты, я погляжу, на сайтах знакомств сидишь?

В недоумении смотрю на браузер. В неактивных вкладках подряд идут «Знакомств...», «Знакомств...», «Знакомств...»

Открываю одну из вкладок — там много кода и шапка «Знакомство с Android».