1.83K subscribers
3.26K photos
129 videos
15 files
3.53K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Блог* pinned «Кстати, в Steam на Cultist simulator сейчас скидка 50%, продлится до 1 апреля»
👀
🤣3
😁22🌚6💯1
Блог*
Уход от копирайта в действии
Уход от копирайта в действии, дубль 2
👏2
Блог*
#prog #rust #article ROFL with a LOL: rewriting an NGINX module in Rust
#prog #article

В статье не особо рассказано про то, что именно переписали.

В статье A History of HTML Parsing at Cloudflare: Part 1 рассказывается, как в Cloudflare перешли от отдельных модулей для переписывания ответа серверов (например, замены http на https в ссылках) на отдельный единый фреймворк для потокового парсинга и переписывания HTML, который впоследствии и был опубликован под названием lazyhtml. Также описываются трудности, которые стояли перед этим парсером, и некоторые трюки, которые помогли повысить производительность. В частности, использование своего варианта арифметического кодирования позволило переводить теги в 5-битное число и таким образом сравнивать теги без чувствительности к регистру за констатное время.

В статье A History of HTML Parsing at Cloudflare: Part 2 рассказывается о новой, переписанной версии этого фреймворка, которая получила название LOL HTML (low output latency HTML). Одним из причин переписывания было желание предоставить доступ к выразительному API для динамического переписывания HTML внутри Cloudflare workers. Архитектура lazyhtml предполагала постоянную передачу данных через границу FFI, что было достаточно дорогим, чтобы потенциально свести на нет весь выигрыш в производительности от использования нативного языка.

Переписанный вариант использует синтаксис, схожий с селекторами CSS, для матчинга нужных фрагментов текста, вместо ручного матчинга по нужным свойствам токенов в пользовательских коллбеках, что не только более эргономично, но и позволило провести некоторые оптимизации. Одна из них — деление стейт-машины парсера на подробный парсер, который парсит все теги, и более простой т. н. tag scanner, который на каждый распознанный тег ищет соответствующий закрывающий, игнорируя содержимое документа между ними. За счёт того, что пользователь задаёт паттерны наперёд декларативно, этот подход позволяет безопасно пропускать обработку тех фрагментов текста, в которых пользователь не заинтересован.

Более того, lolhtml может эксплуатировать тот факт, что у заданных пользователем паттернов есть общие префиксы, что позволяет объединить часть работы над распознаванием нужных фрагментов и не проводить её заново по несколько раз.

Обе статьи более подробны, чем я расписал в своём обзоре, так что рекомендую к прочтению.
👍4
Forwarded from ОРУ, СЭР!
В твиттере запустили тренд — спрашивать близких, любили бы их, если бы они были червем
Forwarded from Heute ist März 8 (Egör)
Living its a wonderful hobby!
👏27😢7👍4😁41
Forwarded from Neural Machine
У меня много друзей и я их боюсь
💔4😢2
#meme про двух стражей
😁28
Ignorance is bliss
😁21
#meme про содержимое головы
Forwarded from ТГ Шевченка
😁81🤯1