Демо: все фичи MBL
Эта страница не про Go — она про сам MBL. Каждый раздел ниже демонстрирует одну фичу движка на реальном примере, а не на пустом месте.
Картинка рядом с заметкой
Файл кладётся прямо рядом с .md в content/, ссылка в тексте — обычный относительный markdown: . Движок копирует такие файлы в dist/ по тому же относительному пути автоматически, ничего в путях переписывать не нужно.

Чек-лист и теги
Вверху страницы — бейдж категории, бейдж сложности (сейчас "сложный", красноватый — сравни с обычным "средний" на других страницах) и теги demo/mbl прямо под заголовком. Внизу страницы — блок самопроверки с тремя пунктами; клик по строке отмечает её выполненной и сохраняется в этом браузере.
Подсказка по термину
Наведи курсор на GMP — появится всплывающая подсказка. Клик по тому же слову откроет закреплённое окошко с тем же текстом (полезно на тач-экране, где наведения нет).
Diff — только для маленьких правок
Слева — было, справа — стало; подсвечены только реально изменившиеся строки, одинаковые остаются как обычный код.
func Divide(a, b int) (int, error) { return a / b, nil}func Divide(a, b int) (int, error) { if b == 0 { return 0, errors.New("деление на ноль") } return a / b, nil}Если правка крупнее пары строк — лучше обычный код-блок с готовым результатом, без сравнения (см. другие страницы).
Сравнение подходов
type Cache struct {
mu sync.Mutex
m map[string]int
}
func (c *Cache) Get(k string) int {
c.mu.Lock()
defer c.mu.Unlock()
return c.m[k]
}var cache sync.Map
func Get(k string) int {
v, _ := cache.Load(k)
n, _ := v.(int)
return n
}sync.Map короче, но выигрывает только при редких записях и большинстве читателей — для обычного кэша с частыми обновлениями map+mutex обычно быстрее.
Песочница — запусти прямо здесь
Код ниже редактируемый — меняй и жми "Запустить", выполнится по-настоящему на play.golang.org.
Песочница с race-детектором
play.golang.org не поддерживает -race — этот блок выполняется отдельно, в изолированном Docker-сендбоксе на m-srv, реальным go run -race. Дороже обычного playground, используй только когда гонка данных — суть примера.
Жми "Запустить" — увидишь настоящий WARNING: DATA RACE (и заодно то, что main тут вообще не ждёт горутины — второй, независимый баг).
Manim-анимация
Рендерится на этапе сборки (не по клику зрителя, как playground выше) — на странице сразу обычный <video> с готовым .mp4. Кэш по хэшу кода сцены: пока текст блока не меняется, повторный рендер не запускается вообще.
Пример ниже реально объясняет идею, а не просто двигает фигуры: производная в точке — это предел, к которому стремится наклон секущей (красная линия через две точки кривой), когда вторая точка подъезжает к первой (h → 0). Число k в углу — фактический наклон секущей, обновляется вживую по ходу анимации.
Важное для тех, кто пишет свой manim-блок: русский текст — только через Text(...) (Pango, юникод из коробки), не через Tex/MathTex — те зовут системный LaTeX, а его стандартный шаблон кириллицу не умеет и падает с ошибкой компиляции. MathTex держи для чистой математической нотации (латиница/цифры/греческие буквы).
Что ещё попробовать руками
Это фичи всей оболочки, не только этой страницы — потрогай их прямо сейчас:
- Поиск — иконка-лупа в шапке или
Ctrl+K, начни печатать - Панель настроек — иконка-слайдеры, там же стиль оформления (Docs/Terminal/Journal/Blueprint) и масштаб текста
- Закладка —
Ctrl+Dили кнопка в настройках - Заметки на полях —
Alt+N, личный текст к странице, сохраняется локально - Режим фокуса —
Alt+F, прячет всё кроме текста - Дерево слева — клик в любом месте строки категории разворачивает её; у категорий с непросмотренными страницами — кольцо прогресса
- TOC справа — клик по подзаголовку плавно скроллит, не телепортирует