новая жизнь блога 2

This commit is contained in:
Александр Кирюхин 2024-11-10 00:04:43 +03:00
parent 59c7d45673
commit 8e79098193
Signed by: neonxp
SSH key fingerprint: SHA256:SVt7TjxbVc87m1QYaQziOJ0N3OCFURv2g76gD/UTTXI
72 changed files with 310 additions and 1260 deletions

5
Makefile Normal file
View file

@ -0,0 +1,5 @@
.PHONY: deploy
deploy:
hugo --gc && rsync -avz --delete public/ neonxp@neonxp.ru:/var/www/neonxp.ru

View file

@ -0,0 +1,7 @@
---
title: "Гостевая книга"
date: 2024-11-03T16:10:32+03:00
draft: false
---
Да-да. Старая добрая гостевая книга. Здесь можно писать комментарии не подходящие ни к одному посту и относящиеся к сайту целиком.

View file

@ -2,6 +2,7 @@
title: "Jabber"
date: 2024-11-03T16:10:32+03:00
draft: false
comments: false
---
<a href='https://compliance.conversations.im/server/neonxp.ru'><img src='https://compliance.conversations.im/badge/neonxp.ru'></a>

View file

@ -2,6 +2,7 @@
title: "Обо мне"
date: 2024-11-03T16:10:32+03:00
draft: false
comments: false
---
- E-mail: i@neonxp.ru

View file

@ -2,6 +2,7 @@
title: "Мои проекты"
date: 2024-11-03T16:10:32+03:00
draft: false
comments: false
---
- [Джаббер сервер](/pages/jabber/)

View file

@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-11-05T16:54:00Z"
guid: https://neonxp.ru/?p=90
id: 90
tags:
- из ЖЖ
title: прямой эфир &#8212; продолжение
draft: false
---
только что досмотрели с джо все что было с кирком… грустно что больше НИКОГДА не будет продолжения… мне так будет не хватать пафоса ТОСа и лично тов. кирка….

View file

@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-11-06T16:53:00Z"
guid: https://neonxp.ru/?p=88
id: 88
tags:
- из ЖЖ
title: прямой эфир &#8212; база гамма
draft: false
---
сегодня лег в 5 утра, встал в 2… хожу как ни от мира сего… Когда вышел под вечер за сигаретами на меня нахлынул поток разных грустных воспоминаний о 2003-2004 годах… еще сегодня написала одна девушка которая достаточно давно перестала со мной разговаривать… странно… до сдачи работы не считая сегодняшнего дня остался один день… а сегодня я нифига не работал. завтра коллоквиум по физике.. почитал лекции три больше не мог… завтра самый ужасный день, среда… ненавижу среды… и почему они бывают чаще чем например четверги…

View file

@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-11-08T16:51:00Z"
guid: https://neonxp.ru/?p=86
id: 86
tags:
- из ЖЖ
title: прямой эфир &#8212; призрак оперы
draft: false
---
сегодня с друзьями (не буду показывать пальцем на скудный френд лист) ходили на семинар Opera Software, была прекрасная дружеская атмосфера, обсирание мелкомягких, раздача футболок, дисков и автографов, диалоги “по делу” с разработчиками, умные рассказы, интересные презентации новых продуктов, таких как операмини 4.0 и опера 9.5 бета, которая во время синхронизации умудрилась очень неплохо обвалиться, хотя это не испортило впечатления от новых технологий. кстати, о технологиях, в бете меня больше всего поразила до глубины души поддержка технологии svg(замена флешу на xml) и маленький демо ролик на ней в котором было вставленно 3(!!!) видео ролика и выступающи разработчик вращал их мышкой. собственно семинар удался на славу, даже есть желание к ним идти работать.

View file

@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-12-11T16:50:00Z"
guid: https://neonxp.ru/?p=84
id: 84
tags:
- из ЖЖ
title: прямой эфир &#8212; подъезд дубль 2
draft: false
---
стоим в подъезде, джо ненароко сказал слово “проблема”. я бы не придал этому бы этому значения если бы игорь не сказал “проблема….. проблема….. \*ЛЯ!!!” и тут вспомнили про проблемы на учебном фронте….. настроение упало до 0….. сейчас медленно пошло в минус….. и как так жить??!

View file

@ -3,11 +3,11 @@ author: NeonXP
categories:
- Архив
date: "2007-12-26T16:49:00Z"
guid: https://neonxp.ru/?p=82
id: 82
tags:
- из ЖЖ
title: Ну вот и сессия пришла&#8230;
draft: false
---
Хоть и начнется зачетная сессия 28го(!!!! это еще одна особенность моего ВУЗа) числа, но зачеты уже идут во всю. “И на нашей улице будет праздник”. У мну сдано уже 4 зачода есть. Неужели все будет хорошо?…

View file

@ -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 — Cant stop! Я был поражен, удивлен, рад! Вот только приехал оттуда, еще не совсем трезв, но полон впечатлений! Вау! Это просто почти невероятно!!!! Уже можно сказать, что денюха удалась!! Посмотрим, что будет завтра!

View file

@ -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>
![](/img/posts/1315741048720.png)
![](/img/posts/1315741048721.png)

View file

@ -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
---
Пора начинать новую жизнь. Вот и блог обновил. Всё старьё выкинул и сделал внешнюю уборку. Только ради всего, буду стараться не забивать на блог. Ибо уже не в первый раз.

View file

@ -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>
![](/img/posts/76290b19.gif)

View file

@ -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
---
Как же всё это уныло… Буэ… Зато сегодня ждем на собеседование нового человека. По резюме, вроде, адекватный человек. Не как ТОТ. Тьфу тьфу тьфу, чтоб не сглазить!

View file

@ -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>
![](/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)

View file

@ -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)Впечатления от игры сложно описать словами, ведь слова не способны передать то обилие положительных эмоций, что я получил. Конечно же, не обошлось и без мелких травм. В частности, на приложенном фото видны последствия для моей многострадальной спины попадания шариков с краской с близкой дистанции. Так же достаточно болезненным оказалось попадание в голову и локоть. Ощущение, как после удара камнем. Но, как ни странно, эти «боевые ранения» никак отрицательно не сказались на общем фане от игры.
Так же, хотелось поблагодарить людей игравших со мной за отлично проведенное время. Надо будет как-нибудь повторить 😉

View file

@ -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Гис. Но после ноябрьских обновлений данная программа перестала у меня адекватно работать, а именно начала зависать буквально от всего — от движения мыши, нажатия кнопок интерфейса и т.п. Что только я уже не пытался с этим с делать! В один момент уже был готов похоронить его и пытаться найти ему альтернативу.

View file

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

View file

@ -3,13 +3,13 @@ author: NeonXP
categories:
- Без рубрики
date: "2021-05-13T15:37:01Z"
guid: http://13
id: 58
tags:
- it
- паранойя
- разное
title: Немного о цифровой гигиене
draft: false
---
## Вступление

View file

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

View file

@ -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
---
Просто собираю подборку интересных ссылок по гошке на почитать потом.

File diff suppressed because one or more lines are too long

View file

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

View file

@ -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>Какие ещё альтернативы есть, если нас вдруг прокинет Lets encrypt?
![Услуга предоставляется только юридическим лицам](/img/posts/20230724_202627.png)
Какие ещё альтернативы есть, если нас вдруг прокинет Lets 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 (то есть и своим удостоверяющим центром тоже):
```
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
```
``[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 в доверенные для себя.
В общем, всё. Полученные root_ca.crt (но не root_ca.key!), server.key и server.crt можно вносить в конфигурацию используемого вебсервера. А так же внести root_ca.crt в доверенные для себя.
Так у меня выглядят [сертификат на сайт](/img/posts/20230724_204209.png) и [сертификат УЦ](/img/posts/20230724_204325.png).

View file

@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2023-12-29T00:15:44Z"
guid: http://7
id: 52
tags:
- блог

View file

@ -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/)
[Архив блога](https://neonxp.ru/categories/архив/)

View file

@ -3,11 +3,11 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-02-21T21:51:29Z"
guid: http://5
id: 50
tags:
- it
- Россия
- TLS
title: Конфигурация HTTPS с сертификатом от Минцифры
---
@ -20,30 +20,30 @@ title: Конфигурация HTTPS с сертификатом от Минц
1. Идём сюда: <https://www.gosuslugi.ru/627603/1/form>
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>`
В общем-то, всё. Как настанет время продлевать — я дополню заметку деталями именно продления. Если будут вопросы — пишите, попробуем решить.

View file

@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-06-01T21:05:55Z"
guid: http://4
id: 49
tags:
- it

View file

@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-06-02T01:48:16Z"
guid: http://3
id: 48
tags:
- книги

View file

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

View file

@ -3,7 +3,6 @@ author: NeonXP
categories:
- Без рубрики
date: "2024-07-21T20:28:34Z"
guid: http://1
id: 46
tags:
- разное

View file

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

View file

@ -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 и оформляет цитату как надо. Как вам такая идея?
Вообще, я бы хотел это как-то, наверное, обсудить, относительно того как это развивать и стоит ли?

View file

@ -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>
[Цикл «КенгХо» скачать](https://neonxp.ru/upload/КенгХо.zip)

View file

@ -1,8 +1,8 @@
baseURL: 'https://neonxp.ru/'
languageCode: 'ru-RU'
baseURL: "https://neonxp.ru/"
languageCode: "ru-RU"
DefaultContentLanguage: ru
title: '~/neonxp.log'
theme: 'hugo-theme-stack'
title: "~/neonxp.log"
theme: "hugo-theme-stack"
enableRobotsTXT: true
params:
@ -104,11 +104,21 @@ markup:
tabWidth: 4
menus:
main:
- name: Главная
URL: /
- name: Проекты
URL: /pages/projects
- name: Обо мне
URL: /pages/me
main:
- name: Гостевая книга
URL: /pages/guestbook
- name: Проекты
URL: /pages/projects
- name: Обо мне
URL: /pages/me
- name: RSS
URL: https://neonxp.ru/post/index.xml
outputs:
page:
- html
home:
- html
sections:
- html
- rss

49
layouts/_default/rss.xml Normal file
View file

@ -0,0 +1,49 @@
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := slice -}}
{{- if or $.IsHome $.IsSection -}}
{{- $pages = $pctx.RegularPages -}}
{{- else -}}
{{- $pages = $pctx.Pages -}}
{{- end -}}
{{- $pages := where $pages "Params.hidden" "!=" true -}}
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
{{- printf "<?xml-stylesheet href=\"/rss.xsl\" type=\"text/xsl\"?>" | safeHTML }}
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with .Site.Params.Author.email }}
<managingEditor>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Params.Author.email }}
<webMaster>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{- with .OutputFormats.Get "RSS" -}}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{- end -}}
{{ range $pages }}
{{- $content := safeHTML (.Summary | html) -}}
{{- if .Site.Params.rssFullContent -}}
{{- $content = safeHTML (.Content | html) -}}
{{- end -}}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Params.Author.email }}<author>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid>
<description>
{{- $image := partial "helper/image" (dict "Context" . "Type" "rss") -}}
{{- if $image.exists -}}
{{ "<" | html }}img src="{{ $image.permalink | absURL }}" alt="Featured image of post {{ .Title }}" {{ "/>" | html}}
{{- end -}}{{ $content }}</description>
</item>
{{ end }}
</channel>
</rss>

View file

@ -1 +0,0 @@
@media print{.print-none,.pager,.mobile-nav,aside,nav,footer{display:none}}@media print{html{font-size:12pt}html,body,.page{background-color:white;border-color:black;box-shadow:none;color:black}.main{width:100%}:link,:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}}

View file

@ -1 +0,0 @@
{"Target":"css/print.31e2819287afc91406f2fd43d21a8ba4a0cdfc272e439c90db0c6e47efc7c346.css","MediaType":"text/css","Data":{"Integrity":"sha256-MeKBkoevyRQG8v1D0hqLpKDN/CcuQ5yQ2wxuR+/Hw0Y="}}

View file

@ -1,28 +0,0 @@
@media print {
.print-none,
.pager,
.mobile-nav,
aside,
nav,
footer {
display: none; } }
@media print {
html {
font-size: 12pt; }
html,
body,
.page {
background-color: white;
border-color: black;
box-shadow: none;
color: black; }
.main {
width: 100%; }
:link,
:visited {
text-decoration: underline; }
abbr[title]::after {
content: " (" attr(title) ")"; } }
/*# sourceMappingURL=print.css.map */

View file

@ -1 +0,0 @@
{"Target":"css/print.css","MediaType":"text/css","Data":{}}

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
{"Target":"css/styles.4fe048222d6e6e524b6510636b00f2cd8ddbe2df0106a15f42ab37b811bbf157.css","MediaType":"text/css","Data":{"Integrity":"sha256-T+BIIi1ublJLZRBjawDyzY3b4t8BBqFfQqs3uBG78Vc="}}

View file

@ -1 +0,0 @@
{"Target":"css/styles.css","MediaType":"text/css","Data":{}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

View file

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View file

@ -12,9 +12,8 @@ ADR;CHARSET=UTF-8;TYPE=HOME:;;;Казань;Татарстан;;Российск
ROLE;CHARSET=UTF-8:Старший разработчик
ORG;CHARSET=UTF-8:VK
URL;CHARSET=UTF-8:https://neonxp.ru
X-FEED;CHARSET=UTF-8:https://neonxp.ru/feed.atom
X-FEED;CHARSET=UTF-8:https://neonxp.ru/post/index.xml
SOURCE:https://neonxp.ru/files/vcard.vcf
PHOTO:https://neonxp.ru/files/photo.jpg
X-SOCIALPROFILE;TYPE=Mastodon:https://soc.neonxp.ru/@neonxp
REV:2024-06-23T21:00:05.953Z
REV:2024-10-11T21:00:05.953Z
END:VCARD

View file

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

0
static/rss.css Normal file
View file

52
static/rss.xsl Normal file
View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><xsl:value-of select="/rss/channel/title"/> RSS Feed</title>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no" />
<style type="text/css">
/* Your custom styles can go here! */
</style>
</head>
<body>
<header>
<h1>RSS лента</h1>
<h2>
<xsl:value-of select="/rss/channel/title"/>
</h2>
<p>
<xsl:value-of select="/rss/channel/description"/>
</p>
<a hreflang="en" target="_blank" href="https://neonxp.ru/">
Полная версия сайта &#x2192;
</a>
</header>
<main>
<h2>Последние</h2>
<xsl:for-each select="/rss/channel/item">
<article>
<h3>
<a hreflang="en" target="_blank">
<xsl:attribute name="href">
<xsl:value-of select="link"/>
</xsl:attribute>
<xsl:value-of select="title"/>
</a>
</h3>
<footer>
Дата:
<time>
<xsl:value-of select="pubDate" />
</time>
</footer>
</article>
</xsl:for-each>
</main>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB