ermouth: (Default)
2021-11-22 10:30 pm
Entry tags:

Impossible chessboard puzzle

Написал лонгрид про прекраснейшую задачу (сабж):

Узник 1 (У1) заходит и видит шахматную доску, на которой в каждой клетке лежит монетка, орлом или решкой. Охранник кладёт под одну из клеток доски ключ, У1 это видит. У узника после этого есть право перевернуть ровно одну монету, любую.

Затем У1 выходит и входит У2, и он должен только по расположению орлов и решек указать, под какой клеткой лежит ключ.

-----

Вот тут https://cloudwall.me/etc/impossible-chessboard-puzzle я разбираю подходы к решению и всякие усложнения (типа доска не совсем шахматная).
ermouth: (Default)
2020-03-22 12:04 am
Entry tags:

AI и плейлисты

Это надо зафиксировать: Ютуб мне впервые составил плейлист органной музыки, который я слушаю уже час – и заходит.
ermouth: (Default)
2019-09-03 10:32 pm
Entry tags:

Хватательное

Сменил айфон – с 7 на Х – и обратил внимание на занятный феномен, который уже наблюдал, когда переезжал с 1 на 4 и с 5 на 7. 

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

С десяткой я уже несколько дней так и не могу наловчиться одной рукой комфортно доставать большим пальцем до дальнего верхнего угла – приходится изворачиваться.

Забавно, что такое ощущение, будто руки «думают», перебирают варианты сами. Интересно даже, какой в результате получится хват.
ermouth: (Default)
2018-06-04 11:16 pm
Entry tags:

Исследование 6502 методами, принятыми в нейробиологии

Could a Neuroscientist Understand a Microprocessor? http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005268

Я примерно на третьем абзаце отмотал до начала посмотреть дату – не первоапрельская ли шутка, до того круто.
ermouth: (Default)
2018-01-24 02:21 am
Entry tags:

JavaScript 2018

 JS это нынче например вот так:




ermouth: (Default)
2017-11-18 03:13 am
Entry tags:

CVE-2017-12635

В CouchDB обнаружилась пара дырок, которые вместе дают возможность RCE. Это первая критическая уязвимость за 5 лет кстати, и она очень любопытна.

Я примерно год назад писáл о довольно сложной ситуацией с json-парсерами в разных экосистемах. У меня был период ресёча на предмет «не заморочиться ли написанием координатора json-вебстримов на ином, чем пара erlang+js, зверьке» – потому что пара эта не блещет производительностью.

И дырка в CouchDB возможна только потому, что erlang/jiffy и нативный json-парсер в js ведут себя по-разному. В erlang-е возможно создать два свойства внутри объекта под одним ключом, и при выборке будет отдаваться первое. В js создать такой объект невозможно, и при парсе json-а c повтором ключа всегда берётся последнее вхождение.

В CouchDB есть встроенный механизм аутентификации, и учётные записи в нём – json-документы произвольной структуры с несколькими обязательными полями, лежащие в специальном бакете _users. У пользователей есть поле roles[], в котором задаются группы, и есть специальная hard-coded группа _admins, которая даёт круто больше прав.

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

Но можно, будучи залогиненным, отправить свой профиль с полями roles:["_admin"],roles:[] – и стать админом, потому что валидатор увидит последний массив и разрешит запись профиля, а при контроле прав доступа будет использоваться первый.

Подробный рассказ об уязвимости: justi.cz/security/2017/11/14/couchdb-rce-npm.html, уже выпущено обновление CouchDB в ветках 1.x и 2.x, в котором дырки нет.

---

К счастью, так сложилось, что во всех без исключения системах на CouchDB, которые мы сделали, уязвимость имеет значительно мéньшую тяжесть, а  в некоторых системах закрывается даже без необходимости накатывания новой версии БД.

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

В бакете _users в лучшем случае живут профили пользователей бэкэнда, и ими всегда управляют или администраторы, или специальный сервис на js с кучей дополнительных проверок. 
ermouth: (Default)
2017-09-10 05:06 pm

CouchDB Photon

Написал админку для CouchDB – Photon.

То-есть уже есть две – Futon (исторически первый) и Fauxton (для новых версий). Второй – модный, но совсем неудобный, плюс в угоду моде очень сильно страдает информационная плотность. Первый – существует только для версий до 1.6.1 (актуальная – 2.1), тоже не слишком удобный, но всё прекрасно с информационной плотностью. Плюс у обоих проблемы с обновлением – то-есть поставил CouchDB и живи потом всегда со встроенной админкой в той версии, которая была на момент установки.

Я решил сделать и удобный, и с нормальной информационной плотностью, и обновляемый независимо от самой БД. Дополнительным ограничением было отсутствие любых опен-сорцных библиотек, происходящих из крупных корпораций. Последние события показали что их опен-сорц с гнильцой (привет, Фейсбук и Реакт).

Первые эскизы нарисовались в конце августа, примерно так:

Photon-1

В результате три эскиза превратились в полное приложение за две с небольшим недели:

Снимок-экрана-2017-09-10-в-17.32

Установка – просто курлом или копипастой засунуть в базу 1 (один) json-документ объёмом 1.5 мега. Обновление потом по одному клику из интерфейса, с AWS S3 CDN, так сейчас очень много кто делает.

Конечно же, приложение никогда не существовало в виде исходных файлов на файловой системе, вся разработка – в браузере, в CloudWall. Выглядит это примерно так:

Снимок экрана 2017-09-10 в 18.00.10

На картинке Photon запущен в окошке в среде разработки и просматривает сам себя: функция слева – исходник в IDE, функция открытая в окошке – она же, но в коде уже собранного Photon-а. Рефлект рефлекта, редкий зверёк.

Оч здорово получилось в целом, кто юзает CouchDB – рекомендую.

ermouth: (Default)
2017-07-27 03:52 am

Couchbox

Месяц назад мы запустили публичную бету vezdelegko.ru, сервиса бронирования экскурсий, отелей и транспорта. Сервисы бронирования – сами по себе штука сложная, это как магазин, по которому надо вести учёт ассортимента на каждый день, причём ассортимент день ото дня меняется и цены зависят от дня и количества. Причём в магазине куча отделов, и партнёры сами управляют своим ассортиментом.

Дополнительно, в нашем случае сервис делался с прицелом на очень существенную масштабируемость как по ёмкости, так и по географии. Это автоматом предполагает архитектуру из многих узлов и распределённое хранение/обработку данных с последующей их репликацией и агрегацией. Под такую схему я придумал специальную архитектуру узла, которая потребовала платформы исполнения, это и есть Couchbox.

Снимок экрана 2017-07-27 в 2.26.24

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

Code follows data

Нативная CouchDB хранит в базах не только данные, но и код для predefined map/reduce запросов, по которым строятся высокоэффективные persistent индексы. Этот код, на JS или Erlang, хранится в документах рядом с данными и может распространятся между узлами в тех же потоках репликации, что и сами данные.

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

Особо примечателен факт, что с точки зрения установленного софта узлы не различаются вообще.

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

Файлы – это очень скучно

Важный момент, как именно код функций попадает в БД.

Код лямбд вообще не существует в виде исходных файлов. Он создаётся в специализированной среде разработки, основанной на CloudWall и Ddoc Lab. Выглядит это примерно так:

Снимок экрана 2017-07-27 в 3.52.11

То-есть, сорцы, из которых собираются лямбды, хранятся в PouchDB в браузерах разработчиков, реплицируются в CouchDB на какой-то из узлов, собираются, а затем распространяются по остальным узлам.

Деплой обновлений и скорость разработки

Такая архитектура расслаивается на три части по критерию обслуживания:

  1. Убунта, CouchDB, Redis, node.js и nginx – фундамент со временем между рестартами в месяцы. Для обновления или рестарта фундамента нужен доступ к каждому узлу через терминал.
  2. Couchbox – платформа приложений с временем между обновлениями сейчас в недели, скоро станет в месяцы. Разрабатывается на файловой системе в обычных IDE, для обновления на узлах нужен доступ через терминал.
  3. Код приложений, очень гибкий, может обновляться и дополняться с высокой частотой. Для разработки и отладки как клиентской (UI), так и серверной части (REST API) приложений не нужно ничего, кроме браузера. Код деплоится по узлам автоматом.

Общий объём кода, написанного в браузере для этой системы, перевалил за 100К SLOC и пока всё просто прекрасно. Стартскрин бэкэнда выглядит сейчас вот так:

Снимок-экрана-2017-07-27-в-4.29

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

И да, Couchbox is MIT licensed. Опенсорц наше всё.

ermouth: (Default)
2017-04-27 12:41 am
Entry tags:

Саппорт-франкенштейн

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

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

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

В самом деле куда более тяжёлая проблема там – бюрократическая организация.

Дело в том, что современный крупный саппорт – это расчленёнка, франкенштейн. Структура с отделами, департаментами, уровнями и всякими другими признаками состоявшейся бюрократии, аппарата. У всех подобных структур есть характерные особенности:
  • оформление (заявок соседнему департаменту, эскалэйт, отказ и пр) становится ритуалом, полностью вытесняющим из сознания необходимость помочь: передал заявку – спи спокойно
  • бюрократы непрерывно лгут или юлят, потому что их прикрывает аппарат
  • бюрократы чрезвычайно невнимательны и искажают информацию – потому что когда сообщение передано дальше, ответственность конкретного бюрократа кончается
  • жесткие ритуальные барьеры между уровнями ведут к отрицательному отбору – топовые позиции оказываются заселены бесполезными зверушками, особо тщательно защищаемыми аппаратом
  • бюрократы неприятно-вежливы и начинают ханжески поучать, услышав слово «говно», например
  • низовые исполнители, ещё не вовлечённые в общую гниль, оказываются самыми настойчивыми (но всё равно некомпетентными).
Саппорт-франкнштейн, организация-расчленёнка, не работает как команда – если умений конкретного подразделения не хватает, другие не помогают – потому что по пути теряется информация, плюс искусственные барьеры исключают совместную работу.

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

---

Мне совсем скоро нужно будет сконструировать саппорт на заказ – не чудовищно-массовый, но ситуационно очень сложный. Скорее всего, без этих наблюдений я бы тоже сделал франкенштейна. Думаю, что с учётом нового опыта я буду делать всё таки осьминога.
ermouth: (Default)
2017-04-24 03:58 pm
Entry tags:

ZX Spectrum

Спектруму 35 лет! У меня была Дельта-С, мод на компонентах производства СССР.

Спектрум – прекрасная машина в том смысле, что для создания чего угодно, работающего с нормальной скоростью, нужно писáть на ассемблере. То-есть Спектрум как минимум мотивировал просто изучать ассемблер.

Более того, Z80 мотивировал изучать ассемблер глубоко

Первое, для чего мне захотелось учить асм – Game of Life Конвея. На Бейсике оно, конечно, еле ворочалось. Что интересно, прирост скорости после первого переписывания на асме меня тоже не устроил, и я стал копаться дальше.

И обнаружил, что, как сейчас помню, индексная адресация кратно медленнее просто сложения и выборки. Типа, 20 тактов против 6. 

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

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

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

Думаю, не преувеличу, если скажу что целое поколение инженеров началось со Спектрума.
ermouth: (Default)
2017-04-23 08:08 pm
Entry tags:

Иконка лжи

Внезапно без конкретной необходимости задумался, как бы я стал рисовать иконку (пиктограмку) понятия «ложь».

Первой ассоциацией проявился символ 𝓛 ) Icon of Lie.

Сразу ещё вспомнился один прекрасный момент про ложь, и Гугл мне даже видео подсунул:


ermouth: (Default)
2017-04-22 11:38 am
Entry tags:

Многомоторный электролёт – IV

Чуть больше полугода назад писáл про Lilium, аккуратный такой электролёт необычной компоновки. Так вот, эта штука полетела в прототипе:


Что интересно, у Lilium похоже и правда есть незначительная проблема со стабильностью – похожая на ту, что я в прошлом посте предположил. В ролике видно, смотреть примерно с 1:27 – эта штука явно роняет нос при крене и вынуждена немного проседать, чтобы выровняться. Особенно хорошо заметно, если поставить замедление вдвое.

Но всё равно очень круто, хочу-хочу )

ermouth: (ang)
2017-04-17 02:39 am
Entry tags:

Тормоза и Хром

Хром, когда-то бывший на фоне конкурентов просто таки blazing fast, уже не торт. Удивительно, но по некоторым характеристикам нынешний Хром медленнее Хрома 2014 года, например.

Я скажу больше: overall responsiveness у Хрома среди всех современных браузеров наихудшая. Это как-то плавно и незаметно произошло.

Когда-то давно (2014) я делал виджет для представления бюджета Архангельской области в виде интерактивного многоуровневого бублика, смотреть на https://dvinaland.ru/budget. Задача была сделать так, чтобы 500+ SVG-секторов не тормозили при анимации, в результате там jquerymy-виджет и подкрученный d3.js с пачкой довольно tricky кода поверх. Для анимации надо кликать на сектора есчо.

Так вот, в 2014 оно не тормозило только в Хроме и Сафари, а во всех остальных браузерах подлагивало. Теперь, в 2017, оно не тормозит вообще во всех новых браузерах (даже в IE Edge), кроме Хрома. Зато в Хроме просто адово лагает.

У меня есть ещё несколько тестов подобной сложности, релевантных моему workflow. В некоторых тестах Сафари уделывает Хром вдвое – а всего года два назад было почти наоборот. Даже FF стал Хром уделывать.

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

Что такое случилось с Хромом?
ermouth: (ang)
2017-04-16 07:52 am
Entry tags:

Zoom shortcuts

Клавиатурные шорткаты зума на Маке – один из самых прекрасных примеров интерфейсной унификации. Не так всеохватно, как копи-пэйст, поэтому мало кто пользуется – а очень же удобно.

Cmd + и Cmd - родом из Фотошопа. На Маке они работают в адобовских продуктах, Chrome, Safari, Opera, FF, Sublime, Fraise, Atom, Terminal и iTerm, Postman, iBooks, iMovie, Skype и во всём, что связано с графикой. Ещё выпадайка с иконками программ из дока понимает Cmd+/Cmd-, при том, что Finder – не понимает.

Хром так просто образец реализации, запоминает зум отдельно для каждого домена. Скажем, вКонтакт я просто физически не могу смотреть при 100%, там нужно 125. Хром об этом помнит.

Приложения, сделанные на Electron или подобиях вообще работают как в браузере – зумится весь интерфейс, кнопки там, менюшки-всплывайки и пр. Это очень круто и полезно, потому что представления о соразмерности у авторов софта сущестенно разные.

Чтобы жизнь не казалась сахаром, нативные эпловские Pages, Numbers и Keynote эти шорткаты понимают не как зум, а как увеличение-уменьшение кегля шрифта в выделенном фрагменте. В Вордах-Экселях, естессно, вообще не работает.

На Винде в Хроме зум – Ctrl+/Ctrl- если кто не знал. Тоже как в Фотошопе сделано.
ermouth: (ang)
2017-04-10 04:42 am

Разумный консерватизм и изобилие

Лж-френд Никитонский в своём посте про полный абзац в вебе в смысле не просто поддержки стандартов, а вообще качества стандартов, немного иронически страдает.
Но самый стресс, конечно, от безнадеги. Если на сервере ты работаешь на технологии и страдаешь, то ты знаешь, что рядом есть компании, который пишут на чем-то хорошем, и когда-нибудь ты там окажешься. <…> А на фронте не так. Логики нет, и надежды никакой нет.
Я понимаю, но мнение не разделяю. Конечно, когда впервые в полный рост сталкиваешься со всем набором прелестей около-яваскриптной экосистемы, становится грустно. Кажется, что везде бардак, анархия и вообще «куда катится этот веб».

В самом деле это не бардак и не анархия. Так выглядит изобилие.

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

Скажем, мне лично несколько раз крупно не везло с синтаксисом «код внутри разметки». Вот php там, angular, handlebars и всё такое. Да, xslt ещё. Сначала просто и красиво, но чуть отвернёшься – и кровавое месиво с костылями.

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

А) Полно стабильных и проверенных артефактов. Хочешь rich controls, нормальные event-ы и ajax, работающие на чём угодно всегда – юзай jquery. Хочешь pub/sub и не париться про сокеты, лонгполлы и пр – юзай сокетио. Хочешь нормальную локальную базу – юзай localforage или pouchdb. То-есть, по аналогии с HAL (hardware abstraction layer) эти артефакты можно назвать BAL – browser abstraction layer.

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

Б) Под вновь открытую проблему быстро появляется простое и эффективное лекарство. То-есть потом, когда-нибудь, эта новая проблема может и будет побеждена и искоренена во всей экосистеме – но можно не ждать светлого будущего, а жить в реальном мире.

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

В общем, изобилие – комфортнейшее состояние экосистемы, если быть консервативным и избирательным, но прощать хорошим вещам небольшие несовершенства.
ermouth: (Default)
2017-04-08 11:57 pm

Турникет заглючил

Только что вместо страницы фленты увидел вот такое:

Снимок экрана 2017-04-08 в 23.35.40

Повторный клик показал фленту, турникет самопочинился. Есчо, ICAP – это Internet content adaptation protocol. Цензурные турникеты по этому протоколу общаются с главной башней ПБЗ, ога.

Интересно, что турникеты, похоже, настроены самозакрываться, если связи с башней нет. Это очень хреновое решение с инженерной точки зрения.

ermouth: (ang)
2017-04-06 04:33 pm
Entry tags:

Расстрельные списки

К моему недавнему посту про Медведева, Павлика Морозова и комментам к нему.

Прошу полюбоваться, как ничего не производящий резонёр предлагает составлять списки врагов народа, «патентованной сволочи». Большой сторонник протеста и Навального, разумеется.

Думаю, нетрудно себе представить, к чему такой человек начнёт призывать, если не дай боже ему (или ему подобным) в руки попадёт власть.
ermouth: (Default)
2017-04-04 11:10 pm
Entry tags:

Бри два

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

Так вот, его научились делать в Армении. В смысле, сыр типа бри в такой же 125-граммовой вакуумной упаковке. Выглядит он так:

IMG_15638-2

Как и тот бри, этот бри – тоже не совсем бри, да. Но очень вкусный!

Упаковка, правда, в лучших советских традициях на новый лад. Коробка склеена каким-то обычным бытовым клеем – и склеена буквально намертво. Я наловчился открывать её руками примерно на третьей-четвёртой коробке, после внимательного изучения. До этого нужен был нож.

Рвётся упаковка в одно движение – но только после того, как сдавишь её по бокам пальцами (сыр то внутри круглый) и надорвёшь боковые рёбра. Там картон поддаётся легче всего.

Дальше – такая же песня. Головка сыра обёрнута в фольгированную бумагу и упакована в пластиковую такую таблетку вакуумированную.

Так вот, таблетку тоже можно вскрыть руками, без ножа, только одним способом. Нужно по надрезу язычка разрывать одной рукой вверх, а другой – вбок. Если разрывать обеими руками в разные стороны или вверх-вниз, открыть без ножа не получится )

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

Бри из предыдущей жизни (2009) был, что интересно, по вкусу похуже и выглядел так:

IMG_1020

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

ermouth: (ang)
2017-04-04 06:09 pm
Entry tags:

Турникеты

Жванецкий прекрасен.

ermouth: (Default)
2017-04-02 05:52 pm
Entry tags:

Рой

Посмотрел «Фантастические твари и где они обитают» – хорошо сделанное, динамичное и умеренно скучное кино по сценарию Джоан Роулинг (но HP-free). Промотал половину.

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

Достижения компьютерной графики прибавили к списку новую категорию – рой.

Снимок экрана 2017-04-02 в 17.31.30

Мне эта структура напомнила оболочку Мандельброта 8 порядка, которая выглядит так (клик – картинка на 16 мегапикселей):

Power_8_mandelbulb_fractal_16mpx

Быстро движущиеся по “биологичным” плавным связанным траекториям потоки частиц вызывают просто вот подсознательную физиологическую реакцию, когда смотришь на большом экране.

Сам фильм совсем детский, но вот за Обскура – уважуха.