1
0
Fork 0

2023-07-31

This commit is contained in:
Gennadiy 2023-12-17 08:06:45 +03:00
parent 6434e68250
commit 0cd5672195
37 changed files with 360 additions and 417 deletions

4
.gitattributes vendored
View file

@ -1,3 +1 @@
README*.md linguist-language=HTML *.md linguist-language=HTML
draft/2023-06-05-round-robin.md linguist-language=Java
draft/2023-06-13-directory-tree.md linguist-language=Shell

2
.gitignore vendored
View file

@ -1,4 +1,4 @@
.idea .idea
*.iml *.iml
.repo_*.sh
.token_* .token_*
.repo_*

View file

@ -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
View 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>

View file

@ -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 interesting for me and useful for professional growth. Because, firstly, not all mistakes are made
intentionally and, secondly, not all of them — are mistakes. 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. 1. [Three-dimensional graphics in JavaScript](https://pomodoro1.mircloud.ru/en/).
- [pomodoro2](https://hub.mos.ru/pomodoro/2/blob/master/README.en.md) — Cartesian product, combinatorics. 2. [Cartesian product, combinatorics](https://pomodoro2.mircloud.ru/en/).
- [pomodoro3](https://hub.mos.ru/pomodoro/3/blob/master/README.en.md) — Matrix multiplication, rotations. 3. [Matrix multiplication and rotations](https://pomodoro3.mircloud.ru/en/).
- [pomodoro4](https://hub.mos.ru/pomodoro/4/blob/master/README.en.md) — Poetry. Humor. 4. [Poetry, humor](https://pomodoro4.mircloud.ru/en/).
- [pomodoro5](https://hub.mos.ru/pomodoro/5/blob/master/README.en.md) — Drawing pictures with text. 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 ### 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 substitution cipher. Code blocks were left without obfuscation, and syntax highlighting was performed on
the client. *Obusificator* — is a unique solution, no longer used. the client. *Obusificator* — is a unique solution, no longer used.
Now the site is generated by Jekyll, the template language is Liquid, syntax Now the site is generated by Jekyll, the template language is Liquid, syntax highlighting during build
highlighting during build time, and the content of the pages is in Markdown format. time, and the content of the pages is in Markdown format. Process management is performed by Bash scripts.
[Maintenance](bash_scripts/README.en.md) The thought does not leave me, that I made a *senseless swap* — in general, nothing has changed.
is performed by Bash scripts. The thought does not leave me, that
I made a *senseless swap* — in general, nothing has changed.
### Design ### Design
Two design themes for Jekyll in the Liquid template language: Two design themes for Jekyll in the Liquid template language: «Color tomato» was written earlier using
[«Color tomato»](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.en.md) AngularJS and Material, this was the design of the previous version of my blog, then an «Older tomato»
was written earlier using AngularJS and Material, this was — lightweight single-color variant was written using only HTML and CSS, the appearance resembles the
the design of the previous version of my blog, then an default design theme on GitHub Pages. Both tomatoes supplement each other and are similar to each other,
[«Older tomato»](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.en.md) so they can be used together on the same site.
— 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.
- [x] Responsive layout. - [Color tomato](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.en.md) — color selection during the build.
- [x] User JS and CSS files in the head block of HTML pages. - [Older tomato](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.en.md) — lightweight decoration theme.
- [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.
### License ### License

View file

@ -1,70 +1,64 @@
# [Помидоры](README.en.md) # [Помидоры](README.en.md)
Обновлённый и ещё раз переписанный вариант моего старого блога, новые версии Обновлённый и ещё раз переписанный вариант моего старого блога, новые версии старых программ: объёмный тетрис,
старых программ: объёмный тетрис, простая капча и другие — упрощённая сборка простая капча и другие — упрощённая сборка сайта без обфускации, облегчённое оформление страниц без JavaScript и
сайта без обфускации, облегчённое оформление страниц без JavaScript и открытая открытая лицензия РФ вместо MIT — изменений много и везде, но суть осталась прежней — ничего не изменилось. Серия
лицензия РФ вместо MIT — изменений много и везде, но суть осталась прежней — статических вёб-сайтов «Помидоры» — чтобы не скучать и чтобы не забыть, как программы писать, когда работы нет.
ничего не изменилось. Серия статических вёб-сайтов «Помидоры» — чтобы не скучать и
чтобы не забыть, как программы писать, когда работы нет.
### Содержание ### Содержание
Решения задач по программированию с ошибками и описания решений. Исправление ошибок — дополнительная Решения задач по программированию с ошибками и описания решений. Исправление ошибок — дополнительная задача для
задача для троечников и любителей списывать. Весь код проверен и работает — выглядит красиво, но на троечников и любителей списывать. Весь код проверен и работает — выглядит красиво, но на продуктовом сервере такой
продуктовом сервере такой код использовать нельзя. Вопрос на четвёрку: найти хотя бы одну ошибку. код использовать нельзя. Вопрос на четвёрку: найти хотя бы одну ошибку. Вопрос на пятёрку: найти *больше* ошибок и
Вопрос на пятёрку: найти *больше* ошибок и написать *своё* решение. написать *своё* решение.
Конструктивную критику и описания ошибок можно отправлять по электронной почте — как минимум мне Конструктивную критику и описания ошибок можно отправлять по электронной почте — как минимум мне это интересно и
это интересно и полезно для профессионального роста. Потому что, во-первых, не все ошибки допущены полезно для профессионального роста. Потому что, во-первых, не все ошибки допущены намеренно и, во-вторых, не все
намеренно и, во-вторых, не все они — есть ошибки. они — есть ошибки.
- [pomodoro1](https://hub.mos.ru/pomodoro/1/blob/master/README.md) — Трёхмерная графика на JavaScript. 1. [Трёхмерная графика на JavaScript](https://pomodoro1.mircloud.ru/).
- [pomodoro2](https://hub.mos.ru/pomodoro/2/blob/master/README.md) — Декартово произведение, комбинаторика. 2. [Декартово произведение, комбинаторика](https://pomodoro2.mircloud.ru/).
- [pomodoro3](https://hub.mos.ru/pomodoro/3/blob/master/README.md) — Умножение матриц, повороты. 3. [Умножение матриц и повороты](https://pomodoro3.mircloud.ru/).
- [pomodoro4](https://hub.mos.ru/pomodoro/4/blob/master/README.md) — Поэзия. Юмор. 4. [Поэзия, юмор](https://pomodoro4.mircloud.ru/).
- [pomodoro5](https://hub.mos.ru/pomodoro/5/blob/master/README.md) — Рисуем картинки текстом. 5. [Рисуем картинки текстом](https://pomodoro5.mircloud.ru/).
### Процесс
Творческий процесс продолжается непрерывно, особенно, когда работы нет. Полностью созревшие мысли
становятся отдельными проектами, а несозревшие идут как части этого проекта. Некоторым мыслям
сложно созреть, поэтому они остаются незавершёнными.
- [Управление процессами](bash_scripts/README.md) — скрипты Bash.
- [Незавершённые публикации](draft/README.md) — черновик.
- [Аватарки для репозиториев](pictures/README.md) — картинки.
### Сборка ### Сборка
Раньше сборку сайта из шаблонов выполняла кастомная программа на Java. После сборки выполнялась Раньше сборку сайта из шаблонов выполняла кастомная программа на Java. После сборки выполнялась обфускация для
обфускация для всех классов, переменных и функций HTML, CSS и JS шифром замены по словарю. Блоки всех классов, переменных и функций HTML, CSS и JS шифром замены по словарю. Блоки кода оставлялись без обфускации,
кода оставлялись без обфускации, а подсветка синтаксиса выполнялась на клиенте. *Обусификатор* — а подсветка синтаксиса выполнялась на клиенте. *Обусификатор* — уникальное решение, больше не используется.
уникальное решение, больше не используется.
Теперь сборку сайта выполняет Jekyll, язык шаблонов Liquid, подсветка Теперь сборку сайта выполняет Jekyll, язык шаблонов Liquid, подсветка синтаксиса во время
синтаксиса во время сборки, а содержание страниц в формате Markdown. сборки, а содержание страниц в формате Markdown. Управление процессами выполняют скрипты Bash.
[Обслуживание](bash_scripts/README.md) Меня не покидает мысль, что я *поменял шило на мыло* — в целом ничего не изменилось.
выполняется скриптами Bash. Меня не покидает мысль, что
я *поменял шило на мыло* — в целом ничего не изменилось.
### Оформление ### Оформление
Две темы оформления для Jekyll на языке шаблонов Liquid: Две темы оформления для Jekyll на языке шаблонов Liquid: «Цветной помидор» был написан раньше с
[«Цветной помидор»](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) использованием AngularJS и Material, таким было оформление предыдущей версии моего блога, затем
был написан раньше с использованием AngularJS и Material, таким был написан «Старый помидор» — облегчённый одноцветный вариант с использованием только HTML и CSS,
было оформление предыдущей версии моего блога, затем был написан внешний вид напоминает тему оформления по умолчанию на GitHub Pages. Оба помидора дополняют друг
[«Старый помидор»](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md) друга и похожи друг на друга, поэтому их можно использовать вместе на одном сайте.
— облегчённый одноцветный вариант с использованием только HTML и CSS, внешний вид
напоминает тему оформления по умолчанию на GitHub Pages. Оба помидора дополняют друг
друга и похожи друг на друга, общие черты и различия между ними отмечены в списке ниже.
- [x] Адаптивная вёрстка или Responsive layout. - [Цветной помидор](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) — выбор цвета во время сборки.
- [x] Файлы пользователя JS и CSS в блоке head страниц HTML. - [Старый помидор](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md) — легковесная тема оформления.
- [x] SEO-разметка с использованием JSON-LD и Open Graph.
- [x] Переключение между двумя языками и помидорными темами.
- [x] Карта страниц сайта с их переводами в формате XML.
- [x] Простая страница 404 для несуществующих URL-адресов.
- [x] Шрифты: Roboto для текста и JBMono для блоков кода.
- [x] Помидоры: PNG, JPG 120x120, SVG 64x64, ICO 32x32.
- [ ] Выбор цвета во время сборки, зелёный цвет по умолчанию.
- [ ] Кнопка прокрутки вверх в стиле Material.
### Лицензия ### Лицензия
Раньше к своим проектам в интернете прикладывал лицензию MIT, но когда появилась открытая Раньше к своим проектам в интернете прикладывал лицензию MIT, но когда появилась открытая лицензия РФ
лицензия РФ — перешёл на неё, сразу внёс небольшие изменения в текст и дополнил от себя, — перешёл на неё, сразу внёс небольшие изменения в текст и дополнил от себя, хотя я не юрист. Основной
хотя я не юрист. Основной смысл лицензии остался прежним — программа предоставляется смысл лицензии остался прежним — программа предоставляется бесплатно, но без каких-либо гарантий,
бесплатно, но без каких-либо гарантий, и автор программы — это я. и автор программы — это я.
- [OPEN_LICENSE.txt](OPEN_LICENSE.txt) — основной текст лицензии и пояснение к нему без - [OPEN_LICENSE.txt](OPEN_LICENSE.txt) — основной текст лицензии и пояснение к нему без
изменений, можно найти в интернете. Из него удалил лишние пробелы и пробельные символы, изменений, можно найти в интернете. Из него удалил лишние пробелы и пробельные символы,

18
WIKI.md
View file

@ -1,7 +1,7 @@
<hr> <hr>
<details open> <details open>
<summary><h3>Содержание</h3></summary> <summary><h3>Оглавление</h3></summary>
<hr> <hr>
@ -16,16 +16,17 @@
- [Комбинации элементов по столбцам](https://pomodoro2.mircloud.ru/ru/2021/09/13/combinations-by-columns.html) — 13.09.2021. - [Комбинации элементов по столбцам](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. - [Треугольник Паскаля на 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. - [Декартово произведение множеств](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/10/winograd-strassen-algorithm.html) — 10.02.2022.
- [Умножение матриц в параллельных потоках](https://pomodoro3.mircloud.ru/ru/2022/02/08/matrix-multiplication-parallel-streams.html) — 08.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. - [Поворот матрицы на 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. - [Поворот матрицы на 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. - [Оптимизация умножения матриц](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. - [Поэзия начала 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. - [История про лес, название утеряно](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/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/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. - [График функции в консоли](https://pomodoro5.mircloud.ru/ru/2023/02/05/function-graph-in-console.html) — 05.02.2023.
@ -36,7 +37,7 @@
<hr> <hr>
<details open> <details open>
<summary><h3>Content</h3></summary> <summary><h3>Contents</h3></summary>
<hr> <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. - [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. - [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. - [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. - [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 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 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. - [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. - [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. - [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. - [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. - [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. - [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. - [Function graph in console](https://pomodoro5.mircloud.ru/en/2023/02/06/function-graph-in-console.html) — 06.02.2023.

View file

@ -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 an archive, switching the domain, composing scripts and creating repositories for publishing.
Creating archives, building websites, creating local and remote repositories for publishing.
| Bash scripts | Actions performed | | Bash scripts | Actions performed |
|:-------------------------------------------|:------------------------------------------------------------------------------------------------| |:---------------------------------------------|:--------------------------------------------------------------------------------------------|
| [archive-common.sh](archive-common.sh) | Creating a common archive for the directories of projects on the current date. | | [**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. | | [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_param.sh**](info_param.sh) | Parameter for other scripts. Switching the domain of the remote repository. |
| [**info-domain.sh**](info-domain.sh) | Used in other scripts. Setting the domain parameter of the remote repository. | | [info_references.sh](info_references.sh) | Updating the domain of a remote repository in cross-references in descriptions. |
| [info-toggle.sh](info-toggle.sh) | Toggling the remote repository for 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) | Setting parameters for templates and copying ready-made scripts to the directories of projects. | | [**repo_compose.sh**](repo_compose.sh) | Composing scripts with parameters and copying them 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-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-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) | Executing scripts in parallel mode and creating repositories for the directories of projects. | | [**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. 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
Scripts are launched from those directories, in which they are located. rest of the repositories remain with the user. The directory structure for
[git&period;org&period;ru](https://git&period;org&period;ru/golovin.gg) and
[hub&period;mos&period;ru](https://hub&period;mos&period;ru/golovin.gg).
<pre> <pre>
. <a href='https://hub.mos.ru/golovin.gg'>.</a>
├─ <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/color-tomato-theme'>color-tomato-theme</a>
├─ <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/older-tomato-theme'>older-tomato-theme</a>
├─ <a href='https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.en.md'>pomodoro</a> — Description ├─ <a href='https://hub.mos.ru/golovin.gg/pomodoro'>pomodoro</a>
├─ <a href='https://hub.mos.ru/pomodoro/1/blob/master/README.en.md'>pomodoro1</a> — Website ├─ <a href='https://hub.mos.ru/pomodoro/1'>pomodoro1</a>
├─ <a href='https://hub.mos.ru/pomodoro/2/blob/master/README.en.md'>pomodoro2</a> — Website ├─ <a href='https://hub.mos.ru/pomodoro/2'>pomodoro2</a>
├─ <a href='https://hub.mos.ru/pomodoro/3/blob/master/README.en.md'>pomodoro3</a> — Website ├─ <a href='https://hub.mos.ru/pomodoro/3'>pomodoro3</a>
├─ <a href='https://hub.mos.ru/pomodoro/4/blob/master/README.en.md'>pomodoro4</a> — Website ├─ <a href='https://hub.mos.ru/pomodoro/4'>pomodoro4</a>
└─ <a href='https://hub.mos.ru/pomodoro/5/blob/master/README.en.md'>pomodoro5</a> — Website └─ <a href='https://hub.mos.ru/pomodoro/5'>pomodoro5</a>
</pre> </pre>

View file

@ -1,36 +1,36 @@
# [Обслуживание](README.en.md) # [Управление процессами](README.en.md)
Автоматизация процессов для статических вёб-сайтов [«Помидоры»](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md). Создание архива, переключение домена, составление скриптов и создание репозиториев для публикации.
Создание архивов, сборка вёб-сайтов, создание локальных и удалённых репозиториев для публикации.
| Скрипты Bash | Выполняемые действия | | Скрипты Bash | Выполняемые действия |
|:-------------------------------------------|:------------------------------------------------------------------------------------------| |:---------------------------------------------|:---------------------------------------------------------------------------------|
| [archive-common.sh](archive-common.sh) | Создание общего архива для каталогов проектов на текущую дату. | | [**archive_backup.sh**](archive_backup.sh) | Создание общего архива для каталогов проектов на текущую дату. |
| [archive-packages.sh](archive-packages.sh) | Сборка вёб-сайтов, создание и копирование архивов для развёртывания. | | [archive_packages.sh](archive_packages.sh) | Сборка вёб-сайтов, создание и копирование архивов для развёртывания. |
| [info-copy.sh](info-copy.sh) | Копирование информационных файлов и построение дерева в каждом из каталогов проектов. | | [**info_param.sh**](info_param.sh) | Параметр для других скриптов. Переключение домена удалённого репозитория. |
| [**info-domain.sh**](info-domain.sh) | Используется в других скриптах. Установка параметра домена удалённого репозитория. | | [info_references.sh](info_references.sh) | Обновление домена удалённого репозитория в перекрёстных ссылках в описаниях. |
| [info-toggle.sh](info-toggle.sh) | Переключение удалённого репозитория для перекрёстных ссылок в описаниях. | | [info_tree_license.sh](info_tree_license.sh) | Построение дерева каталогов для каждого проекта и копирование файлов лицензии. |
| [**repo-compose.sh**](repo-compose.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-gitea.tmpl.sh](repo-gitea.tmpl.sh) | Шаблон скрипта без параметров для создания удалённого репозитория gitea. | | [repo_gitlab.tmpl.sh](repo_gitlab.tmpl.sh) | Шаблон скрипта без параметров для создания удалённого репозитория gitlab. |
| [repo-gitlab.tmpl.sh](repo-gitlab.tmpl.sh) | Шаблон скрипта без параметров для создания удалённого репозитория gitlab. | | [repo_local.tmpl.sh](repo_local.tmpl.sh) | Шаблон скрипта без параметров для создания локального репозитория. |
| [**repo-update.sh**](repo-update.sh) | Выполнение скриптов в параллельном режиме и создание репозиториев для каталогов проектов. | | [**repo_update.sh**](repo_update.sh) | Параллельное выполнение скриптов и создание репозиториев для каталогов проектов. |
## Структура ## Каталоги проектов
Линейная структура каталогов — все проекты расположены в одной папке. Одноуровневая структура каталогов — локальные проекты расположены на одном
уровне. На сервере репозитории с вёб-сайтами переходят в отдельную группу,
Скрипты запускаются из тех каталогов, в которых они расположены. а остальные репозитории остаются у пользователя. Структура каталогов для
[git&period;org&period;ru](https://git&period;org&period;ru/golovin.gg) и
[hub&period;mos&period;ru](https://hub&period;mos&period;ru/golovin.gg).
<pre> <pre>
. <a href='https://hub.mos.ru/golovin.gg'>.</a>
├─ <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/color-tomato-theme'>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/older-tomato-theme'>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/golovin.gg/pomodoro'>pomodoro</a>
├─ <a href='https://hub.mos.ru/pomodoro/1/blob/master/README.md'>pomodoro1</a> — Вёб-сайт ├─ <a href='https://hub.mos.ru/pomodoro/1'>pomodoro1</a>
├─ <a href='https://hub.mos.ru/pomodoro/2/blob/master/README.md'>pomodoro2</a> — Вёб-сайт ├─ <a href='https://hub.mos.ru/pomodoro/2'>pomodoro2</a>
├─ <a href='https://hub.mos.ru/pomodoro/3/blob/master/README.md'>pomodoro3</a> — Вёб-сайт ├─ <a href='https://hub.mos.ru/pomodoro/3'>pomodoro3</a>
├─ <a href='https://hub.mos.ru/pomodoro/4/blob/master/README.md'>pomodoro4</a> — Вёб-сайт ├─ <a href='https://hub.mos.ru/pomodoro/4'>pomodoro4</a>
└─ <a href='https://hub.mos.ru/pomodoro/5/blob/master/README.md'>pomodoro5</a> — Вёб-сайт └─ <a href='https://hub.mos.ru/pomodoro/5'>pomodoro5</a>
</pre> </pre>

View file

@ -3,5 +3,6 @@ echo "Создание общего архива для каталогов пр
cd ../.. cd ../..
filename="pomodoro-$(date '+%Y-%m-%d').zip" filename="pomodoro-$(date '+%Y-%m-%d').zip"
rm -rf "$filename" rm -rf "$filename"
7z a -tzip -ssw -mx9 -r0 "$filename" ./* -xr!".idea" -xr!".git" -x!".token_*" \ 7z a -tzip -ssw -mx9 -r0 "$filename" ./* -xr!".idea" -xr!".git" -x!"*.iml" \
-x!"*.iml" -x!"*.gem" -x!"*.lock" -x!"*.zip" -x!"_site*" -x!".repo_*.sh" -x!"*.gem" -x!"*.lock" -x!"*.zip" -x!"_site*" -x!".token_*" -x!".repo_*" \
-xr!"DIRECTORY_TREE.md" -xr!"CONTRIBUTING.md" -x!"*LICENSE*"

View file

@ -7,6 +7,6 @@ for ((i = 1; i <= 5; i++)); do
cd "../pomodoro$i" || continue cd "../pomodoro$i" || continue
./build.sh ./build.sh
./package.sh ./package.sh
cp -uv "pomodoro$i.zip" .. cp -v "pomodoro$i.zip" ..
done done
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$milliseconds")) мс." echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$milliseconds")) мс."

View file

@ -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")) мс."

View file

@ -1,4 +0,0 @@
#!/bin/bash
#remote="git.org.ru"
remote="hub.mos.ru"
echo "Репозиторий: $remote"

4
bash_scripts/info_param.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
#remote="git.org.ru"
remote="hub.mos.ru"
echo "Переключение домена удалённого репозитория: $remote"

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
echo "Переключение удалённого репозитория для перекрёстных ссылок в описаниях." echo "Обновление домена удалённого репозитория в перекрёстных ссылках в описаниях."
source info-domain.sh || remote="git.org.ru" remote="git.org.ru" && source info_param.sh
cd ../.. cd ../..
find . -type f -name 'README*.md' -o -name '*.gemspec' | sort -r | while read -r file; do find . -type f -name 'README*.md' -o -name '*.gemspec' | sort -r | while read -r file; do
echo "$remote => $file" echo "$remote => $file"

View 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")) мс."

View file

@ -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

View file

@ -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
View 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

View file

@ -2,7 +2,7 @@ if [ -z "$token" ] || [ -z "$owner" ] || [ -z "$repo" ] || [ -z "$description" ]
echo "Не указаны обязательные параметры." && exit 2 echo "Не указаны обязательные параметры." && exit 2
fi fi
echo "Создание удалённого репозитория для текущего каталога." echo "Создание удалённого репозитория для текущего каталога."
seconds=2 seconds=3
milliseconds=$(date '+%s%3N') milliseconds=$(date '+%s%3N')
echo "Удаление старого репозитория." echo "Удаление старого репозитория."
curl -X DELETE "https://git.org.ru/api/v1/repos/$owner/$repo" \ curl -X DELETE "https://git.org.ru/api/v1/repos/$owner/$repo" \

View file

@ -80,8 +80,12 @@ echo
echo "Ожидание $seconds с." echo "Ожидание $seconds с."
sleep $seconds sleep $seconds
echo "Добавление аватарки для репозитория." 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" \ curl -i -X PUT "https://hub.mos.ru/api/v4/projects/$owner%2F$repo" \
-H "PRIVATE-TOKEN: $token" \ -H "PRIVATE-TOKEN: $token" \
-F "avatar=@../pictures/pictures/$repo.jpg" -F "avatar=@../pomodoro/pictures/$picture.jpg"
echo echo
echo "Время создания удалённого репозитория: $(("$(date '+%s%3N')" - "$milliseconds")) мс." echo "Время создания удалённого репозитория: $(("$(date '+%s%3N')" - "$milliseconds")) мс."

View file

@ -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 echo "Не указаны обязательные параметры." && exit 2
fi fi
echo "Создание локального репозитория, подключение к удалённому и передача данных." echo "Создание локального репозитория, подключение к удалённому и передача данных."
seconds=3
milliseconds=$(date '+%s%3N') milliseconds=$(date '+%s%3N')
rm -rf .git rm -rf .git
git init -b master git init -b master
git remote add "$remote" "git@$remote:$owner/$repo.git" git remote add "$remote" "git@$remote:$owner/$repo.git"
git add .git* git add .git*
git commit -m "Инициализация / $repo" git commit -m "Инициализация / $folder"
git push -u "$remote" master if [ "$remote" == "hub.mos.ru" ]; then
echo "Второй пуш, потому что лингвист с первого раза не срабатывает."
git push -u "$remote" master
echo "Ожидание $seconds с."
sleep $seconds
fi
git add CONTRIBUTING.md git add CONTRIBUTING.md
git add ./*LICENSE* git add \*LICENSE*
git commit -m "Открытая лицензия РФ" git commit -m "Открытая лицензия РФ"
git add DIRECTORY-TREE.md git add DIRECTORY_TREE.md
git add README* git add WIKI.md
git add \*README*
git commit -m "Описание проекта" git commit -m "Описание проекта"
git add ./*.sh git add \*.sh
git commit -m "Скрипты bash" git commit -m "Скрипты bash"
git add ./*.min.css git add \*.min.css
git add ./*.min.js git add \*.min.js
git add ./*.woff git add \*.woff
git commit -m "Сторонние материалы" git commit -m "Сторонние материалы"
git add ./*.bmp git add \*.bmp
git add ./*.gif git add \*.gif
git add ./*.ico git add \*.ico
git add ./*.jpg git add \*.jpg
git add ./*.png git add \*.png
git add ./*.svg git add \*.svg
git commit -m "Картинки" git commit -m "Картинки"
find . -type f -not -regex '.*\.\(gem\|zip\|lock\)\|.*/\(\.\|_site\).*' | sort -r | while read -r file; do find . -type f -not -regex '.*\.\(gem\|zip\|lock\)\|.*/\(\.\|_site\).*' | sort -r | while read -r file; do
echo "Обработка: $file" echo "Обработка: $file"

7
bash_scripts/repo_update.sh Executable file
View 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")) мс."

View file

@ -1,75 +0,0 @@
# Дерево каталогов со ссылками
Напишем скрипт Bash для создания файла [`DIRECTORY-TREE.md`](../DIRECTORY-TREE.md) в корне репозитория со
ссылками на его объекты. Будем использовать полученный файл для навигации по репозиторию в вёб-интерфейсе.
<details>
<summary>
<b>1.</b> Выполняем программу <code>tree</code> и получаем дерево каталогов в текстовом виде, где для
каждогофайла указываем полный префикс пути Linux от корня репозитория. Папки выводим перед файлами и
применяем буквенно-цифровую сортировку. Исключаем файлы и папки, которых не должно быть в репозитории.
Полученное дерево помещаем в блок <code>&lt;pre&gt;</code> и добавляем заголовок.
</summary>
![Дерево каталогов](../pictures/directory-tree1.jpg)
</details>
<details>
<summary>
<b>2.</b> Для красоты, веточки-рамки у дерева box-drawing делаем короче. Для замены подстрок используем
программу <code>sed</code> и регулярные выражения. Пробельные символы заменяем на пробелы. Пошагово
формируем файл <code>DIRECTORY-TREE.md</code>.
</summary>
![Дерево каталогов](../pictures/directory-tree2.jpg)
</details>
<details>
<summary>
<b>3.</b> Далее выполняем программу <code>find</code> и получаем список файлов и каталогов Linux, сортируем
этот список в обратном порядке от самого длинного пути до самого короткого, т. е. вложенные файлы будут перед
их каталогами, чтобы не получилось заменить только часть пути. Затем обходим отсортированный список и заменяем
в полученном дереве относительный путь Linux на относительную ссылку HTTP в теге <code>&lt;a&gt;</code> и именем
файла в представлении ссылки.
</summary>
![Дерево каталогов](../pictures/directory-tree3.jpg)
</details>
<details>
<summary>
<b>4.</b> Получаем файл <code>DIRECTORY-TREE.md</code> для вёб-интерфейса репозитория — Markdown преобразованный в HTML.
</summary>
![Дерево каталогов](../pictures/directory-tree4.jpg)
</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>
---

View file

@ -1,5 +1,4 @@
| Черновик / Код с комментариями | | | | Незавершённые публикации | Язык | Обновление |
|-----------------------------------------------------------------------|------|------------| |:-----------------------------------------------------------|------|------------|
| [Дерево каталогов со ссылками](2023-06-13-directory-tree.md) | Bash | 13.06.2023 | | [Циклический алгоритм распределения задач](round-robin.md) | Java | 2023.06.05 |
| [Циклический алгоритм распределения задач](2023-06-05-round-robin.md) | Java | 05.06.2023 |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View file

@ -1,17 +1,17 @@
| Картинки / Аватарки для репозиториев | | Аватарки для репозиториев |
|-------------------------------------------------------------------------------------------------------------------------| |-----------------------------------------------|
| [color-tomato-theme](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) | | color-tomato-theme |
| [![color-tomato-theme](color-tomato-theme.jpg)](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) | | ![color-tomato-theme](color-tomato-theme.jpg) |
| [draft](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/draft/README.md) | | older-tomato-theme |
| [![draft](draft.jpg)](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/draft/README.md) | | ![older-tomato-theme](older-tomato-theme.jpg) |
| [maintenance](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/bash_scripts/README.md) | | pomodoro |
| [![maintenance](maintenance.jpg)](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/bash_scripts/README.md) | | ![pomodoro](pomodoro.jpg) |
| [older-tomato-theme](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md) | | pomodoro-website |
| [![older-tomato-theme](older-tomato-theme.jpg)](https://hub.mos.ru/golovin.gg/older-tomato-theme/blob/master/README.md) | | ![pomodoro-website](pomodoro-website.jpg) |
| [pictures](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/pictures/README.md) | | bash_scripts |
| [![pictures](pictures.jpg)](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/pictures/README.md) | | ![bash_scripts](bash_scripts.jpg) |
| [pomodoro](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md) | | draft |
| [![pomodoro](pomodoro.jpg)](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md) | | ![draft](draft.jpg) |
| [pomodoro[1-5]](https://hub.mos.ru/pomodoro) | | pictures |
| [![pomodoro[1-5]](1.jpg)](https://hub.mos.ru/pomodoro) | | ![pictures](pictures.jpg) |

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB