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

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

3798

Позвольте пригласить вас на короткий менуэт

Я любитель поэксперементировать с осями: сейчас у меня установлены четыре системы, в том числе малоизвестная MenuetOS, написанная на ассемблере.

Перестал работать интернет. Решил сразу позвонить в техподдержку:

— Здравствуйте, не работает интернет.

— Нажмите «Пуск», дальше...

— У меня не Windows, — перебиваю я.

— Какая у вас система?

— MenuetOS.

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

3775

Жопорожец-люкс

Любителю внедорожников на заметку. Когда-то я тоже учился на разработчика ПО и размышлял так же. Начав работать по специальности, моё отношение к происходящему изменилось кардинально. Что было бы, если бы «подготовка авто к трофи» проводилась в рабочих условиях программиста в российской компании?

— Нам нужно сделать проходимое авто для нужд компании. Вот техзадание. Вот сроки исполнения.

— Исходя из спецификации, будем делать на базе Хайлюкса.

— Ой, а в бюджете денег только на Запорожец.

— Тогда мы не уложимся в сроки. Объём работы большой.

— Не наши проблемы. Нужно уложиться.

— Ну, «жопорожец» — так «жопорожец». Уложиться — так уложиться...

Так-с, что у нас там? В ТЗ указана лебедка — приаттачили на стандартное место. Сроки жмут, качественно приварить не успеваем, авось выдержит. А оторвётся — проведём доработку по отдельному ТЗ. Идём дальше. Колёса. Покупка в бюджет не заложена, а те, что на складе есть, не влазят, хоть полкузова отрежь. Будем делать бигфут.

Наспех варится монстроподобная конструкция, прикручиваются колёса, весь этот ужас крепится к днищу холодной сваркой (электросварочный аппарат сломался от нагрузки, отдел активов уже три недели покупает новый). ЗАЗовский движок получившееся чудище с места не может сдвинуть. Другой движок в ТЗ не подразумевается. Будем выкручиваться: из двух газонокосилок, бензопилы «Дружба», моторчика из украденного у главбуха вибратора, пары гидронасосов и какой-то матери делаем новый агрегат. Драндулет ездит резво, но недалеко: бензина не хватает. И почему-то при езде подпрыгивает. Спёрли бак со служебного ЗИЛа. Патчим систему, чтобы не прыгала.

Оп-па! Дедлайн подкрался незаметно — завтра это надо показать на совете директоров. Всю ночь латаем дыры, прикручиваем пользовательские хотелки (меховой руль, сиденья с массажёром мозжечка, биотуалет, кофеварка), зарабатываем профессиональное красноглазие.

Презентация:

— Всё ништяк, только почему оно не летает?

— Так в ТЗ внедорожник, а не самолёт.

— Так бездорожье разное бывает... Завтра чтоб летал.

Идём обратно в мастерскую, пришпандориваем крылья, найденные на складе. Не взлетает. Делаем тумблер на антиподпрыгивающий патч. При отключённом патче со второго-третьего прыжка удалось взлететь. Вроде успели. Уже светает.

— Всё ништяк, но крылья мешают в лесу ездить. Да, мы тут посовещались — нужен вертикальный взлёт. Сроки? Ещё вчера.

Отрезаем крылья на фиг. Решено использовать винты от вертолёта. Из-за особенностей конструкции делаем продольную двухвинтовую схему: второй винт вращается родным двигателем Запорожца. К винтам крепим гидравлическую систему складывания. Крепим ещё один бак от служебного ЗИЛа (тот, что поставили взамен украденного): старого не хватает на длительный полёт. Тумблер антиподпрыгивателя убрали: при отключении патча в воздухе винты складываются. Заметку жирным текстом об этом в мануале юзеры игнорируют.

— Вот теперь другое дело. Но оно теперь в болоте тонет.

А как вы хотели? Масса есть масса. Купим газонаполняемые понтоны и систему их автоматического надувания («ой, каждый раз сдувать-надувать неудобно»). Ах да, бюджет... Триста воздушных шариков запихиваются в капроновые колготки, снятые с отдела продаж. В комплект идут два пленных китайца: надувать-сдувать.

Процесс повторяется до бесконечности, пока весь проект не заворачивают, а отдел разработки не лишают всех премий. Причина? Гендиректор во время поездки пролил кофе на свои штаны, от неожиданности уронил iПонт 4 в биотуалет и осерчал на несчастное транспортное средство.

Жизнь — она такая штука, ага.

3760

Быдлотрофи

Учусь на кодера, параллельно подрабатываю по специальности, иногда делаю курсовые и лабы людям с моего потока. Есть у меня увлечение — по бездорожью ездить. Так вот, глядя, как пишут некоторые мои «коллеги», задумался я: что было бы, если б «программисты» готовили машины к трофи?

Так, есть УАЗик, надо подготовить его. Первым делом что? Правильно — лебёдка. Поставим её вместо левого бака, а сам бак переставим на крышу. Что? Работает не так? Ладно, поставим ещё одну под водительское сиденье. Опять не работает? Должна тянуть вперёд? Поставим кучу роликов, чтоб выходило спереди, вместо правой фары. Не нравится? Ну так работает же почти как надо — сойдёт.

Дальше. Колёса увеличенной размерности. Что? Должны быть одинаковыми? Ладно, клонируем какое-нибудь и поставим. А? Резина направленная и должна быть направлена «ёлочкой» в одну сторону? Зачем, работает же? Ладно. Что, при этом она должна ещё и остаться одного размера? Вы требуете слишком многого — и так работает. А то, что диски на каждом колесе имеют разный вылет от +22 до –40, так это не баг, это фича!

35" колёса с одной стороны и 36" с другой не лезут в родные арки. Порезать арки и поднять кузов на 6 см? Зачем? Арки мы заварим вообще, а кузов поднимем на метр, а чтоб держался — приварим. Что? Устойчивость ухудшилась? Приделаем вам боковые опорные колёсики, как на детском велосипеде. По лесу будет трудно ездить? Мешаться, деревья цеплять будет? Сделаем складными — фича же! Залезать неудобно? Приделаем выдвижные гидропневматические ступеньки, которые будут с прикольным «пши-и-их» выезжать из-под днища.

Поставим бамперы, самые тяжёлые и крепкие, какие найдём. А нашли мы несколько рельс, вот из них и сделаем, будет прочно. Что? В болоте тонуть будет? Ладно, приделаем понтоны с гелием по бокам. Ага, подпорки и понтоны конфликтуют между собой. Сделаем так, чтобы двигатель не заводился, если подпорки и понтоны нужны одновременно — пусть выбирают.

Что? Родного двигателя в 75 л. с. не хватает, чтоб тянуть эту шайтан-повозку? Ерунда, приделаем ещё один, на 300 «лошадок». Как объединить с родным? Поставим спереди и сзади по колесу, которые будут приводиться в движение новым двигателем. Поворачивать трудно? Ладно, выкинем эти два колеса, поставим ещё пару мостов. Будет у нас восемь колёс, два рулевых механизма, причём второй будет управляться педалью сцепления. Сцепление? На кнопку, прям на руле.

Неудобно? Не нравится? Привыкайте — вам на этом ездить.

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 по такому-то адресу. После часового мозгового штурма баг был найден и обезврежен. Программа с ним жила уже почти год, и ошибок не было ни разу.

Как там у классиков? «Если в вашей программе не обнаружено ошибок, проверьте компилятор — возможно, ошибка есть в нём».