Как стать автором
Обновить

Комментарии 19

Не мог не отметить свой любимый инструмент разработки

В целом, машинно-сгенерированные диаграммы доставляют проблемы. Всегда окажется, что надо сдвинуть конкретный блок на сантиметр, и без приседаний это невозможно. Или машина производит слишком шумный результат, который трудно читать. Поэтому лучший вариант -- руками.

При этом разработчики строят на этом свою модель монетизации. Бесплатные dagre и elk делют "шумные" результаты, с ними надо искать приемлимый результат, а вот tala позиционируется как инструмент, который будет делать все гораздо чище. Не тестировал, для небольших диаграмм достаточно первых двух.

Как вариант, в такой ситуации можно сохранить диаграмму в SVG и поправить в Inkscape или другом редакторе.

отчасти соглашусь, но как часто я встречал ситуации, когда все сваливалось к передвижению блоков и выравниванию. Это один из вариантов прокрастинации, на мой взгляд.

Очень интересно, спасибо за статью.

Вот еще недавно была статья на похожую тему, в комментариях там еще примеров накидали.

какие у него корневые отличия от PlantUML?

Лицензия, год первого релиза, язык разработки, стиль отображения, язык разметки, вставка иконок и картиночек, вставка LaTeX и рендеринг формул, автоформатирование и прочая

А что не так с лицензией plantuml к примеру? Там же GPL, опенсорнее некуда. Насчет языка впрочем соглашусь, мне вот тоже Gо понятнее, нежели Java, но это уже тема вкусов )

Все так. У D2 это MPL 2.0, у plantUML это GPL 3.0.
Вопрос звучал какие отличия, я их перечислил.

А в обратную сторону оно умеет? Базовый пример: я в утилите рисую диаграмму, а она мне её код выдаёт.

Интересная мысль. По ключам CLI не умеет:

d2 --help
Usage:
  d2 [--watch=false] [--theme=0] file.d2 [file.svg | file.png]
  d2 layout [name]
  d2 fmt file.d2

d2 compiles and renders file.d2 to file.svg | file.png
It defaults to file.svg if an output path is not provided.

Use - to have d2 read from stdin or write to stdout.

See man d2 for more detailed docs.

Flags:
  -w, --watch           $D2_WATCH   watch for changes to input and live reload. Use $HOST and $PORT to specify the listening address.
                                    (default localhost:0, which is will open on a randomly available local port). (default false)
  -h, --host string     $HOST       host listening address when used with watch (default "localhost")
  -p, --port string     $PORT       port listening address when used with watch (default "0")
  -b, --bundle          $D2_BUNDLE  when outputting SVG, bundle all assets and layers into the output file (default true)
  -d, --debug           $DEBUG      print debug logs. (default false)
  -l, --layout string   $D2_LAYOUT  the layout engine used (default "dagre")
  -t, --theme int       $D2_THEME   the diagram theme ID. For a list of available options, see https://oss.terrastruct.com/d2 (default 0)
      --pad int         $D2_PAD     pixels padded around the rendered diagram (default 100)
  -v, --version                     get the version (default false)
  -s, --sketch          $D2_SKETCH  render the diagram to look like it was sketched by hand (default false)


Subcommands:
  d2 layout - Lists available layout engine options with short help
  d2 layout [name] - Display long help for a particular layout engine, including its configuration options
  d2 fmt file.d2 - Format file.d2

See more docs and the source code at https://oss.terrastruct.com/d2

По факту можно попробовать сделать запрос на feature или предложить PR с этим функционалом.

Ну и код утилиты она точно не выдаст никогда, не та область применения. Все таки это создание диаграмм.
Максимум - преобразование из SVG, созданного ранее, в формат d2 обратно.

Выглядит интересно. Однако для общности я бы вспомнил два других, также весьма развитых и обвешанных плагинами средства декларативного описания диаграмм: https://plantuml.com и https://mermaid.js.org. Просто, чтобы не выглядело, что D2 это что-то новое и уникальное.

Сам издавна пользуюсь plantuml, по-моему это самая старая из утилит для построения UML и не только, диаграмм, хотя местами неконсистентность его синтаксиса раздражает.

Спасибо!
Выше приложил сайт, где можно наглядно сравнить разные средства.
В данном случае описывал только этот инструмент, не замахиваясь на общую сравнительную статью.

Отдельное спасибо автору за ссылку на https://github.com/nhooyr/websocket, a то ушедшая в архив горилла выглядела как-то уж уныло безальтернативно :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории