Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 1 month ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 2 weeks ago
Закончил большой пласт работ по записи книг для своего книжного формата на языке разметки bbm 🎉
Начинаю выпускать по главам книгу "Языки и исчисления" https://nikalexxx.github.io/?/books/vereshagin-shen-firstord
Можно посмотреть исходники — https://github.com/nikalexxx/nikalexxx.github.io/blob/master/data/books/data/vereshagin-shen-firstord/1/1/text.bbm
Из нового — добавил таблицы и доработал счётчики (их любят в книгах, как и обычные числовые счётчики, так и римскими числами например). Таблицы было добавлять нетривиально, так как они плохо ведут себя со скроллом, пришлось добавлять обёрток из дивов. Плюс таблицы ПЛОХО СКРОЛЛЯТСЯ внутри элемента с justify\-content: center
, поэтому его надо сбрасывать (обрезается начало таблицы).
Пикантные подробности css в исходниках https://github.com/bookbox-format/bookbox/blob/master/typescript-packages/view-html/src/htmlBook.css#L778
Остальные главы пойдут бодрее, мне осталось только обточить технику кастомных элементов (например theorem и proof).
Как закончу полировать язык разметки bbm, обновлю доку https://bookbox-format.github.io
В деревне Бердюково
Бросаясь ледяной крупой,
Сегодня вышел март из тени.
В печи трещат в жару поленья,
Рождая белый дым густой.
Шершаво треснет береста
С поленницы второго ряда.
Дошли до клетки, скоро надо
Телегу в пять кубов достать.
На боровок закину ноги,
Грея крестец о кирпичи.
С палатьев край листа торчит,
На нём цепочка тавтологий.
Ищу в горнушке мой платок,
Случайно нож роняю с грядки.
По кухне запах идёт сладкий:
Ватрушкой занят весь шесток.
Ждут очереди колобушки,
Пока порубленные щи
Томятся в чугуне. Тащить
Пришлось из подпола избушки.
Рубили щи мы в сентябре,
В корыте тяпкой измельча.
Сейчас запас уже почат,
Осталось банок двадцать две.
Слезаю с печи, ужарел.
Внизу с окна крестню видать.
Люди галашатся (штук пять)
У чипыжей на свой манер.
Там каждый затмевал другого:
То деревенский дурачок,
То попандопало, то старичок,
То прощелыга, то пузатый боров.
Ждут автолавку в понедельник,
А я махну в полоски наши.
Наевшись запеченной каши,
Ищу под веник можжевельник.
Конечно есть на чердаке
Берёзовый, есть и дубовый.
Ломали за старухой, новый
Же будет хвойный, в кипятке.
И в мае снова мы пойдём,
Как только восстановим лавы
После разлива речки малой.
Одним веселым майским днём
Вприпрыжку будем на лугу
Бежать с шаранками вокруг.
Здесь исключён любой испуг,
В сумках с собой по пирогу.
А дело разве в пирогах?
Уж точно нет, в загибах дело!
Смотрел на небо — багровело,
Моей деревни был закат.
Все слова здесь — настоящие! Эти слова частично местные регионализмы, частично просто используемые в сельской местности. Если этот пост соберёт суммарно 50 реакций, то я выложу словарь для всех непонятных слов.
Почти закончил первый параграф. С новым языком разметки bbm многое пришлось решать с нуля 🏋.
Например кастомные элементы. В "Языках и исчислениях" активно использовались кастомные tex команды, например чтобы обозначать теоремы и доказательства.
Я решил это так: ввёл пространство имён def, где можно объявлять свои элементы. В отличие от external элементов, которые реализуются уже в рантайме, def это по сути макросы, чтобы собрать из стандартных элементов нужное.
На второй картинке можно увидеть, что элемент def:proof
просто обрамляет доказательство в треугольники (частый приём в математических книгах, иногда ещё в конце доказательства квадрат).
Пока это я сделал на typescript, но планирую сделать декларативно прямо на языке bbm
.
До выпуска в прод мне осталось реализовать таблицы. Так как их не было в bookbox, но в книге они активно используются с самого начала для таблиц истинности.
Напоминаю, что прямо сейчас идёт Yandex Cup, чемпионат по программированию, который мы вместе с коллегами Яндексоидами готовим для вас
https://yandex.ru/cup/frontend
Успейте принять участие до 20 октября. В треке фронтенда на первом этапе попробуйте в числе прочих решить мою задачку "Бамбуковые палочки". Если наберете полный балл (пока никому не удалось с понедельника), напишите.
Я всё это время с начала недели сижу в дежурном чате и отсматриваю новые решения. Некоторые участники смогли меня удивить, решая способами, которые я и сам не предполагал 😱. Возможно и вы удивите😉
https://marketplace.visualstudio.com/items?itemName=bookbox-format.bookbox-markup-language
Как обычно, всё чуть затянулось. Неделю отвлекся от разработки расширения. Но наконец оно готово!
После установки просто создайте текстовый файл в vscode с расширением .bbm
и всё заработает. Подсветка синтаксиса полностью повторяет грамматику языка. У файлов также появится иконка в дереве файлов.
Сейчас наконец дошли руки начать писать именно в файлах bbm первую главу книги "Языки и исчисления", буду выпускать как я и говорил ранее по главе за раз.
Расширение для vscode почти готово, завтра опубликую.
На первой картинке фрагмент файла для грамматики textmate. Его я писал вручную, так как там были сложности с автоматической генерацией.
Во-первых, популярных конверторов из antlr4 в textmate нет. Во-вторых, не факт что есть однозначное соответствие, по крайней мере я это не доказывал.
Я придумал примерный алгоритм перевода грамматик, по сути исполнил его вручную. Если коротко, все последовательности терминалов надо свернуть в регулярку, а последовательность нетерминалов постепенно срезать с двух концов при помощи begin и end.
На второй картинке пример файла text.bbm
с подсветкой. Контент взят из доки yt https://ytsaurus.tech/docs/ru/user-guide/dynamic-tables/dyn-query-language#obrashenie-k-kontejneram
Есть небольшие проблемы с экранированием фигурных скобок в блоках. В маркдауне для блоков кода используются три косые кавычки, что достаточно редкое сочетание. Я пока добавил тройные фигурные скобки в дополнение к двойным. Но возможно их уберу, если придумаю что получше.
Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 1 month ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 2 weeks ago