MBL
Go / demo / Демо: все фичи MBL
Go сложный

Демо: все фичи MBL

demombl

Эта страница не про Go — она про сам MBL. Каждый раздел ниже демонстрирует одну фичу движка на реальном примере, а не на пустом месте.

Картинка рядом с заметкой

Файл кладётся прямо рядом с .md в content/, ссылка в тексте — обычный относительный markdown: ![тест](test-image.png). Движок копирует такие файлы в 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}

Если правка крупнее пары строк — лучше обычный код-блок с готовым результатом, без сравнения (см. другие страницы).

Сравнение подходов

map + mutex
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]
}
sync.Map
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.

на play.golang.org

Песочница с race-детектором

play.golang.org не поддерживает -race — этот блок выполняется отдельно, в изолированном Docker-сендбоксе на m-srv, реальным go run -race. Дороже обычного playground, используй только когда гонка данных — суть примера.

локально, go run -race

Жми "Запустить" — увидишь настоящий 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 справа — клик по подзаголовку плавно скроллит, не телепортирует
Самопроверка 0 / 3
Открыл(а) поиск через иконку-лупу в шапке (или Ctrl+K)
Открыл(а) панель настроек (шестерёнка) и переключил(а) стиль оформления
Поставил(а) закладку и написал(а) заметку к этой странице
Как усвоено?