Рубрика развивается при поддержке
Разработка
Ekaterina B.
414

На ночь глядя: кошмары программистов

Принято считать, что в преддверии Дня всех святых творится всякая чертовщина. Стоит просто спуститься в метро 31 октября после 22.00, и вы лично в этом убедитесь (вангуем: в этом году балом будет править образ Джокера). А еще говорят, что кодить в Хэллоуин - плохая примета: можно ненароком вызвать призрак фортрана (но это не точно).

В закладки

К праздничку программисты Университета ИТМО и проекта CS.MONEY поделились парой историй, от которых у кого-то волосы встанут дыбом (ну или просто захочется сделать *facepalm*).

Источник: Stackoverflow

Наталья Ханжина, старший научный сотрудник лаборатории машинного обучения Университета ИТМО

Ты не разработчик, если не написал свой собственный компилятор. Такой обряд посвящения обязательно должен пройти если не любой разработчик, то, как минимум, каждый системный программист. Свой компилятор от анализа до генерации кода я написала лишь со второго раза, будучи уже в магистратуре ИТМО. Писала на плюсах (C++), над подмножеством языка Pascal (хаха) и транслировала в ассемблер NASM. Несмотря на все свои достижения, по сей день считаю это одной из самых значимых вещей, которые сделала в качестве разработчика. Пусть <в стол> в закрытый репозиторий, но все же есть чем гордиться.

Конечно же, это было непросто. Так, в очередную из бессонных ночей перед дедлайном, когда объем проекта уже значительно вырос, я пыталась отловить баг и в какой-то момент пришла в тупик. Казалось, я абсолютно перестала понимать, что происходит в коде и почему условный оператор передает управление одной ветке, а не другой. Важно знать, что, как я упоминала ранее, это была уже не первая попытка написания компилятора, а с прошлого раза на тот момент минуло уже 4 года.

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

Единственный комментарий к его вопросу был следующим: “WHY ON EARTH DO YOU WANT TO USE IT???!”. Эта формулировка была настолько смешной и исчерпывающей, что я решительно отказалась использовать данный оператор, а фраза надолго стала мемом у нас с коллегой. Самое забавное, что на следующий день на свежую голову я обнаружила, что именно использованием этого оператора и вызывался баг :) То есть когда-то очень давно зачем-то я тоже решила его использовать, и так и оставила.

Как жаль, что обучать нейронки не так весело :)

Георгий Заморин, Head of analytics проекта CS.MONEY

Наша компания занимается площадкой для обменов для игр Counter Strike и Dota. И, конечно, довольно часто подвергается различного вида атакам: например, когда кто-то хочет создать конкурентную площадку и с этой целью скупает огромное количество предметов с нашей. Предупредить это можно на этапе пополнения кошелька: как только человек пополняет его на значительную сумму или совершает подозрительные транзакции, его аккаунт блокируется. В свое время я написал этот скрипт, и это спасло нас от множества атак. Но что если честный юзер действительно захотел купить, например, какую-то дорогую вещь на площадке? На этот случай существует служба поддержки.

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

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

Габриэл Жезус​ Фото: Andrew Couldridge/Reuters

Максим Буздалов, руководитель лаборатории "Эволюционные вычисления" Университета ИТМО, чемпион мира по программированию

Есть люди, по сравнению с которыми моя жизнь скучна и неинтересна. Все, к чему они прикладывают руку или мышку, имеет тенденцию ломаться, виснуть и глючить. Иногда их называют “прирожденными тестировщиками”: они способны находить ошибки в таких программах, которые без единого сбоя работали в течение месяцев и лет. “Две активные вкладки в браузере одновременно, слабо?” - далеко не самое удивительное, что можно от них услышать.

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

Один из этих людей - мой брат. Как-то раз он делал доклад на конференции разработчиков. Вот избранные цитаты из его рассказа об этом:

“Макс, существует ли вообще ПО, которое не глючит и работает как надо хотя бы семь минут?!”

“Как можно демонстрировать инструмент на ноуте, у которого регулярно отваливается мышка и самостоятельно перезапускаются иксы?”

(Примечание редактора: “иксы” - это графическая подсистема юникс-подобных операционных систем; перезапуск иксов на презентации доклада по эффекту сравним с перезагрузкой компьютера, разве что происходит не так долго.)

“Как долбаная убунта решила, что моя корневая папка - это ее десктопная папка?”

(П.Р.: Убунта = Ubuntu - распространенный дистрибутив операционной системы GNU/Linux. Приблизительный аналог описанного явления под Windows - если бы на рабочем столе вдруг оказалось все содержимое папки C:\Windows\system32.)

“Почему каждый раз при перезапуске эклипса java падает с сегфолтом?!”

(П.Р.: Java - широко используемый язык программирования и сопутствующая ему экосистема; сегфолт = segmentation fault, одна из разновидностей падения программы, связанная с попыткой доступа в недоступную ей память; у Java такого быть ну совсем никак не должно.)

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

(П.Р.: Эклипс = Eclipse - большая и навороченная, но при этом открытая и бесплатная, среда разработки приложений на самых разных языках программирования. В ней может глючить много что, но только не это!)

“У меня даже интернет на телефоне пропадает, если его на коленку положить.”

И все это - в один день.

В общем, бывают люди, которые не отмечают Хэллоуин. Они в нем живут.

А что инфернального случалось у вас? Поделитесь в комментариях.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Ekaterina B.", "author_type": "self", "tags": [], "comments": 1, "likes": 6, "favorites": 2, "is_advertisement": false, "subsite_label": "dev", "id": 90666, "is_wide": true, "is_ugc": true, "date": "Thu, 31 Oct 2019 22:42:05 +0300", "is_special": false }
Облачная платформа
Основа для цифровизации бизнеса
0
{ "id": 90666, "author_id": 387034, "diff_limit": 1000, "urls": {"diff":"\/comments\/90666\/get","add":"\/comments\/90666\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/90666"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 235819, "last_count_and_date": null }
1 комментарий
Популярные
По порядку
0

'А что инфернального случалось у вас?'

Прочитал эту статью

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }