2023-07-31
4
.gitattributes
vendored
|
@ -1,3 +1 @@
|
|||
README*.md linguist-language=HTML
|
||||
draft/2023-06-05-round-robin.md linguist-language=Java
|
||||
draft/2023-06-13-directory-tree.md linguist-language=Shell
|
||||
*.md linguist-language=HTML
|
||||
|
|
2
.gitignore
vendored
|
@ -1,4 +1,4 @@
|
|||
.idea
|
||||
*.iml
|
||||
.repo_*.sh
|
||||
.token_*
|
||||
.repo_*
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
## Дерево каталогов
|
||||
|
||||
<pre>
|
||||
.
|
||||
├─ <a href='bash_scripts'>bash_scripts</a>
|
||||
│ ├─ <a href='bash_scripts/README.en.md'>README.en.md</a>
|
||||
│ ├─ <a href='bash_scripts/README.md'>README.md</a>
|
||||
│ ├─ <a href='bash_scripts/archive-common.sh'>archive-common.sh</a>
|
||||
│ ├─ <a href='bash_scripts/archive-packages.sh'>archive-packages.sh</a>
|
||||
│ ├─ <a href='bash_scripts/info-copy.sh'>info-copy.sh</a>
|
||||
│ ├─ <a href='bash_scripts/info-domain.sh'>info-domain.sh</a>
|
||||
│ ├─ <a href='bash_scripts/info-toggle.sh'>info-toggle.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo-compose.sh'>repo-compose.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo-gitea.tmpl.sh'>repo-gitea.tmpl.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo-gitlab.tmpl.sh'>repo-gitlab.tmpl.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo-local.tmpl.sh'>repo-local.tmpl.sh</a>
|
||||
│ └─ <a href='bash_scripts/repo-update.sh'>repo-update.sh</a>
|
||||
├─ <a href='draft'>draft</a>
|
||||
│ ├─ <a href='draft/2023-06-05-round-robin.md'>2023-06-05-round-robin.md</a>
|
||||
│ ├─ <a href='draft/2023-06-13-directory-tree.md'>2023-06-13-directory-tree.md</a>
|
||||
│ └─ <a href='draft/README.md'>README.md</a>
|
||||
├─ <a href='pictures'>pictures</a>
|
||||
│ ├─ <a href='pictures/1.jpg'>1.jpg</a>
|
||||
│ ├─ <a href='pictures/2.jpg'>2.jpg</a>
|
||||
│ ├─ <a href='pictures/3.jpg'>3.jpg</a>
|
||||
│ ├─ <a href='pictures/4.jpg'>4.jpg</a>
|
||||
│ ├─ <a href='pictures/5.jpg'>5.jpg</a>
|
||||
│ ├─ <a href='pictures/README.md'>README.md</a>
|
||||
│ ├─ <a href='pictures/color-tomato-theme.jpg'>color-tomato-theme.jpg</a>
|
||||
│ ├─ <a href='pictures/directory-tree1.jpg'>directory-tree1.jpg</a>
|
||||
│ ├─ <a href='pictures/directory-tree2.jpg'>directory-tree2.jpg</a>
|
||||
│ ├─ <a href='pictures/directory-tree3.jpg'>directory-tree3.jpg</a>
|
||||
│ ├─ <a href='pictures/directory-tree4.jpg'>directory-tree4.jpg</a>
|
||||
│ ├─ <a href='pictures/draft.jpg'>draft.jpg</a>
|
||||
│ ├─ <a href='pictures/maintenance.jpg'>maintenance.jpg</a>
|
||||
│ ├─ <a href='pictures/older-tomato-theme.jpg'>older-tomato-theme.jpg</a>
|
||||
│ ├─ <a href='pictures/pictures.jpg'>pictures.jpg</a>
|
||||
│ └─ <a href='pictures/pomodoro.jpg'>pomodoro.jpg</a>
|
||||
├─ <a href='CONTRIBUTING.md'>CONTRIBUTING.md</a>
|
||||
├─ <a href='DIRECTORY-TREE.md'>DIRECTORY-TREE.md</a>
|
||||
├─ <a href='LICENSE.md'>LICENSE.md</a>
|
||||
├─ <a href='OPEN_LICENSE.txt'>OPEN_LICENSE.txt</a>
|
||||
├─ <a href='README.en.md'>README.en.md</a>
|
||||
├─ <a href='README.md'>README.md</a>
|
||||
└─ <a href='WIKI.md'>WIKI.md</a>
|
||||
</pre>
|
39
DIRECTORY_TREE.md
Normal file
|
@ -0,0 +1,39 @@
|
|||
## Дерево каталогов
|
||||
|
||||
<pre>
|
||||
<a href='.'>.</a>
|
||||
├─ <a href='bash_scripts'>bash_scripts</a>
|
||||
│ ├─ <a href='bash_scripts/README.en.md'>README.en.md</a>
|
||||
│ ├─ <a href='bash_scripts/README.md'>README.md</a>
|
||||
│ ├─ <a href='bash_scripts/archive_backup.sh'>archive_backup.sh</a>
|
||||
│ ├─ <a href='bash_scripts/archive_packages.sh'>archive_packages.sh</a>
|
||||
│ ├─ <a href='bash_scripts/info_param.sh'>info_param.sh</a>
|
||||
│ ├─ <a href='bash_scripts/info_references.sh'>info_references.sh</a>
|
||||
│ ├─ <a href='bash_scripts/info_tree_license.sh'>info_tree_license.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo_compose.sh'>repo_compose.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo_gitea.tmpl.sh'>repo_gitea.tmpl.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo_gitlab.tmpl.sh'>repo_gitlab.tmpl.sh</a>
|
||||
│ ├─ <a href='bash_scripts/repo_local.tmpl.sh'>repo_local.tmpl.sh</a>
|
||||
│ └─ <a href='bash_scripts/repo_update.sh'>repo_update.sh</a>
|
||||
├─ <a href='draft'>draft</a>
|
||||
│ ├─ <a href='draft/README.md'>README.md</a>
|
||||
│ └─ <a href='draft/round-robin.md'>round-robin.md</a>
|
||||
├─ <a href='pictures'>pictures</a>
|
||||
│ ├─ <a href='pictures/README.md'>README.md</a>
|
||||
│ ├─ <a href='pictures/bash_scripts.jpg'>bash_scripts.jpg</a>
|
||||
│ ├─ <a href='pictures/color-tomato-theme.jpg'>color-tomato-theme.jpg</a>
|
||||
│ ├─ <a href='pictures/draft.jpg'>draft.jpg</a>
|
||||
│ ├─ <a href='pictures/older-tomato-theme.jpg'>older-tomato-theme.jpg</a>
|
||||
│ ├─ <a href='pictures/pictures.jpg'>pictures.jpg</a>
|
||||
│ ├─ <a href='pictures/pomodoro-website.jpg'>pomodoro-website.jpg</a>
|
||||
│ └─ <a href='pictures/pomodoro.jpg'>pomodoro.jpg</a>
|
||||
├─ <a href='.gitattributes'>.gitattributes</a>
|
||||
├─ <a href='.gitignore'>.gitignore</a>
|
||||
├─ <a href='CONTRIBUTING.md'>CONTRIBUTING.md</a>
|
||||
├─ <a href='DIRECTORY_TREE.md'>DIRECTORY_TREE.md</a>
|
||||
├─ <a href='LICENSE.md'>LICENSE.md</a>
|
||||
├─ <a href='OPEN_LICENSE.txt'>OPEN_LICENSE.txt</a>
|
||||
├─ <a href='README.en.md'>README.en.md</a>
|
||||
├─ <a href='README.md'>README.md</a>
|
||||
└─ <a href='WIKI.md'>WIKI.md</a>
|
||||
</pre>
|
53
README.en.md
|
@ -17,11 +17,21 @@ Constructive criticism and error descriptions can be sent over electronic mail
|
|||
interesting for me and useful for professional growth. Because, firstly, not all mistakes are made
|
||||
intentionally and, secondly, not all of them — are mistakes.
|
||||
|
||||
- [pomodoro1](https://hub.mos.ru/pomodoro/1/blob/master/README.en.md) — Three-dimensional graphics in JavaScript.
|
||||
- [pomodoro2](https://hub.mos.ru/pomodoro/2/blob/master/README.en.md) — Cartesian product, combinatorics.
|
||||
- [pomodoro3](https://hub.mos.ru/pomodoro/3/blob/master/README.en.md) — Matrix multiplication, rotations.
|
||||
- [pomodoro4](https://hub.mos.ru/pomodoro/4/blob/master/README.en.md) — Poetry. Humor.
|
||||
- [pomodoro5](https://hub.mos.ru/pomodoro/5/blob/master/README.en.md) — Drawing pictures with text.
|
||||
1. [Three-dimensional graphics in JavaScript](https://pomodoro1.mircloud.ru/en/).
|
||||
2. [Cartesian product, combinatorics](https://pomodoro2.mircloud.ru/en/).
|
||||
3. [Matrix multiplication and rotations](https://pomodoro3.mircloud.ru/en/).
|
||||
4. [Poetry, humor](https://pomodoro4.mircloud.ru/en/).
|
||||
5. [Drawing pictures with text](https://pomodoro5.mircloud.ru/en/).
|
||||
|
||||
### Process
|
||||
|
||||
The creative process continues continuously, especially when there is no work. Fully mature
|
||||
thoughts become separate projects, and immature ones go as parts of this project. It is
|
||||
difficult for some thoughts to mature, so they remain incomplete.
|
||||
|
||||
- [Process management](bash_scripts/README.en.md) — scripts Bash.
|
||||
- [Incomplete publications](draft/README.md) — draft without translation.
|
||||
- [Avatars for repositories](pictures/README.md) — pictures.
|
||||
|
||||
### Build
|
||||
|
||||
|
@ -30,33 +40,20 @@ obfuscation was performed for all classes, variables and functions of HTML, CSS
|
|||
substitution cipher. Code blocks were left without obfuscation, and syntax highlighting was performed on
|
||||
the client. *Obusificator* — is a unique solution, no longer used.
|
||||
|
||||
Now the site is generated by Jekyll, the template language is Liquid, syntax
|
||||
highlighting during build time, and the content of the pages is in Markdown format.
|
||||
[Maintenance](bash_scripts/README.en.md)
|
||||
is performed by Bash scripts. The thought does not leave me, that
|
||||
I made a *senseless swap* — in general, nothing has changed.
|
||||
Now the site is generated by Jekyll, the template language is Liquid, syntax highlighting during build
|
||||
time, and the content of the pages is in Markdown format. Process management is performed by Bash scripts.
|
||||
The thought does not leave me, that I made a *senseless swap* — in general, nothing has changed.
|
||||
|
||||
### Design
|
||||
|
||||
Two design themes for Jekyll in the Liquid template language:
|
||||
[«Color tomato»](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.en.md)
|
||||
was written earlier using AngularJS and Material, this was
|
||||
the design of the previous version of my blog, then an
|
||||
[«Older tomato»](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.en.md)
|
||||
— lightweight single-color variant was written using only HTML and CSS, the appearance resembles
|
||||
the default design theme on GitHub Pages. Both tomatoes supplement each other and are similar to
|
||||
each other, commonalities and differences between them are marked in the list below.
|
||||
Two design themes for Jekyll in the Liquid template language: «Color tomato» was written earlier using
|
||||
AngularJS and Material, this was the design of the previous version of my blog, then an «Older tomato»
|
||||
— lightweight single-color variant was written using only HTML and CSS, the appearance resembles the
|
||||
default design theme on GitHub Pages. Both tomatoes supplement each other and are similar to each other,
|
||||
so they can be used together on the same site.
|
||||
|
||||
- [x] Responsive layout.
|
||||
- [x] User JS and CSS files in the head block of HTML pages.
|
||||
- [x] SEO-markup using JSON-LD and Open Graph.
|
||||
- [x] Switch between two languages and two tomato themes.
|
||||
- [x] Map of site pages with their translations in XML format.
|
||||
- [x] Simple 404 page for non-existing URLs.
|
||||
- [x] Fonts: Roboto for text and JBMono for code blocks.
|
||||
- [x] Tomatoes: PNG, JPG 120x120, SVG 64x64, ICO 32x32.
|
||||
- [ ] Color selection during the build, green is the default color.
|
||||
- [ ] Scroll-to-top button in Material style.
|
||||
- [Color tomato](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.en.md) — color selection during the build.
|
||||
- [Older tomato](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.en.md) — lightweight decoration theme.
|
||||
|
||||
### License
|
||||
|
||||
|
|
92
README.md
|
@ -1,70 +1,64 @@
|
|||
# [Помидоры](README.en.md)
|
||||
|
||||
Обновлённый и ещё раз переписанный вариант моего старого блога, новые версии
|
||||
старых программ: объёмный тетрис, простая капча и другие — упрощённая сборка
|
||||
сайта без обфускации, облегчённое оформление страниц без JavaScript и открытая
|
||||
лицензия РФ вместо MIT — изменений много и везде, но суть осталась прежней —
|
||||
ничего не изменилось. Серия статических вёб-сайтов «Помидоры» — чтобы не скучать и
|
||||
чтобы не забыть, как программы писать, когда работы нет.
|
||||
Обновлённый и ещё раз переписанный вариант моего старого блога, новые версии старых программ: объёмный тетрис,
|
||||
простая капча и другие — упрощённая сборка сайта без обфускации, облегчённое оформление страниц без JavaScript и
|
||||
открытая лицензия РФ вместо MIT — изменений много и везде, но суть осталась прежней — ничего не изменилось. Серия
|
||||
статических вёб-сайтов «Помидоры» — чтобы не скучать и чтобы не забыть, как программы писать, когда работы нет.
|
||||
|
||||
### Содержание
|
||||
|
||||
Решения задач по программированию с ошибками и описания решений. Исправление ошибок — дополнительная
|
||||
задача для троечников и любителей списывать. Весь код проверен и работает — выглядит красиво, но на
|
||||
продуктовом сервере такой код использовать нельзя. Вопрос на четвёрку: найти хотя бы одну ошибку.
|
||||
Вопрос на пятёрку: найти *больше* ошибок и написать *своё* решение.
|
||||
Решения задач по программированию с ошибками и описания решений. Исправление ошибок — дополнительная задача для
|
||||
троечников и любителей списывать. Весь код проверен и работает — выглядит красиво, но на продуктовом сервере такой
|
||||
код использовать нельзя. Вопрос на четвёрку: найти хотя бы одну ошибку. Вопрос на пятёрку: найти *больше* ошибок и
|
||||
написать *своё* решение.
|
||||
|
||||
Конструктивную критику и описания ошибок можно отправлять по электронной почте — как минимум мне
|
||||
это интересно и полезно для профессионального роста. Потому что, во-первых, не все ошибки допущены
|
||||
намеренно и, во-вторых, не все они — есть ошибки.
|
||||
Конструктивную критику и описания ошибок можно отправлять по электронной почте — как минимум мне это интересно и
|
||||
полезно для профессионального роста. Потому что, во-первых, не все ошибки допущены намеренно и, во-вторых, не все
|
||||
они — есть ошибки.
|
||||
|
||||
- [pomodoro1](https://hub.mos.ru/pomodoro/1/blob/master/README.md) — Трёхмерная графика на JavaScript.
|
||||
- [pomodoro2](https://hub.mos.ru/pomodoro/2/blob/master/README.md) — Декартово произведение, комбинаторика.
|
||||
- [pomodoro3](https://hub.mos.ru/pomodoro/3/blob/master/README.md) — Умножение матриц, повороты.
|
||||
- [pomodoro4](https://hub.mos.ru/pomodoro/4/blob/master/README.md) — Поэзия. Юмор.
|
||||
- [pomodoro5](https://hub.mos.ru/pomodoro/5/blob/master/README.md) — Рисуем картинки текстом.
|
||||
1. [Трёхмерная графика на JavaScript](https://pomodoro1.mircloud.ru/).
|
||||
2. [Декартово произведение, комбинаторика](https://pomodoro2.mircloud.ru/).
|
||||
3. [Умножение матриц и повороты](https://pomodoro3.mircloud.ru/).
|
||||
4. [Поэзия, юмор](https://pomodoro4.mircloud.ru/).
|
||||
5. [Рисуем картинки текстом](https://pomodoro5.mircloud.ru/).
|
||||
|
||||
### Процесс
|
||||
|
||||
Творческий процесс продолжается непрерывно, особенно, когда работы нет. Полностью созревшие мысли
|
||||
становятся отдельными проектами, а несозревшие идут как части этого проекта. Некоторым мыслям
|
||||
сложно созреть, поэтому они остаются незавершёнными.
|
||||
|
||||
- [Управление процессами](bash_scripts/README.md) — скрипты Bash.
|
||||
- [Незавершённые публикации](draft/README.md) — черновик.
|
||||
- [Аватарки для репозиториев](pictures/README.md) — картинки.
|
||||
|
||||
### Сборка
|
||||
|
||||
Раньше сборку сайта из шаблонов выполняла кастомная программа на Java. После сборки выполнялась
|
||||
обфускация для всех классов, переменных и функций HTML, CSS и JS шифром замены по словарю. Блоки
|
||||
кода оставлялись без обфускации, а подсветка синтаксиса выполнялась на клиенте. *Обусификатор* —
|
||||
уникальное решение, больше не используется.
|
||||
Раньше сборку сайта из шаблонов выполняла кастомная программа на Java. После сборки выполнялась обфускация для
|
||||
всех классов, переменных и функций HTML, CSS и JS шифром замены по словарю. Блоки кода оставлялись без обфускации,
|
||||
а подсветка синтаксиса выполнялась на клиенте. *Обусификатор* — уникальное решение, больше не используется.
|
||||
|
||||
Теперь сборку сайта выполняет Jekyll, язык шаблонов Liquid, подсветка
|
||||
синтаксиса во время сборки, а содержание страниц в формате Markdown.
|
||||
[Обслуживание](bash_scripts/README.md)
|
||||
выполняется скриптами Bash. Меня не покидает мысль, что
|
||||
я *поменял шило на мыло* — в целом ничего не изменилось.
|
||||
Теперь сборку сайта выполняет Jekyll, язык шаблонов Liquid, подсветка синтаксиса во время
|
||||
сборки, а содержание страниц в формате Markdown. Управление процессами выполняют скрипты Bash.
|
||||
Меня не покидает мысль, что я *поменял шило на мыло* — в целом ничего не изменилось.
|
||||
|
||||
### Оформление
|
||||
|
||||
Две темы оформления для Jekyll на языке шаблонов Liquid:
|
||||
[«Цветной помидор»](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md)
|
||||
был написан раньше с использованием AngularJS и Material, таким
|
||||
было оформление предыдущей версии моего блога, затем был написан
|
||||
[«Старый помидор»](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md)
|
||||
— облегчённый одноцветный вариант с использованием только HTML и CSS, внешний вид
|
||||
напоминает тему оформления по умолчанию на GitHub Pages. Оба помидора дополняют друг
|
||||
друга и похожи друг на друга, общие черты и различия между ними отмечены в списке ниже.
|
||||
Две темы оформления для Jekyll на языке шаблонов Liquid: «Цветной помидор» был написан раньше с
|
||||
использованием AngularJS и Material, таким было оформление предыдущей версии моего блога, затем
|
||||
был написан «Старый помидор» — облегчённый одноцветный вариант с использованием только HTML и CSS,
|
||||
внешний вид напоминает тему оформления по умолчанию на GitHub Pages. Оба помидора дополняют друг
|
||||
друга и похожи друг на друга, поэтому их можно использовать вместе на одном сайте.
|
||||
|
||||
- [x] Адаптивная вёрстка или Responsive layout.
|
||||
- [x] Файлы пользователя JS и CSS в блоке head страниц HTML.
|
||||
- [x] SEO-разметка с использованием JSON-LD и Open Graph.
|
||||
- [x] Переключение между двумя языками и помидорными темами.
|
||||
- [x] Карта страниц сайта с их переводами в формате XML.
|
||||
- [x] Простая страница 404 для несуществующих URL-адресов.
|
||||
- [x] Шрифты: Roboto для текста и JBMono для блоков кода.
|
||||
- [x] Помидоры: PNG, JPG 120x120, SVG 64x64, ICO 32x32.
|
||||
- [ ] Выбор цвета во время сборки, зелёный цвет по умолчанию.
|
||||
- [ ] Кнопка прокрутки вверх в стиле Material.
|
||||
- [Цветной помидор](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) — выбор цвета во время сборки.
|
||||
- [Старый помидор](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md) — легковесная тема оформления.
|
||||
|
||||
### Лицензия
|
||||
|
||||
Раньше к своим проектам в интернете прикладывал лицензию MIT, но когда появилась открытая
|
||||
лицензия РФ — перешёл на неё, сразу внёс небольшие изменения в текст и дополнил от себя,
|
||||
хотя я не юрист. Основной смысл лицензии остался прежним — программа предоставляется
|
||||
бесплатно, но без каких-либо гарантий, и автор программы — это я.
|
||||
Раньше к своим проектам в интернете прикладывал лицензию MIT, но когда появилась открытая лицензия РФ
|
||||
— перешёл на неё, сразу внёс небольшие изменения в текст и дополнил от себя, хотя я не юрист. Основной
|
||||
смысл лицензии остался прежним — программа предоставляется бесплатно, но без каких-либо гарантий,
|
||||
и автор программы — это я.
|
||||
|
||||
- [OPEN_LICENSE.txt](OPEN_LICENSE.txt) — основной текст лицензии и пояснение к нему без
|
||||
изменений, можно найти в интернете. Из него удалил лишние пробелы и пробельные символы,
|
||||
|
|
18
WIKI.md
|
@ -1,7 +1,7 @@
|
|||
<hr>
|
||||
|
||||
<details open>
|
||||
<summary><h3>Содержание</h3></summary>
|
||||
<summary><h3>Оглавление</h3></summary>
|
||||
|
||||
<hr>
|
||||
|
||||
|
@ -16,16 +16,17 @@
|
|||
- [Комбинации элементов по столбцам](https://pomodoro2.mircloud.ru/ru/2021/09/13/combinations-by-columns.html) — 13.09.2021.
|
||||
- [Треугольник Паскаля на Java](https://pomodoro2.mircloud.ru/ru/2021/09/09/pascals-triangle-in-java.html) — 09.09.2021.
|
||||
- [Декартово произведение множеств](https://pomodoro2.mircloud.ru/ru/2021/09/06/cartesian-product-of-sets.html) — 06.09.2021.
|
||||
3. Оптимизация умножения матриц.
|
||||
3. Умножение матриц и повороты.
|
||||
- [Алгоритм Винограда — Штрассена](https://pomodoro3.mircloud.ru/ru/2022/02/10/winograd-strassen-algorithm.html) — 10.02.2022.
|
||||
- [Умножение матриц в параллельных потоках](https://pomodoro3.mircloud.ru/ru/2022/02/08/matrix-multiplication-parallel-streams.html) — 08.02.2022.
|
||||
- [Поворот матрицы на 180 градусов](https://pomodoro3.mircloud.ru/ru/2021/12/16/matrix-rotation-180-degrees.html) — 16.12.2021.
|
||||
- [Поворот матрицы на 90 градусов](https://pomodoro3.mircloud.ru/ru/2021/12/12/matrix-rotation-90-degrees.html) — 12.12.2021.
|
||||
- [Оптимизация умножения матриц](https://pomodoro3.mircloud.ru/ru/2021/12/09/optimizing-matrix-multiplication.html) — 09.12.2021.
|
||||
4. Юмор. Поэзия.
|
||||
4. Поэзия, юмор.
|
||||
- [Поэзия начала 20 века](https://pomodoro4.mircloud.ru/ru/2022/01/07/poetry-early-20th-century.html) — 07.01.2022.
|
||||
- [История про лес, название утеряно](https://pomodoro4.mircloud.ru/ru/2022/01/05/forest-story-title-lost.html) — 05.01.2022.
|
||||
5. Рисуем картинки на Java.
|
||||
5. Рисуем картинки текстом.
|
||||
- [Дерево каталогов со ссылками](https://pomodoro5.mircloud.ru/ru/2023/08/03/directory-tree.html) — 03.08.2023.
|
||||
- [Генератор паролей](https://pomodoro5.mircloud.ru/ru/2023/06/19/password-generator.html) — 19.06.2023.
|
||||
- [Рисуем сердечко в консоли](https://pomodoro5.mircloud.ru/ru/2023/03/08/drawing-heart-in-console.html) — 08.03.2023.
|
||||
- [График функции в консоли](https://pomodoro5.mircloud.ru/ru/2023/02/05/function-graph-in-console.html) — 05.02.2023.
|
||||
|
@ -36,7 +37,7 @@
|
|||
<hr>
|
||||
|
||||
<details open>
|
||||
<summary><h3>Content</h3></summary>
|
||||
<summary><h3>Contents</h3></summary>
|
||||
|
||||
<hr>
|
||||
|
||||
|
@ -51,16 +52,17 @@
|
|||
- [Combinations of elements by columns](https://pomodoro2.mircloud.ru/en/2021/09/14/combinations-by-columns.html) — 14.09.2021.
|
||||
- [Pascal's Triangle in Java](https://pomodoro2.mircloud.ru/en/2021/09/10/pascals-triangle-in-java.html) — 10.09.2021.
|
||||
- [Cartesian product of sets](https://pomodoro2.mircloud.ru/en/2021/09/07/cartesian-product-of-sets.html) — 07.09.2021.
|
||||
3. Optimizing matrix multiplication.
|
||||
3. Matrix multiplication and rotations.
|
||||
- [Winograd — Strassen algorithm](https://pomodoro3.mircloud.ru/en/2022/02/11/winograd-strassen-algorithm.html) — 11.02.2022.
|
||||
- [Matrix multiplication in parallel streams](https://pomodoro3.mircloud.ru/en/2022/02/09/matrix-multiplication-parallel-streams.html) — 09.02.2022.
|
||||
- [Matrix rotation 180 degrees](https://pomodoro3.mircloud.ru/en/2021/12/17/matrix-rotation-180-degrees.html) — 17.12.2021.
|
||||
- [Matrix rotation 90 degrees](https://pomodoro3.mircloud.ru/en/2021/12/13/matrix-rotation-90-degrees.html) — 13.12.2021.
|
||||
- [Optimizing matrix multiplication](https://pomodoro3.mircloud.ru/en/2021/12/10/optimizing-matrix-multiplication.html) — 10.12.2021.
|
||||
4. Humor. Poetry.
|
||||
4. Poetry, humor.
|
||||
- [Poetry early 20th century](https://pomodoro4.mircloud.ru/en/2022/01/08/poetry-early-20th-century.html) — 08.01.2022.
|
||||
- [Forest story, title lost](https://pomodoro4.mircloud.ru/en/2022/01/06/forest-story-title-lost.html) — 06.01.2022.
|
||||
5. Drawing images in Java.
|
||||
5. Drawing pictures with text.
|
||||
- [Directory tree with links](https://pomodoro5.mircloud.ru/en/2023/08/04/directory-tree.html) — 04.08.2023.
|
||||
- [Password generator](https://pomodoro5.mircloud.ru/en/2023/06/20/password-generator.html) — 20.06.2023.
|
||||
- [Drawing heart in console](https://pomodoro5.mircloud.ru/en/2023/03/08/drawing-heart-in-console.html) — 08.03.2023.
|
||||
- [Function graph in console](https://pomodoro5.mircloud.ru/en/2023/02/06/function-graph-in-console.html) — 06.02.2023.
|
||||
|
|
|
@ -1,36 +1,36 @@
|
|||
# [Maintenance](README.md)
|
||||
# [Process management](README.md)
|
||||
|
||||
Process automation for static websites [«Pomodori»](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.en.md).
|
||||
|
||||
Creating archives, building websites, creating local and remote repositories for publishing.
|
||||
Creating an archive, switching the domain, composing scripts and creating repositories for publishing.
|
||||
|
||||
| Bash scripts | Actions performed |
|
||||
|:-------------------------------------------|:------------------------------------------------------------------------------------------------|
|
||||
| [archive-common.sh](archive-common.sh) | Creating a common archive for the directories of projects on the current date. |
|
||||
| [archive-packages.sh](archive-packages.sh) | Building websites, creating and copying archives for deployment. |
|
||||
| [info-copy.sh](info-copy.sh) | Copying information files and building a tree in each of the directories of projects. |
|
||||
| [**info-domain.sh**](info-domain.sh) | Used in other scripts. Setting the domain parameter of the remote repository. |
|
||||
| [info-toggle.sh](info-toggle.sh) | Toggling the remote repository for cross-references in descriptions. |
|
||||
| [**repo-compose.sh**](repo-compose.sh) | Setting parameters for templates and copying ready-made scripts to the directories of projects. |
|
||||
| [repo-local.tmpl.sh](repo-local.tmpl.sh) | Script template without parameters to create a local repository. |
|
||||
| [repo-gitea.tmpl.sh](repo-gitea.tmpl.sh) | Script template without parameters to create a remote repository gitea. |
|
||||
| [repo-gitlab.tmpl.sh](repo-gitlab.tmpl.sh) | Script template without parameters to create a remote repository gitlab. |
|
||||
| [**repo-update.sh**](repo-update.sh) | Executing scripts in parallel mode and creating repositories for the directories of projects. |
|
||||
|:---------------------------------------------|:--------------------------------------------------------------------------------------------|
|
||||
| [**archive_backup.sh**](archive_backup.sh) | Creating a common archive for the directories of projects on the current date. |
|
||||
| [archive_packages.sh](archive_packages.sh) | Building websites, creating and copying archives for deployment. |
|
||||
| [**info_param.sh**](info_param.sh) | Parameter for other scripts. Switching the domain of the remote repository. |
|
||||
| [info_references.sh](info_references.sh) | Updating the domain of a remote repository in cross-references in descriptions. |
|
||||
| [info_tree_license.sh](info_tree_license.sh) | Building a directory tree for each project and copying license files. |
|
||||
| [**repo_compose.sh**](repo_compose.sh) | Composing scripts with parameters and copying them to the directories of projects. |
|
||||
| [repo_gitea.tmpl.sh](repo_gitea.tmpl.sh) | Script template without parameters to create a remote repository gitea. |
|
||||
| [repo_gitlab.tmpl.sh](repo_gitlab.tmpl.sh) | Script template without parameters to create a remote repository gitlab. |
|
||||
| [repo_local.tmpl.sh](repo_local.tmpl.sh) | Script template without parameters to create a local repository. |
|
||||
| [**repo_update.sh**](repo_update.sh) | Parallel execution of scripts and creation of repositories for the directories of projects. |
|
||||
|
||||
## Structure
|
||||
## Directories of projects
|
||||
|
||||
Linear directory structure — all projects are located in one folder.
|
||||
|
||||
Scripts are launched from those directories, in which they are located.
|
||||
Single-level directory structure — local projects are located on the same level.
|
||||
On the server, repositories with websites are moved to a separate group, and the
|
||||
rest of the repositories remain with the user. The directory structure for
|
||||
[git.org.ru](https://git.org.ru/golovin.gg) and
|
||||
[hub.mos.ru](https://hub.mos.ru/golovin.gg).
|
||||
|
||||
<pre>
|
||||
.
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.en.md'>color-tomato-theme</a> — Decoration
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.en.md'>older-tomato-theme</a> — Decoration
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.en.md'>pomodoro</a> — Description
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/1/blob/master/README.en.md'>pomodoro1</a> — Website
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/2/blob/master/README.en.md'>pomodoro2</a> — Website
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/3/blob/master/README.en.md'>pomodoro3</a> — Website
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/4/blob/master/README.en.md'>pomodoro4</a> — Website
|
||||
└─ <a href='https://hub.mos.ru/pomodoro/5/blob/master/README.en.md'>pomodoro5</a> — Website
|
||||
<a href='https://hub.mos.ru/golovin.gg'>.</a>
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/color-tomato-theme'>color-tomato-theme</a>
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/older-tomato-theme'>older-tomato-theme</a>
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/pomodoro'>pomodoro</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/1'>pomodoro1</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/2'>pomodoro2</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/3'>pomodoro3</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/4'>pomodoro4</a>
|
||||
└─ <a href='https://hub.mos.ru/pomodoro/5'>pomodoro5</a>
|
||||
</pre>
|
||||
|
|
|
@ -1,36 +1,36 @@
|
|||
# [Обслуживание](README.en.md)
|
||||
# [Управление процессами](README.en.md)
|
||||
|
||||
Автоматизация процессов для статических вёб-сайтов [«Помидоры»](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md).
|
||||
|
||||
Создание архивов, сборка вёб-сайтов, создание локальных и удалённых репозиториев для публикации.
|
||||
Создание архива, переключение домена, составление скриптов и создание репозиториев для публикации.
|
||||
|
||||
| Скрипты Bash | Выполняемые действия |
|
||||
|:-------------------------------------------|:------------------------------------------------------------------------------------------|
|
||||
| [archive-common.sh](archive-common.sh) | Создание общего архива для каталогов проектов на текущую дату. |
|
||||
| [archive-packages.sh](archive-packages.sh) | Сборка вёб-сайтов, создание и копирование архивов для развёртывания. |
|
||||
| [info-copy.sh](info-copy.sh) | Копирование информационных файлов и построение дерева в каждом из каталогов проектов. |
|
||||
| [**info-domain.sh**](info-domain.sh) | Используется в других скриптах. Установка параметра домена удалённого репозитория. |
|
||||
| [info-toggle.sh](info-toggle.sh) | Переключение удалённого репозитория для перекрёстных ссылок в описаниях. |
|
||||
| [**repo-compose.sh**](repo-compose.sh) | Установка параметров для шаблонов и копирование готовых скриптов в каталоги проектов. |
|
||||
| [repo-local.tmpl.sh](repo-local.tmpl.sh) | Шаблон скрипта без параметров для создания локального репозитория. |
|
||||
| [repo-gitea.tmpl.sh](repo-gitea.tmpl.sh) | Шаблон скрипта без параметров для создания удалённого репозитория gitea. |
|
||||
| [repo-gitlab.tmpl.sh](repo-gitlab.tmpl.sh) | Шаблон скрипта без параметров для создания удалённого репозитория gitlab. |
|
||||
| [**repo-update.sh**](repo-update.sh) | Выполнение скриптов в параллельном режиме и создание репозиториев для каталогов проектов. |
|
||||
|:---------------------------------------------|:---------------------------------------------------------------------------------|
|
||||
| [**archive_backup.sh**](archive_backup.sh) | Создание общего архива для каталогов проектов на текущую дату. |
|
||||
| [archive_packages.sh](archive_packages.sh) | Сборка вёб-сайтов, создание и копирование архивов для развёртывания. |
|
||||
| [**info_param.sh**](info_param.sh) | Параметр для других скриптов. Переключение домена удалённого репозитория. |
|
||||
| [info_references.sh](info_references.sh) | Обновление домена удалённого репозитория в перекрёстных ссылках в описаниях. |
|
||||
| [info_tree_license.sh](info_tree_license.sh) | Построение дерева каталогов для каждого проекта и копирование файлов лицензии. |
|
||||
| [**repo_compose.sh**](repo_compose.sh) | Составление скриптов с параметрами и копирование их в каталоги проектов. |
|
||||
| [repo_gitea.tmpl.sh](repo_gitea.tmpl.sh) | Шаблон скрипта без параметров для создания удалённого репозитория gitea. |
|
||||
| [repo_gitlab.tmpl.sh](repo_gitlab.tmpl.sh) | Шаблон скрипта без параметров для создания удалённого репозитория gitlab. |
|
||||
| [repo_local.tmpl.sh](repo_local.tmpl.sh) | Шаблон скрипта без параметров для создания локального репозитория. |
|
||||
| [**repo_update.sh**](repo_update.sh) | Параллельное выполнение скриптов и создание репозиториев для каталогов проектов. |
|
||||
|
||||
## Структура
|
||||
## Каталоги проектов
|
||||
|
||||
Линейная структура каталогов — все проекты расположены в одной папке.
|
||||
|
||||
Скрипты запускаются из тех каталогов, в которых они расположены.
|
||||
Одноуровневая структура каталогов — локальные проекты расположены на одном
|
||||
уровне. На сервере репозитории с вёб-сайтами переходят в отдельную группу,
|
||||
а остальные репозитории остаются у пользователя. Структура каталогов для
|
||||
[git.org.ru](https://git.org.ru/golovin.gg) и
|
||||
[hub.mos.ru](https://hub.mos.ru/golovin.gg).
|
||||
|
||||
<pre>
|
||||
.
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md'>color-tomato-theme</a> — Оформление
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md'>older-tomato-theme</a> — Оформление
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md'>pomodoro</a> — Описание
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/1/blob/master/README.md'>pomodoro1</a> — Вёб-сайт
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/2/blob/master/README.md'>pomodoro2</a> — Вёб-сайт
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/3/blob/master/README.md'>pomodoro3</a> — Вёб-сайт
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/4/blob/master/README.md'>pomodoro4</a> — Вёб-сайт
|
||||
└─ <a href='https://hub.mos.ru/pomodoro/5/blob/master/README.md'>pomodoro5</a> — Вёб-сайт
|
||||
<a href='https://hub.mos.ru/golovin.gg'>.</a>
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/color-tomato-theme'>color-tomato-theme</a>
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/older-tomato-theme'>older-tomato-theme</a>
|
||||
├─ <a href='https://hub.mos.ru/golovin.gg/pomodoro'>pomodoro</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/1'>pomodoro1</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/2'>pomodoro2</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/3'>pomodoro3</a>
|
||||
├─ <a href='https://hub.mos.ru/pomodoro/4'>pomodoro4</a>
|
||||
└─ <a href='https://hub.mos.ru/pomodoro/5'>pomodoro5</a>
|
||||
</pre>
|
||||
|
|
|
@ -3,5 +3,6 @@ echo "Создание общего архива для каталогов пр
|
|||
cd ../..
|
||||
filename="pomodoro-$(date '+%Y-%m-%d').zip"
|
||||
rm -rf "$filename"
|
||||
7z a -tzip -ssw -mx9 -r0 "$filename" ./* -xr!".idea" -xr!".git" -x!".token_*" \
|
||||
-x!"*.iml" -x!"*.gem" -x!"*.lock" -x!"*.zip" -x!"_site*" -x!".repo_*.sh"
|
||||
7z a -tzip -ssw -mx9 -r0 "$filename" ./* -xr!".idea" -xr!".git" -x!"*.iml" \
|
||||
-x!"*.gem" -x!"*.lock" -x!"*.zip" -x!"_site*" -x!".token_*" -x!".repo_*" \
|
||||
-xr!"DIRECTORY_TREE.md" -xr!"CONTRIBUTING.md" -x!"*LICENSE*"
|
|
@ -7,6 +7,6 @@ for ((i = 1; i <= 5; i++)); do
|
|||
cd "../pomodoro$i" || continue
|
||||
./build.sh
|
||||
./package.sh
|
||||
cp -uv "pomodoro$i.zip" ..
|
||||
cp -v "pomodoro$i.zip" ..
|
||||
done
|
||||
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$milliseconds")) мс."
|
|
@ -1,26 +0,0 @@
|
|||
#!/bin/bash
|
||||
echo "Копирование информационных файлов и построение дерева в каждом из каталогов проектов."
|
||||
cd ..
|
||||
basedir=$(pwd)
|
||||
milliseconds=$(date '+%s%3N')
|
||||
find .. -mindepth 1 -maxdepth 1 -type d | sort -r | while read -r dir; do
|
||||
echo "Обработка: $dir"
|
||||
cd "$dir" || continue
|
||||
if [ "${dir##*/}" != "${basedir##*/}" ]; then
|
||||
cp -uv "$basedir"/CONTRIBUTING.md .
|
||||
cp -uv "$basedir"/*LICENSE* .
|
||||
fi
|
||||
{
|
||||
echo "## Дерево каталогов"
|
||||
echo
|
||||
echo "<pre>"
|
||||
tree -nvf --dirsfirst -I "*.gem|*.lock|*.zip|_site*" --noreport
|
||||
echo "</pre>"
|
||||
} >DIRECTORY-TREE.md
|
||||
sed -i -e "s/ / /g" -e "s/ / /g" -e "s/──/─/g" DIRECTORY-TREE.md
|
||||
find . -mindepth 1 -type f,d -not -regex '.*\.\(gem\|lock\|zip\)\|.*/\(\.\|_site\).*' | sort -r | while read -r file; do
|
||||
# echo "${dir#*/} => \\$file >> ${file#*/} >> ${file##*/}"
|
||||
sed -i "s|\\$file|<a href='${file#*/}'>${file##*/}<\/a>|g" DIRECTORY-TREE.md
|
||||
done
|
||||
done
|
||||
echo "Время выполнения: $(("$(date '+%s%3N')" - "$milliseconds")) мс."
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/bash
|
||||
#remote="git.org.ru"
|
||||
remote="hub.mos.ru"
|
||||
echo "Репозиторий: $remote"
|
4
bash_scripts/info_param.sh
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
#remote="git.org.ru"
|
||||
remote="hub.mos.ru"
|
||||
echo "Переключение домена удалённого репозитория: $remote"
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
echo "Переключение удалённого репозитория для перекрёстных ссылок в описаниях."
|
||||
source info-domain.sh || remote="git.org.ru"
|
||||
echo "Обновление домена удалённого репозитория в перекрёстных ссылках в описаниях."
|
||||
remote="git.org.ru" && source info_param.sh
|
||||
cd ../..
|
||||
find . -type f -name 'README*.md' -o -name '*.gemspec' | sort -r | while read -r file; do
|
||||
echo "$remote => $file"
|
54
bash_scripts/info_tree_license.sh
Executable file
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
echo "Построение дерева каталогов для каждого проекта и копирование файлов лицензии."
|
||||
function list_directory_contents {
|
||||
eval "LC_COLLATE=C ls -A --group-directories-first $exclusions $1"
|
||||
}
|
||||
function directory_tree {
|
||||
local path="$1"
|
||||
local head="$2"
|
||||
local tail="$3"
|
||||
if [ "one" == "$4" ]; then
|
||||
echo -n "/"
|
||||
else
|
||||
echo -ne "\n$head"
|
||||
fi
|
||||
echo -n "<a href='${path#*/}'>${path##*/}</a>"
|
||||
if [ -d "$path" ]; then
|
||||
local list
|
||||
readarray -t list <<<"$(list_directory_contents "$path")"
|
||||
local len=${#list[@]}
|
||||
local i
|
||||
for ((i = 0; i < len; i++)); do
|
||||
if [ -z "${list[$i]}" ]; then
|
||||
continue
|
||||
elif ((len == 1)); then
|
||||
directory_tree "$path/${list[$i]}" "$tail" "$tail" "one"
|
||||
elif ((i < len - 1)); then
|
||||
directory_tree "$path/${list[$i]}" "$tail├─ " "$tail│ "
|
||||
else
|
||||
directory_tree "$path/${list[$i]}" "$tail└─ " "$tail "
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
cd ..
|
||||
basedir=$(pwd)
|
||||
milliseconds=$(date '+%s%3N')
|
||||
find .. -mindepth 1 -maxdepth 1 -type d | sort -r | while read -r dir; do
|
||||
echo "Обработка: $dir"
|
||||
cd "$dir" || continue
|
||||
exclusions="-I \".git\" $(sed 's/^/ -I "/;s/$/"/' .gitignore | tr -d '\n')"
|
||||
{
|
||||
echo "## Дерево каталогов"
|
||||
echo -ne "\n<pre>"
|
||||
directory_tree .
|
||||
echo -e "\n</pre>"
|
||||
} >DIRECTORY_TREE.md
|
||||
if [ "${dir##*/}" != "${basedir##*/}" ]; then
|
||||
rm CONTRIBUTING.md
|
||||
rm ./*LICENSE*
|
||||
cp "$basedir"/CONTRIBUTING.md .
|
||||
cp "$basedir"/*LICENSE* .
|
||||
fi
|
||||
done
|
||||
echo "Время выполнения: $(("$(date '+%s%3N')" - "$milliseconds")) мс."
|
|
@ -1,69 +0,0 @@
|
|||
#!/bin/bash
|
||||
echo "Установка параметров для шаблонов и копирование готовых скриптов в каталоги проектов."
|
||||
source info-domain.sh || remote="git.org.ru"
|
||||
basedir=$(pwd)
|
||||
cd ../..
|
||||
find . -mindepth 1 -maxdepth 1 -type d | sort -r | while read -r dir; do
|
||||
echo "Обработка: $dir"
|
||||
if [ ! -f "$dir"/.gitignore ] || [ "$(grep -cx "\.repo_\*\.sh" "$dir"/.gitignore)" == 0 ]; then
|
||||
echo ".repo_*.sh" >>"$dir"/.gitignore
|
||||
echo "Обновлён файл .gitignore"
|
||||
fi
|
||||
owner="golovin.gg"
|
||||
repo=${dir##*/}
|
||||
description=""
|
||||
type="usr"
|
||||
wiki=""
|
||||
if [[ "$dir" =~ "pomodoro" ]]; then
|
||||
if [[ "$dir" =~ [[:digit:]] ]]; then
|
||||
owner="pomodoro"
|
||||
repo=${dir//[^[:digit:]]/}
|
||||
type="org"
|
||||
description="Вёб-сайт: https://${owner}${repo}.mircloud.ru"
|
||||
else
|
||||
if [ "$remote" == "hub.mos.ru" ]; then
|
||||
wiki=$(uni2ascii -a U -qpsn "$dir"/WIKI.md)
|
||||
else
|
||||
wiki=$(basenc "$dir"/WIKI.md --base64)
|
||||
fi
|
||||
description="Серия статических вёб-сайтов / Содержание / Сборка / Оформление / Открытая лицензия РФ"
|
||||
fi
|
||||
elif [[ "$dir" =~ "color-tomato" ]]; then
|
||||
description="Цветной помидор / Тема оформления Jekyll"
|
||||
elif [[ "$dir" =~ "older-tomato" ]]; then
|
||||
description="Старый помидор / Тема оформления Jekyll"
|
||||
elif [[ "$dir" =~ "maintenance" ]]; then
|
||||
description="Скрипты Bash / Обслуживание / Автоматизация процессов / Создание архивов / Сборка вёб-сайтов / "
|
||||
description+="Копирование файлов / Построение дерева каталогов / Создание скриптов из шаблонов / "
|
||||
description+="Шаблоны скриптов / Создание локальных и удалённых репозиториев"
|
||||
elif [[ "$dir" =~ "draft" ]]; then
|
||||
description="Черновик / Код с комментариями"
|
||||
elif [[ "$dir" =~ "pictures" ]]; then
|
||||
description="Картинки / Аватарки для репозиториев"
|
||||
fi
|
||||
{
|
||||
echo "#!/bin/bash"
|
||||
if [ "$remote" == "hub.mos.ru" ]; then
|
||||
echo "user=\"golovin.gg\""
|
||||
fi
|
||||
echo "owner=\"$owner\""
|
||||
echo "repo=\"$repo\""
|
||||
echo "description=\"$description\""
|
||||
echo "type=\"$type\""
|
||||
echo "wiki=\"$wiki\""
|
||||
if [ "$remote" == "hub.mos.ru" ]; then
|
||||
echo "token=\"$(cat "$basedir/.token_hub_mos_ru")\""
|
||||
cat "$basedir/repo-gitlab.tmpl.sh"
|
||||
else
|
||||
echo "token=\"$(cat "$basedir/.token_git_org_ru")\""
|
||||
cat "$basedir/repo-gitea.tmpl.sh"
|
||||
fi
|
||||
} >"$dir"/.repo_remote.sh && chmod +x "$dir"/.repo_remote.sh
|
||||
{
|
||||
echo "#!/bin/bash"
|
||||
echo "remote=\"$remote\""
|
||||
echo "owner=\"$owner\""
|
||||
echo "repo=\"$repo\""
|
||||
cat "$basedir/repo-local.tmpl.sh"
|
||||
} >"$dir"/.repo_local.sh && chmod +x "$dir"/.repo_local.sh
|
||||
done
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
echo "Выполнение скриптов в параллельном режиме и создание репозиториев для каталогов проектов."
|
||||
cd ..
|
||||
milliseconds=$(date '+%s%3N')
|
||||
find .. -mindepth 1 -maxdepth 1 -type d -printf \
|
||||
'cd %h/%f && ./.repo_remote.sh >/dev/null && ./.repo_local.sh >/dev/null\0' | xargs -L1 -0 -P0 bash -c
|
||||
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$milliseconds")) мс."
|
64
bash_scripts/repo_compose.sh
Executable file
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
echo "Составление скриптов с параметрами и копирование их в каталоги проектов."
|
||||
remote="git.org.ru" && source info_param.sh
|
||||
basedir=$(pwd)
|
||||
cd ../..
|
||||
find . -mindepth 1 -maxdepth 1 -type d | sort -r | while read -r dir; do
|
||||
echo "Обработка: $dir"
|
||||
if [ ! -f "$dir"/.gitignore ] || [ "$(grep -cx "\.repo_\*" "$dir"/.gitignore)" == 0 ]; then
|
||||
echo ".repo_*" >>"$dir"/.gitignore
|
||||
echo "Обновлён файл .gitignore"
|
||||
fi
|
||||
owner="golovin.gg"
|
||||
repo=${dir##*/}
|
||||
description=""
|
||||
type="usr"
|
||||
wiki=""
|
||||
if [ -f "$dir"/WIKI.md ]; then
|
||||
if [ "$remote" == "hub.mos.ru" ]; then
|
||||
wiki=$(uni2ascii -a U -qpsn "$dir"/WIKI.md)
|
||||
else
|
||||
wiki=$(basenc "$dir"/WIKI.md --base64)
|
||||
fi
|
||||
fi
|
||||
if [[ "$dir" =~ "pomodoro" ]]; then
|
||||
if [[ "$dir" =~ [[:digit:]] ]]; then
|
||||
owner="pomodoro"
|
||||
repo=${dir//[^[:digit:]]/}
|
||||
type="org"
|
||||
description="Вёб-сайт: https://${owner}${repo}.mircloud.ru"
|
||||
else
|
||||
description="Описание / Управление процессами / Незавершённые публикации / Аватарки для репозиториев"
|
||||
fi
|
||||
elif [[ "$dir" =~ "color-tomato" ]]; then
|
||||
description="Цветной помидор / Тема оформления Jekyll"
|
||||
elif [[ "$dir" =~ "older-tomato" ]]; then
|
||||
description="Старый помидор / Тема оформления Jekyll"
|
||||
fi
|
||||
{
|
||||
echo "#!/bin/bash"
|
||||
if [ "$remote" == "hub.mos.ru" ]; then
|
||||
echo "user=\"golovin.gg\""
|
||||
fi
|
||||
echo "owner=\"$owner\""
|
||||
echo "repo=\"$repo\""
|
||||
echo "description=\"$description\""
|
||||
echo "type=\"$type\""
|
||||
echo "wiki=\"$wiki\""
|
||||
if [ "$remote" == "hub.mos.ru" ]; then
|
||||
echo "token=\"$(cat "$basedir/.token_hub_mos_ru")\""
|
||||
cat "$basedir/repo_gitlab.tmpl.sh"
|
||||
else
|
||||
echo "token=\"$(cat "$basedir/.token_git_org_ru")\""
|
||||
cat "$basedir/repo_gitea.tmpl.sh"
|
||||
fi
|
||||
} >"$dir"/.repo_remote.sh && chmod +x "$dir"/.repo_remote.sh
|
||||
{
|
||||
echo "#!/bin/bash"
|
||||
echo "remote=\"$remote\""
|
||||
echo "owner=\"$owner\""
|
||||
echo "repo=\"$repo\""
|
||||
echo "folder=\"${dir##*/}\""
|
||||
cat "$basedir/repo_local.tmpl.sh"
|
||||
} >"$dir"/.repo_local.sh && chmod +x "$dir"/.repo_local.sh
|
||||
done
|
|
@ -2,7 +2,7 @@ if [ -z "$token" ] || [ -z "$owner" ] || [ -z "$repo" ] || [ -z "$description" ]
|
|||
echo "Не указаны обязательные параметры." && exit 2
|
||||
fi
|
||||
echo "Создание удалённого репозитория для текущего каталога."
|
||||
seconds=2
|
||||
seconds=3
|
||||
milliseconds=$(date '+%s%3N')
|
||||
echo "Удаление старого репозитория."
|
||||
curl -X DELETE "https://git.org.ru/api/v1/repos/$owner/$repo" \
|
|
@ -80,8 +80,12 @@ echo
|
|||
echo "Ожидание $seconds с."
|
||||
sleep $seconds
|
||||
echo "Добавление аватарки для репозитория."
|
||||
picture=$repo
|
||||
if [ "$type" == "org" ]; then
|
||||
picture="pomodoro-website"
|
||||
fi
|
||||
curl -i -X PUT "https://hub.mos.ru/api/v4/projects/$owner%2F$repo" \
|
||||
-H "PRIVATE-TOKEN: $token" \
|
||||
-F "avatar=@../pictures/pictures/$repo.jpg"
|
||||
-F "avatar=@../pomodoro/pictures/$picture.jpg"
|
||||
echo
|
||||
echo "Время создания удалённого репозитория: $(("$(date '+%s%3N')" - "$milliseconds")) мс."
|
|
@ -1,32 +1,39 @@
|
|||
if [ -z "$remote" ] || [ -z "$owner" ] || [ -z "$repo" ]; then
|
||||
if [ -z "$remote" ] || [ -z "$owner" ] || [ -z "$repo" ] || [ -z "$folder" ]; then
|
||||
echo "Не указаны обязательные параметры." && exit 2
|
||||
fi
|
||||
echo "Создание локального репозитория, подключение к удалённому и передача данных."
|
||||
seconds=3
|
||||
milliseconds=$(date '+%s%3N')
|
||||
rm -rf .git
|
||||
git init -b master
|
||||
git remote add "$remote" "git@$remote:$owner/$repo.git"
|
||||
git add .git*
|
||||
git commit -m "Инициализация / $repo"
|
||||
git push -u "$remote" master
|
||||
git commit -m "Инициализация / $folder"
|
||||
if [ "$remote" == "hub.mos.ru" ]; then
|
||||
echo "Второй пуш, потому что лингвист с первого раза не срабатывает."
|
||||
git push -u "$remote" master
|
||||
echo "Ожидание $seconds с."
|
||||
sleep $seconds
|
||||
fi
|
||||
git add CONTRIBUTING.md
|
||||
git add ./*LICENSE*
|
||||
git add \*LICENSE*
|
||||
git commit -m "Открытая лицензия РФ"
|
||||
git add DIRECTORY-TREE.md
|
||||
git add README*
|
||||
git add DIRECTORY_TREE.md
|
||||
git add WIKI.md
|
||||
git add \*README*
|
||||
git commit -m "Описание проекта"
|
||||
git add ./*.sh
|
||||
git add \*.sh
|
||||
git commit -m "Скрипты bash"
|
||||
git add ./*.min.css
|
||||
git add ./*.min.js
|
||||
git add ./*.woff
|
||||
git add \*.min.css
|
||||
git add \*.min.js
|
||||
git add \*.woff
|
||||
git commit -m "Сторонние материалы"
|
||||
git add ./*.bmp
|
||||
git add ./*.gif
|
||||
git add ./*.ico
|
||||
git add ./*.jpg
|
||||
git add ./*.png
|
||||
git add ./*.svg
|
||||
git add \*.bmp
|
||||
git add \*.gif
|
||||
git add \*.ico
|
||||
git add \*.jpg
|
||||
git add \*.png
|
||||
git add \*.svg
|
||||
git commit -m "Картинки"
|
||||
find . -type f -not -regex '.*\.\(gem\|zip\|lock\)\|.*/\(\.\|_site\).*' | sort -r | while read -r file; do
|
||||
echo "Обработка: $file"
|
7
bash_scripts/repo_update.sh
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
echo "Параллельное выполнение скриптов и создание репозиториев для каталогов проектов."
|
||||
cd ..
|
||||
milliseconds=$(date '+%s%3N')
|
||||
find .. -mindepth 1 -maxdepth 1 -type d -printf \
|
||||
'cd %h/%f && ./.repo_remote.sh >.repo_remote.log && ./.repo_local.sh >.repo_local.log\0' | xargs -L1 -0 -P0 bash -c
|
||||
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$milliseconds")) мс."
|
|
@ -1,75 +0,0 @@
|
|||
# Дерево каталогов со ссылками
|
||||
|
||||
Напишем скрипт Bash для создания файла [`DIRECTORY-TREE.md`](../DIRECTORY-TREE.md) в корне репозитория со
|
||||
ссылками на его объекты. Будем использовать полученный файл для навигации по репозиторию в вёб-интерфейсе.
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<b>1.</b> Выполняем программу <code>tree</code> и получаем дерево каталогов в текстовом виде, где для
|
||||
каждогофайла указываем полный префикс пути Linux от корня репозитория. Папки выводим перед файлами и
|
||||
применяем буквенно-цифровую сортировку. Исключаем файлы и папки, которых не должно быть в репозитории.
|
||||
Полученное дерево помещаем в блок <code><pre></code> и добавляем заголовок.
|
||||
</summary>
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<b>2.</b> Для красоты, веточки-рамки у дерева box-drawing делаем короче. Для замены подстрок используем
|
||||
программу <code>sed</code> и регулярные выражения. Пробельные символы заменяем на пробелы. Пошагово
|
||||
формируем файл <code>DIRECTORY-TREE.md</code>.
|
||||
</summary>
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<b>3.</b> Далее выполняем программу <code>find</code> и получаем список файлов и каталогов Linux, сортируем
|
||||
этот список в обратном порядке от самого длинного пути до самого короткого, т. е. вложенные файлы будут перед
|
||||
их каталогами, чтобы не получилось заменить только часть пути. Затем обходим отсортированный список и заменяем
|
||||
в полученном дереве относительный путь Linux на относительную ссылку HTTP в теге <code><a></code> и именем
|
||||
файла в представлении ссылки.
|
||||
</summary>
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<b>4.</b> Получаем файл <code>DIRECTORY-TREE.md</code> для вёб-интерфейса репозитория — Markdown преобразованный в HTML.
|
||||
</summary>
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
<details open>
|
||||
<summary><h3 id="directory-tree.sh">directory-tree.sh</h3></summary>
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
echo "Построение дерева каталогов со ссылками."
|
||||
{
|
||||
echo "## Дерево каталогов"
|
||||
echo
|
||||
echo "<pre>"
|
||||
tree -nvf --dirsfirst -I "*.gem|*.lock|*.zip|_site*" --noreport
|
||||
echo "</pre>"
|
||||
} >DIRECTORY-TREE.md
|
||||
sed -i -e "s/ / /g" -e "s/ / /g" -e "s/──/─/g" DIRECTORY-TREE.md
|
||||
find . -mindepth 1 -type f,d -not -regex '.*\.\(gem\|lock\|zip\)\|.*/\(\.\|_site\).*' | sort -r | while read -r file; do
|
||||
echo "Обработка: \\$file >> ${file#*/} >> ${file##*/}"
|
||||
sed -i "s|\\$file|<a href='${file#*/}'>${file##*/}<\/a>|g" DIRECTORY-TREE.md
|
||||
done
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
---
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
| Черновик / Код с комментариями | | |
|
||||
|-----------------------------------------------------------------------|------|------------|
|
||||
| [Дерево каталогов со ссылками](2023-06-13-directory-tree.md) | Bash | 13.06.2023 |
|
||||
| [Циклический алгоритм распределения задач](2023-06-05-round-robin.md) | Java | 05.06.2023 |
|
||||
| Незавершённые публикации | Язык | Обновление |
|
||||
|:-----------------------------------------------------------|------|------------|
|
||||
| [Циклический алгоритм распределения задач](round-robin.md) | Java | 2023.06.05 |
|
||||
|
|
BIN
pictures/2.jpg
Before Width: | Height: | Size: 17 KiB |
BIN
pictures/3.jpg
Before Width: | Height: | Size: 17 KiB |
BIN
pictures/4.jpg
Before Width: | Height: | Size: 17 KiB |
BIN
pictures/5.jpg
Before Width: | Height: | Size: 17 KiB |
|
@ -1,17 +1,17 @@
|
|||
|
||||
| Картинки / Аватарки для репозиториев |
|
||||
|-------------------------------------------------------------------------------------------------------------------------|
|
||||
| [color-tomato-theme](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) |
|
||||
| [](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) |
|
||||
| [draft](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/draft/README.md) |
|
||||
| [](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/draft/README.md) |
|
||||
| [maintenance](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/bash_scripts/README.md) |
|
||||
| [](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/bash_scripts/README.md) |
|
||||
| [older-tomato-theme](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md) |
|
||||
| [](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md) |
|
||||
| [pictures](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/pictures/README.md) |
|
||||
| [](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/pictures/README.md) |
|
||||
| [pomodoro](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md) |
|
||||
| [](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md) |
|
||||
| [pomodoro[1-5]](https://hub.mos.ru/pomodoro) |
|
||||
| [![pomodoro[1-5]](1.jpg)](https://hub.mos.ru/pomodoro) |
|
||||
| Аватарки для репозиториев |
|
||||
|-----------------------------------------------|
|
||||
| color-tomato-theme |
|
||||
|  |
|
||||
| older-tomato-theme |
|
||||
|  |
|
||||
| pomodoro |
|
||||
|  |
|
||||
| pomodoro-website |
|
||||
|  |
|
||||
| bash_scripts |
|
||||
|  |
|
||||
| draft |
|
||||
|  |
|
||||
| pictures |
|
||||
|  |
|
||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |