$mol: Новости
464 subscribers
94 photos
7 videos
3 files
182 links
Новости об экосистеме фреймворка $mol.
Вакансии: #mol_vacancy
Один донат: http://tinkoff.ru/cf/1VnW7ZtTeg2
Регулярно: http://boosty.to/hyoo
Download Telegram
А ещё на сайте HighLoad++ 2025 сейчас проходят выборы лучших оупенсорс проектов. Интересно, сможет ли Гипер База поконкурировать с более известными проектами?
1
Товарищи, нам с вами надо серьёзно поговорить...

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

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

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

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

Иллюстрация на примере Гипер Бота для сравнения.
👍10😁32💯2🤝2🎃1💘1
Наконец-то зарелизил спеку VaryPack - новый, простой, гибкий, шустрый и компактный формат бинарной сериализации произвольных данных.

TS библиотека в MAM - $mol_vary, в NPM - mol_vary. Это всего 600 строчек кода, которые легко портировать на любой другой язык.

⚖️ Комплексный бенчмарк

🔫 Киллер фичи

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

Расширяемость поддержимаемых типов.
Из коробки VaryPack уже поддерживает огромные целые, ссылки, бинарники, а $mol_vary ещё и словари, и множества, и таймштампы, и даже DOM! Но довольно легко добавить поддержку и своих типов данных, ни с кем это не согласовывая - маппинг происходит по совпадению шейпов, которые сериализуются вместе с объектами. Другие форматы вынуждены вести централизованные реестры расширений и диапазоны идентификаторов, где творится дикий запад.

Прямая и обратная совместимости.
Любой VaryPack декодер сможет распаковать данные, даже если не поддерживает те или иные кастомные типы данных (будет их представление через поддеживаемые типы). Расширения других форматов таким похвастаться не могут.

⁉️ Внимание, вопрос

Пока на VaryPack ещё никто не завязался есть возможность безболезненно его менять. Так что гляньте спеку, попробуйте поиграться со своими данными. Если будет не хватать какой-то фичи - дайте знать. Подумаем, можно ли поддержать и её.

Например, VaryPack сохраняет ссылочную структуру, если она не образует циклов. Можно было бы поддержать и произвольные графы связей между объектами. Но стоит ли это делать ценой усложнения и замедления кода?
🔥921🎉1🍾1👾1
$mol: Новости
Наконец-то зарелизил спеку VaryPack - новый, простой, гибкий, шустрый и компактный формат бинарной сериализации произвольных данных. TS библиотека в MAM - $mol_vary, в NPM - mol_vary. Это всего 600 строчек кода, которые легко портировать на любой другой язык.…
В этот четверг на PiterJS #84 буду рассказывать про то, как появился VaryPack:

Проектируем как синьор: универсальная бинаризация

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


Трансляция и запись будет тут. Но могу и бесплатно подогнать входной билет, если кто хочет послушать вживую.
3
У нас тут под Новый Год большое обновление малой кровью. А именно импрув $mol_pop - компонента для показа контекстных всплывашек.

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

Тут-то и выходит на сцену $mol_pop, на базе которого у нас работают все пикеры - он открывает небольшое окошко (Bubble) рядом с якорным компонентом (Anchor). В случае пикера, якорем выступает кнопка его открытия (Trigger).

10 лет у нас была простая и надёжная реализация - бабл располагался рядом с якорем и через CSS позиционировался как надо. Работало просто, быстро, надёжно. Но есть с такой реализацией одна беда - его надо было аккуратно позиционировать, иначе он мог быть обрезан из-за overflow или z-index, так как рендерился там же, где и располагался в доме - рядом с якорем.

Типичное решение этой проблемы - порталы, то есть вынос бабла в корень (body), чтобы он рендерился на отдельном слое поверх всего интерфейса. Но у этого подхода есть две беды:

- Так как он больше не располагается рядом с якорем, мы не можем простым css его позционировать рядом с ним. Эту проблему призван решить css-anchoring, но у него ещё слабая поддержка.

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

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

К счастью, сейчас уже добралась до всех браузеров поддержка Popover API, предназначенного как раз для реализации всплывашек. Просто ставим на бабл атрибут popover="manual" и... ничего не меняется.

Оказыается, надо императивно вызвать затем метод showPopover(), чтобы браузер создал отдельный топовый слой и перенёс рендеринг бабла туда. hidePopover() же, наоборот, переносит рендеринг обратно (нейминг, конечно, божественный, да), но нам он и не нужен, так как баблы у нас рендерятся лишь когда начинают показываться, а когда перестают - удаляются нафиг, чтобы не тратить ресурсы впустую.

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

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

Так что я скрестил ужа с ежом и.. вроде получилось. Давайте потестим. Из компромиссов:

- В устаревших браузерах бабл может обрезаться.

- При скроллинге, бабл на несколько кадров отстаёт от якоря. В будущем переведём $mol_follower на css-anchoring и это пройдёт.
🔥7🎄521
Под конец года я решил порисовать весёлых картинок допроектировать интересные штуки, над которыми давно чесались руки. Пока что это всё лишь на уровне недоспецификаций, но в качестве источника вдохновения для других может быть полезно.

UCF - Unicode Compact Format

Всё началось с того, что я наткнулся на интересный эксперимент по бинаризации текста под названием UTF-C, где в борьбе за биты у автора получился целый звездолёт. А потом он узнал про существование SCSU и BOCU-1, и совсем приуныл, ведь вселенную уже бороздят другие звездолёты.

Посмотрел я на всё это и подумал: сложно, сложно, не понятно! И принялся за создание предельно простого, но достаточно эффективного велосипеда. В результате получился формат представления текста проще, чем UTF-8, но при этом в полтора-два раза компактней его. Например, в русском тексте, каждый символ кодируется 1 байтом, а не 2, как мы уже все привыкли.

В перспективе, надо будет написать библиотечку для кодирования и декодирования текста. Но учитывая, что UTF-8 сейчас гвоздями прибит во всех спеках и даже языках, то эта моя альтернатива немного запоздала. В том же Rust и Go строки хранятся в UTF-8, и прикрутить что-то иное крайне сложно, помимо того, что будет ещё и падение производительности на постоянных перекодированиях.

SiMuNo - Simple Music Notation

Очередной раз, пытаясь освоить сольфеджио, я принялся за изучение нотной грамоты и... опять сдался. Такое лютое нагромождение легаси просто вымораживает.

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

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

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

А ещё хочется сделать набор красиво (не обязательно естественно) звучащих синтетических музыкальных инструментов через $mol_audio. Уже есть наработки для Piano, но их ещё надо довести до ума. А там уже и до алгоритмической генерации прекрасной музыки по законам гармонии не далеко..
🔥82
Ну всё, пора закапывать UTF-8

Здравствуйте, меня зовут Дмитрий Карловский и я... серийный убийца устоявшихся стандартов. Сегодня я выследил и нанёс критический урон UTF-8. И сейчас я расскажу, как я его переиграл и уничтожил новым стандартом кодирования текста — Unicode Compact Format.


Статья про современные текстовые кодировки в виде Гипер Страницы или на Хабре.
👍4🔥41💯1
Так, сегодня ничего не изменилось, поэтому у меня для вас важный апдейт...

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

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

Да и вообще, до выкладывания в прод лучше присылать код на ревью, чтобы я подсказал, где что не так, а то и улучшил API, xтобы было проще использовать.

Ранее она была известна как СRUS-DB. А ещё ранее - как $hyoo_crowd + $hyoo_sync + $hyoo_meta + $hyoo_case. Да, теперь это не просто система управления базами данных, а зачаток RAD-платформы, позволяющей накликивать информационную систему под свои нужды.

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

Ключевые отличия от предыдущих версий:

- Нативная поддержка шифрования на уровне Лендов (независимого кластера узлов данных, что-то типа таблицы/документа/пространства/неймспейса/базы).

- Использование самой современной криптографии на эллиптической кривой 25519, которая недавно появилась во всех браузерах.

- Поддержка атомарных пакетных записей (неоткатываемых транзакций), используя оригинальный алгоритм Yin-Yan Mirrors.

- Минимизация числа мелких файлов за счёт хранения всех данных одного Ленда в одном файле (baza-пакете).

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

- Компактная сериализация произвольных данных, используя VaryPack и Unicode Compact Format.

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

- Нативная поддержка регулируемого Proof-of-Work от мгновенного внесения изменений до нескольких недель работы. Над поддержкой Proof-of-Storage ещё размышляю.

- Пиринг между серверами, управляемый через саму гипер базу.

Подробности, как всё это устроено, и как этим пользоваться, скоро появятся в документации.

Спасибо всем, кто годами терпеливо ждал релиза и до сих пор не дождался. Но это только начало. Предстоит ещё много работы как по самой платформе, так и по экосистеме продуктов на её основе под зонтичным названием Giper Web - нашей реализации Web4.

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

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

И чтобы нам всё это масштабировать, нам нужно образовать Giper Сartel, cостоящий из:

- Технологической гильдии Giper Dev, разрабатывающей общий инструментарий.

- Продуктовых компаний Giper Prod, использующих наши технологии для получения финансирования.

- Обучающей сети Giper Couch, поставляющей нам самых талантливых ребят.

Кому интересно поучаствовать во всей этой движухе - присоединяйтесь к сообществу Giper Dev, и берите на себя тот аспект этой гипер утопии, который вам по душе.
🔥97👏3🙏1👾1
Что не так с веб-компонентами?

Здравствуйте, меня зовут Дмитрий Карловский, и я пилил веб-компоненты, когда их ещё не придумали, делал полноценные компоненты на AngularJS, когда там ещё были только директивы, и разработал компоненто-ориентированный фреймворк $mol с инверсией контроля и статической типизацией, когда это ещё не было мейнстримом. Короче, я немного в теме. И сейчас я расскажу вам, почему мы сразу отказались от Web Components и почему у них нет никаких перспектив.

+ Хабр
6🔥3❤‍🔥1
Мифы о веб-фреймворке $mol

Здравствуйте, меня зовут Дмитрий Карловский и я.. автор самого крутого на текущий момент (и в ближайшем будущем) фреймворка $mol. Вот уже десяток лет я рассказываю о заложенных в него идеях, которые конкуренты, если и пытаются повторить, то получается у них плохо. За это время вокруг него сложилось множество мифов, которые люди с радостью ретранслируют друг другу для самоуспокоения. Что ж, давайте соберём их все вместе, разберёмся, как они возникли, и как обстоят дела на самом деле.
🔥9
Препарируем Lit и находим родовые травмы

Задействованы самые современные веб-стандарты, однако:

- Заявляется отсутствие VDOM, однако он есть, со всеми вытекающими.
- Любое исключение капитально ломает весь компонент.
- Неизбежные конфликты имён компонент всё ломают.
- Адовые тормоза и потребление памяти из-за привязки к DOM.
- Тонны бойлерплейта, если нужна кастомизация хотя бы стилей компонент.

Поблагодарить: https://boosty.to/hyoo
Обсудить: https://t.me/giper_dev
🔥12👍1