bespoyasov / solidbook

Book about the SOLID principles and object-oriented software design.
https://solidbook.vercel.app
MIT License
609 stars 58 forks source link

Создать читабельную версию в PDF #140

Closed mixalezhnev closed 2 years ago

bespoyasov commented 5 years ago

Идея хорошая. Какие для этого есть инструменты, подходы, способы?

taksenov commented 4 years ago

@bespoyasov судя по всему, нужно искать в этом направлении https://mdxjs.com/advanced/transform-content

По сути где-то на уровне CI/CD получать из "mdx->md", а дальше конвертировать "md->pdf"

bespoyasov commented 4 years ago

Посмотрел, пока не очень внимательно, но вроде, из этого действительно можно что-то соорудить :–)

Кажется, что было бы круто ещё убрать в PDF-версии всё лишнее типа тестов, «дизайн»-обвязки из меню, шапки и всего такого, оставив только контент.

taksenov commented 4 years ago

@bespoyasov @dex157 Еще мне подумалось, что возможно более оптимальный подход: это создать отдельный репозиторий, содержащий только md разметку, как раз без всего лишнего. И уже в нем нагенерить различные по размеру pdf файлы.

Сами pdf можно распространять через релизы гитхаба.

В принципе могу собрать альфа версию за вечер. Если есть одобрение, то дайте знать.

dex157 commented 4 years ago

@taksenov проблема в том, что у нас не чистый md ) Он содержит разметку для тестов и тд. Если вычленить из mdx тесты и прочее вспомогательное, то нам где то нужно будет это обратно вставлять, в общем сложностей больше получится )

taksenov commented 4 years ago

@dex157 да я изучил как устроен проект, и первое что мне пришло в голову это выделить md из mdx. Мне сначала показалось, что можноmd "импортировать" в mdx. Но в документации к mdx отакой возможности ничего не сказано.

Из-за этого я предложил решение которо описал в данном комментарии https://github.com/open-tech-authors/solid/issues/140#issuecomment-581024518

Но как мне кажется, ковыряться с AST и все настраивать, может оказаться очень накладным по ресурсам.

Поэтому альтернативное решение

  1. Взять и ручками выташить весь полезный md в файли в отдельный проект
  2. Настроить в этом проекте конвертацию md -> pdf (на npm есть пакеты реализующие это)
  3. Выложить "скомпилированные" pdf
  4. Дать ссылку на основном сайте.

Как-то так мне видится решение создания книги именно в pdf.

taksenov commented 4 years ago

Минусы:

  1. Некоторое количество ручного труда, на первоначальном этапе переноса всего md в отдельные файлы.
  2. Нужно настроить коммуникацию между данным репозиторием и репозиторием с pdf, чтобы вносить правки. Тут возможно гитхаб предоставляет какие-то автоматизированные уведомления, но я этот вопрос не изучал.
dex157 commented 4 years ago

Мне это решение не нравится тем, что наши данные будут расходиться, появится необходимость править опечатки в 2 местах

taksenov commented 4 years ago

@dex157 да я как раз отметил это как минус.

dex157 commented 4 years ago

Это не по SOLID )

taksenov commented 4 years ago

@bespoyasov @dex157 Ну тогда приглашайте, когда будете парсить AST созданный из md. мне эта тема сейчас интересна.

Если, что в выходные попробую поиграться и спарсить AST. А вот дальше как с ним работать нужна будет помощь от вас.

@dex157 если что я в телегу напишу тебе.

dex157 commented 4 years ago

@taksenov https://github.com/open-tech-authors/solid/blob/master/domain/typografy/reactChildren/index.ts тут я игался немного с ast mdx

bespoyasov commented 4 years ago

Мне пока тоже не очень нравится идея хранить одинаковые данные в разных местах.

Вероятно, нам для MVP не потребуется удалять тесты со страниц. Мы можем их «пройти», выбрав все варианты и показав правильные и неправильные варианты ответов с описаниями под ними. Но я не уверен, что это будет проще, конечно. Если нет, то идею — в топку.

@taksenov, пригласил тебя в dev-чатик в телеге.