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

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

3926

Здесь будет заголовок

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

Не забыть заменить этот файл на текст настоящего ЛС перед компиляцией.

Надеюсь, хоть в самом драйвере подобные промахи не попадутся.

3913

Дух времени

На Delphi я с 1998 года (тогда это был Delphi 2). Лет пять использовал Delphi 3 — подходящий компромисс между мощностью и компактностью. Наловчился конвертировать формы из текстового формата Delphi 4 в двоичный Delphi 3; в помощь себе написал компонент TObjectList — в отличие от TList, он умел уничтожать объекты, когда те будут не нужны.

На моей первой работе стояла седьмая версия Delphi. Я притащил туда свои модули, в том числе и objlist. Жил — не тужил, программировал тысячи строк, читал MIDI и писал PNG, пока случайно не нажал F1 на идентификаторе TObjectList. Оказалось, такой объект в Delphi 7 уже есть! Телепатия?

Портирование свелось к замене objlist на contnrs.

3889

Чемпионат мира по конуростроению

По ходу деятельности мне приходится тесно сотрудничать с командами программистов из разных стран. Конечно, везде попадаются как дятлы, так и светлые головы, но статистические закономерности всё же выявляются. Предположим, дана задача построить конуру для собаки.

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

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

Программисты из постсоветского пространства строят сооружение из листов брони. Такое сооружение не прошибить даже выстрелом из пушки. Собаке перед входом вешают на шею автомат Калашникова и связку гранат. Если конуру требуется перенести на полметра в сторону, вызывается бригада рабочих с отбойными молотками и башенным краном.

Китайские программисты строят нечто вроде борхесовского сада расходящихся тропок. Не удивляйтесь, если выход не будет совпадать со входом: вход на крыше, а выход — дырка в земле через дорогу. Собачья миска привинчена к левой стене, а косточка — к правой.

Французские программисты обшивают будку розовыми кружевами и опрыскивают духами. Очень обижаются, когда я пытаюсь эти кружева отодрать, обнажив скелет конструкции. Это же так неэстетично!

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

А мы с напарником — что ж, мы и есть те самые собаки, для которых все это строится.

3880

О как!

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

lada2110.maxVelocity = 150;

fordScorpio.maxVelocity = 180;

oka.maxVelocity = 350; // А почему бы и нет?!

Как говорится, поддержим отечественного производителя.

3874

Семикрылый восьмиканал

Начальник притащил I/O-модули для текущего проекта. На одном написано: «8-Channel Universal Anal», а на следующей строчке: «og Input Module». Долго ржали. Сразу стало понятно, что за работа предстоит.

3872

Шеф не в себе

Знаете, программер — это диагноз.

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

По-моему, сотрудники не привыкли только к одному: я их генеральный директор.

3861

Светопреставление местного значения

Случилось мне как-то раз шесть часов подряд делать курсовой проект в Автокаде. Когда чертежи стали кружиться перед глазами, я понял, что нужна передышка. Свернув окно программы, я запустил любимую браузерную игрушку и приступил к прокачке персонажа. Мозги отдыхают, указательный палец работает. Однако многочасовая работа дала о себе знать: палец устал. Немного поразмыслив, я пришёл к выводу, что геймплей игрушки позволяет в некоторой мере автоматизировать процесс, если использовать программку, с большой скоростью кликающую мышкой в рандомные точки игрового экрана. По идее, это позволило бы получать экспу, ресурсы и предметы.

Сказано — сделано. Подняв мануал по WinAPI, я в пять минут написал простейший автокликер, задал скорость и количество повторений, и с чувством выполненного долга запустил программку. Нескольких секунд паузы хватило, чтобы переключиться в Оперу. Тут я понял свою первую ошибку: полем деятельности я зачем-то назначил весь экран.

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

Я осознал свою вторую ошибку: я не задал хоткей для отмены апокалипсиса, а ресетом воспользоваться не мог — автосохранения в Автокаде отключены, а вручную в последний раз я сохранялся часа два назад и с тех пор сделал большую часть сложной работы. Мне оставалось лишь скрестить пальцы и ждать.

Через двадцать минут, которые показались мне вечностью, светопреставление прекратилось. Убив полсотни лишних окон, я с удивлением обнаружил, что ничего страшного не случилось. Вся нужная информация осталась на своих местах, чертежи без проблем удалось сохранить — вот только футболку на мне можно было выжимать. Разумеется, работать в ту ночь я уже не мог и решил продолжить утром, на свежую голову.

Не спешите компилировать всё, что только что написали.

3859

В ста одёжках на криптозастёжках. Часть вторая

Настроив многоступенчатую удалёнку, я обнаружил, что офисный VPN-клиент под виртуалкой блокирует все мои домашние соединения и соединение с интернетом — можно ходить только на разрешённые офисные IP. То есть в скайп и аську не выйдешь, справочник в интернете не посмотришь, на FTP не зайдёшь. Добавление всевозможных сетевых соединений на виртуальную машину результата не дало — всё блокируется наглухо.

Выяснилось, что VPN-клиент не блокирует расшаренные для виртуальной машины папки, подключённые как диски. Решение: создаём расшаренную папку на виртуалке. Туда будут по специальному шаблону кидаются файлы «соединений», наличие и изменение размера которых свидетельствует о приходе новых данных. Хост-машина будет следить за файлами и пришедшие данные отправлять старшему HTTP-прокси. Виртуалка станет следить за файлами и пришедшие данные отдавать браузеру, у которого мы пропишем адрес прокси 127.0.0.1.

Пишу утилиту «ФайлоПрокся v1.0».

Было бы скучно, если бы этим всё кончилось. В офисе запретили интернет — мол, чтобы не бездельничали на рабочих местах. А мне справочники по работе нужны, программистские форумы. Мне что, через Гугл-переводчик их смотреть? Нет, это редкостное извращение. Стоп! У меня ведь есть виртуальная машина в офисной локалке! Проблема: ей разрешены только исходящие соединения, к ней подключиться невозможно, да и вообще её в сети не видно. Решение: пусть виртуальная машина сама ломится на офисную с предложением подключиться.

Пишу утилиту «ПроксиМост v1.0».

Финальный тест: сидим дома. В виртуалке заходим по удалёнке на офисный комп, запускаем ПроксиМост-Клиент, выходим на виртуалку, запускаем ПроксиМост-Сервер (пошёл коннект на офисный комп, мост «виртуалка-офис» налажен), запускаем ФайлоПрокси-Клиент, выходим на хост-машину, запускаем ФайлоПрокси-Сервер (появляется HTTP-интернет на виртуальной машине, мост «хост-виртуалка» налажен).

И вот когда заработало это, я понял ответ на последний вопрос из предыдущей истории: нет, это не лечится, и я действительно законченный извращенец! Сомневаетесь? Держитесь: всё это написано на VB6!

3838

Честное машинное слово

Пятница, ночь. Стою в круглосуточном захолустном магазинчике. Пиво выбираю, не спешу. Залетает знакомый сосед по подъезду, подлетает к кассе и с ходу выдаёт: «Три! Нет, семь больших банок вот того энергетика и пять, нет, девять вот тех сэндвичей!» Кивает мне, забирает сдачу и заказ, убегает.

Понедельник, вечер. Сижу у подъезда, курю. Подходит то же чудо, глаза — огонь, но улыбка до ушей. Пили все следующие выходные. Не спорьте с отличным программистом, тем более на семь литров «Белой лошади».

3807

Стрелки-то не переводи

21 января. Появилась срочная задача: перевод нашей программы на иностранный язык.

31 марта. Сказали программистам и попросили собрать ресурсные файлы, которые надо переводить: сообщения, хелпы, всё такое.

1 апреля. Программисты переезжали в другую комнату и отмечали это событие.

2 апреля. Файлы собрали и отдали переводчикам. Те заявили сроки «недели в две».

19 апреля. Пришёл вопрос от переводчиков, что значат те или иные строки.

22 апреля. Программисты ответили.

21 мая. В задаче появился комментарий, что перевод сделан.

28 мая. Начальство начало пинать программистов, чтобы они сделали установщик для переведённой программы. Программисты начали пинать переводчиков, чтобы те отдали переведённые файлы.

31 мая. Переводчики переезжали в другую комнату и отмечали это событие.

2 июня. В задаче на перевод появился комментарий: «К сожалению, при переезде в новый офис мы потеряли системный блок. Поэтому теперь перевод будет недели через две, не раньше».