Как стать автором
Обновить

Комментарии 66

Пасхалка в спектограмме саундтрека Doom Eternal от Aphex Twin

Зачем разработчики ПО прячут пасхалки в коде

Просто хочется заняться творчеством, а не рядовым созданием продукта.

Там графика в основном, а не код

Скорее раздудые фреймворки с кучей ненужного функционала)

ненужные ресурсы, как правило, удаляются на этапе сборки релизных билдов

в играх, 90% текстуры, 5 меши, 3 анимации, потом звуки, остальное мелочь и код. на фоне текстур, код практически ничего не занимает.

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

Вот наша игрушка в стиме

Textures 25.3 gb 90.0%
Meshes 735.8 mb 2.6%
Animations 357.1 mb 1.2%
Sounds 0.0 kb 0.0%
Shaders 554.5 mb 1.9%
Other Assets 1.2 gb 4.3%
Levels 0.0 kb 0.0%
File headers 5.3 mb 0.0%
Total User Assets 28.1 gb 100.0%
Complete build size 29.0 gb

Тут звуки в other лежат в виде паков.

Поэтому тот кто говорит, что проекты пухнут из за кода, из за фреймворков, это как минимум неправда.

@DjUmnik, не попали. Разрастание кода происходит из-за бездумного напичкивания библиотек, неграмотной оптимизации проекта. Небольшие комментарии и пасхалки не помешают нормальной работе кода. Присём первые, как правило, вычищаются из релихной версии.

Так что именно из-за низкой квалификации или напичкивания библиотеками и тп хламом в современном проприетарном софте всё всрато (прошу прощения за выражение, это цитата).

правильно imgui ), 1000 descriptorPoolов, математика ), либа чтобы открывать 3д, либа чтобы оптимизировать модельки), либа чтобы оптимизировать хэш и вот уже на этапе сборки в статику с ассимпом тем-же имеем 34 мегабайта ), а ведь там еще само окно ), fmt на любителя ), плюс если это фулл-стек) sqlite3 какойнить ), websockets, shader-tooling какойнить), lua, и так до бесконечно )

Не вижу ничего плохого в пасхалках

Нет никакого коровьего уровня!

Нет мультика после 1000 пойманных яиц. Помню в детстве лежал в больнице. И вот долгожданная 1000. Думал, о, всей палатой будем сейчас смотреть. А как оказалось, НАДУЛИ!

Тоже прошел до 1000 и не раз(((

Но вот даже интересно, сколько реально пиздюков, думали, что покажут мультик?)))

Особенно учитывая тот факт, что экран зажигает все сегменты при нажатии на сброс (нужно для установки времени).

Ну вот те, кто не понимал, как работает ЖК-экран, эту пургу и несли — а мы, задроты, это понимающие, над ними тихо ухахатывались.

"человек в зонтике и шляпе "

Перевод что ли?

Зонтик будет нужен, чтобы укрываться от радиоактивного дождя.

а почему нет

почему статья не помечена как перевод? это явно перевод, причем скорее всего полностью машинный:

В течение многих лет в официальном приложении μTorrent была спрятана секретная игра Tetris. Если вы использовали μTorrent и были слишком нетерпеливы, чтобы завершить загрузку, вы могли запустить игру, чтобы скоротать время.
Вы найдете эту пасхалку в меню «О программе» — простая команда «T» запустит игру. Это классический вариант Tetris, но вы никогда не ожидали, что он будет представлен в таком приложении, как μTorrent.

Trials Evolution 2012 года — это гоночная игра-головоломка о велосипедах

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

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

В Contra игроки получали 30 жизней вместо обычных трех.

Мой мир рухнул. Сотни игр сыгранных в детстве с трёмя жизнями...

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

Эх, вспоминаю и плачу, вот времена были.

Мой мир рухнул. Сотни игр сыгранных в детстве с трёмя жизнями...

У нас были пиратские сборники с Контрой. 30 жизней да ещё и с S-кой на старте. Лично для себя считал сначала вызовом начинать с 3х жизней и дефолтным оружием, а потом уже и нормой. Пройти один круг без смертей - наверное даже сейчас руки вспомнят, спустя 30 лет. Лет 15 назад катал - всё ещё мог, практически на автомате.

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

В первой контре финальный босс это сердце.

Ну по мне так яйца на холоде)
Но да - этот самый.
В два игрока убивается на изи, один стоит стреляет прямо, второй бежит на право и стреляет по диагонали.

Ну по мне так яйца на холоде)

Ну, у кого что болит. (С)

В два игрока убивается на изи

В одного с турбокнопкой и S-кой убивается за 3 секунды. Решительно подбегаешь, поливаешь и всё. Я помню устраивал челлендж: убивал сначала гнёзда, но чтобы сердце оставалось живым. Труднее всего было убить вернее правое, чтобы не задевать сердце. Но получилось.

Эта статья будет неполной без ссылки на статью про пасхалки в документации.

Сам я, кстати, люблю добавлять в объемную документацию

всякие невинные шутки

Например, раздел справки про спектры у нас начинается с пояснения: зачем нужно так много спектральных методов? Почему нельзя обойтись парой-тройкой стандартных? Суть пояснения изложена одной фразой: "Если от некоторой болезни существует очень много разных лекарств, - это значит, что ни одно из них не лечит по-настоящему!"

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

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

Наткнулся недавно на шутки в документации... не смешно...

Сроки горят, инфы в документации кот наплакал, не работает то, что должно...

а в мануале вместо хотя бы одного примера барин шутить изволит.

тьфу. Шоб таким шутникам зп выдавали бумажками из банка приколов.

@Vdm_ro, спасибо за критику! Понятно, что шутки должны быть не вместо инфы, а в дополнение к ней. И в соотношении примерно 1:100, иначе смешно не будет. Но вот для меня это скорее вопрос хорошего вкуса (хотя понятно, что он у всех разный), чем категорическое "нельзя".

P.S. Ну и еще наверно есть разница между массовыми продуктами (когда между юзером и разработчиком стоит несколько промежуточных звеньев) и узконишевыми, как в нашем случае. Когда с половиной пользователей авторы знакомы лично, и шутки направлены в хорошо понятную аудиторию. А в крайнем случае можно написать авторам в почту и через сутки (в среднем) получить конструктивный ответ. А через месяц - исправленную документацию, куда этот ответ будет вписан.

P.P.S. Но вообще - ставлю плюсик Вашему комментарию за полезную (для меня) обратную связь.

То, что у вас написано - это и не юмор, и не пасхалки. Такие вещи никому не нравятся, кроме их авторов. Если это была бы книга - то да, в предисловии или в сносках* можно подобное позволить. В документации, в коде, в комментариях к коду - категорически нет.

P.S. но в мире Линукса принято наоборот - там очень любят давать названия вещам, максимально оторванных от сути. Назвать аудиоплеер "мёртвая говядина", а команду помощи "человек" - не смущает вообще никого.

Назвать аудиоплеер "мёртвая говядина", а команду помощи "человек" - не смущает вообще никого.

Ну, "man" это сокращение от "manual". Ну а 0xDEADBEEF это одно из магических цифр в хекспике: https://ru.m.wikipedia.org/wiki/Hexspeak

"man" это сокращение от "manual"

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

Кстати - простое стихотворение, чтобы выучить команды Linux

rm cp ln ls,
grep awk ps.
gpg dd bs,
apt-get gzip ss.

man tail ping cat wget chmod,
killall tar ping whois.
tree pwd du -hast acpid,
fsck whatis.

0xDEADBEEF это одно из магических цифр в хекспике

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

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

Я даже не знаю, что тоньше: deadbeef или foo bar.

Кстати, foo bar — это от FUBAR.

Сократить можно было и до "mnl" - что и набирать проще, и общей традиции выкидывания гласных соответствует.

Нельзя. Вы когда в адресной строке набираете адрес, вы ничего же не выкидываете, а браузер вам подставляет наиболее часто используемые сразу, уточняя выбор с кажлой буквой. Например, у меня на "tr" сразу вылазит переводчик, ибо других сайтов начинающихся с этих букв я не использую. А на "y" сразу ya.ru выходит. Так работает быстрый поиск с историей.

Тем не менее, это ведь не помешало сократить "copy" до "cp". А также "mv", "ln", etc. Впрочем, в контексте "man" придирка автора исходного комента к линуксу выглядит странно - все эти команды гораздо старше линукса.

Я думаю, это потому, что пытается анализировать не нейтив. Команды действительно старше линукса, И придумали их англоговорящие люди-носители с определённым бэкграундом и т.д. и т.п. И нам никогда не понять "логику" ибо её тут нет.

Тем не менее, это ведь не помешало сократить "copy" до "cp". А также "mv", "ln", etc.

Но при этом в DOS это были полные слова. А вот "dir" почему-то стал "ls" (list?).

То, что у вас написано - это и не юмор, и не пасхалки. Такие вещи никому не нравятся, кроме их авторов. Если это была бы книга - то да, в предисловии или в сносках* можно подобное позволить. В документации, в коде, в комментариях к коду - категорически нет.

Позиция понятна, и в определенной мере я с ней согласен. Юмор в пошаговой инструкции вряд ли уместен. Особенно если она написана на неродном языке, которым ты не владеешь свободно. Например, когда тебе надо загрузить данные, пришедшие в ana-формате, в программу, инструкция к проге должна быть предельно конкретной и четкой.

Что же касается конкретно нашего случая

то он достаточно близок к "книге". Дело в том, что примерно четверть от всего объема документации у нас составляют не пошаговые инструкции, а "философские рассуждения", в которых речь идет скорее про общие принципы построения алгоритмов. Специфика нашей работы в том, что она очень плохо формализована. Программа, как правило, не дает готовых решений, а предоставляет набор примитивов, из которых юзер сам, как из кубиков, собирает нужный ему алгоритм. Каким должен быть целевой алгоритм - не знают ни юзер, ни тем более авторы проги. В справке мы скорее делимся своим опытом в этом плане, причем заранее неизвестно: подойдет ли он юзеру, или нет. И такие рассуждения, отвечающие на вопрос "ЧТО вообще можно сделать в такой ситуации", часто довольно объемны. А главное, было бы совершенно неправильно, чтобы читатель к ним относился, как к догме. Вот в этот момент, как мне кажется, шутка может настроить его на правильный лад.

Что же касается способов "привинчивания" выбранных кубиков друг к другу (когда юзер ищет ответ на вопрос "КАК сделать вот это"), - то тут я с Вами согласен на сто процентов: инструкция должна быть короткой, конкретной и четкой. Буду обращать на это внимание в будущем, так как во время работы со слитным текстом (исходники справки) голова не всегда автоматом переключается на правильный стиль.

Вообще, мне кажется, что стиль инструкции к проге можно сравнить с двумя вариантами путешествия к заданной цели. В первом случае у тебя есть легенда, в которой перечислены повороты, и сказано: сначала направо, потом налево, а дальше три раза прямо. Кому-то так удобней всего. Однако при малейшем изменении местности, или при опечатке в легенде ты попадешь не туда. К тому же такую инструкцию надо составить для каждой возможной цели. А если есть варианты с начальными точками - то для каждой возможной пары "старт-финиш".

Поэтому начиная с какого-то уровня сложности вместо пошаговых списков удобнее карта. Которая не содержит рекомендаций: куда и где повернуть. Все на совести едущего.

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

Те же спектры, к примеру, нельзя посчитать единственно правильным способом. Если в настройках метода есть четыре параметра, в справке можно раскрыть, что делает каждый из них. А вот какую их комбинацию следует выбрать в каждом конкретном случае - не ответит никто. Так как этих "конкретных случаев" - миллионы, в зависимости от особенностей данных, шумов, целевой функции и т.п. Даже если бы авторы знали ответы, в справке их изложить невозможно. А мы их вдобавок еще и не знаем (собственно, в этом научная работа и состоит)

.

P.S. Потрясающе. Вашему комментарию кто-то поставил минус. Я понимаю, когда минусуют за очевидную токсичность, за хамство, за грубую фактическую ошибку (которая кого-то введет в заблуждение). Но за корректно высказанное альтернативное мнение, с которым ты не согласен?! А как же тогда совершенствовать свое понимание, если всегда

слушать только приятное?!

Наверно, тут будет уместным упомянуть мое любимое следствие из третьего закона Ньютона:
Опираться можно только на то, что оказывает сопротивление!

Что касается "если от некоторой болезни существует очень много разных лекарств, - это значит, что ни одно из них не лечит по-настоящему!" - то я с этим полностью согласен и вне зависимости от того, какой процент иронии в эту фразу изначально был заложен. Но. Наиболее подходящее лекарство должен выбирать таки врач, а не пациент. Типичный пациент даже инструкцию к прописанному лекарству не читает, а про все остальные ему и тем более знать не интересно.

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

Например, спектроанализаторы на основе FFT традиционно предоставляют возможность выбрать размер окна (причём исключительно степени двойки, хотя более совершенные алгоритмы давно уже существуют) и оконную функцию из списка Rect/Hann/Hammning/Blackman... И если с размером окна как-то понятно, то название оконной функции (кроме первой) не говорит вообще ничего о её свойствах, потому что это просто фамилии. Пользователи выбирают её наугад, опираясь на собственные фантазии и фазы луны.

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

Непонятна придирка, команда "man" гораздо старше линукса.

Команда "man" точно так же гораздо старше windows. А слово "man" в понимании как "человек" старше их всех вместе взятых.

А в Windows она и не используется (пока опустим новомодный WSL).

В автомобиле Газель можно поиграть в Тетрис на панели приборов.

Играл.

Гугл в помощь.

На форуме «Council on Foreign Relations» глава компании Anthropic Дарио Амодей заявил, что с развитием технологий уже через 12 месяцев весь код будет писать ИИ.

Как говорится - помянем современное ПО в таком случае. Мистер "я самая современная языковая модель" он же чатгпт4 не смог мне с нескольких попыток на C++ сделать лексер для CSS, что уж говорить про сложные задачи

подтверждаю: МОЯ простейшая задача - дал описание, реализовано за 1 мин.... и "не работает". потом еще час потратил на отлов багов и неточностей

А какая ваша любимая программная пасхалка? Пишите в комментариях

Та, которую сам и написал: разработчик поисковой системы, но если в поиске вбить ник разработчика, то появится пасхалка, и да, с неожиданным для пользователя поведением, как упомянули в комментах:

>>>"Просто хочется заняться творчеством".

А какая ваша любимая программная пасхалка?

Ответ:
Нажатие данной кнопки согласно инструкции (страница такая-то) в одностороннем порядке обрывает гарантийные обязательства.

А как же 3D гонки в Excel?

Видел у страховщиков во внутреннем софте с очень кривым глючным интерфейсом, если набрать определенное слово в любом поле заявки и подождать 15-20 минут (чуть меньше таймаута), появлялся бегающий жирный динозавр и "доламывал" интерфейс совсем. С - самоирония.

У нас один SCADA-разработчик в ситуации, которая никогда не может случиться, вставил демонстрацию порно-ролика. Ситуация случилась в присутствии большого начальства. Неловко вышло.

Заглушки ставить надо, но порево, это уже перебор.
Заглушки ставить надо, но порево, это уже перебор.

"Lexa Lexa ty mogu~ movet dave zloebu~"

«bush hid the facts» - не пасхалка, а ошибка. Причём не нули там показываются, а иероглифы китайские символы. Ну если у кого шрифт не установлен, то прямоугольники, которые автору показались нулями.

Вместо этого было бы логично рассказать про пасхалку в Win95 с информацией о разработчиках. Было красиво, музыка оттуда до сих пор в голове звучит.

А ещё была "полупасхалка" из установщика (точнее, постинсталла) винды ХР — музыка, которую никто не слышал где надо из-за отсутствия драйвера звуковой карты, зато потом часто находили как якобы "скрытый трек" по наводке из интернета в C:/Windows/System32/oobe/title.wma :-)

Внутри файла был приятный даунтемпо трек, который почему-то все считали творчеством Брайана Ино (видимо, по старой памяти после интро к вин2000), а имя реального автора и лослесс-версию трека в итоге нашли только уже после его смерти.

Для ЛЛ

Имя настоящего автора композиции Windows XP Welcome Music — американского композитора из Сиэтла Стэн ЛеПард (Stan LePard):

Своё авторство ЛеПард фактически подтвердил 13 лет назад, выложив на SoundCloud одну из изначальных версий трека, который носил название Windows 98 Velkommen. Вполне себе при жизни

https://habr.com/ru/companies/ru_mts/articles/788122/

Года 4 назад, когда тестировал анимацию в приложении, использовал для этого известного Nyan Cat. Не знаю, почему, просто именно эта гифка первой пришла в голову. В итоге после реализации функционала картинка осталась в ресурсах, и позже возникла идея заныкать её глубоко в настройки. Когда заказчик (к слову, японский) её обнаружил, то написал нам, что они немного офигели, но остались довольны)

В старых версиях MS-DOS (до DOS 6.2), если вы нажимали F1, функциональную клавишу Help, находясь во вкладке About, вас встречало диалоговое окно с надписью «No Help Available (so leave me alone)». Это была не особо смешная пасхалка, и из более поздних версий ее удалили.

судя по всему этот абзац тоже пасхалка статьи. Кто-нибудь поясните мне как вызвать вкладку about в command.com?

Под DOS был интерактивный HELP.EXE, который и имел вкладку ABOUT. Нажимать F1 находясь в программе HELP само по себе уже пахнет рекурсией.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий