3738
Решил последовать примеру незадачливого автора линукс-будильника и научить компьютер тому же — правда, под Windows.
Итак, Govorilka, чтобы научить компьютер молвить человечьей речью. PHP, чтобы парсить яндексовские новости, почту и температуру воздуха. HiAsm, транзисторы и паяльник, чтобы включать свет сигналом в LPT. В последний момент вспоминаю о том, на чём обжегся мой предшественник — о музыке. Прописываю команду для консольного VLC, проверяю: полет нормальный, всё работает отлично.
Поставить в планировщик забыл.
3696
Дело было вечером, делать было нечего. Решил я, что хватит использовать свой старый советский будильник. Раз уж ноут сутками качает, то пусть он меня и будит, и не просто будит, а с шахматами и балеринами.
Что мне с утра надо? Погоду, новости, свежую почту. Хм... Ну, чтобы ещё и поприветствовал меня как хозяина. Шелл, festival в зубы — и вперёд.
Может, ещё добавить список завершённых торрент-закачек? Пусть он ещё вентилятор включает и мягкий свет релаксирующей лампы. А если тут прописать вот так — сработает? А если так? А почему русским голосом не говорит?
Вроде всё. Глаза привычно скашиваются в нижний левый угол экрана. Лёгкий мат: вставать через полтора часа.
echo "sh ./.alarm.sh" | at 8:00
Проснулся я только в полдень под мягкое жужжание вентилятора. Включение плеера прописать-то и забыл.
Добавляя го и гейш, не забывайте и про главную функцию программы!
3668
Лето третьего курса. Защита практики. Обсуждаем друг с другом, как да что. Один из сдающих объявил, что результаты подсчитывались у него пять суток. Стало интересно.
— Ну, там массив 65536×65536, всего восемь гигов, пришлось в файл загонять. А с файлами, сам понимаешь, работа небыстрая, особенно если нужно считать нужно переменную из самого конца.
— Ты про функцию fseek() когда-нибудь слышал? Не поверишь: можно перейти к заданному байту файла.
— Бли-и-ин!
Так программа и работала: для того, чтоб считать два байта из конца файла, она пережёвывала все восемь гигов.
3652
Друг без инета сидит, попросил скинуть ему страничек сорок Башорга. Мне вручную сохранять, понятно, лень. Накидал программку строк на двадцать: автоматом качает странички и сохраняет. Компилирую. Антивирь как заорёт: «Даунлоадер детектед! Вирусня! Держи её!» Вот так и я стал разработчиком потенциально опасного ПО.
3619
Писали с однокурсниками в качестве дипломной работы «игры для программистов». Основная идея была заимствована из Robocode.
Вкратце: игроку необходимо написать класс на языке C++, унаследованный от предоставленного ему класса. Методами этого класса реализовывается логика поведения танка, который ездит по полю брани, подбирает различные бонусы, стреляет в противников, умирает и т. п. У кого больше очков в конце боя, тот и победил. Далее исходники компилируются на стороне сервера, и игрок может сразиться с танками противников. Для удобства клиентская часть позволяла сохранять проведённые бои для последующих повторов.
Итак, ночь перед дипломом. Нужно сделать презентацию. Чтобы не быть голословными, решили написать пару ботов и сделать видео с их участием. Один бот должен был просто ездить и собирать бонусы, другой — только стрелять по другим танкам, игнорируя бонусы, третий — ездить полностью рандомно. Написали, запустили. Выяснилось, что правильно ездит только рандомный бот (и то лишь потому, что его трудно проверить). На часах уже пять утра, а ошибку найти не получается. Решили, что глюк у нас где-то в расчётах движения, и оставить следует только «рандомщика», а остальных просто не показывать.
Комиссия была в восторге — всем поставили по пятёрке. Только недавно товарищ скинул мне сохранённый бой, где все трое ездят «честно».
— Разобрался с физикой? — спрашиваю.
— Нет.
— Понял, как по существующей физике ездить?
— Нет.
— А что тогда случилось? Почему они вдруг так хорошо работать стали?
— Да у нас угол до цели неправильно считался. Исправил — и сами поехали...
Невольно вспоминается шутка о том, что русский программист может написать правильный код даже для в корне неправильного проекта.
3610
Ковыряю исходник:
if (!shift)
str+=" B/s";
else if (shift==1)
str+=" KB/s";
else if (shift==2)
str+=" MB/s";
else if (shift==3)
str+=" GB/s";
else if (shift==4)
str+=" TB/s";
else
str="n/a"; // If this happens, you really have a fast connection
3605
Программирую в среде с названием с греческими корнями. Версия среды старенькая — 2002 года, но мне хватает.
Нарыл на просторах интернета патч, исправляющий кучу мелких ошибок в среде — крупных тогда старались не делать. Загружаю проект софтинки, которую пишу и сопровождаю. Компилируется, запускается — всё хорошо.
Нажимаю кнопку «Выход» — access violation по такому-то адресу. После часового мозгового штурма баг был найден и обезврежен. Программа с ним жила уже почти год, и ошибок не было ни разу.
Как там у классиков? «Если в вашей программе не обнаружено ошибок, проверьте компилятор — возможно, ошибка есть в нём».
3581
В недалёком прошлом я написал для одной фирмы с раскиданными точками довольно удобную программу учёта кассы, склада и прочего с веб-интерфейсом — так было удобно заказчику. Сам проект был весьма интересен мне самому и в конце концов выродился в унифицированный комплекс с шаблонами интерфейса и операций над базами. Было прикручено много фич и глюков, позже превратившихся в новые фичи. Настраивать под нужды бухов это великолепие было легко, но только мне: заковыристый псевдоязык парсера с первого тычка было освоить довольно сложно, так как он сплошь состоял из сокращений для простоты написания.
Недавно ковырял «жёлтый глюк» и с ужасом пришел к выводу, что творение моих рук от этого ушло недалеко. Припомнил и случай, когда мне довелось услышать пятиэтажный мат одного из местных админов.
Руки сами набрали rm -rf ~/web_project/buh_prj.
3575
Однажды у группы студентов-программистов разговор зашёл о проблемах программирования бронетанковой техники. Больное коллективное сознание пришло к выводу, что главной проблемой является полная беззащитность программиста после начала компиляции и до рендеринга брони.
3536
Работал я как-то программистом в компании, которая клепала разнообразные утилиты: оптимизировать то, подкрутить это... Софт предназначался в основном для американских домохозяек и временами действительно мог облегчить жизнь юзверю.
Как-то мы писали проект, который состоял из графического интерфейса и ядра. Дописали, зарелизили. Продажи полезли вверх, пользователи рады, жалоб нет, баг-репортов минимум, менеджеры не нарадуются. И тут я обнаруживаю, что в мир ушла версия с отключённым ядром — вырубили для отладки, а подключить забыли. Программа представляла из себя голый GUI. Долго думал о силе самовнушения наших пользователей.