Немного истории ABC. Диалект возник при написании storage engine для RON/RDX. В чём преимущество подхода в данном контексте: ABC контейнеры (типа мапы, векторы) можно в неизменном виде отправлять по сети, маппить на файлы, меркл-хэшить и так далее. То есть контейнер - он сам себе protobuf, сам себе sqlite (немного преувеличу).
Работа в таком формате привела к очевидному выводу: мощь такого комбинирования стоит того, чтобы под неё адаптировать другие части системы.
Другая большая идея - это слайсы и буферы из поинтеров, в этом канале уже обсуждалась. В С, по древности его, слайсов не было, а в C++ их с переменным успехом добавляли, но на двадцать лет позднее чем нужно было.
Короче говоря, я рассчитывал всё привести в порядок за лето, но жизнь сложилась немного по-другому (это я тоже освещал здесь). Тем не менее, буду по-тихому приводить в порядок.
Работа в таком формате привела к очевидному выводу: мощь такого комбинирования стоит того, чтобы под неё адаптировать другие части системы.
Другая большая идея - это слайсы и буферы из поинтеров, в этом канале уже обсуждалась. В С, по древности его, слайсов не было, а в C++ их с переменным успехом добавляли, но на двадцать лет позднее чем нужно было.
Короче говоря, я рассчитывал всё привести в порядок за лето, но жизнь сложилась немного по-другому (это я тоже освещал здесь). Тем не менее, буду по-тихому приводить в порядок.
Telegram
Local-first и децентрализация
Выделил и более-менее задокументировал диалект C++, который использую в разработке: ABC++. (Для тех, кому такие штучки интересны.)
👍10❤1👎1🥴1😴1
Local-first и децентрализация
Немного истории ABC. Диалект возник при написании storage engine для RON/RDX. В чём преимущество подхода в данном контексте: ABC контейнеры (типа мапы, векторы) можно в неизменном виде отправлять по сети, маппить на файлы, меркл-хэшить и так далее. То есть…
Другая забавная часть (как я провёл лето) это интеграция Ragel в ABC. Там забавность в том, что из одной eBNF грамматики герерируется парсер со всем бойлерплейтом. Бутстрап шаг - это когда лексер парсит свою грамматику (грамматику грамматики) и генерирует сам себя (модуль LEX).
Тех, кто развлекается написанием компиляторов, такими трюками не удивить, а я только чуть-чуть затянулся :)
В качестве экзампла там сделан на рагеле парсер StrictMark, это единственный диалект Markdown с формальной грамматикой (мой). Флагманский CommonMark грамматики не имеет, т.е. там совместимость парсеров в принципе невозможна.
Собственно, CommonMark сам с собой не совместим в результате - спека продолжает активно меняться уже 10 лет. (Страшная правда о Markdown.)
Тех, кто развлекается написанием компиляторов, такими трюками не удивить, а я только чуть-чуть затянулся :)
В качестве экзампла там сделан на рагеле парсер StrictMark, это единственный диалект Markdown с формальной грамматикой (мой). Флагманский CommonMark грамматики не имеет, т.е. там совместимость парсеров в принципе невозможна.
Собственно, CommonMark сам с собой не совместим в результате - спека продолжает активно меняться уже 10 лет. (Страшная правда о Markdown.)
👍7🥴2❤1👎1🥱1
Local-first и децентрализация
Мои давно анонсированные эксперименты с С кстати давненько уже на Github. Я сейчас в процессе написания манифеста, фидбек приветствуется. Общий смысл в следующем: подход с уровнями абстракции, как известно, может преодолеть любые проблемы, кроме чрезмерного…
Ну и наконец, почему репо называется librdx. Потому что ABC - это побочник. По мере причёсывания кода, основной виновник торжества будет появляться в репе. В частности, из утиля меня там сильно радуют контейнеры. Но, не будем забегать вперёд...
Telegram
Local-first и децентрализация
StdMapPut 162 ns 162 ns
StdMapPutGet 154 ns 154 ns
SortedMapPut 69.7 ns 69.7 ns
SortedMapPutGet 70.1 ns 70.1 ns
Собирался пооптимизировать abc::SortedMap немного и с удивлением…
StdMapPutGet 154 ns 154 ns
SortedMapPut 69.7 ns 69.7 ns
SortedMapPutGet 70.1 ns 70.1 ns
Собирался пооптимизировать abc::SortedMap немного и с удивлением…
👍9🥴2👎1😴1
Fundamental theorem of software engineering: All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection.
Это сказал David Wheeler когда-то в 70-х. Человек сделал карьеру программируя на ассемблере. Мог ли он вообразить, как далеко всё может зайти? (И это ведь ещё не предел).
Но вот нашли SPECTRE и оказалось, что геологические наслоения уровней абстракции и изоляции легко пробиваются, прямо до железа CPU.
Абстракции - это сказки про сказки, которые мы рассказываем сами себе.
Это сказал David Wheeler когда-то в 70-х. Человек сделал карьеру программируя на ассемблере. Мог ли он вообразить, как далеко всё может зайти? (И это ведь ещё не предел).
Но вот нашли SPECTRE и оказалось, что геологические наслоения уровней абстракции и изоляции легко пробиваются, прямо до железа CPU.
Абстракции - это сказки про сказки, которые мы рассказываем сами себе.
😁5👍4🥱2👎1🥴1🫡1
Небольшая administrativia. У меня увели почтовый аккаунт gritzko@ya.ru, перерегали на другой телефон. Я его использовал для ВУЗовских дел. До того год долбились в ящик на microsoft, который я не использовал никогда.
Но постепенно добрались и до Телеграма и тут начались всякие странности. Поскольку с устройствами у меня беда, я год пользуюсь взломанным телефоном, то просто заранее предупреждаю - если вдруг канал удалится или что-то странное появится, то я ни при чём.
(Куда девать три скомпроментированных ноута - ума не приложу. Выброшу наверное. Причём, цены покупки ноутов в хронологическом порядке: $1400, $700, $400, $170 -- приспосабливаюсь к такой жизни. И это то, что на руках. Два ликвидных давно сбыл. Такие вот приключения за два года.)
Но постепенно добрались и до Телеграма и тут начались всякие странности. Поскольку с устройствами у меня беда, я год пользуюсь взломанным телефоном, то просто заранее предупреждаю - если вдруг канал удалится или что-то странное появится, то я ни при чём.
(Куда девать три скомпроментированных ноута - ума не приложу. Выброшу наверное. Причём, цены покупки ноутов в хронологическом порядке: $1400, $700, $400, $170 -- приспосабливаюсь к такой жизни. И это то, что на руках. Два ликвидных давно сбыл. Такие вот приключения за два года.)
🥴7🤯4🤨4🫡3😱1🥱1🤣1
Skiplog потихоньку выкладываю.
За 1% overhead, превращаем любой поток/лог в logN-искаемый.
За 1% overhead, превращаем любой поток/лог в logN-искаемый.
👍11👏3🥴2❤1👎1😢1
Трудно удержаться и не прокомментировать взрывы пейджеров Хезболлы в Ливане. Там батарейка-то не особо большая. Какой у нас есть прибор, подключенный к интернету, с огромной батареей? Вероятно, электромобиль. Это уже целый Шахид.
То есть, переделки гражданских дронов - это были первые ласточки. Оказывается ещё такое высокоточное оружие может быть - доставить всё курьером по адресу, и убедившись, что приложено к нужному уху, рвануть. Оплачивает "заказчик".
И учитывая, с каким энтузиазмом Китай копирует все новации, уверен и это они уже кинулись осваивать. Такими темпами, им ядерка не нужна уже.
В целом же, поскольку мы вползаем в эпоху войны всех против всех, то инфобез приобретает прифронтовой вид. Писать код, как раньше, скоро будет нельзя. Provenance кода и компонентов приобретает гораздо большее значение. Летально-фатальное.
То есть, переделки гражданских дронов - это были первые ласточки. Оказывается ещё такое высокоточное оружие может быть - доставить всё курьером по адресу, и убедившись, что приложено к нужному уху, рвануть. Оплачивает "заказчик".
И учитывая, с каким энтузиазмом Китай копирует все новации, уверен и это они уже кинулись осваивать. Такими темпами, им ядерка не нужна уже.
В целом же, поскольку мы вползаем в эпоху войны всех против всех, то инфобез приобретает прифронтовой вид. Писать код, как раньше, скоро будет нельзя. Provenance кода и компонентов приобретает гораздо большее значение. Летально-фатальное.
BBC News
Israel says it killed senior Hezbollah figures in strike on Beirut
Lebanon's health ministry says 14 people were killed and dozens injured in the strike, as cross-border exchanges escalate.
🔥11💯8❤2🥱2👎1🙏1🥴1
Local-first и децентрализация
Трудно удержаться и не прокомментировать взрывы пейджеров Хезболлы в Ливане. Там батарейка-то не особо большая. Какой у нас есть прибор, подключенный к интернету, с огромной батареей? Вероятно, электромобиль. Это уже целый Шахид. То есть, переделки гражданских…
Шнайер прокомментировал события в New York Times, довольно сдержано, в духе "ничего нового" и "никто не в безопасности". Так-то если подумать, вес пороха в патроне ПМ 0.25г, а вес батареи сотового телефона порядка 50г. При том, порох - довольно слабое метательное ВВ. Есть и помощней гораздо.
В кустарных условиях, а равно и не-инвазивно (рентгеном) фиг найдёшь такие закладки. А разбирать аккумулятор и проводить экспертизу лития - ха ха.
Остаётся провенанс. Да и то. Вон в браузере в списке CA находили мутные непонятные организации. А сколько деталек использованы в смартфоне и кто производители - снова ха ха. То есть, провенанс доверяем производителю, используем только бренд. Из своей либо дружественной страны. Который всё равно собирается в Китае. Ха ха.
Если у кого есть идеи - смело пишите!
Вообще, в старом порядке вещей, когда всё покупалось лично в магазине и тем самым рандомизировалось, был присущ естественный такой и бесплатный запас безопасности. В том числе, заменяемые батареи сильно бы облегчили картину. А когда продукт доставлен напрямую заранее известному пользователю - ха ха ха.
В кустарных условиях, а равно и не-инвазивно (рентгеном) фиг найдёшь такие закладки. А разбирать аккумулятор и проводить экспертизу лития - ха ха.
Остаётся провенанс. Да и то. Вон в браузере в списке CA находили мутные непонятные организации. А сколько деталек использованы в смартфоне и кто производители - снова ха ха. То есть, провенанс доверяем производителю, используем только бренд. Из своей либо дружественной страны. Который всё равно собирается в Китае. Ха ха.
Если у кого есть идеи - смело пишите!
Вообще, в старом порядке вещей, когда всё покупалось лично в магазине и тем самым рандомизировалось, был присущ естественный такой и бесплатный запас безопасности. В том числе, заменяемые батареи сильно бы облегчили картину. А когда продукт доставлен напрямую заранее известному пользователю - ха ха ха.
👍9🥱3👎1🥴1💯1
Local-first и децентрализация
Трудно удержаться и не прокомментировать взрывы пейджеров Хезболлы в Ливане. Там батарейка-то не особо большая. Какой у нас есть прибор, подключенный к интернету, с огромной батареей? Вероятно, электромобиль. Это уже целый Шахид. То есть, переделки гражданских…
А про безопасность автомобилей, кто не видел - в прошлом году молодёжь порезвилась с удалённым управлением и прочим, почитайте. Там всё дыряво, если вкратце.
samcurry.net
Web Hackers vs. The Auto Industry: Critical Vulnerabilities in Ferrari, BMW, Rolls Royce, Porsche, and More
While we were visiting the University of Maryland, we came across a fleet of electric scooters scattered across the campus and couldn't resist poking at the scooter's mobile app. To our surprise, our actions caused the horns and headlights on all of the scooters…
👍7
Планирую хорошенько поиграться с RDX и Darwin в этом учебном году
👎1🥱1
Media is too big
VIEW IN TELEGRAM
👍15❤2🤔2👎1🥱1🥴1
Очень трудно работать, двигать науку и преподавать, когда за тобой ездит орава обосрышей и ежедневно строит пакости. Серьезные такие пакости.
😇3🤯2🥱2🥴2😁1
Я зарекался что то про СВОйну здесь постить. Но уж больно смешно.
🥴1😴1
Forwarded from ТРОЙКА 🏴☠️
На пунктах управления десятков соединений упали трансляции с беспилотников работающие через закрытые комнаты дискорд.
Таким образом отбросив всех на уровень марта 2022 года.
Такого даже хохлы с Америкой сделать не смогли.
Таким образом отбросив всех на уровень марта 2022 года.
Такого даже хохлы с Америкой сделать не смогли.
🤣17🕊1🤨1
Я лекции через Дискорд с Ютубом веду. Получается уже двойной мощный удар.
🤯4🍾3🎉1
https://news.ycombinator.com/item?id=41805446
Soul breaker сезона - цены на рынке аренды GPU.
Комментировать не буду. Если кто в теме, пишите что думаете.
Soul breaker сезона - цены на рынке аренды GPU.
Комментировать не буду. Если кто в теме, пишите что думаете.
🥱4🤔1😴1
В ближайшие недели, я движусь по маршруту Дубай-Ларнака-Тель-Авив. У кого есть мысль выпить кофе, обсудить дела - напишите пожалуйста в приват.
👍3👎1🥱1
Генерация парсеров в ABC уже нормально так работает. Добавил парсер JSON за два дня. Собственно, грамматика, формат дерева JSON в памяти (простой массив), немного изоленты и всё. Дальше работает мой генератор, потом Ragel. На выходе нечитаемый код парсера, который можно потом скормить ChatGPT для смеху.
И это всё лёгкая разминка перед написанием
парсера RDX (текстового, JSON подобного). В простых случаях RDX-текстовый вообще неотличим от JSON.
Зачем мне нужен RDX-текстовый? Чтобы писать тесты. Много тестов. Очень назрело, тем более что реализации уже две.
Такой вот backtrace.
И это всё лёгкая разминка перед написанием
парсера RDX (текстового, JSON подобного). В простых случаях RDX-текстовый вообще неотличим от JSON.
Зачем мне нужен RDX-текстовый? Чтобы писать тесты. Много тестов. Очень назрело, тем более что реализации уже две.
Такой вот backtrace.
Telegram
Local-first и децентрализация
Другая забавная часть (как я провёл лето) это интеграция Ragel в ABC. Там забавность в том, что из одной eBNF грамматики герерируется парсер со всем бойлерплейтом. Бутстрап шаг - это когда лексер парсит свою грамматику (грамматику грамматики) и генерирует…
🔥5❤3👍2🥴2🥱1
История сделала круг. Я помню времена до интернета, когда малварь распространялась на дискетках. Оказывается, теперь это супер-пупер трюк для заражения air-gapped/оффлайновых компьютеров. Только на флешках уже, но приёмы те же.
Securelist
Meet the GoldenJackal APT group. Don’t expect any howls
GoldenJackal is an APT group, active since 2019, that usually targets government and diplomatic entities in the Middle East and South Asia. The main feature of this group is a specific toolset of .NET malware, JackalControl, JackalWorm, JackalSteal, JackalPerInfo…
🔥4🥴3😁1🥱1
RDX приобретает красивый и формальный вид
GitHub
librdx/RDX.md at master · gritzko/librdx
Replicated Data eXchange format C lib . Contribute to gritzko/librdx development by creating an account on GitHub.
👍6👎3🥴1👀1
Local-first и децентрализация
RDX приобретает красивый и формальный вид
Собственно, тут я стараюсь показать на практике, как выглядит моя идея полезной комбинаторики: примитивы должны были ортогональны и свободно комбинироваться, без добавления уровней абстракции.
А вот межглючные взаимодействия нужно сводить к минимуму.
Комбинаторика первого должна обгонять комбинаторику второго :)
Пример. JSON овский объект
То есть, мы берем в общем те же примитивы, из которых сделан JSON и делаем на порядок более гибкий, версионированный формат. То есть структурный diff/patch/merge получается практически бесплатно, из определений. И в плане структур данных, мы можем получить всю таблицу Менделеева.
В бинарной TLV версии всё ещё проще.
Подробно - по ссылкам (англ)
А вот межглючные взаимодействия нужно сводить к минимуму.
Комбинаторика первого должна обгонять комбинаторику второго :)
Пример. JSON овский объект
{“key”:123} декомпозируем в два ортогональных типа, set {1,2,3} и tuple “key”:123. И Map тогда получается, как множество пар. На сдачу мы можем теперь иметь чистые tuples (кортежи) и sets (множества) и произвольным образом это всё комбинировать. Кортежи могут быть произвольной ширины, 7.25:EUR или Иван:Петров:2002:МТ305. Кладём такие широкие tuples в массив, получаем реляционную таблицу, и так далее.То есть, мы берем в общем те же примитивы, из которых сделан JSON и делаем на порядок более гибкий, версионированный формат. То есть структурный diff/patch/merge получается практически бесплатно, из определений. И в плане структур данных, мы можем получить всю таблицу Менделеева.
В бинарной TLV версии всё ещё проще.
Подробно - по ссылкам (англ)
👍10👎2🔥1🥱1🥴1