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-05-02 12:58 am
Entry tags:

Тестовая запись с картинкой

Пробую прикрутить LiveWriter к DreamWidth.

aerofly-FS-f18-suisse-01-20131222-061820

UPD. Проба обновления записи и простановки тегов прямо в LiveWriter (с ЖЖ не работало).

UPD2. В общем, у кого на хозяйстве есть WinXP (как у меня, под Parallels), тот может поставить себе LiveWriter первой версии и наслаждаться лучшим из существующих клиентов под сервисы типа ЖЖ и DreamWidth. С выгрузкой картинок на FTP, созданием превьюшек, подкруткой яркости-контрастности, автопростановкой подписей и пр.

Прямо сейчас, в процессе написания поста, на Маке это выглядит так:

Снимок-экрана-2017-05-02-в-2.10

То-есть выглядит всё как нативное окно Макоси, хоть и WinXP. Драг-н-дроп картинок в текст работает, Маковская раскладка и шорткаты – в общем, полная лафа.

ermouth: (Default)
2017-04-29 01:01 am
Entry tags:

binwalk

Стал собирать на Маке binwalk, чтобы устроить тотальную вивисекцию Билайновской прошивки с бэкдорами – и прифигел.

Собирается уже 3-й час, и пока не видно конца. Плюс оно не может собраться без gcc, clang не катит. А gcc сам по себе собирался час со скачиванием. Сейчас вот qt собирается, подозреваю это ещё с часик.

Я сначала было подумал что binwalk – это такой консервный нож навороченный, а там похоже целое хирургическое отделение о_О

--- 

В результате не собралось, потому что Homebrew внезапно незалюбил Macports о_О

---

Обошёлся без binwalk-а. В прошивке, в одном из конфигов, нашлось вот такое:

manufacturer="RON-Telecom"
manufacturerURL="http://www.rontel.ru/"
modelURL="http://www.rontel.ru/"
model_name="RFT620"
model_num="1000"
modelDescription="WLAN Access Point"
device_name="RFT620"

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

Сама прошивка – линух, по-моему, неряшливый, хотя я не спец. Кажется, при старте монтируется довольно большой RAM-диск (32Мб), не понимаю, зачем.

И – ура – к линуху, если подкрутить конфиг через веб-интерфейс, оказалось можно подключиться по ssh – что сильно облегчает дальнейшие шаги. To be continued.
ermouth: (Default)
2017-04-27 12:41 am
Entry tags:

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

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

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

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

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

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

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

---

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

Beeline Smart Box One, раутер с руткитом

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

В самом деле этот «интернет за рубль» означает только раутер, который вам формально продают за рубль, но вы подписываетесь под тем, что если расторгнете контракт на инет раньше чем через два года – покупаете раутер за 2500=. Маленький такой нюанс, о котором вы и не узнаете, если не прочитаете бумаги полностью. Я прочитал.

За этот самый рубль вам дадут Smart Box One, двухдиапазонный раутер с фирменно кривоватым интерфейсом Билайна внутри. Раутер этот интересен тем, что у него внутри руткит, оставленных Билайном для удалённого управления.

Иллюзия контроля

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

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

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

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

TR-069

Билайновские Smart Box One имеют по умолчанию включенную механику TR-069. Это протокол для удалённого управления, слива данных и обновления. Билайн использует его скрытно, и вы не сможете отключить его с помощью обычного пароля к раутеру. Вы даже не будете знать, что такой функционал в вашем раутере есть – он показывается только под суперпользователем с правами производителя.

Замечу, что Билайн знает пароль суперпользователя вашего раутера, а вот вы – нет. Конечно, я поменял у себя этот пароль.

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

Прошивки и автоообновления

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

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

Ещё конечно при таком обновлении прерываются все соединения.

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

Так что TR-069 не стóит включать обратно даже на короткое время. Мне это обошлось в полною недоступность моего IP из внешних сетей и невозможность применить хоть как-то работавшие до этого настройки.

Ещё всякое по мелочи

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

Из последних 5-6 последних виденных мной раутеров у этого интерфейс наихудший – глючный и некрасивый, но в целом терпимый.

---

При всех негативных сторонах, экспириенс позитивный. Как минимум я пересмотрел свою железную уверенность, что удалённое управление – это добро. Само по себе – возможно, однако оно побочным эффектом порождает культуру безответственности и читерства. Особенно когда такое удалённое управление – скрытое и пользователем не отключаемое.
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: (Default)
2017-04-19 11:12 pm
Entry tags:

HTTPS

Интересно, что власти РФ, принимая законы, которые приводят к блокировке доступа к ресурсам по https, сами активно этим самым https-ом прикрываются.

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

Я не знал, что ответить – потому что ровно эти же самые умельцы два года держали у себя бэкэнд на простом http и передавали пароли открытым текстом. Потому что два года, на минуточку, не могли сертификат оплатить.

А тут вдруг такое рвение – публичные общедоступные картинки, да по https. Не то чтобы это было совсем неразумно, но мне стало немного смешно. Властям резко понужнело то, чем народу пользоваться теперь нельзя.

---

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

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

Провайдера, конечно, придётся поменять – рыцари цензуры, перевыполняющие план Роскомнадзора и блокирующие целыми протоколами, переживут без моих денег. Жаль только, что IP-адреса нельзя переносить как телефонные номера – текущий адрес со мной, кажется, больше 10 лет и будет хлопотно много чего перепривязывать.


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-14 02:00 am
Entry tags:

Большой брат, Dreamwidth и всякое такое

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

Затрэйсил для сравнения маршрут до ЖЖ...

traceroute to livejournal.com (81.19.74.1), 64 hops max, 52 byte packets

1  192.168.---.--- (192.168.---.---)  1.809 ms  1.248 ms  1.747 ms
2  lo1.10k8-1.atknet.ru (62.192.224.24)  4.000 ms  1.833 ms  1.795 ms
192.168.8.90 (192.168.8.90)  2.318 ms  2.286 ms  2.346 ms
>4  62.192.224.234 (62.192.224.234)  2.240 ms  2.186 ms  4.136 ms
5  62.192.224.233 (62.192.224.233)  3.531 ms  3.394 ms  6.815 ms
6  vlan2901.asr9k1-b.atknet.ru (62.192.224.4)  3.463 ms  3.677 ms  5.570 ms
7  78.25.79.101 (78.25.79.101)  3.194 ms
37.29.17.97 (37.29.17.97)  10.002 ms  4.084 ms
8  livejournal.com (81.19.74.1)  51.924 ms  48.413 ms *


и до Яндекса:

traceroute to yandex.ru (5.255.255.77), 64 hops max, 52 byte packets

1  192.168.---.--- (192.168.---.---)  1.752 ms  1.356 ms  1.445 ms
2  lo1.10k8-1.atknet.ru (62.192.224.24)  2.017 ms  1.947 ms  2.851 ms
3  62.192.253.92 (62.192.253.92)  3.229 ms  2.722 ms  2.898 ms
4  vlan2901.asr9k1-b.atknet.ru (62.192.224.4)  2.868 ms  2.782 ms  2.900 ms
5  78.25.79.101 (78.25.79.101)  85.184 ms
37.29.17.97 (37.29.17.97)  2.493 ms  2.406 ms
6  * * yandex.ru (5.255.255.77)  34.135 ms


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

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

Переезд на Dreamwidth мне уже не кажется совсем бессмысленным делом.
ermouth: (ang)
2017-04-12 06:27 pm
Entry tags:

12 апреля

Поздравлять не с чем.

Есть госкорпорация «Роскосмос», уверенно просирающая былые достижения и не создающая ничего конкурентоспособного. Есть министерство халтуры культуры, которое затрахало своими скрепами так, что даже технически хорошо сделанные фильмы вызывают тошноту. Есть космонавты, которым не дают Звезду Героя только потому, что они писáли в Твиттер с МКС. Есть подводные орбиты космических аппаратов. Есть ракетные двигатели, спаянные левым припоем – под чутким наблюдением жирного, мудаковатого и тупого журналиста.

Успехов вот только особо не видать, кроме всё сильнее лоснящейся мордаси Рогозина.

Этот праздник больше похож на поминки, увы.
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

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

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