aboutsummaryrefslogtreecommitdiff
path: root/content/post
diff options
context:
space:
mode:
Diffstat (limited to 'content/post')
-rw-r--r--content/post/2007-11-05.md2
-rw-r--r--content/post/2007-11-06.md2
-rw-r--r--content/post/2007-11-08.md2
-rw-r--r--content/post/2007-12-11.md2
-rw-r--r--content/post/2007-12-26.md2
-rw-r--r--content/post/2011-05-10.md2
-rw-r--r--content/post/2011-09-11-1.md5
-rw-r--r--content/post/2011-09-11-2.md2
-rw-r--r--content/post/2011-09-11-3.md4
-rw-r--r--content/post/2011-09-12.md2
-rw-r--r--content/post/2011-09-24.md6
-rw-r--r--content/post/2011-11-20.md4
-rw-r--r--content/post/2011-11-21.md2
-rw-r--r--content/post/2021-02-13-jsonnet.md2
-rw-r--r--content/post/2021-05-13-цифровая-гигиена.md (renamed from content/post/2021-05-13.md)2
-rw-r--r--content/post/2022-05-30-возрождение.md (renamed from content/post/2022-05-30.md)2
-rw-r--r--content/post/2022-05-31-golang-1.md2
-rw-r--r--content/post/2023-01-12-gitrepo.md122
-rw-r--r--content/post/2023-05-26-gist.md2
-rw-r--r--content/post/2023-07-24-tls.md27
-rw-r--r--content/post/2023-12-29-переезд.md (renamed from content/post/2023-12-29.md)1
-rw-r--r--content/post/2024-01-03-архив.md (renamed from content/post/2024-01-03.md)5
-rw-r--r--content/post/2024-02-21-tls.md22
-rw-r--r--content/post/2024-06-01-вам-не-нужны-пуши.md (renamed from content/post/2024-06-01.md)1
-rw-r--r--content/post/2024-06-02-книги-1.md (renamed from content/post/2024-06-02.md)1
-rw-r--r--content/post/2024-07-13-joplin.md3
-rw-r--r--content/post/2024-07-21-bbs.md1
-rw-r--r--content/post/2024-09-26-hugo-wordpress.md3
-rw-r--r--content/post/2024-10-06-цитатник-рунета.md (renamed from content/post/2024-10-06.md)3
-rw-r--r--content/post/2024-10-17-книги-2.md (renamed from content/post/2024-10-17.md)3
30 files changed, 172 insertions, 67 deletions
diff --git a/content/post/2007-11-05.md b/content/post/2007-11-05.md
index 5002408..0904088 100644
--- a/content/post/2007-11-05.md
+++ b/content/post/2007-11-05.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-11-05T16:54:00Z"
-guid: https://neonxp.ru/?p=90
id: 90
tags:
- из ЖЖ
title: прямой эфир — продолжение
+draft: false
---
только что досмотрели с джо все что было с кирком… грустно что больше НИКОГДА не будет продолжения… мне так будет не хватать пафоса ТОСа и лично тов. кирка…. \ No newline at end of file
diff --git a/content/post/2007-11-06.md b/content/post/2007-11-06.md
index b2d2c2e..5ecaf43 100644
--- a/content/post/2007-11-06.md
+++ b/content/post/2007-11-06.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-11-06T16:53:00Z"
-guid: https://neonxp.ru/?p=88
id: 88
tags:
- из ЖЖ
title: прямой эфир — база гамма
+draft: false
---
сегодня лег в 5 утра, встал в 2… хожу как ни от мира сего… Когда вышел под вечер за сигаретами на меня нахлынул поток разных грустных воспоминаний о 2003-2004 годах… еще сегодня написала одна девушка которая достаточно давно перестала со мной разговаривать… странно… до сдачи работы не считая сегодняшнего дня остался один день… а сегодня я нифига не работал. завтра коллоквиум по физике.. почитал лекции три больше не мог… завтра самый ужасный день, среда… ненавижу среды… и почему они бывают чаще чем например четверги… \ No newline at end of file
diff --git a/content/post/2007-11-08.md b/content/post/2007-11-08.md
index 8e0d0c0..f691b27 100644
--- a/content/post/2007-11-08.md
+++ b/content/post/2007-11-08.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-11-08T16:51:00Z"
-guid: https://neonxp.ru/?p=86
id: 86
tags:
- из ЖЖ
title: прямой эфир — призрак оперы
+draft: false
---
сегодня с друзьями (не буду показывать пальцем на скудный френд лист) ходили на семинар Opera Software, была прекрасная дружеская атмосфера, обсирание мелкомягких, раздача футболок, дисков и автографов, диалоги “по делу” с разработчиками, умные рассказы, интересные презентации новых продуктов, таких как операмини 4.0 и опера 9.5 бета, которая во время синхронизации умудрилась очень неплохо обвалиться, хотя это не испортило впечатления от новых технологий. кстати, о технологиях, в бете меня больше всего поразила до глубины души поддержка технологии svg(замена флешу на xml) и маленький демо ролик на ней в котором было вставленно 3(!!!) видео ролика и выступающи разработчик вращал их мышкой. собственно семинар удался на славу, даже есть желание к ним идти работать. \ No newline at end of file
diff --git a/content/post/2007-12-11.md b/content/post/2007-12-11.md
index 01efb6f..8abcdfb 100644
--- a/content/post/2007-12-11.md
+++ b/content/post/2007-12-11.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-12-11T16:50:00Z"
-guid: https://neonxp.ru/?p=84
id: 84
tags:
- из ЖЖ
title: прямой эфир — подъезд дубль 2
+draft: false
---
стоим в подъезде, джо ненароко сказал слово “проблема”. я бы не придал этому бы этому значения если бы игорь не сказал “проблема….. проблема….. \*ЛЯ!!!” и тут вспомнили про проблемы на учебном фронте….. настроение упало до 0….. сейчас медленно пошло в минус….. и как так жить??! \ No newline at end of file
diff --git a/content/post/2007-12-26.md b/content/post/2007-12-26.md
index a790481..7f0530d 100644
--- a/content/post/2007-12-26.md
+++ b/content/post/2007-12-26.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-12-26T16:49:00Z"
-guid: https://neonxp.ru/?p=82
id: 82
tags:
- из ЖЖ
title: Ну вот и сессия пришла…
+draft: false
---
Хоть и начнется зачетная сессия 28го(!!!! это еще одна особенность моего ВУЗа) числа, но зачеты уже идут во всю. “И на нашей улице будет праздник”. У мну сдано уже 4 зачода есть. Неужели все будет хорошо?… \ No newline at end of file
diff --git a/content/post/2011-05-10.md b/content/post/2011-05-10.md
index 14914fe..b097447 100644
--- a/content/post/2011-05-10.md
+++ b/content/post/2011-05-10.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2011-05-10T16:48:00Z"
-guid: https://neonxp.ru/?p=80
id: 80
tags:
- разное
title: Странное д.р.
+draft: false
---
Сегодня было самое странное из моих д.р.! Хоть я и узнал что дофига народа не придет, зато сегодня было запоздалое(или слишком ранее?) отмечание моей д.р.! Владимир(шеф мой) позвал меня после салюта в клуб “Джокер”, где выступали его знакомые (гр. “Листья травы”, “Макс и Ко.”, “Большой куш” и там к моему удивлению по его просьбе группа “Большой Куш” исполнила для меня песню группы Red Hot Chilli Peppers — Can’t stop! Я был поражен, удивлен, рад! Вот только приехал оттуда, еще не совсем трезв, но полон впечатлений! Вау! Это просто почти невероятно!!!! Уже можно сказать, что денюха удалась!! Посмотрим, что будет завтра! \ No newline at end of file
diff --git a/content/post/2011-09-11-1.md b/content/post/2011-09-11-1.md
index b2927fd..2bc3d49 100644
--- a/content/post/2011-09-11-1.md
+++ b/content/post/2011-09-11-1.md
@@ -3,13 +3,14 @@ author: NeonXP
categories:
- Архив
date: "2011-09-11T16:47:00Z"
-guid: https://neonxp.ru/?p=76
id: 76
tags:
- разное
title: Дождь идёт весь день
+draft: false
---
Люблю такую погоду, она настраивает на рабочий лад. Или на долгие прогулки под ним. Вечером нужно будет обязательно выбраться гулять.
-<figure class="wp-block-image">![](http://localhost:1313/img/posts/1315741048720.png)</figure><figure class="wp-block-image">![](http://localhost:1313/img/posts/1315741048721.png)</figure> \ No newline at end of file
+![](/img/posts/1315741048720.png)
+![](/img/posts/1315741048721.png) \ No newline at end of file
diff --git a/content/post/2011-09-11-2.md b/content/post/2011-09-11-2.md
index 7472458..2978b42 100644
--- a/content/post/2011-09-11-2.md
+++ b/content/post/2011-09-11-2.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2011-09-11T16:48:00Z"
-guid: https://neonxp.ru/?p=78
id: 78
tags:
- из ЖЖ
title: Новая жизнь
+draft: false
---
Пора начинать новую жизнь. Вот и блог обновил. Всё старьё выкинул и сделал внешнюю уборку. Только ради всего, буду стараться не забивать на блог. Ибо уже не в первый раз. \ No newline at end of file
diff --git a/content/post/2011-09-11-3.md b/content/post/2011-09-11-3.md
index 374e49c..c5fddb5 100644
--- a/content/post/2011-09-11-3.md
+++ b/content/post/2011-09-11-3.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2011-09-11T16:46:00Z"
-guid: https://neonxp.ru/?p=74
id: 74
tags:
- разное
title: Традиционная картинка
+draft: false
---
-<figure class="wp-block-image">![](http://localhost:1313/img/posts/76290b19.gif)</figure> \ No newline at end of file
+![](/img/posts/76290b19.gif) \ No newline at end of file
diff --git a/content/post/2011-09-12.md b/content/post/2011-09-12.md
index 8ba3cf9..3d8da02 100644
--- a/content/post/2011-09-12.md
+++ b/content/post/2011-09-12.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2011-09-12T16:45:00Z"
-guid: https://neonxp.ru/?p=72
id: 72
tags:
- разное
title: Очередное начало очередной безумной недели
+draft: false
---
Как же всё это уныло… Буэ… Зато сегодня ждем на собеседование нового человека. По резюме, вроде, адекватный человек. Не как ТОТ. Тьфу тьфу тьфу, чтоб не сглазить!
diff --git a/content/post/2011-09-24.md b/content/post/2011-09-24.md
index b25e94f..075a32d 100644
--- a/content/post/2011-09-24.md
+++ b/content/post/2011-09-24.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2011-09-24T16:44:00Z"
-guid: https://neonxp.ru/?p=70
id: 70
tags:
- DozoR
title: Отчет за неделю
+draft: false
---
Достаточно давно не писал, да и не о чём было особо писать. Работал, учился, болел. Сейчас на улице опять моя любимая погода: пасмурно и дождь, а я сижу на работе. Решил вот выйти в субботу, чтобы побольше всего сделать. Никого нет, тихо, спокойно, лепота!
@@ -31,4 +31,6 @@ title: Отчет за неделю
Ну и картинки оставшиеся в телефоне после игры под катом, если интересно:
-<figure class="wp-block-image">![](http://localhost:1313/img/posts/2011-09-24_00.31.09.jpg)</figure><figure class="wp-block-image">![](http://localhost:1313/img/posts/2011-09-23_22.20.19.jpg)</figure><figure class="wp-block-image">![](http://localhost:1313/img/posts/2011-09-23_22.20.33.jpg)</figure> \ No newline at end of file
+![](/img/posts/2011-09-24_00.31.09.jpg)
+![](/img/posts/2011-09-23_22.20.19.jpg)
+![](/img/posts/2011-09-23_22.20.33.jpg)
diff --git a/content/post/2011-11-20.md b/content/post/2011-11-20.md
index 6ebc7cd..ca5fa5e 100644
--- a/content/post/2011-11-20.md
+++ b/content/post/2011-11-20.md
@@ -3,15 +3,15 @@ author: NeonXP
categories:
- Архив
date: "2011-11-20T16:43:00Z"
-guid: https://neonxp.ru/?p=68
id: 68
tags:
- разное
title: Чем развлечься в субботу
+draft: false
---
Сегодня днём, совершенно неожиданно для себя, был приглашен на игру в пейнтбол. Играл я в первый раз, хотя уже давно имел желание открыть для себя это вид развлечения.
-<figure class="wp-block-image">![](http://localhost:1313/img/posts/paintball.jpg)</figure>Впечатления от игры сложно описать словами, ведь слова не способны передать то обилие положительных эмоций, что я получил. Конечно же, не обошлось и без мелких травм. В частности, на приложенном фото видны последствия для моей многострадальной спины попадания шариков с краской с близкой дистанции. Так же достаточно болезненным оказалось попадание в голову и локоть. Ощущение, как после удара камнем. Но, как ни странно, эти «боевые ранения» никак отрицательно не сказались на общем фане от игры.
+![](/img/posts/paintball.jpg)Впечатления от игры сложно описать словами, ведь слова не способны передать то обилие положительных эмоций, что я получил. Конечно же, не обошлось и без мелких травм. В частности, на приложенном фото видны последствия для моей многострадальной спины попадания шариков с краской с близкой дистанции. Так же достаточно болезненным оказалось попадание в голову и локоть. Ощущение, как после удара камнем. Но, как ни странно, эти «боевые ранения» никак отрицательно не сказались на общем фане от игры.
Так же, хотелось поблагодарить людей игравших со мной за отлично проведенное время. Надо будет как-нибудь повторить 😉 \ No newline at end of file
diff --git a/content/post/2011-11-21.md b/content/post/2011-11-21.md
index 76f6994..a99fd63 100644
--- a/content/post/2011-11-21.md
+++ b/content/post/2011-11-21.md
@@ -3,12 +3,12 @@ author: NeonXP
categories:
- Архив
date: "2011-11-21T16:42:00Z"
-guid: https://neonxp.ru/?p=66
id: 66
tags:
- 2ГИС
- wine
title: Решение проблемы с 2Гис
+draft: false
---
Из-за особенностей своего хобби мне часто приходится задействовать 2Гис. Но после ноябрьских обновлений данная программа перестала у меня адекватно работать, а именно начала зависать буквально от всего — от движения мыши, нажатия кнопок интерфейса и т.п. Что только я уже не пытался с этим с делать! В один момент уже был готов похоронить его и пытаться найти ему альтернативу.
diff --git a/content/post/2021-02-13-jsonnet.md b/content/post/2021-02-13-jsonnet.md
index 36294b5..6ff2db5 100644
--- a/content/post/2021-02-13-jsonnet.md
+++ b/content/post/2021-02-13-jsonnet.md
@@ -3,13 +3,13 @@ author: NeonXP
categories:
- Без рубрики
date: "2021-02-13T22:08:19Z"
-guid: http://14
id: 59
tags:
- go
- it
- разное
title: Jsonnet
+draft: false
---
Редко такое бывает, что случайно натыкаешься на какую-то технологию и она вызывает вау-эффект и буквально переворачивает всё верх дном. На днях для меня такой технологией стал [Jsonnet](https://jsonnet.org/) от Google.
diff --git a/content/post/2021-05-13.md b/content/post/2021-05-13-цифровая-гигиена.md
index 54af8a9..86888c7 100644
--- a/content/post/2021-05-13.md
+++ b/content/post/2021-05-13-цифровая-гигиена.md
@@ -3,13 +3,13 @@ author: NeonXP
categories:
- Без рубрики
date: "2021-05-13T15:37:01Z"
-guid: http://13
id: 58
tags:
- it
- паранойя
- разное
title: Немного о цифровой гигиене
+draft: false
---
## Вступление
diff --git a/content/post/2022-05-30.md b/content/post/2022-05-30-возрождение.md
index 2ea3d0d..6c16d5e 100644
--- a/content/post/2022-05-30.md
+++ b/content/post/2022-05-30-возрождение.md
@@ -3,12 +3,12 @@ author: NeonXP
categories:
- Без рубрики
date: "2022-05-30T23:37:00Z"
-guid: http://12
id: 57
tags:
- блог
- моё
title: Возрождение?
+draft: false
---
Определенно, вести блог это не мое. Учитывая, что последний пост был год назад — sad but true.
diff --git a/content/post/2022-05-31-golang-1.md b/content/post/2022-05-31-golang-1.md
index 87514e0..9872ebc 100644
--- a/content/post/2022-05-31-golang-1.md
+++ b/content/post/2022-05-31-golang-1.md
@@ -3,12 +3,12 @@ author: NeonXP
categories:
- Без рубрики
date: "2022-05-31T01:00:00Z"
-guid: http://11
id: 56
tags:
- go
- it
title: Golang подборка 1
+draft: false
---
Просто собираю подборку интересных ссылок по гошке на почитать потом.
diff --git a/content/post/2023-01-12-gitrepo.md b/content/post/2023-01-12-gitrepo.md
index 8635d1d..18a06a2 100644
--- a/content/post/2023-01-12-gitrepo.md
+++ b/content/post/2023-01-12-gitrepo.md
@@ -3,12 +3,12 @@ author: NeonXP
categories:
- Мои проекты
date: "2023-01-12T20:22:00Z"
-guid: http://10
id: 55
tags:
- it
- моё
title: GitRepo.ru
+draft: false
---
# Сегодня серьезно переделал свой хостинг [репозиториев кода](https://gitrepo.ru/):
@@ -30,26 +30,132 @@ title: GitRepo.ru
У меня на руках `docker-compose.yml` который полностью описывает всю конфигурацию сервака, примерно так:
-<div class="highlight">```yml
-<span style="display:flex;"><span><span style="color:#f92672">version</span>: <span style="color:#e6db74">"3"</span></span></span><span style="display:flex;"><span></span></span><span style="display:flex;"><span><span style="color:#f92672">services</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">caddy</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">image</span>: <span style="color:#ae81ff">caddy:2.6.2-alpine</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">container_name</span>: <span style="color:#ae81ff">gateway</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">restart</span>: <span style="color:#ae81ff">unless-stopped</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">ports</span>:</span></span><span style="display:flex;"><span> - <span style="color:#e6db74">"80:80"</span></span></span><span style="display:flex;"><span> - <span style="color:#e6db74">"443:443"</span></span></span><span style="display:flex;"><span> - <span style="color:#e6db74">"443:443/udp"</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">volumes</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">./Caddyfile:/etc/caddy/Caddyfile</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">caddy_data:/data</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">caddy_config:/config</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">networks</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">gateway</span></span></span><span style="display:flex;"><span></span></span><span style="display:flex;"><span> <span style="color:#f92672">git</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">image</span>: <span style="color:#ae81ff">codeberg.org/forgejo/forgejo:1.18.0-1</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">container_name</span>: <span style="color:#ae81ff">git</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">environment</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">USER_UID=1000</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">USER_GID=1000</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">TZ=Europe/Moscow</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">USER=git</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">GITEA__database__DB_TYPE=postgres</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">GITEA__database__HOST=db:5432</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">GITEA__database__NAME=${PG_NAME}</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">GITEA__database__USER=${PG_USER}</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">GITEA__database__PASSWD=${PG_PASS}</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">restart</span>: <span style="color:#ae81ff">always</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">networks</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">gitea</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">gateway</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">volumes</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">/home/git/.ssh/:/data/git/.ssh</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">forgejo:/data</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">/etc/timezone:/etc/timezone:ro</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">/etc/localtime:/etc/localtime:ro</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">ports</span>:</span></span><span style="display:flex;"><span> - <span style="color:#e6db74">"127.0.0.1:2222:22"</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">depends_on</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">db</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">condition</span>: <span style="color:#ae81ff">service_healthy</span></span></span><span style="display:flex;"><span></span></span><span style="display:flex;"><span> <span style="color:#f92672">db</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">image</span>: <span style="color:#ae81ff">postgres:13</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">restart</span>: <span style="color:#ae81ff">always</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">environment</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">POSTGRES_USER=${PG_USER}</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">POSTGRES_PASSWORD=${PG_PASS}</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">POSTGRES_DB=${PG_NAME}</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">healthcheck</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">test</span>: <span style="color:#ae81ff">/usr/bin/pg_isready</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">interval</span>: <span style="color:#ae81ff">5s</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">timeout</span>: <span style="color:#ae81ff">10s</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">retries</span>: <span style="color:#ae81ff">120</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">networks</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">gitea</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">volumes</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">postgres:/var/lib/postgresql/data</span></span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span> <span style="color:#f92672">woodpecker-server</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">image</span>: <span style="color:#ae81ff">woodpeckerci/woodpecker-server:latest</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">volumes</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">woodpecker-server-data:/var/lib/woodpecker/</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">environment</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_OPEN=true</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_GITEA=true</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_GITEA_URL=https://gitrepo.ru</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_GITEA_CLIENT=${GITEA_CLIENT}</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_GITEA_SECRET=${GITEA_SECRET}</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_HOST=https://ci.gitrepo.ru</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_ADMIN=neonxp</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">networks</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">gitea</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">gateway</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">depends_on</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">git</span></span></span><span style="display:flex;"><span></span></span><span style="display:flex;"><span> <span style="color:#f92672">woodpecker-agent</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">image</span>: <span style="color:#ae81ff">woodpeckerci/woodpecker-agent:latest</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">command</span>: <span style="color:#ae81ff">agent</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">restart</span>: <span style="color:#ae81ff">always</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">depends_on</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">woodpecker-server</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">volumes</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">/var/run/docker.sock:/var/run/docker.sock</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">environment</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_SERVER=woodpecker-server:9000</span></span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}</span></span></span><span style="display:flex;"><span> <span style="color:#f92672">networks</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">gitea</span></span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#f92672">volumes</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">woodpecker-server-data</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">caddy_data</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">caddy_config</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">forgejo</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">postgres</span>:</span></span><span style="display:flex;"><span></span></span><span style="display:flex;"><span><span style="color:#f92672">networks</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">gateway</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">gitea</span>:</span></span><span style="display:flex;"><span> <span style="color:#f92672">external</span>: <span style="color:#66d9ef">false</span></span></span>
+```yml
+version: "3"
+services:
+ caddy:
+ image: caddy:2.6.2-alpine
+ container_name: gateway
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ - "443:443/udp"
+ volumes:
+ - ./Caddyfile:/etc/caddy/Caddyfile
+ - caddy_data:/data
+ - caddy_config:/config
+ networks:
+ - gateway
+ git:
+ image: codeberg.org/forgejo/forgejo:1.18.0-1
+ container_name: git
+ environment:
+ - USER_UID=1000
+ - USER_GID=1000
+ - TZ=Europe/Moscow
+ - USER=git
+ - GITEA__database__DB_TYPE=postgres
+ - GITEA__database__HOST=db:5432
+ - GITEA__database__NAME=${PG_NAME}
+ - GITEA__database__USER=${PG_USER}
+ - GITEA__database__PASSWD=${PG_PASS}
+ restart: always
+ networks:
+ - gitea
+ - gateway
+ volumes:
+ - /home/git/.ssh/:/data/git/.ssh
+ - forgejo:/data
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ ports:
+ - "127.0.0.1:2222:22"
+ depends_on:
+ db:
+ condition: service_healthy
+ db:
+ image: postgres:13
+ restart: always
+ environment:
+ - POSTGRES_USER=${PG_USER}
+ - POSTGRES_PASSWORD=${PG_PASS}
+ - POSTGRES_DB=${PG_NAME}
+ healthcheck:
+ test: /usr/bin/pg_isready
+ interval: 5s
+ timeout: 10s
+ retries: 120
+ networks:
+ - gitea
+ volumes:
+ - postgres:/var/lib/postgresql/data
+ woodpecker-server:
+ image: woodpeckerci/woodpecker-server:latest
+ volumes:
+ - woodpecker-server-data:/var/lib/woodpecker/
+ environment:
+ - WOODPECKER_OPEN=true
+ - WOODPECKER_GITEA=true
+ - WOODPECKER_GITEA_URL=https://gitrepo.ru
+ - WOODPECKER_GITEA_CLIENT=${GITEA_CLIENT}
+ - WOODPECKER_GITEA_SECRET=${GITEA_SECRET}
+ - WOODPECKER_HOST=https://ci.gitrepo.ru
+ - WOODPECKER_ADMIN=neonxp
+ - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
+ networks:
+ - gitea
+ - gateway
+ depends_on:
+ - git
+ woodpecker-agent:
+ image: woodpeckerci/woodpecker-agent:latest
+ command: agent
+ restart: always
+ depends_on:
+ - woodpecker-server
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ environment:
+ - WOODPECKER_SERVER=woodpecker-server:9000
+ - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
+ networks:
+ - gitea
+volumes:
+ woodpecker-server-data:
+ caddy_data:
+ caddy_config:
+ forgejo:
+ postgres:
+networks:
+ gateway:
+ gitea:
+ external: false
+
```
-</div>а рядом лежит `.env` файлик с значениями переменных `${...}`.
+а рядом лежит `.env` файлик с значениями переменных `${...}`.
Запускаю деплой я с локального компьютера, предварительно добавив удаленный сервер в [контекст докера](https://docs.docker.com/engine/context/working-with-contexts/):
```
-docker context create gitrepo --docker "host=ssh://gitrepo.ru" # Создаю новый контекст для удаленного сервераdocker use gitrepo # Все последующие docker команды выполняются на удаленном сервереdocker use default # Возвращаюсь в локальный контекст
+# Создаю новый контекст для удаленного сервера
+docker context create gitrepo --docker "host=ssh://gitrepo.ru"
+# Все последующие docker команды выполняются на удаленном сервере
+docker use gitrepo
+# Возвращаюсь в локальный контекст
+docker use default
```
## Оставшиеся проблемы
Сейчас так получается, что Caddyfile должен лежать на удаленном сервере, т.к. часть конфига
-<div class="highlight">```yml
-<span style="display:flex;"><span><span style="color:#f92672">volumes</span>:</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">./Caddyfile:/etc/caddy/Caddyfile</span></span></span>
+```yml
+ volumes:
+ - ./Caddyfile:/etc/caddy/Caddyfile
```
-</div>выполняется в контексте именно удаленного сервера, а значит при его апдейте на локальном серваке приходится делать SCP этого файла на сервак. Такое себе.
+выполняется в контексте именно удаленного сервера, а значит при его апдейте на локальном серваке приходится делать SCP этого файла на сервак. Такое себе.
Как это решить — есть интересная идея, но это уже в другой раз. \ No newline at end of file
diff --git a/content/post/2023-05-26-gist.md b/content/post/2023-05-26-gist.md
index f6aaa9c..f631e2d 100644
--- a/content/post/2023-05-26-gist.md
+++ b/content/post/2023-05-26-gist.md
@@ -3,12 +3,12 @@ author: NeonXP
categories:
- Мои проекты
date: "2023-05-26T17:40:21Z"
-guid: http://9
id: 54
tags:
- it
- моё
title: Импортозамещение Gist
+draft: false
---
И в догонку к комментариям, запустил на своём серваке свой аналог Gist’ов от GitHub.
diff --git a/content/post/2023-07-24-tls.md b/content/post/2023-07-24-tls.md
index 4bd6cea..2411d76 100644
--- a/content/post/2023-07-24-tls.md
+++ b/content/post/2023-07-24-tls.md
@@ -3,12 +3,13 @@ author: NeonXP
categories:
- Без рубрики
date: "2023-07-24T20:04:17Z"
-guid: http://8
id: 53
tags:
- it
- Россия
+- TLS
title: Немного мыслей о TLS (HTTPS) в России
+draft: false
---
Накопилось немного мыслей относительно того, что может грозить нам (и мне) в связи с трендом на “балканизацию” рунета.
@@ -17,7 +18,9 @@ title: Немного мыслей о TLS (HTTPS) в России
Есть относительно [доверенный УЦ от Минцифры](https://www.gosuslugi.ru/tls). Это здорово и я это всецело поддерживаю. Вот только есть момент. Он не для нас, простых людей, и при попытке его получить видим то, что на скриншоте ниже. А сранный Firefox вообще хочет его внести в черный список, чтобы даже специально его нельзя было установить. В общем, пока его я поставить не могу даже при всём желании.
-<figure class="wp-block-image">![Услуга предоставляется только юридическим лицам](/img/posts/20230724_202627.png)</figure>Какие ещё альтернативы есть, если нас вдруг прокинет Let’s encrypt?
+![Услуга предоставляется только юридическим лицам](/img/posts/20230724_202627.png)
+
+Какие ещё альтернативы есть, если нас вдруг прокинет Let’s encrypt?
1. Не использовать HTTPS вообще. Я же не магазин и у меня нет форм логина, которые требуют шифрования. Так-то оно так, да не так. Браузеры уже сейчас очень косо смотрят на “обычные”, не HTTPS сайты, а в дальнейшем, не удивлюсь если перестанут открывать вообще. Так же на HTTP сайтах не работают прикольные браузерные API типа геолокации (наверное, это в каком-то роде даже плюс 😉 ). Ну и ещё проблема, что, например, этот сайт без HTTPS вообще не может работать, ибо для доменов зоны .dev насильно включено HSTS и они не могут работать не по HTTPS. Последнее то я решу старым добрым доменом neonxp.ru, но тем не менее.
2. Самоподписанные сертификаты. Вот это уже более менее похоже на правду! Да, такие сайты надо добавлять в исключения и мороки с сертификатами чуть больше. Но тут та же история с доменами .dev. Для них самоподписаные не катят. Выход — опять таки старый добрый neonxp.ru.
@@ -34,15 +37,17 @@ title: Немного мыслей о TLS (HTTPS) в России
4. `openssl req -new -key server.key -subj "/CN=neonxp.ru/CN=*.neonxp.ru" -out server.csr` — генерируем файл запроса для конкретного сайта
5. Создаем файл `openssl.cnf` с примерно таким содержимым:
```
+ [SAN]
+ subjectAltName = @alt_names
+ [alt_names]
+ DNS.1 = neonxp.ru
+ DNS.2 = *.neonxp.ru
+ ```
+6. И, наконец, создаем сертификат для сайта, который будет подписан ключами server.key и root\_ca.key (то есть и своим удостоверяющим центром тоже):
```
-
- ``[SAN]``
- `subjectAltName = @alt_names`
- `[alt_names]`
- `DNS.1 = neonxp.ru`
- `DNS.2 = *.neonxp.ru`
-6. И, наконец, создаем сертификат для сайта, который будет подписан ключами server.key и root\_ca.key (то есть и своим удостоверяющим центром тоже): `openssl x509 -req -in server.csr -CA root_ca.crt -CAkey root_ca.key -CAcreateserial -out server.crt -days 365 -extensions SAN -extfile openssl.cnf`
-
-В общем, всё. Полученные root\_ca.crt (но не root\_ca.key!), server.key и server.crt можно вносить в конфигурацию используемого вебсервера. А так же внести root\_ca.crt в доверенные для себя.
+ openssl x509 -req -in server.csr -CA root_ca.crt -CAkey root_ca.key -CAcreateserial -out server.crt -days 365 -extensions SAN -extfile openssl.cnf
+ ```
+
+В общем, всё. Полученные root_ca.crt (но не root_ca.key!), server.key и server.crt можно вносить в конфигурацию используемого вебсервера. А так же внести root_ca.crt в доверенные для себя.
Так у меня выглядят [сертификат на сайт](/img/posts/20230724_204209.png) и [сертификат УЦ](/img/posts/20230724_204325.png). \ No newline at end of file
diff --git a/content/post/2023-12-29.md b/content/post/2023-12-29-переезд.md
index 3f80498..22aab82 100644
--- a/content/post/2023-12-29.md
+++ b/content/post/2023-12-29-переезд.md
@@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2023-12-29T00:15:44Z"
-guid: http://7
id: 52
tags:
- блог
diff --git a/content/post/2024-01-03.md b/content/post/2024-01-03-архив.md
index bda3cf0..d35405e 100644
--- a/content/post/2024-01-03.md
+++ b/content/post/2024-01-03-архив.md
@@ -3,13 +3,12 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-01-03T17:28:40Z"
-guid: http://6
id: 51
tags:
- блог
title: Архив
---
-Покапавшись по вебархиву смог вытащить древние посты с разных моих старых блогов. В основном, кринжовые, конечно, но это моя жизнь, как она была в то время. Так что пусть будут.
+Покопавшись по вебархиву смог вытащить древние посты с разных моих старых блогов. В основном, кринжовые, конечно, но это моя жизнь, как она была в то время. Так что пусть будут.
-[Архив блога](https://neonxp.ru/category/archive/) \ No newline at end of file
+[Архив блога](https://neonxp.ru/categories/архив/) \ No newline at end of file
diff --git a/content/post/2024-02-21-tls.md b/content/post/2024-02-21-tls.md
index 759f1e0..47caee6 100644
--- a/content/post/2024-02-21-tls.md
+++ b/content/post/2024-02-21-tls.md
@@ -3,11 +3,11 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-02-21T21:51:29Z"
-guid: http://5
id: 50
tags:
- it
- Россия
+- TLS
title: Конфигурация HTTPS с сертификатом от Минцифры
---
@@ -18,32 +18,32 @@ title: Конфигурация HTTPS с сертификатом от Минц
Поехали!
1. Идём сюда: <https://www.gosuslugi.ru/627603/1/form>
-2. По приведенной инструкции генерируем файл запроса сертификата. Вкратце так (только вместо neonxp.ru указываем свой домен):
+2. По приведенной инструкции генерируем файл запроса сертификата. Вкратце так (только вместо neonxp.ru указываем свой домен):
```
+ openssl req -out neonxp.ru.csr -new -subj "/C=RU/CN=neonxp.ru" -addext "keyUsage = digitalSignature, keyEncipherment" -addext "subjectAltName=DNS: neonxp.ru" -addext "extendedKeyUsage = serverAuth" -newkey rsa:2048 -nodes -keyout neonxp.ru.key
```
-
- ``openssl req -out neonxp.ru.csr -new -subj "/C=RU/CN=neonxp.ru" -addext "keyUsage = digitalSignature, keyEncipherment" -addext "subjectAltName=DNS: neonxp.ru" -addext "extendedKeyUsage = serverAuth" -newkey rsa:2048 -nodes -keyout neonxp.ru.key``
Важно! Нужно сохранить файл ключа neonxp.ru.key в надежном месте. Если он попадет в чужие руки — нужно будет отзывать сертификат и начинать всё заново!SAN и Wildcard пока не поддерживается, но что имеем — то и имеем. Но по слухам таки будут, как минимум SAN.
3. Полученный файл csr загружаем там же на госуслуги
4. Ждём не долго (реально недолго, у меня прислали сертификат буквально через несколько минут!)
5. В ответ придёт файл с рандомным названием. Сохраняем его туда, где лежат другие файлы под названием “домен.crt”
6. Скачиваем корневой и промежуточные сертификаты:
- ``wget https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cerwget https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer`````
+ ```
+ wget https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cerwget https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer`````
```
7. Преобразуем скачанный сертификат в формат PEM:
```
+ openssl x509 -in neonxp.ru.crt -out neonxp.cer -outform PEM
```
-
- `<pre tabindex="0">openssl x509 -in neonxp.ru.crt -out neonxp.cer -outform PEM</pre>`
8. Соединяем свой сертификат и минцифровские в один бандл:
```
+ cat neonxp.cer russian_trusted_sub_ca_pem.cer russian_trusted_root_ca_pem.cer > chain.cer
```
-
- ``cat neonxp.cer russian_trusted_sub_ca_pem.cer russian_trusted_root_ca_pem.cer > chain.cer``
9. Используем полученный бандл и сгенерированный в пункте 2 файл ключа в конфигурации вебсервера. У меня используется Caddy, поэтому мой конфиг выглядит так:
```
+ neonxp.ru:443 {
+ tls /data/ssl/chain.cer /data/ssl/neonxp.ru.key
+ ...
+ }
```
-
- `<pre tabindex="0">neonxp.ru:443 { tls /data/ssl/chain.cer /data/ssl/neonxp.ru.key ...}</pre>`
В общем-то, всё. Как настанет время продлевать — я дополню заметку деталями именно продления. Если будут вопросы — пишите, попробуем решить. \ No newline at end of file
diff --git a/content/post/2024-06-01.md b/content/post/2024-06-01-вам-не-нужны-пуши.md
index 81148e1..e7df878 100644
--- a/content/post/2024-06-01.md
+++ b/content/post/2024-06-01-вам-не-нужны-пуши.md
@@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-06-01T21:05:55Z"
-guid: http://4
id: 49
tags:
- it
diff --git a/content/post/2024-06-02.md b/content/post/2024-06-02-книги-1.md
index f23346a..089085b 100644
--- a/content/post/2024-06-02.md
+++ b/content/post/2024-06-02-книги-1.md
@@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-06-02T01:48:16Z"
-guid: http://3
id: 48
tags:
- книги
diff --git a/content/post/2024-07-13-joplin.md b/content/post/2024-07-13-joplin.md
index 1d874b7..77562c2 100644
--- a/content/post/2024-07-13-joplin.md
+++ b/content/post/2024-07-13-joplin.md
@@ -3,9 +3,8 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-07-13T20:49:12Z"
-guid: http://2
id: 47
-image: /wp-content/uploads/2024/07/top-encrypted-todo-and-note-taking-apps-01.jpg
+image: /upload/top-encrypted-todo-and-note-taking-apps-01.jpg
tags:
- it
- joplin
diff --git a/content/post/2024-07-21-bbs.md b/content/post/2024-07-21-bbs.md
index 04519f2..f28e9a1 100644
--- a/content/post/2024-07-21-bbs.md
+++ b/content/post/2024-07-21-bbs.md
@@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-07-21T20:28:34Z"
-guid: http://1
id: 46
tags:
- разное
diff --git a/content/post/2024-09-26-hugo-wordpress.md b/content/post/2024-09-26-hugo-wordpress.md
index 15761dd..d6b6423 100644
--- a/content/post/2024-09-26-hugo-wordpress.md
+++ b/content/post/2024-09-26-hugo-wordpress.md
@@ -5,9 +5,8 @@ categories:
date: "2024-09-26T19:05:00Z"
footnotes:
- ""
-guid: https://neonxp.ru/?p=112
id: 112
-image: /wp-content/uploads/2024/09/logo.png
+image: /upload/logo.png
location:
- На базе
tags:
diff --git a/content/post/2024-10-06.md b/content/post/2024-10-06-цитатник-рунета.md
index f878ad7..2048c18 100644
--- a/content/post/2024-10-06.md
+++ b/content/post/2024-10-06-цитатник-рунета.md
@@ -3,7 +3,6 @@ author: NeonXP
categories:
- Мои проекты
date: "2024-10-06T12:00:11Z"
-guid: https://neonxp.ru/?p=208
id: 208
image: /upload/bash_org.jpg
tags:
@@ -31,6 +30,6 @@ title: Цитатник Рунета
Из функций пока только вывод цитат по страницам, а так же вывод случайных 20 цитат + кнопка для выдачи других 20 случайных. Лично мне гораздо больше нравятся как раз случайные подборки. Их можно обновлять почти бесконечно!
-Да, он пока не умеет принимать новые цитаты (да и кто их будет слать то, лол?), да и нет других функций, типа голосований (классическими \[+\], \[-\], \[:|||:\]). Буду ли я это доделывать и как-то развивать? Не знаю. Возможно, время цитатника безвозвратно ушло. Но может быть и внезапный комбек. Кто знает 🤷‍♂️. В ближайшие дни я допилю и голосвалку и добавление цитат, но вряд ли буду в это инвестировать много времени. Есть ещё и мысль публиковать цитаты через ТГ бота простой пересылкой ему сообщений, а он уже их сам анонимизирует заменяя данные пользователей на обезличенные XXX и YYY и оформляет цитату как надо. Как вам такая идея?
+Да, он пока не умеет принимать новые цитаты (да и кто их будет слать то, лол?), да и нет других функций, типа голосований (классическими `[+]`, `[-]`, `[:|||:]`). Буду ли я это доделывать и как-то развивать? Не знаю. Возможно, время цитатника безвозвратно ушло. Но может быть и внезапный комбек. Кто знает 🤷‍♂️. В ближайшие дни я допилю и голосвалку и добавление цитат, но вряд ли буду в это инвестировать много времени. Есть ещё и мысль публиковать цитаты через ТГ бота простой пересылкой ему сообщений, а он уже их сам анонимизирует заменяя данные пользователей на обезличенные XXX и YYY и оформляет цитату как надо. Как вам такая идея?
Вообще, я бы хотел это как-то, наверное, обсудить, относительно того как это развивать и стоит ли? \ No newline at end of file
diff --git a/content/post/2024-10-17.md b/content/post/2024-10-17-книги-2.md
index fe99889..54ac9c0 100644
--- a/content/post/2024-10-17.md
+++ b/content/post/2024-10-17-книги-2.md
@@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-10-17T19:26:00Z"
-guid: https://neonxp.ru/?p=220
id: 220
image: /upload/Rama16wiki.jpg
tags:
@@ -33,4 +32,4 @@ title: Книжные рекомендации №2
Книга является частью цикла, и я прикладываю цикл целиком:
-<div class="wp-block-file">[Цикл «КенгХо»](https://neonxp.ru/upload/КенгХо.zip)[Скачать](https://neonxp.ru/upload/КенгХо.zip)</div> \ No newline at end of file
+[Цикл «КенгХо» скачать](https://neonxp.ru/upload/КенгХо.zip) \ No newline at end of file