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

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

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. Долго думал о силе самовнушения наших пользователей.