Читать «Bash IT Happens Истории ## 9401 – 9500» онлайн - страница 21

Bash.org.ru IT

Сбросил самым близким друзьям все свои лабы, соседу по комнате вручил пак отчётов (поменяй титульный лист — и можно сдавать) и уехал на две недели домой. Через несколько дней в семь утра звонит мне этот самый сосед:

— Твоя лаба на асме не работает, я её уже три дня сдать не могу.

— Что выводит?

— Ничего!

— Введи строку на английской раскладке, чтоб было несколько пробелов.

— Ввёл.

— Жми энтер.

— Ничего!

— Запусти батник, который пересоздаёт EXE-файл программы. Повтори последние действия.

— Ничего!

— В смысле, программа вылетает?

— Нет, не вылетает.

— Что-то выводит?

— Ничего не выводит. Точнее, ноль выводит.

— Виталик! Ноль — тоже результат!

#9451: Свежий взгляд на монитор

15:00 25.06.2012, IT happens

— Мы тут случайно уронили освежитель воздуха на клавиатуру, и у нас картинка на мониторе повернулась на 90 градусов.

Зашёл в настройки. Ню-ню. Сомневаюсь, что освежитель воздуха при падении мог нажать Ctrl+Alt+стрелку. Феерические идиоты!

#9452: Всё в порядке

13:00 26.06.2012, IT happens

Да, история странная, но может помочь в осознании проблем проггерства.

Я был на втором курсе, девочка моя тоже. Готовила она слабо. На моё замечание, что макароны просто сварены, спросила: а как можно ещё? Я и ответил, что их обжаривают.

Она и обжарила в следующий раз. Перед варкой.

Задавая алгоритм, обязательно перепроверяйте порядок действий. Не раз это мне помогало отлавливать глупые ошибки в коде.

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

#9453: Байты вверх тормашками

13:00 26.06.2012, IT happens

Обычный компилятор gcc для какой-то ARM-платформы, обычная функция, внутрь которой передается двухбайтовое целое число. Внутрь функции попадает цена на дрова, которая ну никак не коррелирует с передаваемым снаружи числом. Молодой программист вторые сутки долбится лбом о клавиатуру и просит помочь, а я, едва взглянув, вспоминаю похожие симптомы про передачу word’а из микрософтовской библиотеки в борландовую и наоборот.

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

А дело в чём? Прараметры в стеке выравниваются на четыре байта. А разработчики компилятора просто не договорились, какие два байта из четырех считать нужными. Тот, кто писал генерацию кода для вызова функции, считал, что это два верхних байта в стеке, а тот, кто писал доступ к параметрам из тела функции — что нижние. Между микрософтовскими и борландовыми stdcall-функциями подобная шняга была, что и помогло быстро решить проблему. Плохо, когда компилятор сам с собой не дружит…

#9454: Желе с окошками

15:00 26.06.2012, IT happens