diff --git a/.gitignore b/.gitignore index 21fbd14..47e6811 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ dist/ node_modules/ out/ +target/ diff --git a/s3_cse/module01/assets/fonts/times.ttf b/s3_cse/module01/assets/fonts/times.ttf new file mode 100644 index 0000000..55f734a Binary files /dev/null and b/s3_cse/module01/assets/fonts/times.ttf differ diff --git a/s3_cse/module01/assets/fonts/timesbd.ttf b/s3_cse/module01/assets/fonts/timesbd.ttf new file mode 100644 index 0000000..0fc9d84 Binary files /dev/null and b/s3_cse/module01/assets/fonts/timesbd.ttf differ diff --git a/s3_cse/module01/justfile b/s3_cse/module01/justfile new file mode 100644 index 0000000..46e14f2 --- /dev/null +++ b/s3_cse/module01/justfile @@ -0,0 +1,15 @@ +_default: + @just --list + +fonts_dir := join("assets", "fonts") +typst_flags := "--font-path " + fonts_dir + " --ignore-system-fonts" + +typst_dst := join("target", "typst", "main.pdf") +typst_src := join("typst", "main.typ") + +compile: + mkdir -p {{ parent_directory(typst_dst) }} + typst compile {{ typst_flags }} {{ typst_src }} {{ typst_dst }} + +preview: + tinymist preview {{ typst_flags }} {{ typst_src }} diff --git a/s3_cse/module01/typst/abbrev.typ b/s3_cse/module01/typst/abbrev.typ new file mode 100644 index 0000000..b36908a --- /dev/null +++ b/s3_cse/module01/typst/abbrev.typ @@ -0,0 +1,7 @@ +#set heading(outlined: false) + += ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ + +/ LAN: Local area network -- об'єднання певного числа комп'ютерів на відносно невеликій території. +/ ПЗ: Програмне забезпечення -- сукупність комп'ютерних програм, які керують роботою комп'ютера. +/ ЦП: Центральний процессор -- функціональна частина комп'ютера, що призначена для інтерпретації команд. diff --git a/s3_cse/module01/typst/body.typ b/s3_cse/module01/typst/body.typ new file mode 100644 index 0000000..c16a842 --- /dev/null +++ b/s3_cse/module01/typst/body.typ @@ -0,0 +1,60 @@ += ПЕРЕДПРОЄКТНЕ ОБСТЕЖЕННЯ ПРЕДМЕТНОЇ ОБЛАСТІ + +== Аналіз предметної області + +== Аналіз наявних рішень + +=== Аналіз відомих програмних продуктів + +#let g(body) = table.cell(body, fill: green.lighten(90%)) +#let r(body) = table.cell(body, fill: red.lighten(90%)) +#let y(body) = table.cell(body, fill: yellow.lighten(90%)) + +#[ + #set page(flipped: true) + #show figure: set block(breakable: true) + #figure(table( + align: horizon, + columns: (1fr, 1.5fr, 1.5fr, 1.5fr, 3fr), + inset: 0.75em, + table.header([Функціонал], [Курсова робота], [Jellyfin @jellyfin], [Plex @plex], [Пояснення]), + // + [Апаратне прискорення], + g[Є], + g[Є], + y[За підпискою], + [Використання спеціального обладнання для більш ефективного виконання, ніж ЦП загального призначення], + // + [Віддалене управління], + y[Автоматичне виявлення LAN-сервера], + y[Автоматичне виявлення LAN-сервера], + g[Доступ через обліковий запис], + [Підключення до системи, коли користувач фізично знаходиться далеко], + // + [Ліцензія], + g[MIT], + g[GPL-2.0], + r[Freemium], + [Право використовувати, модифікувати та розповсюджувати ПЗ], + // + [Підтримка платформ], + y[ЩНВ], + g[Web, Linux, Windows, macOS, Android, iOS], + g[Web, Linux, Windows, macOS, Android, iOS], + [Нативний застосунок забезпечує кращу швидкодію, стабільність і задовільний користувацький досвід], + // + [Реклама], + g[Немає], + g[Немає], + y[Безкоштовна версія], + [Спосіб відшкодування витрат на розробку та отримання прибутку], + ), caption: [Порівняння з аналогом]) +] + +=== Аналіз відомих алгоритмічних та технічних рішень + +== Опис бізнес-процесів + +== Постановка задачі + +#heading(depth: 2, numbering: none)[Висновки до розділу] diff --git a/s3_cse/module01/typst/hayagriva.yml b/s3_cse/module01/typst/hayagriva.yml new file mode 100644 index 0000000..0e59449 --- /dev/null +++ b/s3_cse/module01/typst/hayagriva.yml @@ -0,0 +1,14 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/mkdjr/hayagriva/refs/heads/main/hayagriva.schema.json +# @help: https://github.com/typst/hayagriva/blob/main/docs/file-format.md + +# TODO: https://github.imc.re/typst/hayagriva/pull/192 + +jellyfin: + title: "The Free Software Media System | Jellyfin" + type: "web" + url: "https://jellyfin.org" + +plex: + title: "Stream Movies & Find Shows On The Best Streaming Services" + type: "web" + url: "https://plex.tv" diff --git a/s3_cse/module01/typst/intro.typ b/s3_cse/module01/typst/intro.typ new file mode 100644 index 0000000..d83f5c0 --- /dev/null +++ b/s3_cse/module01/typst/intro.typ @@ -0,0 +1,4 @@ += ВСТУП + +Самостійний хостинг стає дедалі популярнішою альтернативою для тих, хто прагне уникнути десятків платних сервісів +потокового контенту і особисто володіти своєю медіа-колекцією. \ No newline at end of file diff --git a/s3_cse/module01/typst/main.typ b/s3_cse/module01/typst/main.typ new file mode 100644 index 0000000..777e919 --- /dev/null +++ b/s3_cse/module01/typst/main.typ @@ -0,0 +1,60 @@ +// TODO: https://github.com/typst/typst/issues/4224 +#let leading = 1.5em +#let leading = leading - 0.75em + +#set page(margin: (bottom: 2cm, left: 2cm, right: 1cm, top: 2cm), paper: "a4") +#set par(first-line-indent: 1.25cm, leading: leading, spacing: leading) +#set text(font: "Times New Roman", lang: "ua", region: "ua", size: 14pt) + +#set figure(numbering: i => numbering("1.1", counter(heading).get().first(), i)) +#show figure.where(kind: table): it => { + set figure.caption(position: top, separator: [ -- ]) + show figure.caption: set align(left) + it +} +#show heading: it => { + counter(figure.where(kind: image)).update(0) + counter(figure.where(kind: table)).update(0) + it +} + +// @see: https://forum.typst.app/t/how-to-create-a-pagebreak-before-every-depth-1-heading-except-for-the-outline/904 +#show outline: set heading(supplement: [Outline]) +#show heading.where(depth: 1): it => { + if it.supplement != [Outline] { + pagebreak(weak: true) + } + it +} + +#show heading: set text(weight: "regular") +#show heading.where(level: 1): set align(center) +#show heading.where(level: 1): set text(weight: "bold") + +// TODO: https://github.com/typst/typst/issues/311 +#show heading: it => { + it + "" + v(-1em) +} + +#include "title.typ" +#set page(number-align: top + right, numbering: "1") + +#pagebreak(weak: true) +#outline(title: "ЗМІСТ") + +#include "abbrev.typ" +#include "intro.typ" + +#[ + #set heading(numbering: "1.1") + #include "body.typ" +] + +#bibliography( + "./hayagriva.yml", + // @see: https://zakon.rada.gov.ua/laws/show/z0155-17 + style: "institute-of-electrical-and-electronics-engineers", + title: "СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ", +) diff --git a/s3_cse/module01/typst/title.typ b/s3_cse/module01/typst/title.typ new file mode 100644 index 0000000..6f69c9a --- /dev/null +++ b/s3_cse/module01/typst/title.typ @@ -0,0 +1,11 @@ +#set heading(outlined: false) + +#align(center + horizon, [ + = Пояснювальна записка до курсової роботи\ + на тему: "Система для аналізу, фільтрації та структурування мультимедійного контенту" \ + КПІ.ІП-3501.045480.02.81 +]) + +#align(center + bottom, [ + Київ - #datetime.today().year() +])