2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Вы неправильно пишете животных
Сообщение28.09.2015, 18:45 
Заслуженный участник
Аватара пользователя


11/03/08
9490
Москва
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.
Не знаю, кто писал большую часть птиц, но я хочу обратить внимание на особенность, позволяющую провести инъекцию произвольного яйца в гнездо. Дело в том, что птица проверяет только расположение и количество яиц, но не их хэши. В 20% случаев кукушка, эксплуатирующая этот баг, может внести яйцо с сохранением контрольной суммы, чего вполне достаточно для повышения прав в гнезде.
Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Да, ещё о птицах, чтобы два раза не вставать. У них насквозь кривой модуль распознавания «свой-чужой». Что позволяет провести animal-in-the-middle-атаку с помощью подстановки звука птенца. Всё, что примерно совпадает по размерам и при этом передаёт открытую часть ключа, нужно покормить. Похожий баг есть у некоторых грызунов, что позволяет предположить проблемы с общей библиотечной функцией.
Теперь муравьи. Муравьёв довольно легко зациклить. Навигационный блок у них совмещён с системой приоритетов ОС, поэтому при построении циклического маршрута образуется «спираль смерти», затягивающая всё больше и больше ресурсов муравейника – и всё это зависает на 3-4 дня, пока муравьи не погибнут от истощения или что-то снаружи не поменяет навигацию.
А вот страус – вершина оптимизации. То, как именно в него впихнули пищеварение, вообще достойно войти в «Жемчужины программирования». Чтобы эта птичка нормально переваривала пищу, разработчик придумал заставить его натурально жрать камни. При беге камни трясутся и перемалывают зёрна. Теперь самое весёлое. Чтобы не писать отдельный код для поедания камней, страусу просто взяли и отключили центральный сектор зрения (как зайцу, но там это известный минорный баг). Поэтому когда страус целится в зерно, он попадает только в 30-50% случаев. Что легко позволяет набирать нужное количество камней, да ещё и с запасом. Именно поэтому страусы, запущенные на чистой виртуальной машине в зоопарке, испытывали проблемы с пищеварением до появления поддержки камней на уровне гипервизора. Кстати, коровы тоже жрут гвозди и иногда гравий, но это не в архитектуре, а просто техническая ошибка обратной совместимости.
Да, и ещё. Очень хорошая вещь – повторное использование кода. Часть функционала с камнями потом накатили на крокодила – чтобы ему нырялось лучше. Ныряется действительно лучше.
Проблемы энергопотребления решаются не менее гениально. С рептильной платформой всё ещё более-менее нормально (там просто нет долгих высокоуровневых процессов), и крокодил может сидеть сутки без движения до поимки мяса. А вот с теми же крупными хищниками всё пожёстче мобильных ОС. На 20 часов в сутки лев снимает все активные процессы и уходит в спящий режим. Примерно 4 часа он находится в активном режиме – рычит, размножается, сёрфит по саванне и находит новую зарядку в антилопе или зебре.
Дельфину вообще не всегда удаётся включать оба ядра мозга – только тогда, когда нужно делать что-то важное. Если вам встретился тормозящий дельфин – проверяйте, оба ли глаза открыты. Только один? Значит, он в спящем режиме и работает на одном ядре с пониженной тактовой частотой.
Медведь не всегда корректно выходит из hibernate-режима. Это же, кстати, касается некоторых растений, но там баг не так опасен. Растения легко перезапустить. И да, учитесь у тех, кто писал альбатроса. Альбатрос вообще спит в воздухе.
Теперь черепаха. Ей вместо того, чтобы прописать нормальный алгоритм обхода препятствий, захардкодли рефлекс убирания головы в панцирь. Теперь даже если она натыкается на крокодила, тот со своим молниеносным броском не успевает откусить ей голову. Побочный эффект – черепаха легко уворачивается от ножа мясника. Скорость обработки инструкций процессора не сравнится со скоростью работы интерпретируемого высокоуровневого кода у повара. Черепаху не обгонишь, критичные функции переписаны на ассемблере.
Белый медведь – отличный пример работы с солнечной энергией. Медведь прозрачный в УФ по меху и чёрный на коже. Это уже торжество инженера.
Жираф – сплошной костыль. Нет, в целом, понятно, что требования заказчика по высоте кроны несколько раз повышались по мере развития проекта. Но вот то, что вошло в релиз по водопоям и было пропущено на приёмке – это нонсенс. Жираф тупо не достаёт головой до воды(!) в обычном режиме. Ему приходится жутко вывернуться и почти сесть на шпагат, чтобы попить. Ясное дело, анонимусы-хищники этим нагло пользуются. Детёныша вообще пришлось укреплять – он в стабильном релизе падает с полутора метров при рождении.
Морской свинке и ряду рыб косо прописали задержки на прерываниях. Если обычное животное по очереди опрашивает прерывания вроде «нет ли опасности», «не надо ли попить», «не надо ли поесть», «не надо ли начать размножаться», «не надо ли лечь спать» и «не надо ли выполнять нестандартную процедуру» — и всё это без видимого переключения — то морские свинки делают sleep(1000); после каждой операции. Видимо, осталось с отладки и вошло в релиз.
Хорошей идеей было накатить код сборщика мусора в ОЗУ от золотой рыбки на белку – garbage collector с высокой вероятностью очищает и неиспользуемые указатели на места размеченных орехов и семечек. В результате благодаря белке вырастает много новых деревьев.
Вот индийскую кобру точно писал фанат Starcraft. Потому что, задумайтесь, где ещё можно встретить юнита, плюющегося ядом на два с половиной метра точно в глаз террану.
Ну и раз начали о нерациональности – вспомним того же осьминога. Километры нервной ткани просто потому, что кому-то было интересно написать его на brainfuck. Да если использовать эти отдельные модули управления присосками, ту же ткань – может получиться вообще ЦОД на колёсиках.
Или вот взять того же пингвина – летать не умеет, зато плавает и весело прыгает на полметра в высоту. Написали его в качестве учебного примера для объяснения принципов полиморфизма, а потом почему-то забыли закомментировать подключение библиотек с ним в основном релизе.
Тлей и других насекомых, а также ряд животных точно писал бешеный фанат рекурсии. Светлая мысль рождать некоторых уже беременными – просто вынос мозга для тестеров. Зато слонёнок деплоится 22 месяца — вот что значит не влезть в кэш процессора.
Кстати, пасхалка с бегемотом получилась смешная. Люди боятся львов, носорогов, змей – но только этот обаятельный толстяк целенаправленно бегает за человеком. И, внезапно, со скоростью до 30 км/ч. То есть догоняет даже велосипедистов.
У некоторых кошек не убрали аппаратный байпасс в районе шкирки. Стоит взять взрослую систему за это место, так сразу отключается двигательная активность. Что породило опасный баг с прищепкой, которым часто пользуются скрипткидди.
У курицы расслабленная лапа «защёлкнута», поэтому если поставить курицу на ветку, дождаться, пока она уснёт, а потом легко и быстро перевернуть, сработает рефлекс – и у вас будет курица, спящая вниз головой на дереве. Главное – подготовить почву и рассказать всей деревне про вампиров за день до зрелища такого курятника.
У собак и ряда других хищников и падальщиков косо прописано распознавание добычи. В одном из условий AND случайно заменили на OR, и вот результат — известный баг с запуском приоритетного процесса с атакой на пятно лазерной указки.
В общем, вы наверняка и сами можете продолжить.
P.S. Обратите внимание, что большая часть описанных уязвимостей до сих пор не исправлена.

(http://habrahabr.ru/post/254473/)

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение28.09.2015, 18:53 
Заслуженный участник


04/03/09
906
Шикарно. Куда багрепорты слать?

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение28.09.2015, 23:18 
Заслуженный участник


16/02/13
4105
Владивосток
Евгений Машеров в сообщении #1057384 писал(а):
опасный баг с прищепкой
О! Так вот как ловят львов для зоопарков!

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 10:20 
Заслуженный участник
Аватара пользователя


01/08/06
3049
Уфа
Это ещё что! Наследование реализации — вот где настоящий адъ. Возьмём, к примеру, наследование вторичноротых (например, человека) от первичноротых (например, мухи). В результате вызова унаследованного конструктора у вторичноротых на ранней стадии эмбриона формируется первичный рот. Дальше он небезопасно кастуется в анальное отверстие, а настоящий (вторичный) рот создаётся в другом месте.

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 11:15 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
worm2
Это ерунда, единственное следствие - это идиома "хоть <первичным ртом> ешь". А вот слепое пятно на сетчатке - это серьезный баг.

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 13:44 


10/04/12
704
Вторичноротость может оказаться первичной для двусторонне-симметричных животных

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 13:46 
Заслуженный участник


16/02/13
4105
Владивосток
worm2 в сообщении #1057570 писал(а):
Дальше он небезопасно кастуется в анальное отверстие
Что ж тут небезопасного? Скорее уж, наоборот, первичный очень надёжно спроектирован, так что редкие случаи использования именно как рта не приводят к краху системы.

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 15:34 
Заслуженный участник
Аватара пользователя


30/01/06
72407
worm2 в сообщении #1057570 писал(а):
Наследование реализации — вот где настоящий адъ.

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

И да, слепое пятно. Ряд других неприятностей такого типа в строении внутренних органов.

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

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 16:05 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Munin в сообщении #1057617 писал(а):
А биохимия - там просто сплошной копипаст.
Как тут не вспомнить:
stelazin писал(а):
Попросили посидеть на обмене натрия у тихих протерозойских червячков, занятее несложное, а тут у нас кембрийский взрыв видообразования, дедлайны горят, короче выручай. И вроде ничего не предвещает. А потом внезапно, - ты у сапиенсов гормон мира и любви.

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 16:43 
Аватара пользователя


29/03/12
2427
Нигредо
Самая продвинутая модель оказалась самой косячной. Аппаратная несовместимость матрицы фотодатчиков и CPU по частотам шины. При достижении тактовой частоты в 25 Hz на входе, проц самопроизвольно перепрошивается примитивным кодом.;-) Меняется даже маркировка с Intel на Duron+100500.

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение29.09.2015, 18:01 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Ну, это байка, как выяснилось.

-- 29.09.2015 18:05:04 --

Хотя вообще косяков в обработке видеоинформации навалом. Например, программа отслеживания цели не многозадачная (известный глюк с гориллой). Вообще в CPU всего штук 7 регистров - маловато.

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение30.09.2015, 08:50 


14/01/11
2916
Munin в сообщении #1057647 писал(а):
известный глюк с гориллой

А можно с этого места чуть подробнее?

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение30.09.2015, 12:24 
Заслуженный участник
Аватара пользователя


30/01/06
72407
http://www.theinvisiblegorilla.com/gorilla_experiment.html

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение30.09.2015, 12:51 


14/01/11
2916
Насчитал 13 передач и одну гориллу.

-- Ср сен 30, 2015 13:06:36 --

(Оффтоп)

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

 Профиль  
                  
 
 Re: Вы неправильно пишете животных
Сообщение30.09.2015, 14:35 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Ну, когда человек предупреждён, то он гориллу замечает.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2, 3  След.

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group