Обновление фич блога

This commit is contained in:
Alexander NeonXP Kiryukhin 2024-06-26 01:00:21 +03:00
parent 140d9ad2a0
commit a674674c4e
Signed by: NeonXP
GPG key ID: 35E33E1AB7776B39
25 changed files with 212 additions and 110 deletions

View file

@ -16,6 +16,16 @@ colorScheme = "dark"
hideColorSchemeToggle = true
since = 2_007
dateFormat = "2 January 2006"
mainSections = ["posts"]
[params.brand]
tagline = "/home/NeonXP"
icon = "img/icon.png"
logo = "img/logo512.png"
[blackfriday]
angledQuotes = true
hrefTargetBlank = true
[[params.social]]
name = "Jabber"
@ -27,10 +37,10 @@ dateFormat = "2 January 2006"
icon = "fa fa-git"
url = "https://gitrepo.ru/neonxp/"
[[params.social]]
name = "Mastodon"
icon = "fa fa-mastodon"
url = "https://soc.neonxp.ru/@neonxp/"
# [[params.social]]
# name = "Mastodon"
# icon = "fa fa-mastodon"
# url = "https://soc.neonxp.ru/@neonxp/"
[[params.social]]
name = "Telegram канал"
@ -50,7 +60,7 @@ dateFormat = "2 January 2006"
[[params.social]]
name = "RSS"
icon = "fa fa-rss"
url = "/index.xml"
url = "/feed.atom"
[params.language]
Lang = "ru"
@ -61,11 +71,21 @@ dateFormat = "2 January 2006"
appendFilePath = true
[outputs]
home = [ "HTML", "RSS" ]
home = [ "HTML", "ATOM" ]
page = [ "HTML" ]
section = ["HTML"]
taxonomy = ["HTML"]
taxonomyTerm = ["HTML"]
[outputFormats]
[outputFormats.ATOM]
name = "ATOM"
baseName = "feed"
mediaType = "application/atom+xml"
[mediaTypes]
[mediaTypes."application/atom+xml"]
suffixes = [ "xml" ]
suffixes = ["atom"]
[[menu.main]]
identifier = "jabber"
@ -104,7 +124,7 @@ url = "/archive"
[[menu.main]]
identifier = "rss"
name = "RSS"
url = "/index.xml"
url = "/feed.atom"
[permalinks]
posts = "/posts/:year/:month/:day/:filename"

View file

@ -8,6 +8,7 @@ date: 2021-01-01T00:00:00+03:00
<div class="h-card vcard">
<img class="u-logo" width="128" src="https://neonxp.ru/img/logo512.png"/>
<img class="u-photo" width="128" src="https://neonxp.ru/files/photo.jpg"/>
<p>
<a class="u-url u-uid url" href="https://neonxp.ru" rel="me">
<span class="p-name fn"><span class="p-given-name">Александр</span> '<span class="p-nickname">NeonXP</span>' <span class="p-family-name">Кирюхин</span></span>

View file

@ -26,7 +26,7 @@ featuredImage: /img/posts/photo_2023-12-27_22-45-44.jpg
## Наброски плана
0. Перейти максимально на собственные ресурсы, которые я контролирую и которые *точно* не сливают ничего налево.
Примерно так: социалки => https://ru.social/ , GitHub => https://coderepo.ru/ , Облачные диски => локальный NAS Synology и т.д.
Примерно так: социалки => https://soc.neonxp.ru/ , GitHub => https://gitrepo.ru/ , Облачные диски => локальный NAS Synology и т.д.
1. Мне надо сократить мессенджеры в идеале до одного, не считая корпоративного рабочего. Тут всё просто - оставляю Telegram, остальные сношу.
2. Мне надо отказаться от неэтичных социальных сетей, где я не могу полностью контролировать свои данные.
3. При отказе от социальных сетей чтобы не доставить проблем моим контактам надо оставить "новый адрес" по которому со мной можно связаться и, например, этот пост. Я не хочу чтобы для всех мои действия были прозрачны и понятны, а не "молча удалиться" оставив кого-то в недоумении.

View file

@ -0,0 +1,92 @@
+++
draft = true
date = 2024-06-24T23:39:35+03:00
title = "Интернет. Мы всё испортили."
description = ""
slug = ""
authors = []
tags = ["интернет", "лонгрид"]
categories = ["Лонгриды"]
externalLink = ""
series = []
+++
# Вступление
Вот уже пару лет как я стал замечать, что интернет уже давно идёт куда-то не туда. Прежде чем я раскрою свою мысль,
давайте вспомним пару новостей из недавнего прошлого:
- Steam и PlayStation Network недоступны из-за проблем у
[Akamai](https://wtftime.ru/articles/117096/steam-i-playstation-network-nedostupny-iz-za-problem-u-akamai/) — на самом
деле тогда слегло много чего ещё, в том числе веб-сервисы Apple, такие как AppStore, Погода и прочие.
Кстати, чтобы далеко не уходить от Акамаи — случайно наткнулся на
[интересную статейку от 2017 года](https://www.securitylab.ru/analytics/485308.php). Просто интересно.
- Когда [ложится Cloudflare](https://pikabu.ru/story/cloudflare__rak_interneta_7599566) за ним ложится треть интернета
(на самом деле — [всего-то 21М сайтов](https://trends.builtwith.com/websitelist/Cloudflare)).
- [Падения AWS](https://habr.com/ru/news/597391/) — это вообще хтонический ужас. Ну а так же можно прибавить к AWS и
Google Cloud с Azure.
Это то, что сходу вспоминается и что лично меня трогало.
Что же в этом общее? А то, что и тот и другой и третьи — единные точки отказа для большой части интернета.
Но как же так? Ведь мы же помним историю интернета, и то, какая была его главная «киллерфича» — децентрализация и
устойчивость к катастрофам! Ведь времена были неспокойные, холодная война, все дела. Ну, на самом деле, всё как и сейчас
:)
![Логическая карта ARPA NET, май 1973](https://pic.neonxp.ru/image/f9b0d325-ad3b-4413-b0f0-a12931d488bb.jpg)
Логическая карта ARPA NET, май 1973
Обратите внимание, хоть эта сеть по нынешним временам своей ёмкостью и уступает средней локалке небольшой компании. Но
уже здесь прослеживается, что при полном уничтожении любого узла сети — остальные узлы не теряют связанности! А то и
имеют более одного маршрута!
Казалось бы, сейчас, спустя более 50 лет, интернет стал несравнимо сложнее и связаннее. Однако он стал гораздо более
хрупким!
Сразу оговорюсь: я буду иногда говорить про весь Интернет, а иногда про более близкий мне его сегмент — Рунет.
Прошу простить за путаницу, но Рунет как часть Интернета наследует все его болячки. Ну и я за него лучше знаю, в силу
того, что я в нём обитаю.
Но проблема не только лишь в физическом отказе этих «бутылочных горлышек»! Всего несколько корпораций получают доступ к
слежке за почти всеми пользователями сети. А в действительно децентрализованной сети (какой, напомню, якобы должен быть
Интернет) этого быть просто не должно! По целому ряду причин, не буду их перечислять, главное не в частностях, а в том,
что этого не должно быть просто потому что не должно быть никогда. И да, что иронично, но это всё на фоне лицемерной
борьбе за якобы конфидециальность пользователей со стороны этих же самых корпораций. Трижды ха.
И это касается не только CDN и прочих AWS! Вот ещё «хорошие» точки отказа и слежки за пользователями:
- Мессенджера по сути у нас два — Telegram и WhatsApp. Останемся без них (РКН, санкции, балканизация) — большинство
пользователей рунета остаётся де-факто без мессенджеров. Да, есть ещё VK Messenger — но это тоже единая точка отказа!
- GitHub — тут вообще максимально обидно! Ведь Гит — by design идеально децентрализованная и распределенная система
совместной разработки ПО! Да ей даже не обязален центральный сервер хранения репозитория, по большому счёту!
А имеем то, что 95% (умозрительно) всех репозиториев загнали в один загончик, который принадлежит одной из самых
хищных и беспринципных корпораций! А учитывая сколько всего завязанно на конкретно GitHub — так становится страшно
представить что будет, если его вдруг не будет. Ну например, менеджмент МС вдруг решит, что гитхаб стал убыточный или
недостаточно прибыльный, а косты на фоне финансового кризиса надо резать! Да, можно сказать, что есть GitLab. Ну окей,
пара процентов у него. Ещё пара процентов — всякие гиковские sr.ht и отвратительный Bitbucket.
Но что это меняет в сути? Да ничего.
- Почта. Основа основ. Есть у каждого пользователя. Так же как и Гит — идеально распределённая и децентрализованная
система. Но тут хоть больше выбор, хоть и не на много: gmail.com, mail.ru, yandex.ru... Ну вроде всё из основных.
Ну и вот покрыто 80-90% пользователей рунета :) Децентрализация, my ass!
- YouTube — ну тут и так всё понятно. Не буду пояснять.
- Google AdSense и прочие подобные треккеры от фейсбуков — хорошо владельцу сайта тем что он получает какую-то там
статистику(а собрать статистику по логам вебсервера раз уж так охото получить стату — не?) или виджеты (зачем?), а
взамен «сдаёт» своих пользователей корпорациям. Хорошо? Да просто охренетительно!
- Вход через OAuth провайдеров (ну эти вездесущие «Войти через Facebook/Google/итд») — здесь не столько про отказ, а про
то, что ради «удобства» добровольно помогаем транснациональным корпорациям следить за собой. То есть, тут уже не
только вина нечистоплотных разработчиков веб ресурсов, но и самих пользователей! А помните, был такой OpenID? Нет, не
помните? Ну спасибо за это OAuth, что не помните.
Можно, конечно, мне возразить, что всё это лишь естественное развитие и естественный ход вещей. Естестественный, да.
Такой же естественный как и стремление бизнеса к монополизации. Вот только в интернете ФАС, который это сдержит, нет.
И в итоге мы придём к антиутопичному будущему, где две-три или десяток, не суть, корпораций поделят Интернет и начнут
перекраивать его под себя. Сначала под прикрытием «заботы» о пользователях, чтобы всё было в одном месте. Потом будут
придумывать новые «стандарты», несовместимые ни с чем кроме себя (QUIC, ага). А потом что? А не знаю, но ничего
хорошего нас не ждёт.
Надеюсь, мне удалось хоть немного показать «неправильность» и тот хтонический ужас который я испытываю глядя на
современный интернет и на то, куда он катится.
Дальше мы попробуем понять что пошло не так и что с этим можно сделать.

View file

@ -6,5 +6,5 @@ tags: ["блог"]
Покапавшись по вебархиву смог вытащить древние посты с разных моих старых блогов. В основном, кринжовые, конечно, но это моя жизнь, как она была в то время. Так что пусть будут.
[Архив блога](/archive)
[Архив блога](https://neonxp.ru/archive)

View file

@ -2,7 +2,7 @@
title: "Вам не нужны пуши!"
date: 2024-06-01T21:05:55+03:00
tags: ["жизнь", "IT"]
featuredImage: https://pic.neonxp.ru/image/3da5c769-6b21-4cde-9e97-351bb95660a6.jpg
featuredImage: https://pic.neonxp.ru/image/b2ca8d44-de82-4d1b-9bbb-b7248a0ffad0.jpg
---
Я не шучу. Серьёзно.

View file

@ -2,7 +2,7 @@
title: "Книжные рекомендации 1"
date: 2024-06-02T01:48:16+03:00
tags: ["книги", "фантастика"]
featuredImage: https://pic.neonxp.ru/image/b3f041a9-4a77-4a2e-9118-917fc900778b.jpg
featuredImage: https://pic.neonxp.ru/image/6d169905-1ac6-46df-bbe8-b6b5809361f2.jpg
---
Подумалось, почему бы не рекомендовать понравившиеся мне книги.
@ -13,4 +13,4 @@ featuredImage: https://pic.neonxp.ru/image/b3f041a9-4a77-4a2e-9118-917fc900778b.
Если без спойлеров — цикл описывает приключения помощника супер-карго Дейла на космическом корабле вольных торговцев
"Королева Солнца". Читается легко и увлекательно. Книги небольшие, проглатываются за пару часов.
[Скачать](/books/andre_norton-queen_of_sun.zip)
[Скачать](https://neonxp.ru/books/andre_norton-queen_of_sun.zip)

View file

@ -11,7 +11,7 @@ featuredImage: /img/posts/photo_2023-12-27_22-50-30.jpg
Очень грустно, я был крайне расстроен. Штош, теперь настроил зато постоянные бекапы БД и данных на локальный NAS. Прошу прощения у пользователей, я очень виноват.
А теперь о негрустном. Всё же решил что мне больше нравится основным домен не .dev, а именно .ru. Времена неспокойные - лучше перестраховаться и сделать ставку именно на национальный домен, а не на международный. К тому же у .dev домена есть неприятная особенность, что он требует обязательно валидного (то есть одобренного западными "партнерами") сертификата. А это не дело, как я уже [писал в заметке](/posts/2023-07-24-tls/).
А теперь о негрустном. Всё же решил что мне больше нравится основным домен не .dev, а именно .ru. Времена неспокойные - лучше перестраховаться и сделать ставку именно на национальный домен, а не на международный. К тому же у .dev домена есть неприятная особенность, что он требует обязательно валидного (то есть одобренного западными "партнерами") сертификата. А это не дело, как я уже [писал в заметке](https://neonxp.ru/posts/2023-07-24-tls/).
Пока что как-то так ¯\_(ツ)_/¯

5
data/authors.toml Normal file
View file

@ -0,0 +1,5 @@
[default]
name = "Александр NeonXP Кирюхин"
uri = "https://neonxp.ru/"
email = "i@neonxp.ru"
image = "https://neonxp.ru/img/logo512.png"

View file

@ -1,71 +0,0 @@
{{- /* Deprecate site.Author.email in favor of site.Params.author.email */}}
{{- $authorEmail := "" }}
{{- with site.Params.author }}
{{- if reflect.IsMap . }}
{{- with .email }}
{{- $authorEmail = . }}
{{- end }}
{{- end }}
{{- else }}
{{- with site.Author.email }}
{{- $authorEmail = . }}
{{- warnf "The author key in site configuration is deprecated. Use params.author.email instead." }}
{{- end }}
{{- end }}
{{- /* Deprecate site.Author.name in favor of site.Params.author.name */}}
{{- $authorName := "" }}
{{- with site.Params.author }}
{{- if reflect.IsMap . }}
{{- with .name }}
{{- $authorName = . }}
{{- end }}
{{- else }}
{{- $authorName = . }}
{{- end }}
{{- else }}
{{- with site.Author.name }}
{{- $authorName = . }}
{{- warnf "The author key in site configuration is deprecated. Use params.author.name instead." }}
{{- end }}
{{- end }}
{{- $pctx := . }}
{{- if .IsHome }}{{ $pctx = .Site }}{{ end }}
{{- $pages := slice }}
{{- if or $.IsHome $.IsSection }}
{{- $pages = $pctx.RegularPages }}
{{- else }}
{{- $pages = $pctx.Pages }}
{{- end }}
{{- $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 }}
<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>Блог NeonXP</description>
<generator>Hugo</generator>
<language>{{ site.Language.LanguageCode }}</language>{{ with $authorEmail }}
<managingEditor>{{.}}{{ with $authorName }} ({{ . }}){{ end }}</managingEditor>{{ end }}{{ with $authorEmail }}
<webMaster>{{ . }}{{ with $authorName }} ({{ . }}){{ 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 }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{- with $authorEmail }}<author>{{ . }}{{ with $authorName }} ({{ . }}){{ end }}</author>{{ end }}
<guid>{{ .Permalink }}</guid>
<description>{{ .Summary | transform.XMLEscape | safeHTML }}</description>
</item>
{{- end }}
</channel>
</rss>

53
layouts/index.atom Normal file
View file

@ -0,0 +1,53 @@
{{- $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections -}}
{{- $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 }}
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="{{ .Site.LanguageCode }}">
<title>{{ .Site.Title }}</title>
{{- with .Site.Params.brand.tagline }}
<subtitle>{{ . }}</subtitle>
{{- end }}
<id>{{ "/" | absLangURL }}</id>
<author>
<name>{{ .Site.Title }}</name>
<uri>{{ "/" | absLangURL }}</uri>
</author>
<generator>Hugo gohugo.io</generator>
{{- with .Site.Copyright }}
<rights>{{ . }}</rights>
{{- end }}
{{- with .Site.Params.brand.icon }}
<icon>{{ . | absURL }}</icon>
{{- end }}
{{- with .Site.Params.brand.logo }}
<logo>{{ . | absURL }}</logo>
{{- end }}
<updated>{{ dateFormat "2006-01-02T15:04:05Z" now.UTC | safeHTML }}</updated>
{{- with .OutputFormats.Get "ATOM" }}
{{ printf `<link rel="self" type="%s" href="%s" hreflang="%s"/>` .MediaType.Type .Permalink $.Site.LanguageCode | safeHTML }}
{{- end }}
{{- range .AlternativeOutputFormats }}
{{ printf `<link rel="alternate" type="%s" href="%s" hreflang="%s"/>` .MediaType.Type .Permalink $.Site.LanguageCode | safeHTML }}
{{- end }}
{{- range $pages }}
<entry>
<title>{{ .Title }}</title>
{{- $author := index .Site.Data.authors (.Params.author | default "default") }}
<author>
<name>{{ $author.name }}</name>
<uri>{{ $author.uri }}</uri>
</author>
<id>{{ .Permalink }}</id>
{{- if .IsTranslated -}}
{{ range .Translations }}
<link rel="alternate" href="{{ .Permalink }}" hreflang="{{ .Language.Lang }}"/>
{{- end -}}
{{ end }}
<updated>{{ dateFormat "2006-01-02T15:04:05Z" .Lastmod.UTC | safeHTML }}</updated>
<published>{{ dateFormat "2006-01-02T15:04:05Z" .Date.UTC | safeHTML }}</published>
<content type="html">{{ trim .Content "\n" }}</content>
</entry>
{{- end }}
</feed>

View file

@ -3,6 +3,7 @@
<meta name="color-scheme" content="light dark">
<link rel="pingback" href="https://webmention.io/neonxp.ru/xmlrpc" />
<link rel="webmention" href="https://webmention.io/neonxp.ru/webmention" />
<atom:link href="/feed.atom" rel="self" type="application/rss+xml" />
{{ if .Site.Params.csp }}
{{ partial "csp.html" . }}
{{ end }}

View file

@ -15,13 +15,13 @@
<div class="post-meta">
<div class="date">
<span class="posted-on">
<i class="fa fa-calendar" aria-hidden="true"></i>
<i class="fa-solid fa-calendar" aria-hidden="true"></i>
<time datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}" time class="dt-published">
{{ .Date | time.Format (.Site.Params.dateFormat | default "January 2, 2006" ) }}
</time>
</span>
<span class="reading-time">
<i class="fa fa-clock-o" aria-hidden="true"></i>
<i class="fa-solid fa-clock" aria-hidden="true"></i>
{{ i18n "reading_time" .ReadingTime }}
</span>
</div>
@ -33,7 +33,7 @@
<div class="post-content e-content">
{{ if .Params.featuredImage }}
<img src="{{ .Params.featuredImage | relURL }}" alt="Илюстрация поста"/>
<img src="{{ .Params.featuredImage | relURL }}" alt="Featured image"/>
{{ end }}
{{ .Content }}
</div>
@ -41,27 +41,23 @@
<footer>
<form action="mailto:i@neonxp.ru" enctype="text/plain">
<input type="hidden" name="subject" required value="RE: {{ .Title }}">
<input type="hidden" name="subject" required value="RE: {{ .Permalink | safeURL }}">
<label>
<h2>Комментарий</h2>
<textarea name="body" required rows="5" style="width:100%"></textarea>
</label>
<button type="submit">Отправить</button>
</form>
<hr />
<h2>Отправить <a href="https://webmention.io">WebMention</a>:</h2>
<form action="https://webmention.io/neonxp.ru/webmention" method="POST">
<input type="hidden" name="target" required value="{{ .Permalink | safeURL }}">
<label>
Адрес откуда webmention:
<input type="text" name="source" required value="" placeholder="https://адрес-моего-блога.ru/пост-в-котором-я-упомянул">
</label>
<br />
<button type="submit">Отправить</button>
</form>
</footer>
</article>
{{ partial "posts/math.html" . }}
{{ partial "posts/series.html" . }}
{{ partial "posts/disqus.html" . }}
{{ partial "posts/commento.html" . }}
{{ partial "posts/utterances.html" . }}
{{ partial "posts/giscus.html" . }}
{{ partial "posts/mastodon.html" . }}
{{ partial "posts/telegram.html" . }}
{{ partial "posts/cusdis.html" . }}
</section>
{{ end }}

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
{"Target":"css/coder.min.e1bdf152d93b060b06ba5d496486ed9c201a8b95d335e035beb5faebe3b61cad.css","MediaType":"text/css","Data":{"Integrity":"sha256-4b3xUtk7BgsGul1JZIbtnCAai5XTNeA1vrX66+O2HK0="}}
{"Target":"css/coder.min.38c4552ac40f9ae3408bad40358f654ebd8804412fe74ed56f2d6c8a7af82dd3.css","MediaType":"text/css","Data":{"Integrity":"sha256-OMRVKsQPmuNAi61ANY9lTr2IBEEv507Vby1sinr4LdM="}}

View file

@ -12,7 +12,7 @@ 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/index.xml
X-FEED;CHARSET=UTF-8:https://neonxp.ru/feed.atom
SOURCE:https://neonxp.ru/files/vcard.vcf
PHOTO:https://neonxp.ru/files/photo.jpg
X-SOCIALPROFILE;TYPE=Mastodon:https://soc.neonxp.ru/@neonxp

BIN
static/img/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@ -1 +1 @@
Subproject commit 4bef824c7b601d736cde47777043d813251b617c
Subproject commit b7470e26ab33d917ce195574d2fd40c8209ebb5e