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

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

9521

Нажмите длинную клавишу

Как надоели истории про то, что пользователи тупят при надписи «Press any key»! Разработчики, а вы не пробовали сами немножко подумать?

«Нажмите любую клавишу». Окей, любую клавишу на клавиатуре? Замечательно, я люблю боковые кнопки. Буду тыкать в Ctrl, Alt, Shift, Caps Lock. Как — не те? А что, это не любые? Или не клавиши? Или не на клавиатуре?

«А что же делать? Не перечислять же все кнопки, на которые можно нажать!» — скажете вы. Почитайте умные книги, ребятки. Алана Купера почитайте. Неужели вам так трудно написать: «Press Space»?

9505

Массивный фейл

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

К чему это я? В начале восьмого класса отправил он нас с другом на олимпиаду по предмету, заодно и сам поехал. И я, пожалуй, до конца своих дней буду помнить его вопрос после просмотра заданий: «А что такое массивы?»

9499

Everyday I’m shuffling

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

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

9468

Смерть потомка

Я хоронил процесс потомка,

Слезами капал на ядро…

Свободна память, нет и гонки.

Он генерировал добро…

Сигнал пришёл — и он охрип.

И всё. Не помню, онемев, я,

Как унаследованный тип

Сажал бинарные деревья.

9453

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

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

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

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

9452

Всё в порядке

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

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

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

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

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

9450

Ноль — тоже результат

Универ, конец семестра. С большим трудом сдаю всё вовремя, в отличие от многочисленных друзей, которым требуется моя помощь: кому что-то написать на С++ или ассемблере, кому объяснить, как работает, а кому и отдать свою лабу, причём не только исходники, но и распечатанные отчёты.

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

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

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

— Ничего!

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

— Ввёл.

— Жми энтер.

— Ничего!

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

— Ничего!

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

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

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

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

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

9430

This kills the bug

Что может быть лучше, чем утром ранним,

Когда мир росою и солнцем пропах,

Раскинувшись вольно у окна на диване,

С довольною рожей препарировать баг?

Он подло в мой новенький модуль закрался,

Он мне, жучара, хотел навредить.

Но в сети отладчика быстро попался,

Теперь интересно ему будет жить...

Я буду кормить его строчками кода

И медленно лапки ему отрывать,

Чтоб его изучить досконально природу,

Чтоб новых ошибок не допускать.

А то я их знаю: бывает, прихлопнешь,

Не думая, лишь бы убить, одного —

И тысячи, тысячи их, будь я проклят,

Сбегутся кормиться на трупе его!

Что ж, гостю незваному — долгие пытки.

Вы не подумайте, я не садист!

Губить беспощадно любые ошибки —

Моя работа. Я программист.

9394

Вам бы в небо

Услугу за услугой

Заказываю ловко,

Порадуем коллег мы

Облачной обновкой.

Данные, хватит в локальной машине околачиваться!

Облако и престижнее, и выше оплачивается!

Довольно деньги тратить понапрасну —

Переходи на сервис безопасный!

Облако, сервис, безопасные данные,

Ресурсы надёжные и виртуальные —

Вот то, что поможет для вашей компании

Успех обрести, доход, процветание!

Злой сисадмин мечет и рвёт,

Главный бухгалтер жить не даёт:

«Офис поставь», «настрой 1С»…

Пора ему в облако — всё это там есть.

Разработка облачных приложений, как видите, стимулирует творчество.

9382

И всё же happens

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

1. Такое не случается.

2. Такое не случается на моей машине.

3. Такое не должно случаться.

4. Почему оно случилось?

5. А-а-а, понял!

6. А как это вообще работало?

Бонус:

7. В SVN коммиты неудачно наложились.

8. Теперь мы будем писать тесты.