diff --git a/.gitignore b/.gitignore index c5141e0..3b8bd73 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -./public \ No newline at end of file +public/* \ No newline at end of file diff --git a/Makefile b/Makefile index 6656e1a..b57c12f 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,12 @@ .PHONY: all build deploy -all: build deploy +all: deps build deploy + +deps: + export CGO_ENABLED=1 + go install -tags extended github.com/gohugoio/hugo@latest + go install gitrepo.ru/neonxp/hugoext@v1.1.0 + go install gitrepo.ru/neonxp/md2gmi@v1.1.0 build: hugo --minify diff --git a/config.toml b/config.toml index b9c3677..71be93c 100644 --- a/config.toml +++ b/config.toml @@ -17,6 +17,11 @@ hideColorSchemeToggle = true since = 2_007 dateFormat = "2 January 2006" + [[params.social]] + name = "Jabber" + icon = "fa fa-lightbulb-o" + url = "xmpp:i@neonxp.ru?message" + [[params.social]] name = "Git с моими проектами" icon = "fa fa-git" diff --git a/content/_index.md b/content/_index.md index 80ab3f5..f356066 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,4 +1,4 @@ -# Мои сервисы: +# Моя экосистема: - [gitrepo.ru — гит-хостинг](https://gitrepo.ru) - [gist.neonxp.ru — сервис для хранения и публикаций кусков кода](https://gist.neonxp.ru) diff --git a/content/posts/2023-05-26-comments.md b/content/posts/2023-05-26-comments.md deleted file mode 100644 index d1d7d1e..0000000 --- a/content/posts/2023-05-26-comments.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Комментарии" -date: 2023-05-26T17:08:21+03:00 -tags: ["it", "блог", "убежище параноика"] ---- - -Наконец-то в блоге появились комментарии! Для них используется [remark42](https://remark42.com/) который установлен тут же, на этом же сервере. - -В отличие от всяких Disqus он не следит за пользователями и не передает данные на сторону. А я к этому дерьму параноидально подхожу. Поэтому на данном сайте нет никаких google fonts, не говоря уж о всяких счетчиках и прочем скаме. Проверить можете сами через devtool. - -Вход я сделал только через Telegram (всё равно он у всех есть) или через E-mail, и тому есть причины: - -- E-mail - вечная классика. E-mail был, есть и будет всегда. Причём, что приятно, нулевой вендерлок и полная децентрализация. -- Telegram - просто удобен и есть почти у всех. Но минус, что это сторонний сервис, который когда-нибудь может закончиться. И вообще вендерлок и фу, но наименьшее из зол. -- Сторонние Oauth2 провайдеры - сразу нахрен. Лишние зонды от зарубежных, в основном, компаний и вендерлок. Короче, совсем фу. - -Поэтому, самый топовый для меня способ - E-mail. Ну и на краааайний случай - телега. - -Как-то так :) \ No newline at end of file diff --git a/content/posts/2023-07-24-tls.md b/content/posts/2023-07-24-tls.md index fdf8458..98c77ee 100644 --- a/content/posts/2023-07-24-tls.md +++ b/content/posts/2023-07-24-tls.md @@ -41,5 +41,3 @@ featuredImage: /img/posts/photo_2023-12-27_22-47-36.jpg В общем, всё. Полученные 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/posts/2023-12-29-Переезд и проблемы обновления.md b/content/posts/2023-12-29-Переезд и проблемы обновления.md index f69023b..61eea91 100644 --- a/content/posts/2023-12-29-Переезд и проблемы обновления.md +++ b/content/posts/2023-12-29-Переезд и проблемы обновления.md @@ -15,4 +15,3 @@ featuredImage: /img/posts/photo_2023-12-27_22-50-30.jpg Пока что как-то так ¯\_(ツ)_/¯ -Есть что накинуть? Внизу теперь есть комментарии: diff --git a/content/posts/2024-01-03-Архив.md b/content/posts/2024-01-03-Архив.md index b6297b0..a4b98c9 100644 --- a/content/posts/2024-01-03-Архив.md +++ b/content/posts/2024-01-03-Архив.md @@ -8,4 +8,3 @@ tags: ["блог"] [Архив блога](/archive) -Есть что накинуть? Внизу теперь есть комментарии: diff --git a/content/posts/2024-02-21-Конфигурация_HTTPS_с_сертификатом_от_Минцифры.md b/content/posts/2024-02-21-Конфигурация_HTTPS_с_сертификатом_от_Минцифры.md index f3c1617..f1b7a84 100644 --- a/content/posts/2024-02-21-Конфигурация_HTTPS_с_сертификатом_от_Минцифры.md +++ b/content/posts/2024-02-21-Конфигурация_HTTPS_с_сертификатом_от_Минцифры.md @@ -46,4 +46,3 @@ featuredImage: /img/posts/photo_2023-12-27_22-47-36.jpg В общем-то, всё. Как настанет время продлевать - я дополню заметку деталями именно продления. Если будут вопросы - пишите, попробуем решить. -Есть что накинуть? Внизу теперь есть комментарии: diff --git a/content/posts/2024-06-01-Вам_не_нужны_пуши.md b/content/posts/2024-06-01-Вам_не_нужны_пуши.md index f4920d7..3be3e67 100644 --- a/content/posts/2024-06-01-Вам_не_нужны_пуши.md +++ b/content/posts/2024-06-01-Вам_не_нужны_пуши.md @@ -82,7 +82,3 @@ featuredImage: https://pic.neonxp.ru/image/3da5c769-6b21-4cde-9e97-351bb95660a6. обозримое время гарантирован! 73! - ---- - -А что ты думаешь о таком способе снижения информационного шума, дорогой читатель? Внизу теперь есть комментарии: diff --git a/layouts/archive/single.html b/layouts/archive/single.html index 962b234..1ab34dc 100644 --- a/layouts/archive/single.html +++ b/layouts/archive/single.html @@ -37,12 +37,6 @@ {{ end }} {{ .Content }} - - - {{ partial "posts/math.html" . }} diff --git a/layouts/partials/body/extensions.html b/layouts/partials/body/extensions.html deleted file mode 100644 index 8e88828..0000000 --- a/layouts/partials/body/extensions.html +++ /dev/null @@ -1,13 +0,0 @@ - - \ No newline at end of file diff --git a/layouts/posts/single.html b/layouts/posts/single.html index 962b234..4b6fa43 100644 --- a/layouts/posts/single.html +++ b/layouts/posts/single.html @@ -40,8 +40,14 @@ diff --git a/layouts/projects/single.html b/layouts/projects/single.html index 962b234..1ab34dc 100644 --- a/layouts/projects/single.html +++ b/layouts/projects/single.html @@ -37,12 +37,6 @@ {{ end }} {{ .Content }} - - - {{ partial "posts/math.html" . }} diff --git a/public/404.html b/public/404.html deleted file mode 100644 index b801091..0000000 --- a/public/404.html +++ /dev/null @@ -1,7 +0,0 @@ -/home/NeonXP -

404

Страница не найдена

Извините, но этой страницы не существует.
Можете вернуться обратно на домашнюю страницу.

\ No newline at end of file diff --git a/public/archive/2007/11/05/2007-11-05-прямой-эфир---продолжение/index.gmi b/public/archive/2007/11/05/2007-11-05-прямой-эфир---продолжение/index.gmi deleted file mode 100644 index ad9cc35..0000000 --- a/public/archive/2007/11/05/2007-11-05-прямой-эфир---продолжение/index.gmi +++ /dev/null @@ -1,4 +0,0 @@ -# прямой эфир - -только что досмотрели с джо все что было с кирком... грустно что больше НИКОГДА не будет продолжения... мне так будет не хватать пафоса ТОСа и лично тов. кирка.... - diff --git a/public/archive/2007/11/05/2007-11-05-прямой-эфир-продолжение/index.html b/public/archive/2007/11/05/2007-11-05-прямой-эфир-продолжение/index.html deleted file mode 100644 index 7e031fd..0000000 --- a/public/archive/2007/11/05/2007-11-05-прямой-эфир-продолжение/index.html +++ /dev/null @@ -1,11 +0,0 @@ -прямой эфир - продолжение · /home/NeonXP -

прямой эфир - продолжение

только что досмотрели с джо все что было с кирком… грустно что больше НИКОГДА не будет продолжения… мне так будет не хватать пафоса ТОСа и лично тов. кирка….

Комментарии

\ No newline at end of file diff --git a/public/archive/2007/11/06/2007-11-06-прямой-эфир---база-гамма/index.gmi b/public/archive/2007/11/06/2007-11-06-прямой-эфир---база-гамма/index.gmi deleted file mode 100644 index 30c0a11..0000000 --- a/public/archive/2007/11/06/2007-11-06-прямой-эфир---база-гамма/index.gmi +++ /dev/null @@ -1,4 +0,0 @@ -# прямой эфир - -сегодня лег в 5 утра, встал в 2... хожу как ни от мира сего... Когда вышел под вечер за сигаретами на меня нахлынул поток разных грустных воспоминаний о 2003-2004 годах... еще сегодня написала одна девушка которая достаточно давно перестала со мной разговаривать... странно... до сдачи работы не считая сегодняшнего дня остался один день... а сегодня я нифига не работал. завтра коллоквиум по физике.. почитал лекции три больше не мог... завтра самый ужасный день, среда... ненавижу среды... и почему они бывают чаще чем например четверги... - diff --git a/public/archive/2007/11/06/2007-11-06-прямой-эфир-база-гамма/index.html b/public/archive/2007/11/06/2007-11-06-прямой-эфир-база-гамма/index.html deleted file mode 100644 index 46abce6..0000000 --- a/public/archive/2007/11/06/2007-11-06-прямой-эфир-база-гамма/index.html +++ /dev/null @@ -1,11 +0,0 @@ -прямой эфир - база гамма · /home/NeonXP -

прямой эфир - база гамма

сегодня лег в 5 утра, встал в 2… хожу как ни от мира сего… Когда вышел под вечер за сигаретами на меня нахлынул поток разных грустных воспоминаний о 2003-2004 годах… еще сегодня написала одна девушка которая достаточно давно перестала со мной разговаривать… странно… до сдачи работы не считая сегодняшнего дня остался один день… а сегодня я нифига не работал. завтра коллоквиум по физике.. почитал лекции три больше не мог… завтра самый ужасный день, среда… ненавижу среды… и почему они бывают чаще чем например четверги…

Комментарии

\ No newline at end of file diff --git a/public/archive/2007/11/08/2007-11-08-прямой-эфир---призрак-оперы/index.gmi b/public/archive/2007/11/08/2007-11-08-прямой-эфир---призрак-оперы/index.gmi deleted file mode 100644 index d7e85ee..0000000 --- a/public/archive/2007/11/08/2007-11-08-прямой-эфир---призрак-оперы/index.gmi +++ /dev/null @@ -1,4 +0,0 @@ -# прямой эфир - -сегодня с друзьями (не буду показывать пальцем на скудный френд лист) ходили на семинар Opera Software, была прекрасная дружеская атмосфера, обсирание мелкомягких, раздача футболок, дисков и автографов, диалоги "по делу" с разработчиками, умные рассказы, интересные презентации новых продуктов, таких как операмини 4.0 и опера 9.5 бета, которая во время синхронизации умудрилась очень неплохо обвалиться, хотя это не испортило впечатления от новых технологий. кстати, о технологиях, в бете меня больше всего поразила до глубины души поддержка технологии svg(замена флешу на xml) и маленький демо ролик на ней в котором было вставленно 3(!!!) видео ролика и выступающи разработчик вращал их мышкой. собственно семинар удался на славу, даже есть желание к ним идти работать. - diff --git a/public/archive/2007/11/08/2007-11-08-прямой-эфир-призрак-оперы/index.html b/public/archive/2007/11/08/2007-11-08-прямой-эфир-призрак-оперы/index.html deleted file mode 100644 index 63ad9a6..0000000 --- a/public/archive/2007/11/08/2007-11-08-прямой-эфир-призрак-оперы/index.html +++ /dev/null @@ -1,11 +0,0 @@ -прямой эфир - призрак оперы · /home/NeonXP -

прямой эфир - призрак оперы

сегодня с друзьями (не буду показывать пальцем на скудный френд лист) ходили на семинар Opera Software, была прекрасная дружеская атмосфера, обсирание мелкомягких, раздача футболок, дисков и автографов, диалоги “по делу” с разработчиками, умные рассказы, интересные презентации новых продуктов, таких как операмини 4.0 и опера 9.5 бета, которая во время синхронизации умудрилась очень неплохо обвалиться, хотя это не испортило впечатления от новых технологий. кстати, о технологиях, в бете меня больше всего поразила до глубины души поддержка технологии svg(замена флешу на xml) и маленький демо ролик на ней в котором было вставленно 3(!!!) видео ролика и выступающи разработчик вращал их мышкой. собственно семинар удался на славу, даже есть желание к ним идти работать.

Комментарии

\ No newline at end of file diff --git a/public/archive/2007/12/11/2007-12-11-прямой-эфир---подъезд-дубль-2/index.gmi b/public/archive/2007/12/11/2007-12-11-прямой-эфир---подъезд-дубль-2/index.gmi deleted file mode 100644 index e5e4499..0000000 --- a/public/archive/2007/12/11/2007-12-11-прямой-эфир---подъезд-дубль-2/index.gmi +++ /dev/null @@ -1,3 +0,0 @@ -# прямой эфир - -стоим в подъезде, джо ненароко сказал слово "проблема". я бы не придал этому бы этому значения если бы игорь не сказал "проблема..... проблема..... *ЛЯ!!!" и тут вспомнили про проблемы на учебном фронте..... настроение упало до 0..... сейчас медленно пошло в минус..... и как так жить??! diff --git a/public/archive/2007/12/11/2007-12-11-прямой-эфир-подъезд-дубль-2/index.html b/public/archive/2007/12/11/2007-12-11-прямой-эфир-подъезд-дубль-2/index.html deleted file mode 100644 index 98c3031..0000000 --- a/public/archive/2007/12/11/2007-12-11-прямой-эфир-подъезд-дубль-2/index.html +++ /dev/null @@ -1,11 +0,0 @@ -прямой эфир - подъезд дубль 2 · /home/NeonXP -

прямой эфир - подъезд дубль 2

стоим в подъезде, джо ненароко сказал слово “проблема”. я бы не придал этому бы этому значения если бы игорь не сказал “проблема….. проблема….. *ЛЯ!!!” и тут вспомнили про проблемы на учебном фронте….. настроение упало до 0….. сейчас медленно пошло в минус….. и как так жить??!

Комментарии

\ No newline at end of file diff --git a/public/archive/2007/12/26/2007-12-26-ну-вот-и-сессия-пришла.../index.gmi b/public/archive/2007/12/26/2007-12-26-ну-вот-и-сессия-пришла.../index.gmi deleted file mode 100644 index 9c21195..0000000 --- a/public/archive/2007/12/26/2007-12-26-ну-вот-и-сессия-пришла.../index.gmi +++ /dev/null @@ -1,4 +0,0 @@ -# Ну вот и сессия пришла - -Хоть и начнется зачетная сессия 28го(!!!! это еще одна особенность моего ВУЗа) числа, но зачеты уже идут во всю. "И на нашей улице будет праздник". У мну сдано уже 4 зачода есть. Неужели все будет хорошо?... - diff --git a/public/archive/2007/12/26/2007-12-26-ну-вот-и-сессия-пришла.../index.html b/public/archive/2007/12/26/2007-12-26-ну-вот-и-сессия-пришла.../index.html deleted file mode 100644 index 30a47f0..0000000 --- a/public/archive/2007/12/26/2007-12-26-ну-вот-и-сессия-пришла.../index.html +++ /dev/null @@ -1,11 +0,0 @@ -Ну вот и сессия пришла... · /home/NeonXP -

Ну вот и сессия пришла...

Хоть и начнется зачетная сессия 28го(!!!! это еще одна особенность моего ВУЗа) числа, но зачеты уже идут во всю. “И на нашей улице будет праздник”. У мну сдано уже 4 зачода есть. Неужели все будет хорошо?…

Комментарии

\ No newline at end of file diff --git a/public/archive/2008/05/10/2008-05-10-странное-д.р./index.gmi b/public/archive/2008/05/10/2008-05-10-странное-д.р./index.gmi deleted file mode 100644 index a68fba7..0000000 --- a/public/archive/2008/05/10/2008-05-10-странное-д.р./index.gmi +++ /dev/null @@ -1,3 +0,0 @@ -# Странное д - -Сегодня было самое странное из моих д.р.! Хоть я и узнал что дофига народа не придет, зато сегодня было запоздалое(или слишком ранее?) отмечание моей д.р.! Владимир(шеф мой) позвал меня после салюта в клуб "Джокер", где выступали его знакомые (гр. "Листья травы", "Макс и Ко.", "Большой куш" и там к моему удивлению по его просьбе группа "Большой Куш" исполнила для меня песню группы Red Hot Chilli Peppers - Can't stop! Я был поражен, удивлен, рад! Вот только приехал оттуда, еще не совсем трезв, но полон впечатлений! Вау! Это просто почти невероятно!!!! Уже можно сказать, что денюха удалась!! Посмотрим, что будет завтра! diff --git a/public/archive/2008/05/10/2008-05-10-странное-д.р./index.html b/public/archive/2008/05/10/2008-05-10-странное-д.р./index.html deleted file mode 100644 index fb0cfd9..0000000 --- a/public/archive/2008/05/10/2008-05-10-странное-д.р./index.html +++ /dev/null @@ -1,11 +0,0 @@ -Странное д.р. · /home/NeonXP -

Странное д.р.

Сегодня было самое странное из моих д.р.! Хоть я и узнал что дофига народа не придет, зато сегодня было запоздалое(или слишком ранее?) отмечание моей д.р.! Владимир(шеф мой) позвал меня после салюта в клуб “Джокер”, где выступали его знакомые (гр. “Листья травы”, “Макс и Ко.”, “Большой куш” и там к моему удивлению по его просьбе группа “Большой Куш” исполнила для меня песню группы Red Hot Chilli Peppers - Can’t stop! Я был поражен, удивлен, рад! Вот только приехал оттуда, еще не совсем трезв, но полон впечатлений! Вау! Это просто почти невероятно!!!! Уже можно сказать, что денюха удалась!! Посмотрим, что будет завтра!

Комментарии

\ No newline at end of file diff --git a/public/archive/2011/09/11/2011-09-11-дождь-идёт-весь-день/index.gmi b/public/archive/2011/09/11/2011-09-11-дождь-идёт-весь-день/index.gmi deleted file mode 100644 index f9f4cc4..0000000 --- a/public/archive/2011/09/11/2011-09-11-дождь-идёт-весь-день/index.gmi +++ /dev/null @@ -1,11 +0,0 @@ -# Дождь ид - -Люблю такую погоду, она настраивает на рабочий лад. Или на долгие прогулки под ним. Вечером нужно будет обязательно выбраться гулять. - -[1] - -=> /img/posts/1315741048720.png 1: - -[1] -=> /img/posts/1315741048721.png 1: - diff --git a/public/archive/2011/09/11/2011-09-11-дождь-идёт-весь-день/index.html b/public/archive/2011/09/11/2011-09-11-дождь-идёт-весь-день/index.html deleted file mode 100644 index 2f5230d..0000000 --- a/public/archive/2011/09/11/2011-09-11-дождь-идёт-весь-день/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Дождь идёт весь день · /home/NeonXP -

Дождь идёт весь день

Люблю такую погоду, она настраивает на рабочий лад. Или на долгие прогулки под ним. Вечером нужно будет обязательно выбраться гулять.

Комментарии

\ No newline at end of file diff --git a/public/archive/2011/09/11/2011-09-11-новая-жизнь/index.gmi b/public/archive/2011/09/11/2011-09-11-новая-жизнь/index.gmi deleted file mode 100644 index 8c3e8b1..0000000 --- a/public/archive/2011/09/11/2011-09-11-новая-жизнь/index.gmi +++ /dev/null @@ -1,4 +0,0 @@ -# Новая жизнь - -Пора начинать новую жизнь. Вот и блог обновил. Всё старьё выкинул и сделал внешнюю уборку. Только ради всего, буду стараться не забивать на блог. Ибо уже не в первый раз. - diff --git a/public/archive/2011/09/11/2011-09-11-новая-жизнь/index.html b/public/archive/2011/09/11/2011-09-11-новая-жизнь/index.html deleted file mode 100644 index c6da2cd..0000000 --- a/public/archive/2011/09/11/2011-09-11-новая-жизнь/index.html +++ /dev/null @@ -1,11 +0,0 @@ -Новая жизнь · /home/NeonXP -

Новая жизнь

Пора начинать новую жизнь. Вот и блог обновил. Всё старьё выкинул и сделал внешнюю уборку. Только ради всего, буду стараться не забивать на блог. Ибо уже не в первый раз.

Комментарии

\ No newline at end of file diff --git a/public/archive/2011/09/11/2011-09-11-традиционная-картинка/index.gmi b/public/archive/2011/09/11/2011-09-11-традиционная-картинка/index.gmi deleted file mode 100644 index 94da5fc..0000000 --- a/public/archive/2011/09/11/2011-09-11-традиционная-картинка/index.gmi +++ /dev/null @@ -1,5 +0,0 @@ -# Традиционная картинка - -[1] -=> /img/posts/76290b19.gif 1: - diff --git a/public/archive/2011/09/11/2011-09-11-традиционная-картинка/index.html b/public/archive/2011/09/11/2011-09-11-традиционная-картинка/index.html deleted file mode 100644 index a8b4769..0000000 --- a/public/archive/2011/09/11/2011-09-11-традиционная-картинка/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Традиционная картинка · /home/NeonXP -
\ No newline at end of file diff --git a/public/archive/2011/09/12/2011-09-12-очередное-начало-очередной-безумной-недели/index.gmi b/public/archive/2011/09/12/2011-09-12-очередное-начало-очередной-безумной-недели/index.gmi deleted file mode 100644 index eb05ce6..0000000 --- a/public/archive/2011/09/12/2011-09-12-очередное-начало-очередной-безумной-недели/index.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Очередное начало очередной безумной недели - -Как же всё это уныло... Буэ... Зато сегодня ждем на собеседование нового человека. По резюме, вроде, адекватный человек. Не как ТОТ. Тьфу тьфу тьфу, чтоб не сглазить! - -*UPD:* Фейл, сглазил. - -*UPD2:* дабл фейл. Оба слились. - diff --git a/public/archive/2011/09/12/2011-09-12-очередное-начало-очередной-безумной-недели/index.html b/public/archive/2011/09/12/2011-09-12-очередное-начало-очередной-безумной-недели/index.html deleted file mode 100644 index 950db61..0000000 --- a/public/archive/2011/09/12/2011-09-12-очередное-начало-очередной-безумной-недели/index.html +++ /dev/null @@ -1,17 +0,0 @@ -Очередное начало очередной безумной недели · /home/NeonXP -

Очередное начало очередной безумной недели

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

UPD: Фейл, сглазил.

UPD2: дабл фейл. Оба слились.

Комментарии

\ No newline at end of file diff --git a/public/archive/2011/09/24/2011-09-24-отчет-за-неделю/index.gmi b/public/archive/2011/09/24/2011-09-24-отчет-за-неделю/index.gmi deleted file mode 100644 index 052539e..0000000 --- a/public/archive/2011/09/24/2011-09-24-отчет-за-неделю/index.gmi +++ /dev/null @@ -1,30 +0,0 @@ -# Отчет за неделю - -Достаточно давно не писал, да и не о чём было особо писать. Работал, учился, болел. Сейчас на улице опять моя любимая погода: пасмурно и дождь, а я сижу на работе. Решил вот выйти в субботу, чтобы побольше всего сделать. Никого нет, тихо, спокойно, лепота! - -Вчера был на очередной игре DozoR'а. Игра была очень даже ничего. Хорошая, добротная, динамичная. Местами было действительно мало логики, чего только стоили строчки «стиха»: - -``` -«Большой пирог без пирога -Выкину на улицу в траву» -``` - -Логика здесь такая: - -1. Большой пирог без пирога - остаётся слово «большой» 2. В строке есть слово «улица» 3. В итоге имеем «большую улицу» 4. Переводим на татарский язык (зачем? почему? этого я так и не понял), получаем «зур урам» - -И большинство заданий были примерно такими же. - -Ну и картинки оставшиеся в телефоне после игры под катом, если интересно: - -[1] - -=> /img/posts/2011-09-24_00.31.09.jpg 1: - -[1] - -=> /img/posts/2011-09-23_22.20.19.jpg 1: - -[1] -=> /img/posts/2011-09-23_22.20.33.jpg 1: - diff --git a/public/archive/2011/09/24/2011-09-24-отчет-за-неделю/index.html b/public/archive/2011/09/24/2011-09-24-отчет-за-неделю/index.html deleted file mode 100644 index 9a74d41..0000000 --- a/public/archive/2011/09/24/2011-09-24-отчет-за-неделю/index.html +++ /dev/null @@ -1,24 +0,0 @@ -Отчет за неделю · /home/NeonXP -

Отчет за неделю

Достаточно давно не писал, да и не о чём было особо писать. Работал, учился, болел. -Сейчас на улице опять моя любимая погода: пасмурно и дождь, а я сижу на работе. Решил вот выйти в субботу, чтобы побольше всего сделать. Никого нет, тихо, спокойно, лепота!

Вчера был на очередной игре DozoR’а. Игра была очень даже ничего. Хорошая, добротная, динамичная. Местами было действительно мало логики, чего только стоили строчки «стиха»:

«Большой пирог без пирога
-Выкину на улицу в траву»
-

Логика здесь такая:

  1. Большой пирог без пирога - остаётся слово «большой»
  2. В строке есть слово «улица»
  3. В итоге имеем «большую улицу»
  4. Переводим на татарский язык (зачем? почему? этого я так и не понял), получаем «зур урам»

И большинство заданий были примерно такими же.

Ну и картинки оставшиеся в телефоне после игры под катом, если интересно:

Комментарии

\ No newline at end of file diff --git a/public/archive/2011/11/20/2011-11-20-чем-развлечься-в-субботу/index.gmi b/public/archive/2011/11/20/2011-11-20-чем-развлечься-в-субботу/index.gmi deleted file mode 100644 index d1a9575..0000000 --- a/public/archive/2011/11/20/2011-11-20-чем-развлечься-в-субботу/index.gmi +++ /dev/null @@ -1,11 +0,0 @@ -# Чем развлечься в субботу - -Сегодня днём, совершенно неожиданно для себя, был приглашен на игру в пейнтбол. Играл я в первый раз, хотя уже давно имел желание открыть для себя это вид развлечения. - -[1] - -=> /img/posts/paintball.jpg 1: - -Впечатления от игры сложно описать словами, ведь слова не способны передать то обилие положительных эмоций, что я получил. Конечно же, не обошлось и без мелких травм. В частности, на приложенном фото видны последствия для моей многострадальной спины попадания шариков с краской с близкой дистанции. Так же достаточно болезненным оказалось попадание в голову и локоть. Ощущение, как после удара камнем. Но, как ни странно, эти «боевые ранения» никак отрицательно не сказались на общем фане от игры. - -Так же, хотелось поблагодарить людей игравших со мной за отлично проведенное время. Надо будет как-нибудь повторить ;) diff --git a/public/archive/2011/11/20/2011-11-20-чем-развлечься-в-субботу/index.html b/public/archive/2011/11/20/2011-11-20-чем-развлечься-в-субботу/index.html deleted file mode 100644 index b0fdc05..0000000 --- a/public/archive/2011/11/20/2011-11-20-чем-развлечься-в-субботу/index.html +++ /dev/null @@ -1,16 +0,0 @@ -Чем развлечься в субботу · /home/NeonXP -

Чем развлечься в субботу

Сегодня днём, совершенно неожиданно для себя, был приглашен на игру в пейнтбол. Играл я в первый раз, хотя уже давно имел желание открыть для себя это вид развлечения.

Впечатления от игры сложно описать словами, ведь слова не способны передать то обилие положительных эмоций, что я получил. Конечно же, не обошлось и без мелких травм. В частности, на приложенном фото видны последствия для моей многострадальной спины попадания шариков с краской с близкой дистанции. Так же достаточно болезненным оказалось попадание в голову и локоть. Ощущение, как после удара камнем. Но, как ни странно, эти «боевые ранения» никак отрицательно не сказались на общем фане от игры.

Так же, хотелось поблагодарить людей игравших со мной за отлично проведенное время. Надо будет как-нибудь повторить ;)

Комментарии

\ No newline at end of file diff --git a/public/archive/2011/11/21/2011-11-21-решение-проблемы-с-2гис/index.gmi b/public/archive/2011/11/21/2011-11-21-решение-проблемы-с-2гис/index.gmi deleted file mode 100644 index 37a4b57..0000000 --- a/public/archive/2011/11/21/2011-11-21-решение-проблемы-с-2гис/index.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Решение проблемы с 2Гис - -Из-за особенностей своего хобби мне часто приходится задействовать 2Гис. Но после ноябрьских обновлений данная программа перестала у меня адекватно работать, а именно начала зависать буквально от всего - от движения мыши, нажатия кнопок интерфейса и т.п. Что только я уже не пытался с этим с делать! В один момент уже был готов похоронить его и пытаться найти ему альтернативу. - -Но после упорного гугления проблема таки была решена! Не известно, в чем была проблема, но совместимость у дубля поломалась только с 1.3 веткой wine. Достаточно было откатиться на wine1.2, как всё тут же заработало! - -Казалось бы, такое мелкое решение не достойно такого повествования, но тем не менее, решение проблемы не было очевидным и потенциально, это может пригодится тому, кто как и я столкнется с этой проблемой. - diff --git a/public/archive/2011/11/21/2011-11-21-решение-проблемы-с-2гис/index.html b/public/archive/2011/11/21/2011-11-21-решение-проблемы-с-2гис/index.html deleted file mode 100644 index a49e717..0000000 --- a/public/archive/2011/11/21/2011-11-21-решение-проблемы-с-2гис/index.html +++ /dev/null @@ -1,20 +0,0 @@ -Решение проблемы с 2Гис · /home/NeonXP -

Решение проблемы с 2Гис

Из-за особенностей своего хобби мне часто приходится задействовать 2Гис. Но после ноябрьских обновлений данная программа перестала у меня адекватно работать, а именно начала зависать буквально от всего - от движения мыши, нажатия кнопок интерфейса и т.п. Что только я уже не пытался с этим с делать! В один момент уже был готов похоронить его и пытаться найти ему альтернативу.

Но после упорного гугления проблема таки была решена! Не известно, в чем была проблема, но совместимость у дубля поломалась только с 1.3 веткой wine. Достаточно было откатиться на wine1.2, как всё тут же заработало!

Казалось бы, такое мелкое решение не достойно такого повествования, но тем не менее, решение проблемы не было очевидным и потенциально, это может пригодится тому, кто как и я столкнется с этой проблемой.

Комментарии

\ No newline at end of file diff --git a/public/archive/2024/06/08/_index/index.gmi b/public/archive/2024/06/08/_index/index.gmi deleted file mode 100644 index be9d8b8..0000000 --- a/public/archive/2024/06/08/_index/index.gmi +++ /dev/null @@ -1,2 +0,0 @@ -# Архив - diff --git a/public/archive/index.gmi b/public/archive/index.gmi deleted file mode 100644 index f1824ae..0000000 --- a/public/archive/index.gmi +++ /dev/null @@ -1,42 +0,0 @@ - -=> /archive/2024/06/08/_index 2024-06-08: Архив - - -=> /archive/2011/11/21/2011-11-21-решение-проблемы-с-2гис 2011-11-21: Решение проблемы с 2Гис - - -=> /archive/2011/11/20/2011-11-20-чем-развлечься-в-субботу 2011-11-20: Чем развлечься в субботу - - -=> /archive/2011/09/24/2011-09-24-отчет-за-неделю 2011-09-24: Отчет за неделю - - -=> /archive/2011/09/12/2011-09-12-очередное-начало-очередной-безумной-недели 2011-09-12: Очередное начало очередной безумной недели - - -=> /archive/2011/09/11/2011-09-11-традиционная-картинка 2011-09-11: Традиционная картинка - - -=> /archive/2011/09/11/2011-09-11-дождь-идёт-весь-день 2011-09-11: Дождь идёт весь день - - -=> /archive/2011/09/11/2011-09-11-новая-жизнь 2011-09-11: Новая жизнь - - -=> /archive/2008/05/10/2008-05-10-странное-д.р. 2008-05-10: Странное д.р. - - -=> /archive/2007/12/26/2007-12-26-ну-вот-и-сессия-пришла... 2007-12-26: Ну вот и сессия пришла... - - -=> /archive/2007/12/11/2007-12-11-прямой-эфир---подъезд-дубль-2 2007-12-11: прямой эфир - подъезд дубль 2 - - -=> /archive/2007/11/08/2007-11-08-прямой-эфир---призрак-оперы 2007-11-08: прямой эфир - призрак оперы - - -=> /archive/2007/11/06/2007-11-06-прямой-эфир---база-гамма 2007-11-06: прямой эфир - база гамма - - -=> /archive/2007/11/05/2007-11-05-прямой-эфир---продолжение 2007-11-05: прямой эфир - продолжение - diff --git a/public/archive/index.html b/public/archive/index.html deleted file mode 100644 index 905e652..0000000 --- a/public/archive/index.html +++ /dev/null @@ -1,17 +0,0 @@ -Архив · /home/NeonXP -

Архив

\ No newline at end of file diff --git a/public/archive/page/1/index.html b/public/archive/page/1/index.html deleted file mode 100644 index 5286db2..0000000 --- a/public/archive/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/archive/ - \ No newline at end of file diff --git a/public/archive/page/2/index.html b/public/archive/page/2/index.html deleted file mode 100644 index 39933c5..0000000 --- a/public/archive/page/2/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Архив · /home/NeonXP -

Архив

\ No newline at end of file diff --git a/public/categories/index.html b/public/categories/index.html deleted file mode 100644 index cb9b2a9..0000000 --- a/public/categories/index.html +++ /dev/null @@ -1,7 +0,0 @@ -Категории · /home/NeonXP -

Категории

    \ No newline at end of file diff --git a/public/css/coder-dark.min.a00e6364bacbc8266ad1cc81230774a1397198f8cfb7bcba29b7d6fcb54ce57f.css b/public/css/coder-dark.min.a00e6364bacbc8266ad1cc81230774a1397198f8cfb7bcba29b7d6fcb54ce57f.css deleted file mode 100644 index 8ccfd94..0000000 --- a/public/css/coder-dark.min.a00e6364bacbc8266ad1cc81230774a1397198f8cfb7bcba29b7d6fcb54ce57f.css +++ /dev/null @@ -1 +0,0 @@ -body.colorscheme-dark{color:#dadada;background-color:#212121}body.colorscheme-dark a{color:#42a5f5}body.colorscheme-dark h1,body.colorscheme-dark h2,body.colorscheme-dark h3,body.colorscheme-dark h4,body.colorscheme-dark h5,body.colorscheme-dark h6{color:#dadada}body.colorscheme-dark h1:hover .heading-link,body.colorscheme-dark h2:hover .heading-link,body.colorscheme-dark h3:hover .heading-link,body.colorscheme-dark h4:hover .heading-link,body.colorscheme-dark h5:hover .heading-link,body.colorscheme-dark h6:hover .heading-link{visibility:visible}body.colorscheme-dark h1 .heading-link,body.colorscheme-dark h2 .heading-link,body.colorscheme-dark h3 .heading-link,body.colorscheme-dark h4 .heading-link,body.colorscheme-dark h5 .heading-link,body.colorscheme-dark h6 .heading-link{color:#42a5f5;font-weight:inherit;text-decoration:none;font-size:80%;visibility:hidden}body.colorscheme-dark h1 .title-link,body.colorscheme-dark h2 .title-link,body.colorscheme-dark h3 .title-link,body.colorscheme-dark h4 .title-link,body.colorscheme-dark h5 .title-link,body.colorscheme-dark h6 .title-link{color:inherit;font-weight:inherit;text-decoration:none}body.colorscheme-dark pre code{background-color:inherit;color:inherit}body.colorscheme-dark code{background-color:#4f4f4f;color:#dadada}body.colorscheme-dark blockquote{border-left:2px solid #424242}body.colorscheme-dark th,body.colorscheme-dark td{padding:1.6rem}body.colorscheme-dark table{border-collapse:collapse}body.colorscheme-dark table td,body.colorscheme-dark table th{border:2px solid #dadada}body.colorscheme-dark table tr:first-child th{border-top:0}body.colorscheme-dark table tr:last-child td{border-bottom:0}body.colorscheme-dark table tr td:first-child,body.colorscheme-dark table tr th:first-child{border-left:0}body.colorscheme-dark table tr td:last-child,body.colorscheme-dark table tr th:last-child{border-right:0}@media(prefers-color-scheme:dark){body.colorscheme-auto{color:#dadada;background-color:#212121}body.colorscheme-auto a{color:#42a5f5}body.colorscheme-auto h1,body.colorscheme-auto h2,body.colorscheme-auto h3,body.colorscheme-auto h4,body.colorscheme-auto h5,body.colorscheme-auto h6{color:#dadada}body.colorscheme-auto h1:hover .heading-link,body.colorscheme-auto h2:hover .heading-link,body.colorscheme-auto h3:hover .heading-link,body.colorscheme-auto h4:hover .heading-link,body.colorscheme-auto h5:hover .heading-link,body.colorscheme-auto h6:hover .heading-link{visibility:visible}body.colorscheme-auto h1 .heading-link,body.colorscheme-auto h2 .heading-link,body.colorscheme-auto h3 .heading-link,body.colorscheme-auto h4 .heading-link,body.colorscheme-auto h5 .heading-link,body.colorscheme-auto h6 .heading-link{color:#42a5f5;font-weight:inherit;text-decoration:none;font-size:80%;visibility:hidden}body.colorscheme-auto h1 .title-link,body.colorscheme-auto h2 .title-link,body.colorscheme-auto h3 .title-link,body.colorscheme-auto h4 .title-link,body.colorscheme-auto h5 .title-link,body.colorscheme-auto h6 .title-link{color:inherit;font-weight:inherit;text-decoration:none}body.colorscheme-auto pre code{background-color:inherit;color:inherit}body.colorscheme-auto code{background-color:#4f4f4f;color:#dadada}body.colorscheme-auto blockquote{border-left:2px solid #424242}body.colorscheme-auto th,body.colorscheme-auto td{padding:1.6rem}body.colorscheme-auto table{border-collapse:collapse}body.colorscheme-auto table td,body.colorscheme-auto table th{border:2px solid #dadada}body.colorscheme-auto table tr:first-child th{border-top:0}body.colorscheme-auto table tr:last-child td{border-bottom:0}body.colorscheme-auto table tr td:first-child,body.colorscheme-auto table tr th:first-child{border-left:0}body.colorscheme-auto table tr td:last-child,body.colorscheme-auto table tr th:last-child{border-right:0}}body.colorscheme-dark .content .post .tags .tag{background-color:#424242}body.colorscheme-dark .content .post .tags .tag a{color:#dadada}body.colorscheme-dark .content .post .tags .tag a:active{color:#dadada}body.colorscheme-dark .content .list ul li .title{color:#dadada}body.colorscheme-dark .content .list ul li .title:hover,body.colorscheme-dark .content .list ul li .title:focus{color:#42a5f5}body.colorscheme-dark .content .centered .about ul li a{color:#dadada}body.colorscheme-dark .content .centered .about ul li a:hover,body.colorscheme-dark .content .centered .about ul li a:focus{color:#42a5f5}@media(prefers-color-scheme:dark){body.colorscheme-auto .content .post .tags .tag{background-color:#424242}body.colorscheme-auto .content .post .tags .tag a{color:#dadada}body.colorscheme-auto .content .post .tags .tag a:active{color:#dadada}body.colorscheme-auto .content .list ul li .title{color:#dadada}body.colorscheme-auto .content .list ul li .title:hover,body.colorscheme-auto .content .list ul li .title:focus{color:#42a5f5}body.colorscheme-auto .content .centered .about ul li a{color:#dadada}body.colorscheme-auto .content .centered .about ul li a:hover,body.colorscheme-auto .content .centered .about ul li a:focus{color:#42a5f5}}body.colorscheme-dark .notice .notice-title{border-bottom:1px solid #212121}@media(prefers-color-scheme:dark){body.colorscheme-auto .notice .notice-title{border-bottom:1px solid #212121}}body.colorscheme-dark .navigation a,body.colorscheme-dark .navigation span{color:#dadada}body.colorscheme-dark .navigation a:hover,body.colorscheme-dark .navigation a:focus{color:#42a5f5}@media only screen and (max-width:768px){body.colorscheme-dark .navigation .navigation-list{background-color:#212121;border-top:solid 2px #424242;border-bottom:solid 2px #424242}}@media only screen and (max-width:768px){body.colorscheme-dark .navigation .navigation-list .menu-separator{border-top:2px solid #dadada}}@media only screen and (max-width:768px){body.colorscheme-dark .navigation #menu-toggle:checked+label>i{color:#424242}}body.colorscheme-dark .navigation i{color:#dadada}body.colorscheme-dark .navigation i:hover,body.colorscheme-dark .navigation i:focus{color:#42a5f5}body.colorscheme-dark .navigation .menu-button i:hover,body.colorscheme-dark .navigation .menu-button i:focus{color:#dadada}@media(prefers-color-scheme:dark){body.colorscheme-auto .navigation a,body.colorscheme-auto .navigation span{color:#dadada}body.colorscheme-auto .navigation a:hover,body.colorscheme-auto .navigation a:focus{color:#42a5f5}}@media only screen and (prefers-color-scheme:dark) and (max-width:768px){body.colorscheme-auto .navigation .navigation-list{background-color:#212121;border-top:solid 2px #424242;border-bottom:solid 2px #424242}}@media only screen and (prefers-color-scheme:dark) and (max-width:768px){body.colorscheme-auto .navigation .navigation-list .menu-separator{border-top:2px solid #dadada}}@media only screen and (prefers-color-scheme:dark) and (max-width:768px){body.colorscheme-auto .navigation #menu-toggle:checked+label>i{color:#424242}}@media(prefers-color-scheme:dark){body.colorscheme-auto .navigation i{color:#dadada}body.colorscheme-auto .navigation i:hover,body.colorscheme-auto .navigation i:focus{color:#42a5f5}body.colorscheme-auto .navigation .menu-button i:hover,body.colorscheme-auto .navigation .menu-button i:focus{color:#dadada}}body.colorscheme-dark .tabs label.tab-label{background-color:#424242;border-color:#4f4f4f}body.colorscheme-dark .tabs input.tab-input:checked+label.tab-label{background-color:#212121}body.colorscheme-dark .tabs .tab-content{background-color:#212121;border-color:#4f4f4f}@media(prefers-color-scheme:dark){body.colorscheme-auto .tabs label.tab-label{background-color:#424242;border-color:#4f4f4f}body.colorscheme-auto .tabs input.tab-input:checked+label.tab-label{background-color:#212121}body.colorscheme-auto .tabs .tab-content{background-color:#212121;border-color:#4f4f4f}}body.colorscheme-dark .taxonomy-element{background-color:#424242}body.colorscheme-dark .taxonomy-element a{color:#dadada}body.colorscheme-dark .taxonomy-element a:active{color:#dadada}@media(prefers-color-scheme:dark){body.colorscheme-auto .taxonomy-element{background-color:#424242}body.colorscheme-auto .taxonomy-element a{color:#dadada}body.colorscheme-auto .taxonomy-element a:active{color:#dadada}}body.colorscheme-dark .footer a{color:#42a5f5}@media(prefers-color-scheme:dark){body.colorscheme-auto .footer a{color:#42a5f5}}body.colorscheme-dark .float-container a{color:#dadada;background-color:#424242}body.colorscheme-dark .float-container a:hover,body.colorscheme-dark .float-container a:focus{color:#42a5f5}@media only screen and (max-width:768px){body.colorscheme-dark .float-container a:hover,body.colorscheme-dark .float-container a:focus{color:#dadada}}@media(prefers-color-scheme:dark){body.colorscheme-auto .float-container a{color:#dadada;background-color:#424242}body.colorscheme-auto .float-container a:hover,body.colorscheme-auto .float-container a:focus{color:#42a5f5}}@media only screen and (prefers-color-scheme:dark) and (max-width:768px){body.colorscheme-auto .float-container a:hover,body.colorscheme-auto .float-container a:focus{color:#dadada}}body.colorscheme-dark{}body.colorscheme-dark .bg{color:#c9d1d9;background-color:#0d1117}body.colorscheme-dark .chroma{color:#c9d1d9;background-color:#0d1117}body.colorscheme-dark .chroma .err{color:#f85149}body.colorscheme-dark .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}body.colorscheme-dark .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}body.colorscheme-dark .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}body.colorscheme-dark .chroma .hl{background-color:#ffc}body.colorscheme-dark .chroma .lnt{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#64686c}body.colorscheme-dark .chroma .ln{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}body.colorscheme-dark .chroma .line{display:flex}body.colorscheme-dark .chroma .k{color:#ff7b72}body.colorscheme-dark .chroma .kc{color:#79c0ff}body.colorscheme-dark .chroma .kd{color:#ff7b72}body.colorscheme-dark .chroma .kn{color:#ff7b72}body.colorscheme-dark .chroma .kp{color:#79c0ff}body.colorscheme-dark .chroma .kr{color:#ff7b72}body.colorscheme-dark .chroma .kt{color:#ff7b72}body.colorscheme-dark .chroma .nc{color:#f0883e;font-weight:700}body.colorscheme-dark .chroma .no{color:#79c0ff;font-weight:700}body.colorscheme-dark .chroma .nd{color:#d2a8ff;font-weight:700}body.colorscheme-dark .chroma .ni{color:#ffa657}body.colorscheme-dark .chroma .ne{color:#f0883e;font-weight:700}body.colorscheme-dark .chroma .nf{color:#d2a8ff;font-weight:700}body.colorscheme-dark .chroma .nl{color:#79c0ff;font-weight:700}body.colorscheme-dark .chroma .nn{color:#ff7b72}body.colorscheme-dark .chroma .py{color:#79c0ff}body.colorscheme-dark .chroma .nt{color:#7ee787}body.colorscheme-dark .chroma .nv{color:#79c0ff}body.colorscheme-dark .chroma .l{color:#a5d6ff}body.colorscheme-dark .chroma .ld{color:#79c0ff}body.colorscheme-dark .chroma .s{color:#a5d6ff}body.colorscheme-dark .chroma .sa{color:#79c0ff}body.colorscheme-dark .chroma .sb{color:#a5d6ff}body.colorscheme-dark .chroma .sc{color:#a5d6ff}body.colorscheme-dark .chroma .dl{color:#79c0ff}body.colorscheme-dark .chroma .sd{color:#a5d6ff}body.colorscheme-dark .chroma .s2{color:#a5d6ff}body.colorscheme-dark .chroma .se{color:#79c0ff}body.colorscheme-dark .chroma .sh{color:#79c0ff}body.colorscheme-dark .chroma .si{color:#a5d6ff}body.colorscheme-dark .chroma .sx{color:#a5d6ff}body.colorscheme-dark .chroma .sr{color:#79c0ff}body.colorscheme-dark .chroma .s1{color:#a5d6ff}body.colorscheme-dark .chroma .ss{color:#a5d6ff}body.colorscheme-dark .chroma .m{color:#a5d6ff}body.colorscheme-dark .chroma .mb{color:#a5d6ff}body.colorscheme-dark .chroma .mf{color:#a5d6ff}body.colorscheme-dark .chroma .mh{color:#a5d6ff}body.colorscheme-dark .chroma .mi{color:#a5d6ff}body.colorscheme-dark .chroma .il{color:#a5d6ff}body.colorscheme-dark .chroma .mo{color:#a5d6ff}body.colorscheme-dark .chroma .o{color:#ff7b72;font-weight:700}body.colorscheme-dark .chroma .ow{color:#ff7b72;font-weight:700}body.colorscheme-dark .chroma .c{color:#8b949e;font-style:italic}body.colorscheme-dark .chroma .ch{color:#8b949e;font-style:italic}body.colorscheme-dark .chroma .cm{color:#8b949e;font-style:italic}body.colorscheme-dark .chroma .c1{color:#8b949e;font-style:italic}body.colorscheme-dark .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}body.colorscheme-dark .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}body.colorscheme-dark .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}body.colorscheme-dark .chroma .gd{color:#ffa198;background-color:#490202}body.colorscheme-dark .chroma .ge{font-style:italic}body.colorscheme-dark .chroma .gr{color:#ffa198}body.colorscheme-dark .chroma .gh{color:#79c0ff;font-weight:700}body.colorscheme-dark .chroma .gi{color:#56d364;background-color:#0f5323}body.colorscheme-dark .chroma .go{color:#8b949e}body.colorscheme-dark .chroma .gp{color:#8b949e}body.colorscheme-dark .chroma .gs{font-weight:700}body.colorscheme-dark .chroma .gu{color:#79c0ff}body.colorscheme-dark .chroma .gt{color:#ff7b72}body.colorscheme-dark .chroma .gl{text-decoration:underline}body.colorscheme-dark .chroma .w{color:#6e7681}@media(prefers-color-scheme:dark){body.colorscheme-auto{}body.colorscheme-auto .bg{color:#c9d1d9;background-color:#0d1117}body.colorscheme-auto .chroma{color:#c9d1d9;background-color:#0d1117}body.colorscheme-auto .chroma .err{color:#f85149}body.colorscheme-auto .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}body.colorscheme-auto .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}body.colorscheme-auto .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}body.colorscheme-auto .chroma .hl{background-color:#ffc}body.colorscheme-auto .chroma .lnt{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#64686c}body.colorscheme-auto .chroma .ln{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}body.colorscheme-auto .chroma .line{display:flex}body.colorscheme-auto .chroma .k{color:#ff7b72}body.colorscheme-auto .chroma .kc{color:#79c0ff}body.colorscheme-auto .chroma .kd{color:#ff7b72}body.colorscheme-auto .chroma .kn{color:#ff7b72}body.colorscheme-auto .chroma .kp{color:#79c0ff}body.colorscheme-auto .chroma .kr{color:#ff7b72}body.colorscheme-auto .chroma .kt{color:#ff7b72}body.colorscheme-auto .chroma .nc{color:#f0883e;font-weight:700}body.colorscheme-auto .chroma .no{color:#79c0ff;font-weight:700}body.colorscheme-auto .chroma .nd{color:#d2a8ff;font-weight:700}body.colorscheme-auto .chroma .ni{color:#ffa657}body.colorscheme-auto .chroma .ne{color:#f0883e;font-weight:700}body.colorscheme-auto .chroma .nf{color:#d2a8ff;font-weight:700}body.colorscheme-auto .chroma .nl{color:#79c0ff;font-weight:700}body.colorscheme-auto .chroma .nn{color:#ff7b72}body.colorscheme-auto .chroma .py{color:#79c0ff}body.colorscheme-auto .chroma .nt{color:#7ee787}body.colorscheme-auto .chroma .nv{color:#79c0ff}body.colorscheme-auto .chroma .l{color:#a5d6ff}body.colorscheme-auto .chroma .ld{color:#79c0ff}body.colorscheme-auto .chroma .s{color:#a5d6ff}body.colorscheme-auto .chroma .sa{color:#79c0ff}body.colorscheme-auto .chroma .sb{color:#a5d6ff}body.colorscheme-auto .chroma .sc{color:#a5d6ff}body.colorscheme-auto .chroma .dl{color:#79c0ff}body.colorscheme-auto .chroma .sd{color:#a5d6ff}body.colorscheme-auto .chroma .s2{color:#a5d6ff}body.colorscheme-auto .chroma .se{color:#79c0ff}body.colorscheme-auto .chroma .sh{color:#79c0ff}body.colorscheme-auto .chroma .si{color:#a5d6ff}body.colorscheme-auto .chroma .sx{color:#a5d6ff}body.colorscheme-auto .chroma .sr{color:#79c0ff}body.colorscheme-auto .chroma .s1{color:#a5d6ff}body.colorscheme-auto .chroma .ss{color:#a5d6ff}body.colorscheme-auto .chroma .m{color:#a5d6ff}body.colorscheme-auto .chroma .mb{color:#a5d6ff}body.colorscheme-auto .chroma .mf{color:#a5d6ff}body.colorscheme-auto .chroma .mh{color:#a5d6ff}body.colorscheme-auto .chroma .mi{color:#a5d6ff}body.colorscheme-auto .chroma .il{color:#a5d6ff}body.colorscheme-auto .chroma .mo{color:#a5d6ff}body.colorscheme-auto .chroma .o{color:#ff7b72;font-weight:700}body.colorscheme-auto .chroma .ow{color:#ff7b72;font-weight:700}body.colorscheme-auto .chroma .c{color:#8b949e;font-style:italic}body.colorscheme-auto .chroma .ch{color:#8b949e;font-style:italic}body.colorscheme-auto .chroma .cm{color:#8b949e;font-style:italic}body.colorscheme-auto .chroma .c1{color:#8b949e;font-style:italic}body.colorscheme-auto .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}body.colorscheme-auto .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}body.colorscheme-auto .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}body.colorscheme-auto .chroma .gd{color:#ffa198;background-color:#490202}body.colorscheme-auto .chroma .ge{font-style:italic}body.colorscheme-auto .chroma .gr{color:#ffa198}body.colorscheme-auto .chroma .gh{color:#79c0ff;font-weight:700}body.colorscheme-auto .chroma .gi{color:#56d364;background-color:#0f5323}body.colorscheme-auto .chroma .go{color:#8b949e}body.colorscheme-auto .chroma .gp{color:#8b949e}body.colorscheme-auto .chroma .gs{font-weight:700}body.colorscheme-auto .chroma .gu{color:#79c0ff}body.colorscheme-auto .chroma .gt{color:#ff7b72}body.colorscheme-auto .chroma .gl{text-decoration:underline}body.colorscheme-auto .chroma .w{color:#6e7681}} \ No newline at end of file diff --git a/public/css/coder.min.e1bdf152d93b060b06ba5d496486ed9c201a8b95d335e035beb5faebe3b61cad.css b/public/css/coder.min.e1bdf152d93b060b06ba5d496486ed9c201a8b95d335e035beb5faebe3b61cad.css deleted file mode 100644 index e92cb1a..0000000 --- a/public/css/coder.min.e1bdf152d93b060b06ba5d496486ed9c201a8b95d335e035beb5faebe3b61cad.css +++ /dev/null @@ -1,6 +0,0 @@ -@charset "UTF-8";/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;word-wrap:break-word}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!Fork Awesome 1.2.0 -License - https://forkaweso.me/Fork-Awesome/license -Copyright 2018 Dave Gandy & Fork Awesome -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/@font-face{font-family:forkawesome;src:url(../fonts/forkawesome-webfont.eot?v=1.2.0);src:url(../fonts/forkawesome-webfont.eot?#iefix&v=1.2.0)format("embedded-opentype"),url(../fonts/forkawesome-webfont.woff2?v=1.2.0)format("woff2"),url(../fonts/forkawesome-webfont.woff?v=1.2.0)format("woff"),url(../fonts/forkawesome-webfont.ttf?v=1.2.0)format("truetype"),url(../fonts/forkawesome-webfont.svg?v=1.2.0#forkawesomeregular)format("svg");font-weight:400;font-style:normal;font-display:block}.fa{display:inline-block;font:14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-sync:before,.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video:before,.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell-o:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-globe-e:before{content:"\f304"}.fa-globe-w:before{content:"\f305"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-community:before,.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus-g:before,.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-utensils:before,.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-pound:before,.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-down:before,.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-up:before,.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-down:before,.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-up:before,.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-down:before,.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-up:before,.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-utensil-spoon:before,.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-heading:before,.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-closed-captioning:before,.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-gem:before,.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-medium-square:before{content:"\f2f8"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo-v:before,.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.fa-mastodon:before{content:"\f2e1"}.fa-mastodon-alt:before{content:"\f2e2"}.fa-fork-circle:before,.fa-fork-awesome:before{content:"\f2e3"}.fa-peertube:before{content:"\f2e4"}.fa-diaspora:before{content:"\f2e5"}.fa-friendica:before{content:"\f2e6"}.fa-gnu-social:before{content:"\f2e7"}.fa-liberapay-square:before{content:"\f2e8"}.fa-liberapay:before{content:"\f2e9"}.fa-ssb:before,.fa-scuttlebutt:before{content:"\f2ea"}.fa-hubzilla:before{content:"\f2eb"}.fa-social-home:before{content:"\f2ec"}.fa-artstation:before{content:"\f2ed"}.fa-discord:before{content:"\f2ee"}.fa-discord-alt:before{content:"\f2ef"}.fa-patreon:before{content:"\f2f0"}.fa-snowdrift:before{content:"\f2f1"}.fa-activitypub:before{content:"\f2f2"}.fa-ethereum:before{content:"\f2f3"}.fa-keybase:before{content:"\f2f4"}.fa-shaarli:before{content:"\f2f5"}.fa-shaarli-o:before{content:"\f2f6"}.fa-cut-key:before,.fa-key-modern:before{content:"\f2f7"}.fa-xmpp:before{content:"\f2f9"}.fa-archive-org:before{content:"\f2fc"}.fa-freedombox:before{content:"\f2fd"}.fa-facebook-messenger:before{content:"\f2fe"}.fa-debian:before{content:"\f2ff"}.fa-mastodon-square:before{content:"\f300"}.fa-tipeee:before{content:"\f301"}.fa-react:before{content:"\f302"}.fa-dogmazic:before{content:"\f303"}.fa-zotero:before{content:"\f309"}.fa-nodejs:before{content:"\f308"}.fa-nextcloud:before{content:"\f306"}.fa-nextcloud-square:before{content:"\f307"}.fa-hackaday:before{content:"\f30a"}.fa-laravel:before{content:"\f30b"}.fa-signalapp:before{content:"\f30c"}.fa-gnupg:before{content:"\f30d"}.fa-php:before{content:"\f30e"}.fa-ffmpeg:before{content:"\f30f"}.fa-joplin:before{content:"\f310"}.fa-syncthing:before{content:"\f311"}.fa-inkscape:before{content:"\f312"}.fa-matrix-org:before{content:"\f313"}.fa-pixelfed:before{content:"\f314"}.fa-bootstrap:before{content:"\f315"}.fa-dev-to:before{content:"\f316"}.fa-hashnode:before{content:"\f317"}.fa-jirafeau:before{content:"\f318"}.fa-emby:before{content:"\f319"}.fa-wikidata:before{content:"\f31a"}.fa-gimp:before{content:"\f31b"}.fa-c:before{content:"\f31c"}.fa-digitalocean:before{content:"\f31d"}.fa-att:before{content:"\f31e"}.fa-gitea:before{content:"\f31f"}.fa-file-epub:before{content:"\f321"}.fa-python:before{content:"\f322"}.fa-archlinux:before{content:"\f323"}.fa-pleroma:before{content:"\f324"}.fa-unsplash:before{content:"\f325"}.fa-hackster:before{content:"\f326"}.fa-spell-check:before{content:"\f327"}.fa-moon:before{content:"\f328"}.fa-sun:before{content:"\f329"}.fa-f-droid:before{content:"\f32a"}.fa-biometric:before{content:"\f32b"}.fa-wire:before{content:"\f32c"}.fa-tor-onion:before{content:"\f32e"}.fa-volume-mute:before{content:"\f32f"}.fa-bell-ringing:before{content:"\f32d"}.fa-bell-ringing-o:before{content:"\f330"}.fa-hal:before{content:"\f333"}.fa-jupyter:before{content:"\f335"}.fa-julia:before{content:"\f334"}.fa-classicpress:before{content:"\f331"}.fa-classicpress-circle:before{content:"\f332"}.fa-open-collective:before{content:"\f336"}.fa-orcid:before{content:"\f337"}.fa-researchgate:before{content:"\f338"}.fa-funkwhale:before{content:"\f339"}.fa-askfm:before{content:"\f33a"}.fa-blockstack:before{content:"\f33b"}.fa-boardgamegeek:before{content:"\f33c"}.fa-bunny:before{content:"\f35f"}.fa-buymeacoffee:before{content:"\f33d"}.fa-cc-by:before{content:"\f33e"}.fa-creative-commons-alt:before,.fa-cc-cc:before{content:"\f33f"}.fa-cc-nc-eu:before{content:"\f341"}.fa-cc-nc-jp:before{content:"\f342"}.fa-cc-nc:before{content:"\f340"}.fa-cc-nd:before{content:"\f343"}.fa-cc-pd:before{content:"\f344"}.fa-cc-remix:before{content:"\f345"}.fa-cc-sa:before{content:"\f346"}.fa-cc-share:before{content:"\f347"}.fa-cc-zero:before{content:"\f348"}.fa-conway-hacker:before,.fa-conway-glider:before{content:"\f349"}.fa-csharp:before{content:"\f34a"}.fa-email-bulk:before{content:"\f34b"}.fa-email-bulk-o:before{content:"\f34c"}.fa-gnu:before{content:"\f34d"}.fa-google-play:before{content:"\f34e"}.fa-heroku:before{content:"\f34f"}.fa-hassio:before,.fa-home-assistant:before{content:"\f350"}.fa-java:before{content:"\f351"}.fa-mariadb:before{content:"\f352"}.fa-markdown:before{content:"\f353"}.fa-mysql:before{content:"\f354"}.fa-nordcast:before{content:"\f355"}.fa-plume:before{content:"\f356"}.fa-postgresql:before{content:"\f357"}.fa-sass-alt:before{content:"\f359"}.fa-sass:before{content:"\f358"}.fa-skate:before{content:"\f35a"}.fa-sketchfab:before{content:"\f35b"}.fa-tex:before{content:"\f35c"}.fa-textpattern:before{content:"\f35d"}.fa-unity:before{content:"\f35e"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#212121;background-color:#fafafa;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-size:1.8em;font-weight:400;line-height:1.8em}@media only screen and (max-width:768px){body{font-size:1.6em;line-height:1.6em}}iframe[src*=disqus]{color-scheme:light}a{font-weight:500;color:#1565c0;text-decoration:none;transition:all .25s ease-in}a:focus,a:hover{text-decoration:underline}p{margin:2rem 0}h1,h2,h3,h4,h5,h6{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:600;color:#000;margin:4rem 0 2.5rem}h1:hover .heading-link,h2:hover .heading-link,h3:hover .heading-link,h4:hover .heading-link,h5:hover .heading-link,h6:hover .heading-link{visibility:visible}h1 .heading-link,h2 .heading-link,h3 .heading-link,h4 .heading-link,h5 .heading-link,h6 .heading-link{color:#1565c0;font-weight:inherit;text-decoration:none;font-size:80%;visibility:hidden}h1 .title-link,h2 .title-link,h3 .title-link,h4 .title-link,h5 .title-link,h6 .title-link{color:inherit;font-weight:inherit;text-decoration:none}h1{font-size:3.2rem;line-height:3.6rem}@media only screen and (max-width:768px){h1{font-size:3rem;line-height:3.4rem}}h2{font-size:2.8rem;line-height:3.2rem}@media only screen and (max-width:768px){h2{font-size:2.6rem;line-height:3rem}}h3{font-size:2.4rem;line-height:2.8rem}@media only screen and (max-width:768px){h3{font-size:2.2rem;line-height:2.6rem}}h4{font-size:2.2rem;line-height:2.6rem}@media only screen and (max-width:768px){h4{font-size:2rem;line-height:2.4rem}}h5{font-size:2rem;line-height:2.4rem}@media only screen and (max-width:768px){h5{font-size:1.8rem;line-height:2.2rem}}h6{font-size:1.8rem;line-height:2.2rem}@media only screen and (max-width:768px){h6{font-size:1.6rem;line-height:2rem}}b,strong{font-weight:700}.highlight div,.highlight pre{margin:2rem 0;padding:1rem;border-radius:1rem}pre{display:block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1.6rem;font-weight:400;line-height:2.6rem;overflow-x:auto;margin:2rem 0;padding:1rem;border-radius:1rem}pre code{display:inline-block;background-color:inherit;color:inherit}code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1.6rem;font-weight:400;border-radius:.6rem;padding:.3rem .6rem;background-color:#ccc;color:#212121}blockquote{border-left:2px solid #e0e0e0;padding-left:2rem;line-height:2.2rem;font-weight:400;font-style:italic}th,td{padding:1.6rem}table{border-collapse:collapse}table td,table th{border:2px solid #000}table tr:first-child th{border-top:0}table tr:last-child td{border-bottom:0}table tr td:first-child,table tr th:first-child{border-left:0}table tr td:last-child,table tr th:last-child{border-right:0}img{max-width:100%}figure{text-align:center}.footnotes ol li p{margin:0}.preload-transitions *{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.container{margin:1rem auto;max-width:90rem;width:100%;padding-left:2rem;padding-right:2rem}.fab{font-weight:400}.fas{font-weight:700}.float-right{float:right}.float-left{float:left}.fab{font-weight:400}.fas{font-weight:900}.content{flex:1;display:flex;margin-top:1.6rem;margin-bottom:3.2rem}.content header{margin-top:6.4rem;margin-bottom:3.2rem}.content header h1{font-size:4.2rem;line-height:4.6rem;margin:0}@media only screen and (max-width:768px){.content header h1{font-size:4rem;line-height:4.4rem}}.content article a:where(.external-link)::after{display:inline-block;font:14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f08e";padding-left:.5em;font-size:.75em}.content article details summary{cursor:pointer}.content article footer{margin-top:4rem}.content article footer .see-also{margin:3.2rem 0}.content article footer .see-also h3{margin:3.2rem 0}.content article p{text-align:justify;text-justify:auto;hyphens:auto}.content .post .post-title{margin-bottom:.75em}.content .post .post-meta i{text-align:center;width:1.6rem;margin-left:0;margin-right:.5rem}.content .post .post-meta .date .posted-on{margin-left:0;margin-right:1.5rem}.content .post .post-meta .tags .tag{display:inline-block;padding:.3rem .6rem;background-color:#e0e0e0;border-radius:.6rem;line-height:1.4em}.content .post .post-meta .tags .tag a{color:#212121}.content .post .post-meta .tags .tag a:active{color:#212121}.content figure{margin:0;padding:0}.content figcaption p{text-align:center;font-style:italic;font-size:1.6rem;margin:0}.avatar img{width:20rem;height:auto;border-radius:50%}@media only screen and (max-width:768px){.avatar img{width:10rem}}.list ul{margin:3.2rem 0;list-style:none;padding:0}.list ul li{font-size:1.8rem}@media only screen and (max-width:768px){.list ul li{margin:1.6rem 0}}.list ul li .date{display:inline-block;flex:1;width:20rem;text-align:right;margin-right:3rem}@media only screen and (max-width:768px){.list ul li .date{display:block;text-align:left}}.list ul li .title{font-size:1.8rem;flex:2;color:#212121;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:700}.list ul li .title:hover,.list ul li .title:focus{color:#1565c0}@media only screen and (min-width:768.1px){.list ul:not(.pagination) li{display:flex}}.centered{display:flex;align-items:center;justify-content:center}.centered .about{text-align:center}.centered .about h1{margin-top:2rem;margin-bottom:.5rem}.centered .about h2{margin-top:1rem;margin-bottom:.5rem;font-size:2.4rem}@media only screen and (max-width:768px){.centered .about h2{font-size:2rem}}.centered .about ul{list-style:none;margin:3rem 0 1rem;padding:0}.centered .about ul li{display:inline-block;position:relative}.centered .about ul li a{color:#212121;text-transform:uppercase;margin-left:1rem;margin-right:1rem;font-size:1.6rem}.centered .about ul li a:hover,.centered .about ul li a:focus{color:#1565c0}@media only screen and (max-width:768px){.centered .about ul li a{font-size:1.4rem}}.centered .error{text-align:center}.centered .error h1{margin-top:2rem;margin-bottom:.5rem;font-size:4.6rem}@media only screen and (max-width:768px){.centered .error h1{font-size:3.2rem}}.centered .error h2{margin-top:2rem;margin-bottom:3.2rem;font-size:3.2rem}@media only screen and (max-width:768px){.centered .error h2{font-size:2.8rem}}.notice{border-radius:.2rem;position:relative;margin:2rem 0;padding:0 .75rem;overflow:auto}.notice .notice-title{position:relative;font-weight:700;margin:0 -.75rem;padding:.2rem 3.5rem;border-bottom:1px solid #fafafa}.notice .notice-title i{position:absolute;top:50%;left:1.8rem;transform:translate(-50%,-50%)}.notice .notice-content{display:block;margin:2rem}.notice.note{background-color:#7e57c21a}.notice.note .notice-title{background-color:#673ab71a}.notice.note .notice-title i{color:#5e35b1}.notice.tip{background-color:#26a69a1a}.notice.tip .notice-title{background-color:#0096881a}.notice.tip .notice-title i{color:#00897b}.notice.example{background-color:#8d6e631a}.notice.example .notice-title{background-color:#7955481a}.notice.example .notice-title i{color:#6d4c41}.notice.question{background-color:#9ccc651a}.notice.question .notice-title{background-color:#8bc34a1a}.notice.question .notice-title i{color:#7cb342}.notice.info{background-color:#42a5f51a}.notice.info .notice-title{background-color:#2196f31a}.notice.info .notice-title i{color:#1e88e5}.notice.warning{background-color:#ffca281a}.notice.warning .notice-title{background-color:#ffc1071a}.notice.warning .notice-title i{color:#ffb300}.notice.error{background-color:#ef53501a}.notice.error .notice-title{background-color:#f443361a}.notice.error .notice-title i{color:#e53935}.navigation{height:6rem;width:100%}.navigation a,.navigation span{display:inline;font-size:1.7rem;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:600;color:#212121}.navigation a:hover,.navigation a:focus{color:#1565c0}.navigation .navigation-title{letter-spacing:.1rem;text-transform:uppercase}.navigation .navigation-list{float:right;list-style:none;margin-bottom:0;margin-top:0}@media only screen and (max-width:768px){.navigation .navigation-list{position:relative;top:2rem;right:0;z-index:5;visibility:hidden;opacity:0;padding:0;max-height:0;width:100%;background-color:#fafafa;border-top:solid 2px #e0e0e0;border-bottom:solid 2px #e0e0e0;transition:opacity .25s,max-height .15s linear}}.navigation .navigation-list .navigation-item{float:left;margin:0;position:relative}@media only screen and (max-width:768px){.navigation .navigation-list .navigation-item{float:none!important;text-align:center}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{line-height:5rem}}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{margin-left:1rem;margin-right:1rem}@media only screen and (max-width:768px){.navigation .navigation-list .separator{display:none}}@media only screen and (max-width:768px){.navigation .navigation-list .menu-separator{border-top:2px solid #212121;margin:0 8rem}.navigation .navigation-list .menu-separator span{display:none}}.navigation #dark-mode-toggle{margin:1.7rem 0;font-size:2.4rem;line-height:inherit;bottom:2rem;left:2rem;z-index:100;position:fixed}.navigation #menu-toggle{display:none}@media only screen and (max-width:768px){.navigation #menu-toggle{display:initial;position:relative;visibility:hidden}.navigation #menu-toggle:checked+label>i{color:#e0e0e0}.navigation #menu-toggle:checked+label+ul{visibility:visible;opacity:1;max-height:100rem}.navigation #menu-toggle:focus-visible+label{outline-style:auto}}.navigation .menu-button{display:none}@media only screen and (max-width:768px){.navigation .menu-button{position:relative;display:block;font-size:2.4rem;font-weight:400}}.navigation .menu-button i:hover,.navigation .menu-button i:focus{color:#000}.navigation i{color:#212121;cursor:pointer}.navigation i:hover,.navigation i:focus{color:#1565c0}.pagination{display:flex;justify-content:center;margin-top:6rem;text-align:center;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif}.pagination li{display:inline;text-align:center;font-weight:700;margin:0;text-align:center;width:2.2rem}.pagination li a{font-weight:300}.tabs{display:flex;flex-wrap:wrap;margin:2rem 0;position:relative}.tabs.tabs-left{justify-content:flex-start}.tabs.tabs-left label.tab-label{margin-right:.5rem}.tabs.tabs-left .tab-content{border-radius:0 4px 4px 4px}.tabs.tabs-right{justify-content:flex-end}.tabs.tabs-right label.tab-label{margin-left:.5rem}.tabs.tabs-right .tab-content{border-radius:4px 0 4px 4px}.tabs input.tab-input{display:none}.tabs label.tab-label{background-color:#e0e0e0;border-color:#ccc;border-radius:4px 4px 0 0;border-style:solid;border-bottom-style:hidden;border-width:1px;cursor:pointer;display:inline-block;order:1;padding:.3rem .6rem;position:relative;top:1px;user-select:none}.tabs input.tab-input:checked+label.tab-label{background-color:#fafafa}.tabs .tab-content{background-color:#fafafa;border-color:#ccc;border-style:solid;border-width:1px;display:none;order:2;padding:1rem;width:100%}.tabs.tabs-code .tab-content{padding:.5rem}.tabs.tabs-code .tab-content pre{margin:0}.taxonomy li{display:inline-block;margin:.9rem}.taxonomy .taxonomy-element{display:block;padding:.3rem .9rem;background-color:#e0e0e0;border-radius:.6rem}.taxonomy .taxonomy-element a{color:#212121}.taxonomy .taxonomy-element a:active{color:#212121}.footer{width:100%;text-align:center;font-size:1.6rem;line-height:2rem;margin-bottom:1rem}.footer a{color:#1565c0}.float-container{bottom:2rem;right:2rem;z-index:100;position:fixed;font-size:1.6em}.float-container a{position:relative;display:inline-block;width:3rem;height:3rem;font-size:2rem;color:#000;background-color:#e0e0e0;border-radius:.2rem;opacity:.5;transition:all .25s ease-in}.float-container a:hover,.float-container a:focus{color:#1565c0;opacity:1}@media only screen and (max-width:768px){.float-container a:hover,.float-container a:focus{color:#000;opacity:.5}}.float-container a i{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.bg{background-color:#fff}.chroma{background-color:#fff}.chroma .err{color:#a61717;background-color:#e3d2d2}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#ffc}.chroma .lnt{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#000;font-weight:700}.chroma .kc{color:#000;font-weight:700}.chroma .kd{color:#000;font-weight:700}.chroma .kn{color:#000;font-weight:700}.chroma .kp{color:#000;font-weight:700}.chroma .kr{color:#000;font-weight:700}.chroma .kt{color:#458;font-weight:700}.chroma .na{color:teal}.chroma .nb{color:#0086b3}.chroma .bp{color:#999}.chroma .nc{color:#458;font-weight:700}.chroma .no{color:teal}.chroma .nd{color:#3c5d5d;font-weight:700}.chroma .ni{color:purple}.chroma .ne{color:#900;font-weight:700}.chroma .nf{color:#900;font-weight:700}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#555}.chroma .nt{color:navy}.chroma .nv{color:teal}.chroma .vc{color:teal}.chroma .vg{color:teal}.chroma .vi{color:teal}.chroma .s{color:#d14}.chroma .sa{color:#d14}.chroma .sb{color:#d14}.chroma .sc{color:#d14}.chroma .dl{color:#d14}.chroma .sd{color:#d14}.chroma .s2{color:#d14}.chroma .se{color:#d14}.chroma .sh{color:#d14}.chroma .si{color:#d14}.chroma .sx{color:#d14}.chroma .sr{color:#009926}.chroma .s1{color:#d14}.chroma .ss{color:#990073}.chroma .m{color:#099}.chroma .mb{color:#099}.chroma .mf{color:#099}.chroma .mh{color:#099}.chroma .mi{color:#099}.chroma .il{color:#099}.chroma .mo{color:#099}.chroma .o{color:#000;font-weight:700}.chroma .ow{color:#000;font-weight:700}.chroma .c{color:#998;font-style:italic}.chroma .ch{color:#998;font-style:italic}.chroma .cm{color:#998;font-style:italic}.chroma .c1{color:#998;font-style:italic}.chroma .cs{color:#999;font-weight:700;font-style:italic}.chroma .cp{color:#999;font-weight:700;font-style:italic}.chroma .cpf{color:#999;font-weight:700;font-style:italic}.chroma .gd{color:#000;background-color:#fdd}.chroma .ge{color:#000;font-style:italic}.chroma .gr{color:#a00}.chroma .gh{color:#999}.chroma .gi{color:#000;background-color:#dfd}.chroma .go{color:#888}.chroma .gp{color:#555}.chroma .gs{font-weight:700}.chroma .gu{color:#aaa}.chroma .gt{color:#a00}.chroma .gl{text-decoration:underline}.chroma .w{color:#bbb} \ No newline at end of file diff --git a/public/fonts/forkawesome-webfont.eot b/public/fonts/forkawesome-webfont.eot deleted file mode 100644 index c2c24b4..0000000 Binary files a/public/fonts/forkawesome-webfont.eot and /dev/null differ diff --git a/public/fonts/forkawesome-webfont.svg b/public/fonts/forkawesome-webfont.svg deleted file mode 100644 index bd45b30..0000000 --- a/public/fonts/forkawesome-webfont.svg +++ /dev/null @@ -1,3232 +0,0 @@ - - - - - -Created by FontForge 20190801 at Fri Aug 27 00:07:49 2021 - By shine -The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/forkawesome-webfont.ttf b/public/fonts/forkawesome-webfont.ttf deleted file mode 100644 index 1f1d8f3..0000000 Binary files a/public/fonts/forkawesome-webfont.ttf and /dev/null differ diff --git a/public/fonts/forkawesome-webfont.woff b/public/fonts/forkawesome-webfont.woff deleted file mode 100644 index cca43af..0000000 Binary files a/public/fonts/forkawesome-webfont.woff and /dev/null differ diff --git a/public/fonts/forkawesome-webfont.woff2 b/public/fonts/forkawesome-webfont.woff2 deleted file mode 100644 index c96e5bf..0000000 Binary files a/public/fonts/forkawesome-webfont.woff2 and /dev/null differ diff --git a/public/index.gmi b/public/index.gmi deleted file mode 100644 index 8929f3d..0000000 --- a/public/index.gmi +++ /dev/null @@ -1,53 +0,0 @@ -# Мои сервисы: - -- gitrepo.ru — гит-хостинг[1] -=> https://gitrepo.ru 1: gitrepo.ru — гит-хостинг - -- gist.neonxp.ru — сервис для хранения и публикаций кусков кода[1] -- pic.neonxp.ru — простой хостинг картинок[2] -- soc.neonxp.ru — приватный инстанс федиверса[3] - -=> https://gist.neonxp.ru 1: gist.neonxp.ru — сервис для хранения и публикаций кусков кода -=> https://pic.neonxp.ru 2: pic.neonxp.ru — простой хостинг картинок -=> https://soc.neonxp.ru 3: soc.neonxp.ru — приватный инстанс федиверса - -Список будет пополняться :) - -=> /posts/2024/06/02/2024-06-02-книжные_рекомендации_1 2024-06-02: Книжные рекомендации 1 - - -=> /posts/2024/06/01/2024-06-01-вам_не_нужны_пуши 2024-06-01: Вам не нужны пуши! - - -=> /posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры 2024-02-21: Конфигурация HTTPS с сертификатом от Минцифры - - -=> /posts/2024/01/03/2024-01-03-архив 2024-01-03: Архив - - -=> /posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления 2023-12-29: Переезд и проблемы обновления - - -=> /posts/2023/07/24/2023-07-24-tls 2023-07-24: Немного мыслей о TLS (HTTPS) в России - - -=> /posts/2023/05/26/2023-05-26-gist 2023-05-26: Импортозамещение Gist - - -=> /posts/2023/05/26/2023-05-26-comments 2023-05-26: Комментарии - - -=> /posts/2023/01/12/2023-01-12-gitrepo 2023-01-12: GitRepo - - -=> /posts/2022/05/31/2022-05-31-golang-1 2022-05-31: Golang подборка 1 - - -=> /posts/2022/05/30/2022-05-30-rebirth 2022-05-30: Возрождение? - - -=> /posts/2021/05/13/2021-05-13-digital 2021-05-13: Немного о цифровой гигиене - - -=> /posts/2021/02/13/2021-02-13-jsonnet 2021-02-13: Jsonnet - diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 5ac3531..0000000 --- a/public/index.html +++ /dev/null @@ -1,9 +0,0 @@ -/home/NeonXP -
    \ No newline at end of file diff --git a/public/js/coder.min.6ae284be93d2d19dad1f02b0039508d9aab3180a12a06dcc71b0b0ef7825a317.js b/public/js/coder.min.6ae284be93d2d19dad1f02b0039508d9aab3180a12a06dcc71b0b0ef7825a317.js deleted file mode 100644 index bbecf34..0000000 --- a/public/js/coder.min.6ae284be93d2d19dad1f02b0039508d9aab3180a12a06dcc71b0b0ef7825a317.js +++ /dev/null @@ -1 +0,0 @@ -const body=document.body,darkModeToggle=document.getElementById("dark-mode-toggle"),darkModeMediaQuery=window.matchMedia("(prefers-color-scheme: dark)");localStorage.getItem("colorscheme")?setTheme(localStorage.getItem("colorscheme")):setTheme(body.classList.contains("colorscheme-light")||body.classList.contains("colorscheme-dark")?body.classList.contains("colorscheme-dark")?"dark":"light":darkModeMediaQuery.matches?"dark":"light"),darkModeToggle&&darkModeToggle.addEventListener("click",()=>{let e=body.classList.contains("colorscheme-dark")?"light":"dark";setTheme(e),rememberTheme(e)}),darkModeMediaQuery.addListener(e=>{setTheme(e.matches?"dark":"light")}),document.addEventListener("DOMContentLoaded",function(){let e=document.querySelector(".preload-transitions");e.classList.remove("preload-transitions")});function setTheme(e){body.classList.remove("colorscheme-auto");let n=e==="dark"?"light":"dark";body.classList.remove("colorscheme-"+n),body.classList.add("colorscheme-"+e),document.documentElement.style["color-scheme"]=e;function t(e){return new Promise(t=>{if(document.querySelector(e))return t(document.querySelector(e));const n=new MutationObserver(s=>{document.querySelector(e)&&(t(document.querySelector(e)),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})})}if(e==="dark"){const e={type:"set-theme",theme:"github-dark"};t(".utterances-frame").then(t=>{t.contentWindow.postMessage(e,"https://utteranc.es")})}else{const e={type:"set-theme",theme:"github-light"};t(".utterances-frame").then(t=>{t.contentWindow.postMessage(e,"https://utteranc.es")})}function s(e){const t=document.querySelector("iframe.giscus-frame");if(!t)return;t.contentWindow.postMessage({giscus:e},"https://giscus.app")}s({setConfig:{theme:e}});const o=new Event("themeChanged");document.dispatchEvent(o)}function rememberTheme(e){localStorage.setItem("colorscheme",e)} \ No newline at end of file diff --git a/public/other/_index/index.gmi b/public/other/_index/index.gmi deleted file mode 100644 index d812157..0000000 --- a/public/other/_index/index.gmi +++ /dev/null @@ -1,2 +0,0 @@ -# Другое - diff --git a/public/other/contacts/index.gmi b/public/other/contacts/index.gmi deleted file mode 100644 index b553853..0000000 --- a/public/other/contacts/index.gmi +++ /dev/null @@ -1,15 +0,0 @@ -# Мои координаты - -- Мой git[1] -=> https://gitrepo.ru/neonxp/ 1: Мой git - -- Мои Go пакеты[1] -- Telegram Канал[2] -- E-mail: i@neonxp.ru[3] -- PGP ключ[4] - -=> https://go.neonxp.ru/ 1: Мои Go пакеты -=> https://t.me/neonxplog 2: Telegram Канал -=> mailto:i@neonxp.ru 3: i@neonxp.ru -=> /files/key.pgp 4: PGP ключ - diff --git a/public/other/contacts/index.html b/public/other/contacts/index.html deleted file mode 100644 index 8733e5c..0000000 --- a/public/other/contacts/index.html +++ /dev/null @@ -1,7 +0,0 @@ -Мои координаты · /home/NeonXP -
    \ No newline at end of file diff --git a/public/other/cyberpunk/index.gmi b/public/other/cyberpunk/index.gmi deleted file mode 100644 index 4526a00..0000000 --- a/public/other/cyberpunk/index.gmi +++ /dev/null @@ -1,158 +0,0 @@ -# Манифест киберпанка - -Кристиан Кирчев - -Манифест киберпанка - -Мы электронные духи, группа свободомыслящих повстанцев. Киберпанки. Мы живем в киберпространстве, мы везде, мы не знаем границ. И это наш манифест. Манифест киберпанка. - -I. Киберпанк - -1. Мы те самые, Другие. Технологические крысы, плывущие в океане информации. - -2. Мы - это скромный школьник, сидящий за последней партой в дальнем углу класса. - -3. Мы - это подросток, которого все считают странным. - -4. Мы - это студент, взламывающий компьютерные системы и пытающийся достичь предела своих возможностей. - -5. Мы - это взрослый человек, сидящий на скамейке в парке с лэптопом на коленях и программирующий новую виртуальную реальность. - -6. Нам принадлежат гаражи, напичканные электроникой. Паяльник на рабочем столе и разобранный на части радиоприемник, подвал, в котором стоят компьютеры, жужжат принтеры и гудят модемы - все это тоже наше. - -7. Мы видим реальность в ином свете. Мы видим больше, чем обыкновенные люди. Они видят только то, что снаружи. Мы видим то, что внутри. Реалисты со взглядом романтиков - вот кто мы такие. - -8. Мы странные люди, о которых практически ничего неизвестно. Люди, индульгирующие в своих собственных мыслях, день за днем сидящие за компьютером, ищущие необходимую информацию в сети. Мы редко выходим из дома. Мы делаем это время от времени лишь для того, чтобы сходить в соседнюю лачугу или бар, где мы встречаемся со своими немногочисленными друзьями. Иногда мы выходим из дома, чтобы встретиться с очередным клиентом, или наркодилером... или просто совершить прогулку. - -9. У нас мало друзей, лишь несколько человек, с которыми мы ходим на вечеринки. Всех остальных мы знаем только в сети. Наши настоящие друзья там, на другом конце провода. Мы знаем их по каналам ретрансляции диалогов IRC, по группам новостей и по другим системам, в которых мы работаем. - -10. Нам наплевать на то, что о нас думают другие. Нам наплевать на то, как мы выглядим и что говорят люди в наше отсутствие. - -11. Большинство из нас любит жить скрытно, оставаться в тени и общаться друг с другом лишь по необходимости. - -12. Некоторые из нас любят быть на виду, они любят славу. Их знает весь андеграунд. Их имена на слуху. Но всех нас объединяет одно - все мы Киберпанки. - -13. Общество не понимает нас. Мы выглядим <таинственными> и <сумасшедшими> в глазах обыкновенных людей, живущих в далеке от информации и свободы мысли. Общество не признает нас - общество, живущее, думающее и дышащее одним единственным способом - как все. - -14. Оно запрещает нам думать о том, что мы свободные люди. Свободомыслие запрещено. - -15. У каждого Киберпанка есть индивидуальность, он не марионетка. Киберпанки - это люди, начиная от самых обыкновенных и никому не известных, до гениев-техноманьяков, музыкантов, играющих электронную музыку и исследователей-самоучек. - -16. Киберпанк больше не является жанром художественной литературы. Это уже не субкультура. Киберпанк - это новая отдельная культура, дитя новой эры. Культура, которая объединяет наши взгляды и интересы. Мы составляем единое целое. Мы киберпанки. - -II. Общество - -1. Общество, окружающее нас, связывает друг с другом людей и предметы, превращает их в единую массу и медленно затягивает в зыбучие пески времени. - -2. И хотя в это трудно поверить, всем уже очевидно, что мы живем в больном обществе. Так называемые реформы, которыми повсеместно хвастаются наши правительства, - это лишь незначительные сдвиги, в то время как можно совершать целые прыжки. - -3. Люди боятся нового и неизвестного. Они предпочитают старые, проверенные истины. Они боятся перемен. Они боятся потерять то, что у них уже есть. - -4. Их страх настолько силен, что превратился в оружие. Их страх запрещает свободомыслие. И в этом их главная ошибка. - -5. Люди должны оставить свой страх позади и двинуться вперед. Какой смысл все время держать синицу в руках, если можно поймать журавля. Все, что нужно сделать - это протянуть руки и почувствовать новое; дать свободу помыслам, идеям и словам. - -6. Новые поколения веками воспитывались в духе своих прародителей. Идеалом считается то, чему следует большинство. Индивидуальность забыта. Люди думают одинаково, используя клише, заученные с самого детства. А когда какой-нибудь ребенок отваживается бросить вызов власти, его наказывают и приводят в качестве плохого примера. <Вот что случается с теми, кто выражает свое мнение и игнорирует мнение учителя>. - -7. Наше общество больно и нуждается в лечении. Лекарством является смена системы... - -III. Система - -1. Система. С многовековым прошлым, существующая на принципах, которым нет места в сегодняшнем мире. Система, которая практически не изменилась со времени своего появления. - -2. Это неправильная Система. - -3. Чтобы управлять нами, Система должна обманным путем навязывать свои правила. Правительство хочет, чтобы мы слепо следовали его указаниям. Мы живем в информационных сумерках. Когда люди получают информацию, отличную от информации правительства, они не могут отличить правду от лжи. Поэтому ложь становится правдой - правдой, лежащей в основе всего. Таким образом правители управляют нами при помощи лжи, а обыкновенные люди не могут различить правду и слепо следуют за правительством, полностью доверяя ему. - -4. Мы боремся за свободу информации. Мы боремся за свободу за свободу слова и печати. За свободу выражать наши мысли, не опасаясь преследования Системы. - -5. Даже в самых цивилизованных и <демократических> странах, Система распространяет дезинформацию. Даже в странах, претендующих на звание колыбели свободы слова. Дезинформация - основное оружие Системы. Оружие, которое она успешно использует. - -6. Именно Сеть помогает нам свободно распространять информацию. Сеть, не имеющая границ и не знающая предела. - -7. Все, что принадлежит нам, принадлежит и вам. Все, что принадлежит вам, принадлежит и нам. - -8. Каждый может использовать информацию. Ограничений не существует. - -9. Шифрование информации - это наше оружие. Зашифрованные революционные послания могут беспрепятственно распространятся по Сети, и правительство может только догадываться об их содержании. - -10. Сеть - это наше королевство, в сети мы короли. - -11. Законы. Мир меняется, но законы остаются прежними. Система не меняется, лишь кое-какие детали приводятся в соответствие с новым временем, однако в целом все остается на своих местах. - -12. Нам нужны новые законы. Законы, соответствующие времени, в котором мы живем, и миру, который нас окружает. Не законы, построенные на опыте прошлого. Законы, построенные для сегодняшнего дня, законы, соответствующие дню завтрашнему. - -IV. Видение будущего - -1. Некоторые люди не задумываются над тем, что происходит в мире. Они заботятся только о себе, о своем микрокосмосе. - -2. Такие люди могут видеть только мрачное будущее, будущее их личной жизни, которой они живут в данный момент. - -3. Другие обеспокоены будущими событиями. Их интересует все, что будет происходить в будущем в глобальном масштабе. - -4. Их взгляд на жизнь более оптимистичен. В их глазах будущее выглядит чище и прекраснее. Они могут представить себе человека, ставшего более значительным, и мир, ставший более мудрым. - -5. Мы находимся где-то посередине. Для нас важно то, что происходит сейчас и то, что произойдет завтра. - -6. Наши взгляды устремлены в Сеть. И Сеть разрастается с каждым днем. - -7. Вскоре весь мир будет опутан Сетью: от военных систем до домашних компьютеров. - -8. Но сеть - это колыбель анархии. - -9. Ее нельзя контролировать и в этом ее сила. - -10. Каждый человек будет зависеть от Сети. - -11. Вся информация будет курсировать по сети, запертая в хаосе нулей и единиц. - -12. Тот, кто контролирует Сеть, контролирует информацию. - -13. Мы будем жить в смешении прошлого и настоящего. - -14. Плохое идет от человека, а хорошее идет от технологии. - -15. Сеть будет контролировать маленького человека, а мы будем контролировать Сеть. - -16. Если не будешь контролировать сам, будут контролировать тебя. - -17. Информация - это сила! - -V. Где мы? - -1. Где мы? 2. Мы все живем в больном мире, где ненависть - это оружие, а свобода - мечта. - -3. Мир развивается слишком медленно. Киберпанку очень трудно жить в вечно недоделанном мире, смотреть на окружающих и видеть как плохо они строят свой мир. - -4. Мы идем вперед, они тянут нас назад. Общество сдерживает нас. Да, оно сдерживает свободу мысли. Своими безжалостными образовательными программами в школах и университетах. Они тренируют в детях одинаковое видение мира. Любые возражения пресекаются и наказываются. - -5. Наши дети обучаются в этой древней и не изменившейся системе. Системе, которая не допускает свободомыслия и требует четкого соблюдения правил... - -6. В каком бы мире мы жили сейчас, если бы люди двигались вперед прыжками, а не ползли. - -7. Киберпанк, тебе очень трудно жить в этом мире. - -8. Кажется, что время остановилось. - -9. Мы оказались в нужном месте, но не в нужное время. - -10. Все вокруг слишком банально, люди не меняются. Как будто общество хочет вернуться в прошлое. - -11. Некоторые люди, пытающиеся найти свой мир, мир Киберпанка, находят его и строят собственными руками. Строят в своих мыслях, в меняющейся реальности. Поэтому они живут в виртуальном мире. В выдуманном мире, находящемся вне пределов вселенной. - -12. Некоторые люди привыкают к реальному миру, такому, какой он есть на самом деле. Они продолжают жить в нем, но они не любят его. У них нет другого выбора, но они верят в то, что мир вырвется из объятий пустоты и двинется вперед. - -13. Все, что мы пытаемся сделать - это изменить ситуацию. Мы пытаемся приспособить сегодняшний мир к нашим нуждам и взглядам. Максимально используем его возможности и не обращаем внимания на всякий хлам. Там, где нам не под силу что-либо изменить, мы можем просто жить, жить как Киберпанки. Не имеет значения то, насколько трудной будет наша жизнь. Когда общество наносит удар, мы всегда отвечаем. - -14. Мы строим собственные миры в Киберпространстве. - -15. Среди нулей и единиц, среди битов информации. - -16. Мы строим свое сообщество. Сообщество Киберпанков. - -Кибрпанк! - -Борись за свои права! - -Мы электронные духи, группа свободомыслящих повстанцев. Киберпанки. Мы живем в киберпространстве, мы везде, мы не знаем границ. И это наш манифест. Манифест киберпанка. - diff --git a/public/other/cyberpunk/index.html b/public/other/cyberpunk/index.html deleted file mode 100644 index 63d3c09..0000000 --- a/public/other/cyberpunk/index.html +++ /dev/null @@ -1,19 +0,0 @@ -Манифест киберпанка · /home/NeonXP -

    Манифест киберпанка

    Кристиан Кирчев

    Манифест киберпанка

    Мы электронные духи, группа свободомыслящих повстанцев. Киберпанки. Мы живем в киберпространстве, мы везде, мы не знаем границ. И это наш манифест. Манифест киберпанка.

    I. Киберпанк

    1. Мы те самые, Другие. Технологические крысы, плывущие в океане информации.
    2. Мы - это скромный школьник, сидящий за последней партой в дальнем углу класса.
    3. Мы - это подросток, которого все считают странным.
    4. Мы - это студент, взламывающий компьютерные системы и пытающийся достичь предела своих возможностей.
    5. Мы - это взрослый человек, сидящий на скамейке в парке с лэптопом на коленях и программирующий новую виртуальную реальность.
    6. Нам принадлежат гаражи, напичканные электроникой. Паяльник на рабочем столе и разобранный на части радиоприемник, подвал, в котором стоят компьютеры, жужжат принтеры и гудят модемы - все это тоже наше.
    7. Мы видим реальность в ином свете. Мы видим больше, чем обыкновенные люди. Они видят только то, что снаружи. Мы видим то, что внутри. Реалисты со взглядом романтиков - вот кто мы такие.
    8. Мы странные люди, о которых практически ничего неизвестно. Люди, индульгирующие в своих собственных мыслях, день за днем сидящие за компьютером, ищущие необходимую информацию в сети. Мы редко выходим из дома. Мы делаем это время от времени лишь для того, чтобы сходить в соседнюю лачугу или бар, где мы встречаемся со своими немногочисленными друзьями. Иногда мы выходим из дома, чтобы встретиться с очередным клиентом, или наркодилером… или просто совершить прогулку.
    9. У нас мало друзей, лишь несколько человек, с которыми мы ходим на вечеринки. Всех остальных мы знаем только в сети. Наши настоящие друзья там, на другом конце провода. Мы знаем их по каналам ретрансляции диалогов IRC, по группам новостей и по другим системам, в которых мы работаем.
    10. Нам наплевать на то, что о нас думают другие. Нам наплевать на то, как мы выглядим и что говорят люди в наше отсутствие.
    11. Большинство из нас любит жить скрытно, оставаться в тени и общаться друг с другом лишь по необходимости.
    12. Некоторые из нас любят быть на виду, они любят славу. Их знает весь андеграунд. Их имена на слуху. Но всех нас объединяет одно - все мы Киберпанки.
    13. Общество не понимает нас. Мы выглядим <таинственными> и <сумасшедшими> в глазах обыкновенных людей, живущих в далеке от информации и свободы мысли. Общество не признает нас - общество, живущее, думающее и дышащее одним единственным способом - как все.
    14. Оно запрещает нам думать о том, что мы свободные люди. Свободомыслие запрещено.
    15. У каждого Киберпанка есть индивидуальность, он не марионетка. Киберпанки - это люди, начиная от самых обыкновенных и никому не известных, до гениев-техноманьяков, музыкантов, играющих электронную музыку и исследователей-самоучек.
    16. Киберпанк больше не является жанром художественной литературы. Это уже не субкультура. Киберпанк - это новая отдельная культура, дитя новой эры. Культура, которая объединяет наши взгляды и интересы. Мы составляем единое целое. Мы киберпанки.

    II. Общество

    1. Общество, окружающее нас, связывает друг с другом людей и предметы, превращает их в единую массу и медленно затягивает в зыбучие пески времени.
    2. И хотя в это трудно поверить, всем уже очевидно, что мы живем в больном обществе. Так называемые реформы, которыми повсеместно хвастаются наши правительства, - это лишь незначительные сдвиги, в то время как можно совершать целые прыжки.
    3. Люди боятся нового и неизвестного. Они предпочитают старые, проверенные истины. Они боятся перемен. Они боятся потерять то, что у них уже есть.
    4. Их страх настолько силен, что превратился в оружие. Их страх запрещает свободомыслие. И в этом их главная ошибка.
    5. Люди должны оставить свой страх позади и двинуться вперед. Какой смысл все время держать синицу в руках, если можно поймать журавля. Все, что нужно сделать - это протянуть руки и почувствовать новое; дать свободу помыслам, идеям и словам.
    6. Новые поколения веками воспитывались в духе своих прародителей. Идеалом считается то, чему следует большинство. Индивидуальность забыта. Люди думают одинаково, используя клише, заученные с самого детства. А когда какой-нибудь ребенок отваживается бросить вызов власти, его наказывают и приводят в качестве плохого примера. <Вот что случается с теми, кто выражает свое мнение и игнорирует мнение учителя>.
    7. Наше общество больно и нуждается в лечении. Лекарством является смена системы…

    III. Система

    1. Система. С многовековым прошлым, существующая на принципах, которым нет места в сегодняшнем мире. Система, которая практически не изменилась со времени своего появления.
    2. Это неправильная Система.
    3. Чтобы управлять нами, Система должна обманным путем навязывать свои правила. Правительство хочет, чтобы мы слепо следовали его указаниям. Мы живем в информационных сумерках. Когда люди получают информацию, отличную от информации правительства, они не могут отличить правду от лжи. Поэтому ложь становится правдой - правдой, лежащей в основе всего. Таким образом правители управляют нами при помощи лжи, а обыкновенные люди не могут различить правду и слепо следуют за правительством, полностью доверяя ему.
    4. Мы боремся за свободу информации. Мы боремся за свободу за свободу слова и печати. За свободу выражать наши мысли, не опасаясь преследования Системы.
    5. Даже в самых цивилизованных и <демократических> странах, Система распространяет дезинформацию. Даже в странах, претендующих на звание колыбели свободы слова. Дезинформация - основное оружие Системы. Оружие, которое она успешно использует.
    6. Именно Сеть помогает нам свободно распространять информацию. Сеть, не имеющая границ и не знающая предела.
    7. Все, что принадлежит нам, принадлежит и вам. Все, что принадлежит вам, принадлежит и нам.
    8. Каждый может использовать информацию. Ограничений не существует.
    9. Шифрование информации - это наше оружие. Зашифрованные революционные послания могут беспрепятственно распространятся по Сети, и правительство может только догадываться об их содержании.
    10. Сеть - это наше королевство, в сети мы короли.
    11. Законы. Мир меняется, но законы остаются прежними. Система не меняется, лишь кое-какие детали приводятся в соответствие с новым временем, однако в целом все остается на своих местах.
    12. Нам нужны новые законы. Законы, соответствующие времени, в котором мы живем, и миру, который нас окружает. Не законы, построенные на опыте прошлого. Законы, построенные для сегодняшнего дня, законы, соответствующие дню завтрашнему.

    IV. Видение будущего

    1. Некоторые люди не задумываются над тем, что происходит в мире. Они заботятся только о себе, о своем микрокосмосе.
    2. Такие люди могут видеть только мрачное будущее, будущее их личной жизни, которой они живут в данный момент.
    3. Другие обеспокоены будущими событиями. Их интересует все, что будет происходить в будущем в глобальном масштабе.
    4. Их взгляд на жизнь более оптимистичен. В их глазах будущее выглядит чище и прекраснее. Они могут представить себе человека, ставшего более значительным, и мир, ставший более мудрым.
    5. Мы находимся где-то посередине. Для нас важно то, что происходит сейчас и то, что произойдет завтра.
    6. Наши взгляды устремлены в Сеть. И Сеть разрастается с каждым днем.
    7. Вскоре весь мир будет опутан Сетью: от военных систем до домашних компьютеров.
    8. Но сеть - это колыбель анархии.
    9. Ее нельзя контролировать и в этом ее сила.
    10. Каждый человек будет зависеть от Сети.
    11. Вся информация будет курсировать по сети, запертая в хаосе нулей и единиц.
    12. Тот, кто контролирует Сеть, контролирует информацию.
    13. Мы будем жить в смешении прошлого и настоящего.
    14. Плохое идет от человека, а хорошее идет от технологии.
    15. Сеть будет контролировать маленького человека, а мы будем контролировать Сеть.
    16. Если не будешь контролировать сам, будут контролировать тебя.
    17. Информация - это сила!

    V. Где мы?

    1. Где мы?
    2. Мы все живем в больном мире, где ненависть - это оружие, а свобода - мечта.
    3. Мир развивается слишком медленно. Киберпанку очень трудно жить в вечно недоделанном мире, смотреть на окружающих и видеть как плохо они строят свой мир.
    4. Мы идем вперед, они тянут нас назад. Общество сдерживает нас. Да, оно сдерживает свободу мысли. Своими безжалостными образовательными программами в школах и университетах. Они тренируют в детях одинаковое видение мира. Любые возражения пресекаются и наказываются.
    5. Наши дети обучаются в этой древней и не изменившейся системе. Системе, которая не допускает свободомыслия и требует четкого соблюдения правил…
    6. В каком бы мире мы жили сейчас, если бы люди двигались вперед прыжками, а не ползли.
    7. Киберпанк, тебе очень трудно жить в этом мире.
    8. Кажется, что время остановилось.
    9. Мы оказались в нужном месте, но не в нужное время.
    10. Все вокруг слишком банально, люди не меняются. Как будто общество хочет вернуться в прошлое.
    11. Некоторые люди, пытающиеся найти свой мир, мир Киберпанка, находят его и строят собственными руками. Строят в своих мыслях, в меняющейся реальности. Поэтому они живут в виртуальном мире. В выдуманном мире, находящемся вне пределов вселенной.
    12. Некоторые люди привыкают к реальному миру, такому, какой он есть на самом деле. Они продолжают жить в нем, но они не любят его. У них нет другого выбора, но они верят в то, что мир вырвется из объятий пустоты и двинется вперед.
    13. Все, что мы пытаемся сделать - это изменить ситуацию. Мы пытаемся приспособить сегодняшний мир к нашим нуждам и взглядам. Максимально используем его возможности и не обращаем внимания на всякий хлам. Там, где нам не под силу что-либо изменить, мы можем просто жить, жить как Киберпанки. Не имеет значения то, насколько трудной будет наша жизнь. Когда общество наносит удар, мы всегда отвечаем.
    14. Мы строим собственные миры в Киберпространстве.
    15. Среди нулей и единиц, среди битов информации.
    16. Мы строим свое сообщество. Сообщество Киберпанков.

    Кибрпанк!

    Борись за свои права!

    Мы электронные духи, группа свободомыслящих повстанцев. Киберпанки. Мы живем в киберпространстве, мы везде, мы не знаем границ. И это наш манифест. Манифест киберпанка.

    \ No newline at end of file diff --git a/public/other/geekcode/index.gmi b/public/other/geekcode/index.gmi deleted file mode 100644 index 6b44ee3..0000000 --- a/public/other/geekcode/index.gmi +++ /dev/null @@ -1,9 +0,0 @@ -# GeekCode - -``` - -Version: 3.1 -GCS/CM d- s:+ a C+++$ UL P L+++$ !E- W+++ !N !o K--? !w !O !M !V PS PE Y PGP++ t+ 5 X+ R tv-- b++ DI D+ G+ e h--- r++ y+++ - -``` - diff --git a/public/other/geekcode/index.html b/public/other/geekcode/index.html deleted file mode 100644 index f423ab3..0000000 --- a/public/other/geekcode/index.html +++ /dev/null @@ -1,11 +0,0 @@ -GeekCode · /home/NeonXP -

    GeekCode

    -----BEGIN GEEK CODE BLOCK-----
    -Version: 3.1
    -GCS/CM d- s:+ a C+++$ UL P L+++$ !E- W+++ !N !o K--? !w !O !M !V PS PE Y PGP++ t+ 5 X+ R tv-- b++ DI D+ G+ e h--- r++ y+++
    -------END GEEK CODE BLOCK------
    -
    \ No newline at end of file diff --git a/public/other/index.gmi b/public/other/index.gmi deleted file mode 100644 index 358dd1e..0000000 --- a/public/other/index.gmi +++ /dev/null @@ -1,12 +0,0 @@ - -=> /other/_index 2024-06-08: Другое - - -=> /other/geekcode 2023-12-29: GeekCode - - -=> /other/contacts 2021-01-01: Мои координаты - - -=> /other/cyberpunk 2021-01-01: Манифест киберпанка - diff --git a/public/other/index.html b/public/other/index.html deleted file mode 100644 index 8b8b867..0000000 --- a/public/other/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Другое · /home/NeonXP -

    Другое

    \ No newline at end of file diff --git a/public/other/page/1/index.html b/public/other/page/1/index.html deleted file mode 100644 index a66959b..0000000 --- a/public/other/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/other/ - \ No newline at end of file diff --git a/public/posts/2021/02/13/2021-02-13-jsonnet/index.gmi b/public/posts/2021/02/13/2021-02-13-jsonnet/index.gmi deleted file mode 100644 index a7b80b3..0000000 --- a/public/posts/2021/02/13/2021-02-13-jsonnet/index.gmi +++ /dev/null @@ -1,92 +0,0 @@ -# Jsonnet - -Редко такое бывает, что случайно натыкаешься на какую-то технологию и она вызывает вау-эффект и буквально переворачивает всё верх дном. На днях для меня такой технологией стал Jsonnet[1] от Google. - -=> https://jsonnet.org/ 1: Jsonnet - -Jsonnet logo[1] - -=> /img/jsonnet.svg 1: Jsonnet logo - -В кратце, это надмножество JSON являющееся языком описания шаблонов. Пока звучит не очень круто, да? На деле это офигенный Тьюринг полный функциональный язык, результатом выполнения которого будет сформированый JSON (и не только) документ(или несколько документов[1]. - -=> https://jsonnet.org/learning/getting_started.html#multi) 1: или несколько документов - -Если интересно, рекомендую сразу переходить к туториалу.[1] - -=> https://jsonnet.org/learning/tutorial.html 1: Если интересно, рекомендую сразу переходить к туториалу. - -## Почему же это круто? - -Ну, во-первых, он реально мощный и простой. С его помощью можно формировать документы любой сложности. - -Во-вторых, его можно встроить в свою программу на Go (и не только, но на Go - проще всего[1], и это даст бесплатно мощный DSL для написания очень гибких конфигов. - -=> https://jsonnet.org/ref/bindings.html) 1: и не только, но на Go - проще всего - -В третьих, ну камон, приятно же когда компьютер берет на себя рутинную работу по формированию больших и сложных JSON'ов! - -## Пример - -Накидал простенький пример который формирует конфигурацию пайплайна для гипотетической CI системы: - -``` -local map(arr, predicate) = // определяем функцию map - if std.length(arr) == 0 then - [] - else - [predicate(arr[0])] + map(arr[1:], predicate) // функциональненько! -; -local tasks = [['go1.14', '1.14-alpine'],['go1.15', '1.15-alpine'],['go1.16-RC', '1.16-rc-alpine']]; - -local commands = ['go build', 'go test']; // Общая часть - -{ // Результирующий JSON - pipeline: map(tasks, function (task) { // Вызов map от tasks - name: task[0], - image: "golang:"+task[1], - commands: commands, - }) -} -``` - -Результат: - -``` -{ - "pipeline": [ - { - "commands": [ - "go build", - "go test" - ], - "image": "golang:1.14-alpine", - "name": "go1.14" - }, - { - "commands": [ - "go build", - "go test" - ], - "image": "golang:1.15-alpine", - "name": "go1.15" - }, - { - "commands": [ - "go build", - "go test" - ], - "image": "golang:1.16-rc-alpine", - "name": "go1.16-RC" - } - ] -} -``` - -Круть же! - -Да, на небольшом примере не очень показательно, но даже тут, скажем, при добавлении новой цели сборки будет достаточно слегка подправить массив tasks и автоматически сформируется все остальное, а не копипаст целой секции и ручная правка в нужных местах. - -Я оставил за скобками то, что этот шаблонизатора позволяет формировать не только JSON но и фактически любой другой текстовый формат. И даже из одного скрипта формировать несколько документов разного формата. При этом локальные переменные будут использоваться общие. Теоретически, если упороться, можно одним скриптом сформировать весь /etc на новом сервере. Почему бы и нет?) - -Не знаю смог ли передать ощущение своего восторга, но я охренеть как рад и жду выходных, чтобы с головой нырнуть в эту технологию, которая открывает столько новых интересных перспектив! diff --git a/public/posts/2021/02/13/2021-02-13-jsonnet/index.html b/public/posts/2021/02/13/2021-02-13-jsonnet/index.html deleted file mode 100644 index ff26e10..0000000 --- a/public/posts/2021/02/13/2021-02-13-jsonnet/index.html +++ /dev/null @@ -1,66 +0,0 @@ -Jsonnet · /home/NeonXP -

    Jsonnet

    Редко такое бывает, что случайно натыкаешься на какую-то технологию и она вызывает вау-эффект и буквально переворачивает всё верх дном. На днях для меня такой технологией стал Jsonnet от Google.

    Jsonnet logo

    В кратце, это надмножество JSON являющееся языком описания шаблонов. Пока звучит не очень круто, да? На деле это офигенный Тьюринг полный функциональный язык, результатом выполнения которого будет сформированый JSON (и не только) документ(или несколько документов).

    Если интересно, рекомендую сразу переходить к туториалу.

    Почему же это круто? - -Ссылка на заголовок

    Ну, во-первых, он реально мощный и простой. С его помощью можно формировать документы любой сложности.

    Во-вторых, его можно встроить в свою программу на Go (и не только, но на Go - проще всего), и это даст бесплатно мощный DSL для написания очень гибких конфигов.

    В третьих, ну камон, приятно же когда компьютер берет на себя рутинную работу по формированию больших и сложных JSON’ов!

    Пример - -Ссылка на заголовок

    Накидал простенький пример который формирует конфигурацию пайплайна для гипотетической CI системы:

    local map(arr, predicate) = // определяем функцию map
    -  if std.length(arr) == 0 then
    -    []
    -  else
    -    [predicate(arr[0])] + map(arr[1:], predicate) // функциональненько!
    -;
    -local tasks = [['go1.14', '1.14-alpine'],['go1.15', '1.15-alpine'],['go1.16-RC', '1.16-rc-alpine']];
    -
    -local commands = ['go build', 'go test']; // Общая часть
    -
    -{ // Результирующий JSON
    -  pipeline: map(tasks, function (task) { // Вызов map от tasks
    -    name: task[0],
    -    image: "golang:"+task[1],
    -    commands: commands,
    -  })
    -}
    -

    Результат:

    {
    -   "pipeline": [
    -      {
    -         "commands": [
    -            "go build",
    -            "go test"
    -         ],
    -         "image": "golang:1.14-alpine",
    -         "name": "go1.14"
    -      },
    -      {
    -         "commands": [
    -            "go build",
    -            "go test"
    -         ],
    -         "image": "golang:1.15-alpine",
    -         "name": "go1.15"
    -      },
    -      {
    -         "commands": [
    -            "go build",
    -            "go test"
    -         ],
    -         "image": "golang:1.16-rc-alpine",
    -         "name": "go1.16-RC"
    -      }
    -   ]
    -}
    -

    Круть же!

    Да, на небольшом примере не очень показательно, но даже тут, скажем, при добавлении новой цели сборки будет достаточно слегка подправить массив tasks и автоматически сформируется все остальное, а не копипаст целой секции и ручная правка в нужных местах.

    Я оставил за скобками то, что этот шаблонизатора позволяет формировать не только JSON но и фактически любой другой текстовый формат. И даже из одного скрипта формировать несколько документов разного формата. При этом локальные переменные будут использоваться общие. Теоретически, если упороться, можно одним скриптом сформировать весь /etc на новом сервере. Почему бы и нет?)

    Не знаю смог ли передать ощущение своего восторга, но я охренеть как рад и жду выходных, чтобы с головой нырнуть в эту технологию, которая открывает столько новых интересных перспектив!

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2021/05/13/2021-05-13-digital/index.gmi b/public/posts/2021/05/13/2021-05-13-digital/index.gmi deleted file mode 100644 index eb728f8..0000000 --- a/public/posts/2021/05/13/2021-05-13-digital/index.gmi +++ /dev/null @@ -1,57 +0,0 @@ -# Немного о цифровой гигиене - -## Вступление - -Как раз вступление тут особо и не нужно. Ни для кого не открою америки, что в современном цифровом обществе все мы являемся товаром для интернет-медиа гигантов, того же фейсбука да гугла. Не скажу что это для меня, как личности опасно или вредно, но мне это неприятно. Решил с этим что-то делать. - -## Вводные - -- В интернетах я уже очень давно и много где и как "наследил" своими данными. И с этим уже ничего не поделать. -- У меня в телефоне и на всех компьютерах куча приложений работающих с интернетом, и не только мессенджеры. -- У меня достаточно узкий круг людей с кем бы я хотел быть на связи, и не хочу чтобы мои действия как-то ухудшили или усложнили их жизнь. -- Вопрос анонимности для меня не стоит, я не анонимен и это моё осознанное решение. Я законопослушный человек и прятаться мне не от кого. И да, я знаю что этот тезис стараниями либерах нынче пытаются выставить как глупость, но нет. Глупость - это слушать либерах, а не иметь свою голову на плечах. И контртезис "Гы гы гы, ну раз тебе нечего скрывать - поставь камеру у себя в спальне и ванной" даже комментировать не буду в силу его ущербности. -- Я пользователь техники Apple и с этим уже ничего не поделать, менять целиком экосистему для меня не вариант (это очень дорого, бессмысленно, а местами и невозможно, например, рабочий мак мне поменять не на что). И да, есть наивная надежда что у яблок в плане приватности всё получше чем у ведроидов. Во всяком случае по сравнению со стоком. Гиковские прошивки с вырезанными зондами в расчет не беру, верю что у них совсем всё хорошо. - -## Цели - -1. Уменьшить информационный шум вокруг себя и тем самым улучшить качество жизни. - -2. Уменьшить свой "информационный след" 3. Иметь больше контроля над своими данными, чтобы мои волосы стали мягкими и шелковистыми. - -## Наброски плана - -0. Перейти максимально на собственные ресурсы, которые я контролирую и которые *точно* не сливают ничего налево. - -Примерно так: социалки => https://ru.social/ , GitHub => https://coderepo.ru/ , Облачные диски => локальный NAS Synology и т.д. - -1. Мне надо сократить мессенджеры в идеале до одного, не считая корпоративного рабочего. Тут всё просто - оставляю Telegram, остальные сношу. - -2. Мне надо отказаться от неэтичных социальных сетей, где я не могу полностью контролировать свои данные. - -3. При отказе от социальных сетей чтобы не доставить проблем моим контактам надо оставить "новый адрес" по которому со мной можно связаться и, например, этот пост. Я не хочу чтобы для всех мои действия были прозрачны и понятны, а не "молча удалиться" оставив кого-то в недоумении. - -4. Везде где возможно отключить или заблокировать телеметрию, чтобы как можно меньше моих данных неконтролируемо утекало. Да, полностью не перекрыть, но сократить возможно. - -5. Для связи с "миром" оставить только e-mail как наиболее удобный асинхронный метод коммуникации. - -## Дальнейшие шаги 0. Превратить наброски плана в цельный план. Написать манифест? Возможно. - -1. Подготовить "визитку" с актуальными контактами и объяснением что произошло. Причем как в виде изображения, так и текста. - -2. Вышеуказанную визитку поместить на уже неактуальных для меня местах обитания (инстаграм, вк и проч). Удаляться не хочу. Жалко контент за столько лет, да и пункт 3 предыдущего абзаца. - -3. Удалить "лишние" приложения от вышеуказанных сервисов. - -4. Разлогиниться в этих сервисах и очистить браузеры от них, чтобы исключить треккинг на сторонних сайтах. - -5. ????? 6. PROFIT! - -## Обратная связь - -Очень бы хотелось получить обратную связь по моему плану. Комментарии про то что упустил и предложения улучшений приветствуются в комментариях к посту, в комментариях к телеграм каналу[1], или на почту a.kiryukhin@mail.ru[2] (кстати, стоит наверное и почту перевести к себе? Но пока уровень сервиса врядли смогу адекватный обеспечить) - -=> https://t.me/neonxp 1: телеграм каналу -=> mailto:a.kiryukhin@mail.ru 2: a.kiryukhin@mail.ru - -_UPD:_ Да, я знаю что уже данные так и останутся в чужих руках, но со временем они будут всё больше и больше протухать, а мой "цифровой профиль" терять актуальность. Ведь я не скала, я тоже меняюсь и ухожу от этого профиля. - diff --git a/public/posts/2021/05/13/2021-05-13-digital/index.html b/public/posts/2021/05/13/2021-05-13-digital/index.html deleted file mode 100644 index 04553bd..0000000 --- a/public/posts/2021/05/13/2021-05-13-digital/index.html +++ /dev/null @@ -1,31 +0,0 @@ -Немного о цифровой гигиене · /home/NeonXP -

    Немного о цифровой гигиене

    Илюстрация поста

    Вступление - -Ссылка на заголовок

    Как раз вступление тут особо и не нужно. Ни для кого не открою америки, что в современном цифровом обществе все мы являемся товаром для интернет-медиа гигантов, того же фейсбука да гугла. Не скажу что это для меня, как личности опасно или вредно, но мне это неприятно. Решил с этим что-то делать.

    Вводные - -Ссылка на заголовок

    • В интернетах я уже очень давно и много где и как “наследил” своими данными. И с этим уже ничего не поделать.
    • У меня в телефоне и на всех компьютерах куча приложений работающих с интернетом, и не только мессенджеры.
    • У меня достаточно узкий круг людей с кем бы я хотел быть на связи, и не хочу чтобы мои действия как-то ухудшили или усложнили их жизнь.
    • Вопрос анонимности для меня не стоит, я не анонимен и это моё осознанное решение. Я законопослушный человек и прятаться мне не от кого. И да, я знаю что этот тезис стараниями либерах нынче пытаются выставить как глупость, но нет. Глупость - это слушать либерах, а не иметь свою голову на плечах. И контртезис “Гы гы гы, ну раз тебе нечего скрывать - поставь камеру у себя в спальне и ванной” даже комментировать не буду в силу его ущербности.
    • Я пользователь техники Apple и с этим уже ничего не поделать, менять целиком экосистему для меня не вариант (это очень дорого, бессмысленно, а местами и невозможно, например, рабочий мак мне поменять не на что). И да, есть наивная надежда что у яблок в плане приватности всё получше чем у ведроидов. Во всяком случае по сравнению со стоком. Гиковские прошивки с вырезанными зондами в расчет не беру, верю что у них совсем всё хорошо.

    Цели - -Ссылка на заголовок

    1. Уменьшить информационный шум вокруг себя и тем самым улучшить качество жизни.
    2. Уменьшить свой “информационный след”
    3. Иметь больше контроля над своими данными, чтобы мои волосы стали мягкими и шелковистыми.

    Наброски плана - -Ссылка на заголовок

    1. Перейти максимально на собственные ресурсы, которые я контролирую и которые точно не сливают ничего налево. -Примерно так: социалки => https://ru.social/ , GitHub => https://coderepo.ru/ , Облачные диски => локальный NAS Synology и т.д.
    2. Мне надо сократить мессенджеры в идеале до одного, не считая корпоративного рабочего. Тут всё просто - оставляю Telegram, остальные сношу.
    3. Мне надо отказаться от неэтичных социальных сетей, где я не могу полностью контролировать свои данные.
    4. При отказе от социальных сетей чтобы не доставить проблем моим контактам надо оставить “новый адрес” по которому со мной можно связаться и, например, этот пост. Я не хочу чтобы для всех мои действия были прозрачны и понятны, а не “молча удалиться” оставив кого-то в недоумении.
    5. Везде где возможно отключить или заблокировать телеметрию, чтобы как можно меньше моих данных неконтролируемо утекало. Да, полностью не перекрыть, но сократить возможно.
    6. Для связи с “миром” оставить только e-mail как наиболее удобный асинхронный метод коммуникации.

    Дальнейшие шаги - -Ссылка на заголовок

    1. Превратить наброски плана в цельный план. Написать манифест? Возможно.
    2. Подготовить “визитку” с актуальными контактами и объяснением что произошло. Причем как в виде изображения, так и текста.
    3. Вышеуказанную визитку поместить на уже неактуальных для меня местах обитания (инстаграм, вк и проч). Удаляться не хочу. Жалко контент за столько лет, да и пункт 3 предыдущего абзаца.
    4. Удалить “лишние” приложения от вышеуказанных сервисов.
    5. Разлогиниться в этих сервисах и очистить браузеры от них, чтобы исключить треккинг на сторонних сайтах.
    6. ?????
    7. PROFIT!

    Обратная связь - -Ссылка на заголовок

    Очень бы хотелось получить обратную связь по моему плану. Комментарии про то что упустил и предложения улучшений приветствуются в комментариях к посту, в комментариях к телеграм каналу, или на почту a.kiryukhin@mail.ru (кстати, стоит наверное и почту перевести к себе? Но пока уровень сервиса врядли смогу адекватный обеспечить)

    UPD: Да, я знаю что уже данные так и останутся в чужих руках, но со временем они будут всё больше и больше протухать, а мой “цифровой профиль” терять актуальность. Ведь я не скала, я тоже меняюсь и ухожу от этого профиля.

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2022/05/30/2022-05-30-rebirth/index.gmi b/public/posts/2022/05/30/2022-05-30-rebirth/index.gmi deleted file mode 100644 index 8531711..0000000 --- a/public/posts/2022/05/30/2022-05-30-rebirth/index.gmi +++ /dev/null @@ -1,13 +0,0 @@ -# Возрождение - -Определенно, вести блог это не мое. Учитывая, что последний пост был год назад - sad but true. - -Не буду говорить, что “вот сейчас то уж точно буду вести регулярно”. Нет не буду. - -Но раз в полгода-год, наверное все же буду. - -Из новостей, что не писал в канал, наверное, только парочка: - -1. сейчас всё свободное время пилю свой петпроджект под кодовым названием “Дуб” ;) Пока что выходит ух какая красота. Но об этом как-нибудь в другой раз, как говорится, пол работы не показывают :) 2. в ленивом режиме начали заниматься вопросами улучшения жилищных условий. Давно пора. - -До встречи когда-нибудь потом :) diff --git a/public/posts/2022/05/30/2022-05-30-rebirth/index.html b/public/posts/2022/05/30/2022-05-30-rebirth/index.html deleted file mode 100644 index 52e670b..0000000 --- a/public/posts/2022/05/30/2022-05-30-rebirth/index.html +++ /dev/null @@ -1,27 +0,0 @@ -Возрождение? · /home/NeonXP -

    Возрождение?

    Определенно, вести блог это не мое. Учитывая, что последний пост был год назад - sad but true.

    Не буду говорить, что “вот сейчас то уж точно буду вести регулярно”. Нет не буду.

    Но раз в полгода-год, наверное все же буду.

    Из новостей, что не писал в канал, наверное, только парочка:

    1. сейчас всё свободное время пилю свой петпроджект под кодовым названием “Дуб” ;) Пока что выходит ух какая красота. Но об этом как-нибудь в другой раз, как говорится, пол работы не показывают :)
    2. в ленивом режиме начали заниматься вопросами улучшения жилищных условий. Давно пора.

    До встречи когда-нибудь потом :)

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2022/05/31/2022-05-31-golang-1/index.gmi b/public/posts/2022/05/31/2022-05-31-golang-1/index.gmi deleted file mode 100644 index bc484e3..0000000 --- a/public/posts/2022/05/31/2022-05-31-golang-1/index.gmi +++ /dev/null @@ -1,35 +0,0 @@ -# Golang подборка 1 - -Просто собираю подборку интересных ссылок по гошке на почитать потом. - -Golang links[1] - -=> /img/go.jpg 1: Golang links - -- Extra[1] - Моё. Пакет с разными полезными функциями без дополнительных зависимостей. -=> https://github.com/neonxp/extra 1: Extra - -- Серия видосов про создание игры в стиле Animal Crossing на golang с помощью raylib[1] -- Самописный распределенный типа Postgres[2]. Под капотом raft от hashicorp, boltdb и самое интересное - парсинг SQL -- Рассчет расстояния между двумя Geo точками: - -=> https://www.youtube.com/watch?v=iWp-mCIQgMU&list=PLVotA8ycjnCsy30WQCwVU5RrZkt4lLgY5&index=1 1: Серия видосов про создание игры в стиле Animal Crossing на golang с помощью raylib -=> https://notes.eatonphil.com/distributed-postgres.html 2: Самописный распределенный типа Postgres - -```go -import "math" -... -// https://en.wikipedia.org/wiki/Haversine_formula -func GetDistance(lat1, lon1, lat2, lon2 float64) float64 { - lat1 *= math.Pi / 180 - lon1 *= math.Pi / 180 - lat2 *= math.Pi / 180 - lon2 *= math.Pi / 180 - - return 12742 * math.Asin(math.Sqrt(math.Pow(math.Sin((lat2-lat1)/2), 2)+math.Cos(lat1)*math.Cos(lat2)*math.Pow(math.Sin((lon2-lon1)/2), 2))) -} -``` - -- god[1] - Утилита подгатавливающая демоны из go программы. Для меня ценное - что генерит systemd конфиги. -=> https://github.com/pioz/god 1: god - diff --git a/public/posts/2022/05/31/2022-05-31-golang-1/index.html b/public/posts/2022/05/31/2022-05-31-golang-1/index.html deleted file mode 100644 index 8f0dde2..0000000 --- a/public/posts/2022/05/31/2022-05-31-golang-1/index.html +++ /dev/null @@ -1,27 +0,0 @@ -Golang подборка 1 · /home/NeonXP -

    Golang подборка 1

    Просто собираю подборку интересных ссылок по гошке на почитать потом.

    Golang links

    import "math"
    -...
    -// https://en.wikipedia.org/wiki/Haversine_formula
    -func GetDistance(lat1, lon1, lat2, lon2 float64) float64 {
    - lat1 *= math.Pi / 180
    - lon1 *= math.Pi / 180
    - lat2 *= math.Pi / 180
    - lon2 *= math.Pi / 180
    -
    - return 12742 * math.Asin(math.Sqrt(math.Pow(math.Sin((lat2-lat1)/2), 2)+math.Cos(lat1)*math.Cos(lat2)*math.Pow(math.Sin((lon2-lon1)/2), 2)))
    -}
    -
    • god - Утилита подгатавливающая демоны из go программы. Для меня ценное - что генерит systemd конфиги.

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2023/01/12/2023-01-12-gitrepo/index.gmi b/public/posts/2023/01/12/2023-01-12-gitrepo/index.gmi deleted file mode 100644 index 83949ef..0000000 --- a/public/posts/2023/01/12/2023-01-12-gitrepo/index.gmi +++ /dev/null @@ -1,167 +0,0 @@ -# GitRepo - -# GitRepo.ru - -Сегодня серьезно переделал свой хостинг репозиториев кода[1]: - -=> https://gitrepo.ru/ 1: репозиториев кода - -- Переехал на большой арендованный сервак -- Привел в порядок оркестрацию вокруг сервака с использованием Docker Compose -- Gitea заменил на её форк Forgejo[1] -- Впилил CI/CD на основе Woodpecker CI[2] - -=> https://forgejo.org/ 1: Forgejo -=> https://woodpecker-ci.org/ 2: Woodpecker CI - -Приглашаю пользоваться заместо бездуховного западного github: https://gitrepo.ru/[1] - -=> https://gitrepo.ru/ 1: https://gitrepo.ru/ - -Сервер физически находится в датацентре в Москве у весьма годного провайдера Selectel. - -Тем более, время сейчас неспокойное и неизвестно когда github станет недоступен для РФ, а GitRepo - он вот тут, в нашей стране. - -## Немного про устройство - -Расскажу немного как я организовал себе Ops сервиса. - -У меня на руках `docker-compose.yml` который полностью описывает всю конфигурацию сервака, примерно так: - -```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 -``` - -а рядом лежит `.env` файлик с значениями переменных `${...}`. - -Запускаю деплой я с локального компьютера, предварительно добавив удаленный сервер в контекст докера[1]: - -=> https://docs.docker.com/engine/context/working-with-contexts/ 1: контекст докера - -``` -docker context create gitrepo --docker "host=ssh://gitrepo.ru" # Создаю новый контекст для удаленного сервера - -docker use gitrepo # Все последующие docker команды выполняются на удаленном сервере - -docker use default # Возвращаюсь в локальный контекст -``` - -## Оставшиеся проблемы - -Сейчас так получается, что Caddyfile должен лежать на удаленном сервере, т.к. часть конфига - -```yml -volumes: - - ./Caddyfile:/etc/caddy/Caddyfile -``` - -выполняется в контексте именно удаленного сервера, а значит при его апдейте на локальном серваке приходится делать SCP этого файла на сервак. Такое себе. - -Как это решить - есть интересная идея, но это уже в другой раз. - diff --git a/public/posts/2023/01/12/2023-01-12-gitrepo/index.html b/public/posts/2023/01/12/2023-01-12-gitrepo/index.html deleted file mode 100644 index 6d91773..0000000 --- a/public/posts/2023/01/12/2023-01-12-gitrepo/index.html +++ /dev/null @@ -1,146 +0,0 @@ -GitRepo · /home/NeonXP -

    GitRepo

    GitRepo.ru - -Ссылка на заголовок

    Сегодня серьезно переделал свой хостинг репозиториев кода:

    • Переехал на большой арендованный сервак
    • Привел в порядок оркестрацию вокруг сервака с использованием Docker Compose
    • Gitea заменил на её форк Forgejo
    • Впилил CI/CD на основе Woodpecker CI

    Приглашаю пользоваться заместо бездуховного западного github: https://gitrepo.ru/

    Сервер физически находится в датацентре в Москве у весьма годного провайдера Selectel.

    Тем более, время сейчас неспокойное и неизвестно когда github станет недоступен для РФ, а GitRepo - он вот тут, в нашей стране.

    Немного про устройство - -Ссылка на заголовок

    Расскажу немного как я организовал себе Ops сервиса.

    У меня на руках docker-compose.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
    -

    а рядом лежит .env файлик с значениями переменных ${...}.

    Запускаю деплой я с локального компьютера, предварительно добавив удаленный сервер в контекст докера:

    docker context create gitrepo --docker "host=ssh://gitrepo.ru" # Создаю новый контекст для удаленного сервера
    -
    -docker use gitrepo # Все последующие docker команды выполняются на удаленном сервере
    -
    -docker use default # Возвращаюсь в локальный контекст
    -

    Оставшиеся проблемы - -Ссылка на заголовок

    Сейчас так получается, что Caddyfile должен лежать на удаленном сервере, т.к. часть конфига

    volumes:
    -  - ./Caddyfile:/etc/caddy/Caddyfile
    -

    выполняется в контексте именно удаленного сервера, а значит при его апдейте на локальном серваке приходится делать SCP этого файла на сервак. Такое себе.

    Как это решить - есть интересная идея, но это уже в другой раз.

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2023/05/26/2023-05-26-comments/index.gmi b/public/posts/2023/05/26/2023-05-26-comments/index.gmi deleted file mode 100644 index 8ab4ca0..0000000 --- a/public/posts/2023/05/26/2023-05-26-comments/index.gmi +++ /dev/null @@ -1,17 +0,0 @@ -# Комментарии - -Наконец-то в блоге появились комментарии! Для них используется remark42[1] который установлен тут же, на этом же сервере. - -=> https://remark42.com/ 1: remark42 - -В отличие от всяких Disqus он не следит за пользователями и не передает данные на сторону. А я к этому дерьму параноидально подхожу. Поэтому на данном сайте нет никаких google fonts, не говоря уж о всяких счетчиках и прочем скаме. Проверить можете сами через devtool. - -Вход я сделал только через Telegram (всё равно он у всех есть) или через E-mail, и тому есть причины: - -- E-mail - вечная классика. E-mail был, есть и будет всегда. Причём, что приятно, нулевой вендерлок и полная децентрализация. -- Telegram - просто удобен и есть почти у всех. Но минус, что это сторонний сервис, который когда-нибудь может закончиться. И вообще вендерлок и фу, но наименьшее из зол. -- Сторонние Oauth2 провайдеры - сразу нахрен. Лишние зонды от зарубежных, в основном, компаний и вендерлок. Короче, совсем фу. - -Поэтому, самый топовый для меня способ - E-mail. Ну и на краааайний случай - телега. - -Как-то так :) diff --git a/public/posts/2023/05/26/2023-05-26-comments/index.html b/public/posts/2023/05/26/2023-05-26-comments/index.html deleted file mode 100644 index 329535e..0000000 --- a/public/posts/2023/05/26/2023-05-26-comments/index.html +++ /dev/null @@ -1,21 +0,0 @@ -Комментарии · /home/NeonXP -

    Комментарии

    Наконец-то в блоге появились комментарии! Для них используется remark42 который установлен тут же, на этом же сервере.

    В отличие от всяких Disqus он не следит за пользователями и не передает данные на сторону. А я к этому дерьму параноидально подхожу. Поэтому на данном сайте нет никаких google fonts, не говоря уж о всяких счетчиках и прочем скаме. Проверить можете сами через devtool.

    Вход я сделал только через Telegram (всё равно он у всех есть) или через E-mail, и тому есть причины:

    • E-mail - вечная классика. E-mail был, есть и будет всегда. Причём, что приятно, нулевой вендерлок и полная децентрализация.
    • Telegram - просто удобен и есть почти у всех. Но минус, что это сторонний сервис, который когда-нибудь может закончиться. И вообще вендерлок и фу, но наименьшее из зол.
    • Сторонние Oauth2 провайдеры - сразу нахрен. Лишние зонды от зарубежных, в основном, компаний и вендерлок. Короче, совсем фу.

    Поэтому, самый топовый для меня способ - E-mail. Ну и на краааайний случай - телега.

    Как-то так :)

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2023/05/26/2023-05-26-gist/index.gmi b/public/posts/2023/05/26/2023-05-26-gist/index.gmi deleted file mode 100644 index 6f58c78..0000000 --- a/public/posts/2023/05/26/2023-05-26-gist/index.gmi +++ /dev/null @@ -1,13 +0,0 @@ -# Импортозамещение Gist - -И в догонку к комментариям, запустил на своём серваке свой аналог Gist'ов от GitHub. - -Вот и он: gist.neonxp.ru[1] - -=> https://gist.neonxp.ru/ 1: gist.neonxp.ru - -Пользуйтесь :) - -Другие мои проекты[1] -=> /projects 1: Другие мои проекты - diff --git a/public/posts/2023/05/26/2023-05-26-gist/index.html b/public/posts/2023/05/26/2023-05-26-gist/index.html deleted file mode 100644 index 58c2ee1..0000000 --- a/public/posts/2023/05/26/2023-05-26-gist/index.html +++ /dev/null @@ -1,24 +0,0 @@ -Импортозамещение Gist · /home/NeonXP -
    \ No newline at end of file diff --git a/public/posts/2023/07/24/2023-07-24-tls/index.gmi b/public/posts/2023/07/24/2023-07-24-tls/index.gmi deleted file mode 100644 index 9a83ab2..0000000 --- a/public/posts/2023/07/24/2023-07-24-tls/index.gmi +++ /dev/null @@ -1,40 +0,0 @@ -# Немного мыслей о TLS (HTTPS) в России - -Накопилось немного мыслей относительно того, что может грозить нам (и мне) в связи с трендом на "балканизацию" рунета. - -И самое болезненное место - HTTPS который нынче стандарт де-факто в современных интернетах. А болезненное оно потому, что целиком и полностью контролируется другой стороной нынешного противостояния. Все доверенные удостоверяющие центры принадлежат странам "коллективного запада". Помню, были ещё какие-то китайские, вроде, но с ними был какой-то скандал и не факт что они есть. - -Есть относительно доверенный УЦ от Минцифры[1]. Это здорово и я это всецело поддерживаю. Вот только есть момент. Он не для нас, простых людей, и при попытке его получить видим то, что на скриншоте ниже. А сранный Firefox вообще хочет его внести в черный список, чтобы даже специально его нельзя было установить. В общем, пока его я поставить не могу даже при всём желании. - -=> https://www.gosuslugi.ru/tls 1: доверенный УЦ от Минцифры - -Услуга предоставляется только юридическим лицам[1] - -=> /img/posts/20230724_202627.png 1: Услуга предоставляется только юридическим лицам - -Какие ещё альтернативы есть, если нас вдруг прокинет Let's encrypt? - -1. Не использовать HTTPS вообще. Я же не магазин и у меня нет форм логина, которые требуют шифрования. Так-то оно так, да не так. Браузеры уже сейчас очень косо смотрят на "обычные", не HTTPS сайты, а в дальнейшем, не удивлюсь если перестанут открывать вообще. Так же на HTTP сайтах не работают прикольные браузерные API типа геолокации (наверное, это в каком-то роде даже плюс ;) ). Ну и ещё проблема, что, например, этот сайт без HTTPS вообще не может работать, ибо для доменов зоны .dev насильно включено HSTS и они не могут работать не по HTTPS. Последнее то я решу старым добрым доменом neonxp.ru, но тем не менее. - -2. Самоподписанные сертификаты. Вот это уже более менее похоже на правду! Да, такие сайты надо добавлять в исключения и мороки с сертификатами чуть больше. Но тут та же история с доменами .dev. Для них самоподписаные не катят. Выход - опять таки старый добрый neonxp.ru. - -К чему я всё это? А то что в случае "балканизации" мы остаемся без нормального валидного HTTPS. Для себя я выбрал второй путь, с самоподписанными сертификатами. Чекнуть как работает можно на зеркале блога на https://neonxp.ru . Там я выпустил сам себе сертификат на домен от своего собственного удостоверяющего центра :) А доверять ему или не доверять - дело посетителей сайта. - -Если доверяете мне то вот сертификат моего УЦ[1], а установка такая же как сертификата Минцифры :) - -=> /files/root_ca.crt 1: вот сертификат моего УЦ - -Ну и совсем краткая инструкция как выпустить сертификат для себя: - -1. `openssl genrsa -out root_ca.key 4096` - создание секретного ключа УЦ (должен храниться в безопасности!) 2. `openssl req -x509 -new -key root_ca.key -days 3650 -out root_ca.crt` - создаем сам сертификат УЦ (он НЕ секретный). Я указал срок действия 10 лет, но это потому что я ленивый и не хочу его перегенеривать каждый год. Так делать не советую. - -3. `openssl genrsa -out server.key 4096` - создаем секретный ключ уже для конкретного сайта (и поддоменов) 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` - -В общем, всё. Полученные root_ca.crt (но не root_ca.key!), server.key и server.crt можно вносить в конфигурацию используемого вебсервера. А так же внести root_ca.crt в доверенные для себя. - -Так у меня выглядят сертификат на сайт[1] и сертификат УЦ[2]. - -=> /img/posts/20230724_204209.png 1: сертификат на сайт -=> /img/posts/20230724_204325.png 2: сертификат УЦ - -Есть что накинуть? Внизу теперь есть комментарии: diff --git a/public/posts/2023/07/24/2023-07-24-tls/index.html b/public/posts/2023/07/24/2023-07-24-tls/index.html deleted file mode 100644 index 8d5f918..0000000 --- a/public/posts/2023/07/24/2023-07-24-tls/index.html +++ /dev/null @@ -1,21 +0,0 @@ -Немного мыслей о TLS (HTTPS) в России · /home/NeonXP -

    Немного мыслей о TLS (HTTPS) в России

    Илюстрация поста

    Накопилось немного мыслей относительно того, что может грозить нам (и мне) в связи с трендом на “балканизацию” рунета.

    И самое болезненное место - HTTPS который нынче стандарт де-факто в современных интернетах. А болезненное оно потому, что целиком и полностью контролируется другой стороной нынешного противостояния. Все доверенные удостоверяющие центры принадлежат странам “коллективного запада”. Помню, были ещё какие-то китайские, вроде, но с ними был какой-то скандал и не факт что они есть.

    Есть относительно доверенный УЦ от Минцифры. Это здорово и я это всецело поддерживаю. Вот только есть момент. Он не для нас, простых людей, и при попытке его получить видим то, что на скриншоте ниже. А сранный Firefox вообще хочет его внести в черный список, чтобы даже специально его нельзя было установить. В общем, пока его я поставить не могу даже при всём желании.

    Услуга предоставляется только юридическим лицам

    Какие ещё альтернативы есть, если нас вдруг прокинет Let’s encrypt?

    1. Не использовать HTTPS вообще. Я же не магазин и у меня нет форм логина, которые требуют шифрования. Так-то оно так, да не так. Браузеры уже сейчас очень косо смотрят на “обычные”, не HTTPS сайты, а в дальнейшем, не удивлюсь если перестанут открывать вообще. Так же на HTTP сайтах не работают прикольные браузерные API типа геолокации (наверное, это в каком-то роде даже плюс ;) ). Ну и ещё проблема, что, например, этот сайт без HTTPS вообще не может работать, ибо для доменов зоны .dev насильно включено HSTS и они не могут работать не по HTTPS. Последнее то я решу старым добрым доменом neonxp.ru, но тем не менее.
    2. Самоподписанные сертификаты. Вот это уже более менее похоже на правду! Да, такие сайты надо добавлять в исключения и мороки с сертификатами чуть больше. Но тут та же история с доменами .dev. Для них самоподписаные не катят. Выход - опять таки старый добрый neonxp.ru.

    К чему я всё это? А то что в случае “балканизации” мы остаемся без нормального валидного HTTPS. Для себя я выбрал второй путь, с самоподписанными сертификатами. Чекнуть как работает можно на зеркале блога на https://neonxp.ru . Там я выпустил сам себе сертификат на домен от своего собственного удостоверяющего центра :) А доверять ему или не доверять - дело посетителей сайта.

    Если доверяете мне то вот сертификат моего УЦ, а установка такая же как сертификата Минцифры :)

    Ну и совсем краткая инструкция как выпустить сертификат для себя:

    1. openssl genrsa -out root_ca.key 4096 - создание секретного ключа УЦ (должен храниться в безопасности!)
    2. openssl req -x509 -new -key root_ca.key -days 3650 -out root_ca.crt - создаем сам сертификат УЦ (он НЕ секретный). Я указал срок действия 10 лет, но это потому что я ленивый и не хочу его перегенеривать каждый год. Так делать не советую.
    3. openssl genrsa -out server.key 4096 - создаем секретный ключ уже для конкретного сайта (и поддоменов)
    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

    В общем, всё. Полученные root_ca.crt (но не root_ca.key!), server.key и server.crt можно вносить в конфигурацию используемого вебсервера. А так же внести root_ca.crt в доверенные для себя.

    Так у меня выглядят сертификат на сайт и сертификат УЦ.

    Есть что накинуть? Внизу теперь есть комментарии:

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления/index.gmi b/public/posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления/index.gmi deleted file mode 100644 index 3dd55a1..0000000 --- a/public/posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления/index.gmi +++ /dev/null @@ -1,15 +0,0 @@ -# Переезд и проблемы обновления - -Немного новостей. - -Начну с грустного. Крайне неудачно обновил forgejo на gitrepo.ru. В общем, БД побилась без возможности восстановления. Репозитории я спас, обращайтесь - пришлю архив репозиториев. - -Очень грустно, я был крайне расстроен. Штош, теперь настроил зато постоянные бекапы БД и данных на локальный NAS. Прошу прощения у пользователей, я очень виноват. - -А теперь о негрустном. Всё же решил что мне больше нравится основным домен не .dev, а именно .ru. Времена неспокойные - лучше перестраховаться и сделать ставку именно на национальный домен, а не на международный. К тому же у .dev домена есть неприятная особенность, что он требует обязательно валидного (то есть одобренного западными "партнерами") сертификата. А это не дело, как я уже писал в заметке[1]. - -=> /posts/2023-07-24-tls/ 1: писал в заметке - -Пока что как-то так ¯\_(ツ)_/¯ - -Есть что накинуть? Внизу теперь есть комментарии: diff --git a/public/posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления/index.html b/public/posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления/index.html deleted file mode 100644 index 5c31e3b..0000000 --- a/public/posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления/index.html +++ /dev/null @@ -1,22 +0,0 @@ -Переезд и проблемы обновления · /home/NeonXP -

    Переезд и проблемы обновления

    Илюстрация поста

    Немного новостей.

    Начну с грустного. Крайне неудачно обновил forgejo на gitrepo.ru. В общем, БД побилась без возможности восстановления. Репозитории я спас, обращайтесь - пришлю архив репозиториев.

    Очень грустно, я был крайне расстроен. Штош, теперь настроил зато постоянные бекапы БД и данных на локальный NAS. Прошу прощения у пользователей, я очень виноват.

    А теперь о негрустном. Всё же решил что мне больше нравится основным домен не .dev, а именно .ru. Времена неспокойные - лучше перестраховаться и сделать ставку именно на национальный домен, а не на международный. К тому же у .dev домена есть неприятная особенность, что он требует обязательно валидного (то есть одобренного западными “партнерами”) сертификата. А это не дело, как я уже писал в заметке.

    Пока что как-то так ¯_(ツ)_/¯

    Есть что накинуть? Внизу теперь есть комментарии:

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2024/01/03/2024-01-03-архив/index.gmi b/public/posts/2024/01/03/2024-01-03-архив/index.gmi deleted file mode 100644 index 8ad2768..0000000 --- a/public/posts/2024/01/03/2024-01-03-архив/index.gmi +++ /dev/null @@ -1,9 +0,0 @@ -# Архив - -Покапавшись по вебархиву смог вытащить древние посты с разных моих старых блогов. В основном, кринжовые, конечно, но это моя жизнь, как она была в то время. Так что пусть будут. - -Архив блога[1] - -=> /archive 1: Архив блога - -Есть что накинуть? Внизу теперь есть комментарии: diff --git a/public/posts/2024/01/03/2024-01-03-архив/index.html b/public/posts/2024/01/03/2024-01-03-архив/index.html deleted file mode 100644 index 60b2664..0000000 --- a/public/posts/2024/01/03/2024-01-03-архив/index.html +++ /dev/null @@ -1,17 +0,0 @@ -Архив · /home/NeonXP -

    Архив

    Покапавшись по вебархиву смог вытащить древние посты с разных моих старых блогов. В основном, кринжовые, конечно, но это моя жизнь, как она была в то время. Так что пусть будут.

    Архив блога

    Есть что накинуть? Внизу теперь есть комментарии:

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры/index.gmi b/public/posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры/index.gmi deleted file mode 100644 index ddab996..0000000 --- a/public/posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры/index.gmi +++ /dev/null @@ -1,44 +0,0 @@ -# Конфигурация HTTPS с сертификатом от Минцифры - -Третьего дня потратил достаточно много времени на установку на данном сайте сертификата от Минцифры. - - А поскольку сертификат краткоживущий (90 дней) - заметка мне самому пригодится на будущее. - -Началось всё с того, что я с удивлением обнаружил, что на госуслугах теперь можно выпустить сертификат для домена физлицу. Это меня обрадовало, хотя ранее я приунывал что нет никакой альтернативы простым смертным. Теперь есть. ~~Закрывайте буржуйнет.~~ - -Поехали! - -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 - ``` - -``` -Важно! Нужно сохранить файл ключа neonxp.ru.key в надежном месте. Если он попадет в чужие руки - нужно будет отзывать сертификат и начинать всё заново! -SAN и Wildcard пока не поддерживается, но что имеем - то и имеем. Но по слухам таки будут, как минимум SAN. -``` - -3. Полученный файл csr загружаем там же на госуслуги 4. Ждём не долго (реально недолго, у меня прислали сертификат буквально через несколько минут!) 5. В ответ придёт файл с рандомным названием. Сохраняем его туда, где лежат другие файлы под названием "домен.crt" 6. Скачиваем корневой и промежуточные сертификаты: - - ``` - wget https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer - wget 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 ``` 8. Соединяем свой сертификат и минцифровские в один бандл: - - ``` - 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 ... - -``` -} -``` -``` - -В общем-то, всё. Как настанет время продлевать - я дополню заметку деталями именно продления. Если будут вопросы - пишите, попробуем решить. - -Есть что накинуть? Внизу теперь есть комментарии: diff --git a/public/posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры/index.html b/public/posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры/index.html deleted file mode 100644 index 0c200d6..0000000 --- a/public/posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры/index.html +++ /dev/null @@ -1,34 +0,0 @@ -Конфигурация HTTPS с сертификатом от Минцифры · /home/NeonXP -

    Конфигурация HTTPS с сертификатом от Минцифры

    Илюстрация поста

    Третьего дня потратил достаточно много времени на установку на данном сайте сертификата от Минцифры. -А поскольку сертификат краткоживущий (90 дней) - заметка мне самому пригодится на будущее.

    Началось всё с того, что я с удивлением обнаружил, что на госуслугах теперь можно выпустить сертификат для домена физлицу. -Это меня обрадовало, хотя ранее я приунывал что нет никакой альтернативы простым смертным. Теперь есть. Закрывайте буржуйнет.

    Поехали!

    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
      -
      Важно! Нужно сохранить файл ключа neonxp.ru.key в надежном месте. Если он попадет в чужие руки - нужно будет отзывать сертификат и начинать всё заново! -SAN и Wildcard пока не поддерживается, но что имеем - то и имеем. Но по слухам таки будут, как минимум SAN.
    3. Полученный файл csr загружаем там же на госуслуги
    4. Ждём не долго (реально недолго, у меня прислали сертификат буквально через несколько минут!)
    5. В ответ придёт файл с рандомным названием. Сохраняем его туда, где лежат другие файлы под названием “домен.crt”
    6. Скачиваем корневой и промежуточные сертификаты:
      wget https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer
      -wget 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
      -
    8. Соединяем свой сертификат и минцифровские в один бандл:
      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
      -    ...
      -}
      -

    В общем-то, всё. Как настанет время продлевать - я дополню заметку деталями именно продления. Если будут вопросы - пишите, попробуем решить.

    Есть что накинуть? Внизу теперь есть комментарии:

    Комментарии

    \ No newline at end of file diff --git a/public/posts/2024/06/01/2024-06-01-вам_не_нужны_пуши/index.gmi b/public/posts/2024/06/01/2024-06-01-вам_не_нужны_пуши/index.gmi deleted file mode 100644 index 4c91d70..0000000 --- a/public/posts/2024/06/01/2024-06-01-вам_не_нужны_пуши/index.gmi +++ /dev/null @@ -1,60 +0,0 @@ -# Вам не нужны пуши! - -Я не шучу. Серьёзно. - -С неделю назад меня осенила крайне простая мысль, которая ранее, почему-то, мне не приходила. - -Но сначала, две вводных, или, скажем, тезиса, которые послужили для вывода этой мысли: - -**Тезис №1** - -Меня действительно огорчает количество пушей которые постоянно сыплются мне на телефон. Это вызывает раздражение сразу на нескольких уровнях: - -1. Сам момент их прихода - я автоматически смотрю на телефон, что же пришло 2. Если я игнорирую пуш - он потом висит в шторке вызывая раздражение 3. Очень часто это сранная реклама от какого-нибудь озона или магнит маркета (бывш. KazanExpress) - -Но бывают же и полезные пуши! Например, уведомления от Госуслуг или информация что заказ доставлен ну или сообщения в мессенджерах. - -То есть, как будто, ради вышеуказанных полезных пушей, я должен терпеть и тонну бесполезного говна! - -**Тезис №2** - -Ну и вторая вводная, которая, какмне кажется подтолкнула меня — я всегда любил *простые* и открытые технологии, как древние, типа RSS, e-mail, irc, так и новые, но такие же простые и открытые, как, например, gemini (да, сейчас он на этом сайте сломан, но я его починю на днях, честно!), федиверс и прочие подобные. Кстати, сейчас подумалось, что именно эти качества меня и так сильно влюбили в golang :) - -## Та самая простая мысль - -На стыке двух вышеуказанных тезисов у меня внезапно для себя самого и синтезировалась крайне простая мысль: - -> **Действительно** важные вещи всегда приходят на электропочту, а сообщения в мессенджерах — это не срочно! - -Таким образом, запретив на телефоне вообще все пуши кроме электропочты я избавился от этого угнетающего информационного шума, оставив только полезный сигнал. - --Хей, да на почте же один спам! - скажешь ты мне -На самом деле, уже давно нет. Я лично использую почту mail.ru (в данном случае, это не очень важно и относится к любой) и на ней спама как такового уже давно нет (если думаешь, что это не так, перепроверь, возможно, твои представления устарели). При этом, самое великое в этом то, что почта (на самом деле, не важно, какая именно - mail.ru, yandex или, прости господи, гмейл) предоставляет гибкие фильтры входящей почты. И потратив буквально пару десятков минут можно сформировать правила, чтобы, например, от того же озона пропускались только письма со статусом заказа и больше ничего. - -Вот так, древняя технология обычных, старых-добрых, писем позволяет решить проблему современных назойливых уведомлений! - -При этом, почта не пушит проверять её постоянно! Самое главное её преимущество для меня - это её ассинхронность, в отличие от мессенджеров. Можно отключить от нее уведомления тоже, но завести себе правило, что раз в Н времени выделять время на ее проверку. Самое главное - делать это в *комфортное для себя* время. - -## Так же как и на мессенджеры, кстати! - -Выше я уже сказал, что мессенджеры - это не срочно. Ничего страшного не случится, если я отвечу через час-два-три или вообще вечером. Если будет что-то *действительно* срочное - мне можно и позвонить. Но, к счастью, мне повезло, что моя жизнь достаточно спокойная и *действительно* срочное почти не случается. Отрефлексируй, уважаемый читатель, насколько *действительно* срочные и важные вопросы, которые ты таковыми считаешь и которыми ежедневно дёргают тебя? И ответь себе честно, мир бы разрушился, если бы ты их отложил на комфортное для *себя*, а не других время? - -Такой эксперимент я ставлю на себе уже неделю. Я практически не захожу в мессенджеры, всё действительно важное мне приходит на почту, лишней рекламы я не вижу, нет никакого информационного шума, который буквально стал бичом современности. - -## Вывод за неделю - -Моё внутреннее состояние ощущается как очень спокойное и, главное, комфортное. Я чувствую полный контроль над тем, что и когда я потребляю и нет никакого информационного насилия, как его называет Столяров[1] (хоть мне этот персонаж и кажется чрезвычайно радикальным и оттого отталкивающим, но что-то в его словах таки есть). - -=> http://stolyarov.info/ 1: Столяров - -Считаю, что эксперимент оказался удачным, и я его продолжу! - -## Пишите письма! - -Напомню раз пришлось к слову, пожалуй, свою электропочту: или обе почты абсолютно равноценны, писать можно на любую. Очевидно из поста, что молниеносный ответ я не гарантирую, но, сам факт ответа в обозримое время гарантирован! - -73! - ---- - -А что ты думаешь о таком способе снижения информационного шума, дорогой читатель? Внизу теперь есть комментарии: diff --git a/public/posts/2024/06/01/2024-06-01-вам_не_нужны_пуши/index.html b/public/posts/2024/06/01/2024-06-01-вам_не_нужны_пуши/index.html deleted file mode 100644 index 4f0fcd0..0000000 --- a/public/posts/2024/06/01/2024-06-01-вам_не_нужны_пуши/index.html +++ /dev/null @@ -1,58 +0,0 @@ -Вам не нужны пуши! · /home/NeonXP -

    Вам не нужны пуши!

    Илюстрация поста

    Я не шучу. Серьёзно.

    С неделю назад меня осенила крайне простая мысль, которая ранее, почему-то, мне не приходила.

    Но сначала, две вводных, или, скажем, тезиса, которые послужили для вывода этой мысли:

    Тезис №1

    Меня действительно огорчает количество пушей которые постоянно сыплются мне на телефон. Это вызывает раздражение сразу -на нескольких уровнях:

    1. Сам момент их прихода - я автоматически смотрю на телефон, что же пришло
    2. Если я игнорирую пуш - он потом висит в шторке вызывая раздражение
    3. Очень часто это сранная реклама от какого-нибудь озона или магнит маркета (бывш. KazanExpress)

    Но бывают же и полезные пуши! Например, уведомления от Госуслуг или информация что заказ доставлен ну или -сообщения в мессенджерах.

    То есть, как будто, ради вышеуказанных полезных пушей, я должен терпеть и тонну бесполезного говна!

    Тезис №2

    Ну и вторая вводная, которая, какмне кажется подтолкнула меня — я всегда любил простые и открытые технологии, как -древние, типа RSS, e-mail, irc, так и новые, но такие же простые и открытые, как, например, gemini (да, сейчас он на -этом сайте сломан, но я его починю на днях, честно!), федиверс и прочие подобные. Кстати, сейчас подумалось, что именно -эти качества меня и так сильно влюбили в golang :)

    Та самая простая мысль - -Ссылка на заголовок

    На стыке двух вышеуказанных тезисов у меня внезапно для себя самого и синтезировалась крайне простая мысль:

    Действительно важные вещи всегда приходят на электропочту, а сообщения в мессенджерах — это не срочно!

    Таким образом, запретив на телефоне вообще все пуши кроме электропочты я избавился от этого угнетающего информационного -шума, оставив только полезный сигнал.

    -Хей, да на почте же один спам! - скажешь ты мне

    На самом деле, уже давно нет. Я лично использую почту mail.ru (в данном случае, это не очень важно и относится к любой) -и на ней спама как такового уже давно нет (если думаешь, что это не так, перепроверь, возможно, твои представления -устарели). При этом, самое великое в этом то, что почта (на самом деле, не важно, какая именно - mail.ru, yandex или, -прости господи, гмейл) предоставляет гибкие фильтры входящей почты. И потратив буквально пару десятков минут можно -сформировать правила, чтобы, например, от того же озона пропускались только письма со статусом заказа и больше ничего.

    Вот так, древняя технология обычных, старых-добрых, писем позволяет решить проблему современных назойливых уведомлений!

    При этом, почта не пушит проверять её постоянно! Самое главное её преимущество для меня - это её ассинхронность, в -отличие от мессенджеров. Можно отключить от нее уведомления тоже, но завести себе правило, что раз в Н времени выделять -время на ее проверку. Самое главное - делать это в комфортное для себя время.

    Так же как и на мессенджеры, кстати! - -Ссылка на заголовок

    Выше я уже сказал, что мессенджеры - это не срочно. Ничего страшного не случится, если я отвечу через час-два-три или -вообще вечером. Если будет что-то действительно срочное - мне можно и позвонить. Но, к счастью, мне повезло, что моя -жизнь достаточно спокойная и действительно срочное почти не случается. Отрефлексируй, уважаемый читатель, насколько -действительно срочные и важные вопросы, которые ты таковыми считаешь и которыми ежедневно дёргают тебя? И ответь себе -честно, мир бы разрушился, если бы ты их отложил на комфортное для себя, а не других время?

    Такой эксперимент я ставлю на себе уже неделю. Я практически не захожу в мессенджеры, всё действительно важное мне -приходит на почту, лишней рекламы я не вижу, нет никакого информационного шума, который буквально стал бичом -современности.

    Вывод за неделю - -Ссылка на заголовок

    Моё внутреннее состояние ощущается как очень спокойное и, главное, комфортное. Я чувствую полный контроль над тем, что -и когда я потребляю и нет никакого информационного насилия, как его называет Столяров -(хоть мне этот персонаж и кажется чрезвычайно радикальным и оттого отталкивающим, но что-то в его словах таки есть).

    Считаю, что эксперимент оказался удачным, и я его продолжу!

    Пишите письма! - -Ссылка на заголовок

    Напомню раз пришлось к слову, пожалуй, свою электропочту: i@neonxp.ru или a.kiryukhin@mail.ru обе почты абсолютно -равноценны, писать можно на любую. Очевидно из поста, что молниеносный ответ я не гарантирую, но, сам факт ответа в -обозримое время гарантирован!

    73!


    А что ты думаешь о таком способе снижения информационного шума, дорогой читатель? Внизу теперь есть комментарии:

    Комментарии

    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/posts/2024/06/02/2024-06-02-книжные_рекомендации_1/index.gmi b/public/posts/2024/06/02/2024-06-02-книжные_рекомендации_1/index.gmi deleted file mode 100644 index bdcc5c8..0000000 --- a/public/posts/2024/06/02/2024-06-02-книжные_рекомендации_1/index.gmi +++ /dev/null @@ -1,13 +0,0 @@ -# Книжные рекомендации 1 - -Подумалось, почему бы не рекомендовать понравившиеся мне книги. - -В прошлый раз, ещё в VK рекомендовал[1] Азимовский цикл "Основание". А в этот раз рекомендую цикл фантастики Андре Нортона "Королева Солнца". - -=> https://vk.com/wall-174034751_45 1: в VK рекомендовал - -Если без спойлеров — цикл описывает приключения помощника супер-карго Дейла на космическом корабле вольных торговцев "Королева Солнца". Читается легко и увлекательно. Книги небольшие, проглатываются за пару часов. - -Скачать[1] -=> /books/andre_norton-queen_of_sun.zip 1: Скачать - diff --git a/public/posts/2024/06/02/2024-06-02-книжные_рекомендации_1/index.html b/public/posts/2024/06/02/2024-06-02-книжные_рекомендации_1/index.html deleted file mode 100644 index e1143c1..0000000 --- a/public/posts/2024/06/02/2024-06-02-книжные_рекомендации_1/index.html +++ /dev/null @@ -1,24 +0,0 @@ -Книжные рекомендации 1 · /home/NeonXP -

    Книжные рекомендации 1

    Илюстрация поста

    Подумалось, почему бы не рекомендовать понравившиеся мне книги.

    В прошлый раз, ещё в VK рекомендовал Азимовский цикл “Основание”. А в этот раз -рекомендую цикл фантастики Андре Нортона “Королева Солнца”.

    Если без спойлеров — цикл описывает приключения помощника супер-карго Дейла на космическом корабле вольных торговцев -“Королева Солнца”. Читается легко и увлекательно. Книги небольшие, проглатываются за пару часов.

    Скачать

    Комментарии

    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/posts/index.gmi b/public/posts/index.gmi deleted file mode 100644 index 7ffb7a2..0000000 --- a/public/posts/index.gmi +++ /dev/null @@ -1,39 +0,0 @@ - -=> /posts/2024/06/02/2024-06-02-книжные_рекомендации_1 2024-06-02: Книжные рекомендации 1 - - -=> /posts/2024/06/01/2024-06-01-вам_не_нужны_пуши 2024-06-01: Вам не нужны пуши! - - -=> /posts/2024/02/21/2024-02-21-конфигурация_https_с_сертификатом_от_минцифры 2024-02-21: Конфигурация HTTPS с сертификатом от Минцифры - - -=> /posts/2024/01/03/2024-01-03-архив 2024-01-03: Архив - - -=> /posts/2023/12/29/2023-12-29-переезд-и-проблемы-обновления 2023-12-29: Переезд и проблемы обновления - - -=> /posts/2023/07/24/2023-07-24-tls 2023-07-24: Немного мыслей о TLS (HTTPS) в России - - -=> /posts/2023/05/26/2023-05-26-gist 2023-05-26: Импортозамещение Gist - - -=> /posts/2023/05/26/2023-05-26-comments 2023-05-26: Комментарии - - -=> /posts/2023/01/12/2023-01-12-gitrepo 2023-01-12: GitRepo - - -=> /posts/2022/05/31/2022-05-31-golang-1 2022-05-31: Golang подборка 1 - - -=> /posts/2022/05/30/2022-05-30-rebirth 2022-05-30: Возрождение? - - -=> /posts/2021/05/13/2021-05-13-digital 2021-05-13: Немного о цифровой гигиене - - -=> /posts/2021/02/13/2021-02-13-jsonnet 2021-02-13: Jsonnet - diff --git a/public/posts/index.html b/public/posts/index.html deleted file mode 100644 index 7fd4800..0000000 --- a/public/posts/index.html +++ /dev/null @@ -1,17 +0,0 @@ -Статьи · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/posts/page/1/index.html b/public/posts/page/1/index.html deleted file mode 100644 index 8eca4e4..0000000 --- a/public/posts/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/posts/ - \ No newline at end of file diff --git a/public/posts/page/2/index.html b/public/posts/page/2/index.html deleted file mode 100644 index 63008a7..0000000 --- a/public/posts/page/2/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Статьи · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/projects/_index/index.gmi b/public/projects/_index/index.gmi deleted file mode 100644 index 68b52bf..0000000 --- a/public/projects/_index/index.gmi +++ /dev/null @@ -1,2 +0,0 @@ -# Проекты - diff --git a/public/projects/gist/index.gmi b/public/projects/gist/index.gmi deleted file mode 100644 index 5a5745f..0000000 --- a/public/projects/gist/index.gmi +++ /dev/null @@ -1,11 +0,0 @@ -# Gist - -gist.neonxp.ru[1] — импортозамещение Gist'а от GitHub. - -=> https://gist.neonxp.ru 1: gist.neonxp.ru - -Регистрация свободная. - -Работает на OpenGist[1] -=> https://github.com/thomiceli/opengist 1: OpenGist - diff --git a/public/projects/gitrepo/index.gmi b/public/projects/gitrepo/index.gmi deleted file mode 100644 index 562df4b..0000000 --- a/public/projects/gitrepo/index.gmi +++ /dev/null @@ -1,13 +0,0 @@ -# GitRepo - -GitRepo.ru[1] — импортозамещение GitHub'а. - -=> https://gitrepo.ru 1: GitRepo.ru - -Регистрация свободная. Доступен CI/CD - ci.GitRepo.ru[1] - -=> https://ci.gitrepo.ru/ 1: ci.GitRepo.ru - -Работает на форке Gitea - Forgejo[1] -=> https://forgejo.org/ 1: Forgejo - diff --git a/public/projects/index.gmi b/public/projects/index.gmi deleted file mode 100644 index 72be02f..0000000 --- a/public/projects/index.gmi +++ /dev/null @@ -1,15 +0,0 @@ - -=> /projects/_index 2023-12-29: Проекты - - -=> /projects/gist 2023-12-29: Gist - - -=> /projects/gitrepo 2023-12-29: GitRepo - - -=> /projects/lines 2023-12-29: Игра Цветные линии - - -=> /projects/tinynas 2023-12-29: TinyNAS - diff --git a/public/projects/index.html b/public/projects/index.html deleted file mode 100644 index 9cbbc19..0000000 --- a/public/projects/index.html +++ /dev/null @@ -1,11 +0,0 @@ -Проекты · /home/NeonXP -

    Проекты

    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/projects/lines/index.gmi b/public/projects/lines/index.gmi deleted file mode 100644 index d856e42..0000000 --- a/public/projects/lines/index.gmi +++ /dev/null @@ -1,14 +0,0 @@ -# Игра Цветные линии - -Старая добрая игра в Цветные линии. - -Цель - ставить шарики в линии. Линии (горизонтальные, вертикальные, диагональные) длиной 5 или более шариков сгорают. - -Ссылка на игру[1] - -=> https://neonxp.ru/games/lines/ 1: Ссылка на игру - -Написано на Golang, собрано в WASM. - -Исходники выложу позже. - diff --git a/public/projects/page/1/index.html b/public/projects/page/1/index.html deleted file mode 100644 index 0175c68..0000000 --- a/public/projects/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/projects/ - \ No newline at end of file diff --git a/public/projects/tinynas/index.gmi b/public/projects/tinynas/index.gmi deleted file mode 100644 index f87c735..0000000 --- a/public/projects/tinynas/index.gmi +++ /dev/null @@ -1,10 +0,0 @@ -# TinyNAS - -Дистрибутив софта в виде docker-compose настраивающий небольшой домашний NAS: - -gitrepo.ru/neonxp/tinynas[1] - -=> https://gitrepo.ru/neonxp/tinynas 1: gitrepo.ru/neonxp/tinynas - -Развернул на домашней малинке и доволен как слон. - diff --git a/public/tags/2gis/index.html b/public/tags/2gis/index.html deleted file mode 100644 index 5d503a8..0000000 --- a/public/tags/2gis/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: 2gis · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/2gis/page/1/index.html b/public/tags/2gis/page/1/index.html deleted file mode 100644 index 2c93a99..0000000 --- a/public/tags/2gis/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/2gis/ - \ No newline at end of file diff --git a/public/tags/2гис/index.html b/public/tags/2гис/index.html deleted file mode 100644 index 580b9c9..0000000 --- a/public/tags/2гис/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: 2гис · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/2гис/page/1/index.html b/public/tags/2гис/page/1/index.html deleted file mode 100644 index 661a68a..0000000 --- a/public/tags/2гис/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/2%D0%B3%D0%B8%D1%81/ - \ No newline at end of file diff --git a/public/tags/dozor/index.html b/public/tags/dozor/index.html deleted file mode 100644 index c3f6eab..0000000 --- a/public/tags/dozor/index.html +++ /dev/null @@ -1,9 +0,0 @@ -Тэг: DozoR · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/dozor/page/1/index.html b/public/tags/dozor/page/1/index.html deleted file mode 100644 index d948fc4..0000000 --- a/public/tags/dozor/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/dozor/ - \ No newline at end of file diff --git a/public/tags/go/index.html b/public/tags/go/index.html deleted file mode 100644 index 7f44496..0000000 --- a/public/tags/go/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Go · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/go/page/1/index.html b/public/tags/go/page/1/index.html deleted file mode 100644 index 6fd0afd..0000000 --- a/public/tags/go/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/go/ - \ No newline at end of file diff --git a/public/tags/index.html b/public/tags/index.html deleted file mode 100644 index 3d76aa1..0000000 --- a/public/tags/index.html +++ /dev/null @@ -1,26 +0,0 @@ -Тэги · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/it/index.html b/public/tags/it/index.html deleted file mode 100644 index 808d82c..0000000 --- a/public/tags/it/index.html +++ /dev/null @@ -1,17 +0,0 @@ -Тэг: IT · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/it/page/1/index.html b/public/tags/it/page/1/index.html deleted file mode 100644 index e2f32ba..0000000 --- a/public/tags/it/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/it/ - \ No newline at end of file diff --git a/public/tags/it/page/2/index.html b/public/tags/it/page/2/index.html deleted file mode 100644 index 9356c7a..0000000 --- a/public/tags/it/page/2/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: IT · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/wine/index.html b/public/tags/wine/index.html deleted file mode 100644 index 8d54447..0000000 --- a/public/tags/wine/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Wine · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/wine/page/1/index.html b/public/tags/wine/page/1/index.html deleted file mode 100644 index 73a127a..0000000 --- a/public/tags/wine/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/wine/ - \ No newline at end of file diff --git a/public/tags/блог/index.html b/public/tags/блог/index.html deleted file mode 100644 index 449fc06..0000000 --- a/public/tags/блог/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Тэг: Блог · /home/NeonXP -

    Тэг: Блог

    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/блог/page/1/index.html b/public/tags/блог/page/1/index.html deleted file mode 100644 index 451221a..0000000 --- a/public/tags/блог/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%B1%D0%BB%D0%BE%D0%B3/ - \ No newline at end of file diff --git a/public/tags/жизнь/index.html b/public/tags/жизнь/index.html deleted file mode 100644 index 30389d9..0000000 --- a/public/tags/жизнь/index.html +++ /dev/null @@ -1,14 +0,0 @@ -Тэг: Жизнь · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/жизнь/page/1/index.html b/public/tags/жизнь/page/1/index.html deleted file mode 100644 index cb086ed..0000000 --- a/public/tags/жизнь/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%B6%D0%B8%D0%B7%D0%BD%D1%8C/ - \ No newline at end of file diff --git a/public/tags/заметки/index.html b/public/tags/заметки/index.html deleted file mode 100644 index 9a8e73a..0000000 --- a/public/tags/заметки/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Заметки · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/заметки/page/1/index.html b/public/tags/заметки/page/1/index.html deleted file mode 100644 index 668b033..0000000 --- a/public/tags/заметки/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%B7%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D0%B8/ - \ No newline at end of file diff --git a/public/tags/из-livejournal/index.html b/public/tags/из-livejournal/index.html deleted file mode 100644 index 7bf9622..0000000 --- a/public/tags/из-livejournal/index.html +++ /dev/null @@ -1,13 +0,0 @@ -Тэг: Из Livejournal · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/из-livejournal/page/1/index.html b/public/tags/из-livejournal/page/1/index.html deleted file mode 100644 index 723c0c7..0000000 --- a/public/tags/из-livejournal/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%B8%D0%B7-livejournal/ - \ No newline at end of file diff --git a/public/tags/книги/index.html b/public/tags/книги/index.html deleted file mode 100644 index 39e66a9..0000000 --- a/public/tags/книги/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Книги · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/книги/index.xml b/public/tags/книги/index.xml deleted file mode 100644 index cf78cbc..0000000 --- a/public/tags/книги/index.xml +++ /dev/null @@ -1,4 +0,0 @@ -Книги on /home/NeonXPhttp://neonxp.ru/tags/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8/Блог NeonXPHugoruSun, 02 Jun 2024 01:48:16 +0300Книжные рекомендации 1http://neonxp.ru/posts/2024/06/02/2024-06-02-%D0%BA%D0%BD%D0%B8%D0%B6%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8_1/Sun, 02 Jun 2024 01:48:16 +0300http://neonxp.ru/posts/2024/06/02/2024-06-02-%D0%BA%D0%BD%D0%B8%D0%B6%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8_1/Подумалось, почему бы не рекомендовать понравившиеся мне книги. -В прошлый раз, ещё в VK рекомендовал Азимовский цикл &ldquo;Основание&rdquo;. А в этот раз рекомендую цикл фантастики Андре Нортона &ldquo;Королева Солнца&rdquo;. -Если без спойлеров — цикл описывает приключения помощника супер-карго Дейла на космическом корабле вольных торговцев &ldquo;Королева Солнца&rdquo;. Читается легко и увлекательно. Книги небольшие, проглатываются за пару часов. -Скачать \ No newline at end of file diff --git a/public/tags/книги/page/1/index.html b/public/tags/книги/page/1/index.html deleted file mode 100644 index c117e79..0000000 --- a/public/tags/книги/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8/ - \ No newline at end of file diff --git a/public/tags/моё/index.html b/public/tags/моё/index.html deleted file mode 100644 index 4fb643f..0000000 --- a/public/tags/моё/index.html +++ /dev/null @@ -1,9 +0,0 @@ -Тэг: Моё · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/моё/page/1/index.html b/public/tags/моё/page/1/index.html deleted file mode 100644 index 2262837..0000000 --- a/public/tags/моё/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%BC%D0%BE%D1%91/ - \ No newline at end of file diff --git a/public/tags/мысли/index.html b/public/tags/мысли/index.html deleted file mode 100644 index 2060359..0000000 --- a/public/tags/мысли/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Мысли · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/мысли/page/1/index.html b/public/tags/мысли/page/1/index.html deleted file mode 100644 index 3850628..0000000 --- a/public/tags/мысли/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%BC%D1%8B%D1%81%D0%BB%D0%B8/ - \ No newline at end of file diff --git a/public/tags/отдых/index.html b/public/tags/отдых/index.html deleted file mode 100644 index d46ac90..0000000 --- a/public/tags/отдых/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Отдых · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/отдых/page/1/index.html b/public/tags/отдых/page/1/index.html deleted file mode 100644 index 03f8240..0000000 --- a/public/tags/отдых/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%BE%D1%82%D0%B4%D1%8B%D1%85/ - \ No newline at end of file diff --git a/public/tags/погода/index.html b/public/tags/погода/index.html deleted file mode 100644 index 1f52e9f..0000000 --- a/public/tags/погода/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Погода · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/погода/page/1/index.html b/public/tags/погода/page/1/index.html deleted file mode 100644 index 16088e1..0000000 --- a/public/tags/погода/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0/ - \ No newline at end of file diff --git a/public/tags/работа/index.html b/public/tags/работа/index.html deleted file mode 100644 index a51788d..0000000 --- a/public/tags/работа/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Работа · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/работа/page/1/index.html b/public/tags/работа/page/1/index.html deleted file mode 100644 index 70adf4d..0000000 --- a/public/tags/работа/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0/ - \ No newline at end of file diff --git a/public/tags/разное/index.html b/public/tags/разное/index.html deleted file mode 100644 index 9a3d5a8..0000000 --- a/public/tags/разное/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Разное · /home/NeonXP -

    Тэг: Разное

    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/разное/page/1/index.html b/public/tags/разное/page/1/index.html deleted file mode 100644 index 01e6153..0000000 --- a/public/tags/разное/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D1%80%D0%B0%D0%B7%D0%BD%D0%BE%D0%B5/ - \ No newline at end of file diff --git a/public/tags/убежище-параноика/index.html b/public/tags/убежище-параноика/index.html deleted file mode 100644 index 8931001..0000000 --- a/public/tags/убежище-параноика/index.html +++ /dev/null @@ -1,13 +0,0 @@ -Тэг: Убежище Параноика · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/убежище-параноика/page/1/index.html b/public/tags/убежище-параноика/page/1/index.html deleted file mode 100644 index 71507f3..0000000 --- a/public/tags/убежище-параноика/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D1%83%D0%B1%D0%B5%D0%B6%D0%B8%D1%89%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BD%D0%BE%D0%B8%D0%BA%D0%B0/ - \ No newline at end of file diff --git a/public/tags/фантастика/index.html b/public/tags/фантастика/index.html deleted file mode 100644 index f3f9bd9..0000000 --- a/public/tags/фантастика/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Тэг: Фантастика · /home/NeonXP -
    © -2007 - -2024 -/home/NeonXP
    \ No newline at end of file diff --git a/public/tags/фантастика/index.xml b/public/tags/фантастика/index.xml deleted file mode 100644 index 0fde307..0000000 --- a/public/tags/фантастика/index.xml +++ /dev/null @@ -1,4 +0,0 @@ -Фантастика on /home/NeonXPhttp://neonxp.ru/tags/%D1%84%D0%B0%D0%BD%D1%82%D0%B0%D1%81%D1%82%D0%B8%D0%BA%D0%B0/Блог NeonXPHugoruSun, 02 Jun 2024 01:48:16 +0300Книжные рекомендации 1http://neonxp.ru/posts/2024/06/02/2024-06-02-%D0%BA%D0%BD%D0%B8%D0%B6%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8_1/Sun, 02 Jun 2024 01:48:16 +0300http://neonxp.ru/posts/2024/06/02/2024-06-02-%D0%BA%D0%BD%D0%B8%D0%B6%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8_1/Подумалось, почему бы не рекомендовать понравившиеся мне книги. -В прошлый раз, ещё в VK рекомендовал Азимовский цикл &ldquo;Основание&rdquo;. А в этот раз рекомендую цикл фантастики Андре Нортона &ldquo;Королева Солнца&rdquo;. -Если без спойлеров — цикл описывает приключения помощника супер-карго Дейла на космическом корабле вольных торговцев &ldquo;Королева Солнца&rdquo;. Читается легко и увлекательно. Книги небольшие, проглатываются за пару часов. -Скачать \ No newline at end of file diff --git a/public/tags/фантастика/page/1/index.html b/public/tags/фантастика/page/1/index.html deleted file mode 100644 index 7cfb177..0000000 --- a/public/tags/фантастика/page/1/index.html +++ /dev/null @@ -1,2 +0,0 @@ -http://neonxp.ru/tags/%D1%84%D0%B0%D0%BD%D1%82%D0%B0%D1%81%D1%82%D0%B8%D0%BA%D0%B0/ - \ No newline at end of file diff --git a/static/files/remark.css b/static/files/remark.css deleted file mode 100644 index ed41e02..0000000 --- a/static/files/remark.css +++ /dev/null @@ -1,3005 +0,0 @@ -:root { - --color0: #0f172a; - --color8: #262626; - --color22: #2d2d2c; - --color24: #313133; - --color7: #333; - --color23: #393734; - --color18: #383838; - --color19: #404040; - --color36: #575757; - --color34: #555; - --color37: #586069; - --color14: #6a6a6a; - --color10: #777; - --color13: #888; - --color11: #969696; - --color32: #a6a6a6; - --color1: #aaa; - --color35: #d1d5db; - --color20: #ddd; - --color46: rgba(27, 31, 35, .15); - --color45: rgba(0, 0, 0, .1); - --color41: #efefef; - --color5: #eee; - --color44: hsla(0, 0%, 100%, .3); - --color6: #fff; - --color3: #e2efef; - --color4: #edf6f7; - --color16: #e2e8f0; - --color31: #cbd5e1; - --color21: #f1f5f9; - --color29: #0e7e9d; - --color9: #0aa; - --color15: #099; - --color33: #06c5c5; - --color40: #9cdddb; - --color43: #b7dddd; - --color42: #c6efef; - --color48: rgba(37, 156, 154, .6); - --color47: rgba(37, 156, 154, .4); - --color28: #672323; - --color25: #9a0000; - --color38: #ef0000; - --color27: #f98989; - --color26: #ffd7d7; - --color39: #6d4b8d; - --color30: 204, 6, 6; - --color12: 37, 158, 6; - --chroma-bg: rgba(0, 0, 0, .05); - --chroma-base: #586e75; - --chroma-c: #7d7d7d; - --chroma-01: #589000; - --chroma-02: #cb4b16; - --chroma-03: #268bd2; - --chroma-04: #2aa198; - --chroma-05: #859900; - --chroma-06: #d33682; - --chroma-07: #00aee2; - --primary-color: 0, 170, 170; - --primary-brighter-color: 0, 153, 153; - --primary-darker-color: 0, 102, 102; - --primary-text-color: 38, 38, 38; - --secondary-text-color: 100, 116, 139; - --secondary-darker-text-color: 150, 150, 150; - --primary-background-color: 255, 255, 255; - --black-color: 0, 0, 0; - --white-color: 255, 255, 255; - --error-color: #b91c1c; - --error-background: rgba(255, 70, 111, .169); - --line-color: var(--color16); - --line-brighter-color: var(--color31); - --text-color: var(--black-color); - --transparent: transparent -} - -:root .dark { - --line-color: var(--color36); - --primary-color: 0, 153, 153; - --primary-brighter-color: 0, 170, 170; - --primary-text-color: 241, 245, 249; - --primary-background-color: 38, 38, 38; - --secondary-text-color: 209, 213, 219; - --error-color: #ffa0a0; - --line-brighter-color: var(--color11); - --text-color: var(--white-color) -} - -.root { - position: relative -} - -.root::-moz-selection { - background: var(--color42) -} - -.root::selection { - background: var(--color42) -} - -.root_user-info { - position: static -} - -.root__copyright { - font-size: 12px; - margin: 48px 0 0; - text-align: right -} - -.root__input { - margin-top: 4px -} - -.root__preloader { - left: 0; - margin: 0 auto; - position: absolute; - right: 0 -} - -.root__pinned-comment:last-child { - border-bottom: 0; - margin-bottom: 0; - padding-bottom: 0 -} - -.root__pinned-comments { - border-radius: 2px; - margin-top: 20px; - padding: 0 12px 12px -} - -.root__thread:last-child { - margin-bottom: -24px -} - -.root__threads { - margin-top: 4px -} - -.root_theme_dark, -.root_theme_dark a { - color: var(--color20) -} - -.root_theme_dark a:hover { - color: var(--color6) -} - -.root_theme_dark a:active, -.root_theme_dark a:visited { - color: var(--color39) -} - -.root_theme_dark .root__copyright, -.root_theme_dark .root__copyright-link { - color: var(--color1) -} - -.root_theme_dark .root__pinned-comment { - border-bottom-color: var(--color18) -} - -.root_theme_dark .root__pinned-comments { - background: var(--color19) -} - -.root_theme_light { - color: var(--color0) -} - -.root_theme_light .root__copyright, -.root_theme_light .root__copyright-link { - color: var(--color1) -} - -.root_theme_light .root__pinned-comment { - border-bottom-color: var(--color3) -} - -.root_theme_light .root__pinned-comments { - background: var(--color4) -} - -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - box-sizing: border-box; - color: rgb(var(--primary-text-color)); - font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif; - font-size: 14px; - margin: 0; - padding: 6px -} - -body.dark { - background-color: rgb(33, 33, 33) !important; -} - -button, -input, -select, -textarea { - color: inherit; - font-family: inherit; - font-size: inherit -} - -button { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background: transparent none repeat 0 0/auto auto padding-box border-box scroll; - background: initial; - border: 0; - cursor: pointer; - margin: 0; - padding: 0; - transition-duration: .15s; - transition-property: color, background, border-color; - transition-timing-function: linear -} - -#remark42 { - height: 100% -} - -.preloader, -.preloader:after, -.preloader:before { - -webkit-animation-duration: 1.8s; - animation-duration: 1.8s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-name: bouncing; - animation-name: bouncing; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - border-radius: 50%; - height: 10px; - text-align: left; - width: 10px -} - -.preloader { - -webkit-animation-delay: -.16s; - animation-delay: -.16s; - color: #fff; - color: var(--color6, #fff); - position: relative; - transform: translate3d(0, -10px, 0) -} - -.preloader:after, -.preloader:before { - content: ""; - position: absolute; - top: 0 -} - -.preloader:before { - -webkit-animation-delay: -.32s; - animation-delay: -.32s; - transform: translate3d(-15px, 0, 0) -} - -.preloader:after { - transform: translate3d(15px, 0, 0) -} - -.preloader_view_iframe { - color: #888; - color: var(--color13, #888); - margin: 0 auto -} - -:focus:not(.focus-visible):not(.button) { - outline: none -} - -@-webkit-keyframes bouncing { - - 0%, - 80%, - to { - box-shadow: 0 10px 0 -10px - } - - 40% { - box-shadow: 0 10px 0 0 - } -} - -@keyframes bouncing { - - 0%, - 80%, - to { - box-shadow: 0 10px 0 -10px - } - - 40% { - box-shadow: 0 10px 0 0 - } -} - -.C_A { - align-items: center; - background-color: #0aa; - background-color: rgb(var(--primary-color)); - border: 1px solid transparent; - border-radius: 4px; - box-sizing: border-box; - color: #fff; - color: rgb(var(--white-color)); - cursor: pointer; - display: inline-flex; - font-family: inherit; - font-size: 16px; - font-weight: 700; - justify-content: center; - margin: 0; - padding: 7px 12px; - position: relative; - white-space: nowrap; - width: 100% -} - -.C_A:hover { - background-color: #099; - background-color: rgb(var(--primary-brighter-color)) -} - -.C_A:focus { - box-shadow: 0 0 0 2px rgba(0, 170, 170, .4); - box-shadow: 0 0 0 2px rgba(var(--primary-color), .4); - outline: none -} - -.C_A:disabled { - background-color: #0aa; - background-color: var(--color9); - cursor: default; - opacity: .6 -} - -.C_B { - align-items: center; - display: flex; - justify-content: center; - margin-left: 12px; - margin-right: -12px; - padding: 0 10px; - position: relative -} - -.C_B:before { - border-left: 1px solid hsla(0, 0%, 100%, .2); - border-left: 1px solid rgba(var(--white-color), .2); - content: ""; - height: 36px; - left: 0; - position: absolute -} - -.C_C:hover { - background-color: #0aa; - background-color: rgb(var(--primary-color)) -} - -.C_D { - font-size: 12px; - height: 28px; - text-transform: uppercase -} - -.C_E { - font-size: 14px -} - -.C_F { - background-color: rgba(0, 170, 170, .1); - background-color: rgba(var(--primary-color), .1) -} - -.C_F, -.C_F:hover { - color: #0aa; - color: rgb(var(--primary-color)) -} - -.C_F:hover { - background-color: rgba(0, 170, 170, .2); - background-color: rgba(var(--primary-color), .2) -} - -.C_G { - background-color: transparent; - background-color: initial; - color: #0aa; - color: rgb(var(--primary-color)); - text-transform: none; - width: auto -} - -.C_G:hover { - background-color: rgba(0, 170, 170, .1); - background-color: rgba(var(--primary-color), .1) -} - -.C_H { - border: 0; - font-weight: 600; - padding: 2px -} - -.C_H:hover { - color: #099; - color: rgb(var(--primary-brighter-color)) -} - -.C_H:hover, -.C_H[disabled] { - background-color: transparent; - background-color: initial -} - -.C_H[disabled] { - color: rgba(0, 170, 170, .9); - color: rgba(var(--primary-color), .9) -} - -.dark .C_A { - border-color: hsla(0, 0%, 100%, .1); - border-color: rgba(var(--white-color), .1) -} - -.dark .C_F { - border-color: transparent; - color: inherit -} - -.settings { - padding: 10px 0 -} - -.settings__action { - color: var(--color9); - cursor: pointer; - font-weight: 700; - margin-left: 8px -} - -.settings__action:hover { - color: var(--color33) -} - -.settings__action:before { - content: "•"; - margin-right: 8px -} - -.settings__section+.settings__section { - margin-top: 2em -} - -.settings__list { - padding: 0 0 0 20px -} - -.settings__list-item { - cursor: default; - margin-bottom: .5em; - position: relative -} - -@media (hover:hover) { - .settings__list-item .settings__action { - opacity: 0 - } - - .settings__list-item:hover .settings__action { - opacity: 1 - } -} - -.settings__invisible { - opacity: .4 -} - -.settings__dimmed { - opacity: .5 -} - -.settings__username { - font-weight: 700 -} - -.settings__user-id { - font-size: .8em; - font-style: italic; - word-break: break-all -} - -.settings_theme_dark .settings__action:before { - color: var(--color20) -} - -.settings_theme_dark .settings__blocked-users-username { - color: var(--color5) -} - -.settings_theme_light .settings__action:before { - color: var(--color10) -} - -.settings_theme_light .settings__blocked-users-username { - color: var(--color13) -} - -.auth-panel { - align-items: baseline; - display: flex; - font-size: 14px; - justify-content: space-between; - line-height: 16px -} - -.auth-panel__readonly-label { - margin-right: .3rem -} - -.auth-panel__readonly-label:after { - content: "•"; - margin-left: .3rem -} - -.auth-panel__column:last-child { - margin-left: 8px; - text-align: right -} - -.button { - background: none; - border: 0; - border-radius: 4px; - cursor: pointer; - font-family: inherit; - font-size: inherit; - margin: 0; - padding: 0; - white-space: nowrap -} - -.button:focus { - box-shadow: 0 0 0 2px var(--color47); - outline: none -} - -.button:disabled { - cursor: default; - opacity: .6 -} - -.button_kind_link { - background: transparent; - color: var(--color9); - font-weight: 600 -} - -.button_kind_link:hover { - color: var(--color33) -} - -.button_kind_link:disabled, -.button_kind_link:hover:disabled { - color: var(--color9) -} - -.button_kind_primary { - background: var(--color15); - color: var(--color6) -} - -.button_kind_primary:hover { - background: var(--color33) -} - -.button_kind_primary:hover:disabled { - background: var(--color15) -} - -.button_kind_secondary { - background: var(--color6); - color: inherit -} - -.button_kind_secondary:hover { - box-shadow: inset 0 0 0 2px var(--color33) -} - -.button_size_large { - font-size: 16px; - height: 36px; - padding: 0 12px -} - -.button_size_middle { - height: 2rem; - padding: 0 12px -} - -.button_theme_dark.button_kind_secondary { - background: var(--color8); - color: var(--color20) -} - -.button_theme_dark.button_kind_link:disabled, -.button_theme_dark.button_kind_link:hover:disabled { - color: var(--color6) -} - -.S_A { - background-color: #fff; - background-color: rgb(var(--white-color)); - border: 1px solid #e2e8f0; - border: 1px solid var(--line-color); - border-radius: 4px; - box-sizing: border-box; - color: #333; - color: var(--color7); - font-family: inherit; - font-size: 16px; - height: 36px; - margin: 0; - padding: 0 8px; - width: 100% -} - -.S_A:hover { - border-color: #cbd5e1; - border-color: var(--line-brighter-color) -} - -.S_A:focus { - border-color: #099; - border-color: var(--color15); - box-shadow: 0 0 0 2px rgba(37, 156, 154, .4); - box-shadow: 0 0 0 2px var(--color47); - outline: none -} - -.S_A:disabled { - background-color: #f1f5f9; - background-color: var(--color21); - border-color: #e2e8f0; - border-color: var(--line-color) -} - -.S_A::-moz-placeholder { - -webkit-text-fill-color: #969696; - -webkit-text-fill-color: var(--color11); - color: #969696; - color: var(--color11) -} - -.S_A::placeholder { - -webkit-text-fill-color: #969696; - -webkit-text-fill-color: var(--color11); - color: #969696; - color: var(--color11) -} - -.S_A:-webkit-autofill { - -webkit-text-fill-color: #333; - -webkit-text-fill-color: var(--color7); - box-shadow: inset 0 0 0 1000px #fff; - box-shadow: 0 0 0 1000px rgb(var(--white-color)) inset -} - -.S_A:-webkit-autofill:focus { - box-shadow: inset 0 0 0 1000px #fff, 0 0 0 2px rgba(37, 156, 154, .4); - box-shadow: 0 0 0 1000px rgb(var(--white-color)) inset, 0 0 0 2px var(--color47) -} - -.S_A:-webkit-autofill::placeholder { - -webkit-text-fill-color: #969696; - -webkit-text-fill-color: var(--color11) -} - -.dark .S_A { - background-color: #2d2d2c; - background-color: var(--color22); - color: hsla(0, 0%, 100%, .8); - color: rgba(var(--white-color), .8) -} - -.dark .S_A:focus { - border-color: #099; - border-color: var(--color15); - box-shadow: 0 0 0 2px rgba(37, 156, 154, .4); - box-shadow: 0 0 0 2px var(--color47) -} - -.dark .S_A::-moz-placeholder { - color: hsla(0, 0%, 100%, .2); - color: rgba(var(--white-color), .2) -} - -.dark .S_A::placeholder { - color: hsla(0, 0%, 100%, .2); - color: rgba(var(--white-color), .2) -} - -.dark .S_A:-webkit-autofill { - box-shadow: inset 0 0 0 1000px #2d2d2c; - box-shadow: 0 0 0 1000px var(--color22) inset -} - -.dark .S_A:-webkit-autofill, -.dark .S_A:-webkit-autofill:focus { - -webkit-text-fill-color: hsla(0, 0%, 100%, .8); - -webkit-text-fill-color: rgba(var(--white-color), .8) -} - -.dark .S_A:-webkit-autofill:focus { - box-shadow: inset 0 0 0 1000px #2d2d2c, 0 0 0 2px rgba(37, 156, 154, .4); - box-shadow: 0 0 0 1000px var(--color22) inset, 0 0 0 2px var(--color47) -} - -.dark .S_A:-webkit-autofill::placeholder { - -webkit-text-fill-color: hsla(0, 0%, 100%, .4); - -webkit-text-fill-color: rgba(var(--white-color), .4) -} - -.S_B, -.S_B:focus, -.S_B:hover { - border-color: #b91c1c; - border-color: var(--error-color); - box-shadow: 0 0 0 2px rgba(255, 70, 111, .169); - box-shadow: 0 0 0 2px var(--error-background) -} - -.R_A { - margin-bottom: 0 -} - -.R_B { - background-color: #fff; - background-color: rgb(var(--white-color)); - box-sizing: border-box; - display: block; - margin: 12px auto; - padding: 10px -} - -.R_C { - width: 100% -} - -.D_A { - -webkit-animation: D_B 1s linear infinite; - animation: D_B 1s linear infinite; - border: 2px solid hsla(0, 0%, 100%, .2); - border-radius: 50%; - border-right: 2px solid rgba(var(--white-color), .2); - border: 2px solid rgba(var(--white-color), .2); - border-right-color: rgb(var(--white-color)); - height: 16px; - width: 16px -} - -.D_C { - border: 2px solid rgba(27, 31, 35, .15); - border-right: 2px solid var(--color46); - border: 2px solid var(--color46); - border-right-color: var(--color37) -} - -.dark & { - border: 2px solid hsla(0, 0%, 100%, .2); - border-right: 2px solid rgba(var(--white-color), .2); - border: 2px solid rgba(var(--white-color), .2); - border-right-color: rgb(var(--white-color)) -} - -@-webkit-keyframes D_B { - 0% { - transform: rotate(0deg) - } - - to { - transform: rotate(1turn) - } -} - -@keyframes D_B { - 0% { - transform: rotate(0deg) - } - - to { - transform: rotate(1turn) - } -} - -.Q_A { - align-items: center; - display: flex; - justify-content: center; - list-style: none; - margin: 0; - padding: 0 -} - -.Q_B { - position: relative -} - -.Q_B+.Q_B { - margin-left: 12px -} - -.Q_C { - align-items: center; - border: 1px solid #e2e8f0; - border: 1px solid var(--line-color); - border-radius: 50%; - cursor: pointer; - display: flex; - height: 38px; - justify-content: center; - width: 38px -} - -.Q_C:after { - color: #64748b; - color: rgb(var(--secondary-text-color)); - display: inline-block -} - -.Q_C:hover { - border-color: #cbd5e1; - border-color: var(--line-brighter-color); - transform: scale(1.05) -} - -.Q_C:active { - transform: scale(1) -} - -.Q_C:focus { - border-color: #cbd5e1; - border-color: var(--line-brighter-color); - box-shadow: 0 0 0 2px #e2e8f0; - box-shadow: 0 0 0 2px var(--line-color) -} - -.Q_D, -.Q_E { - border-radius: 6px; - padding: 0 12px; - text-decoration: none; - width: auto -} - -.Q_D:hover, -.Q_E:hover { - transform: scale(1) -} - -.Q_D:active, -.Q_E:active { - transform: scale(.95) -} - -.Q_D:after, -.Q_E:after { - content: attr(data-provider-name); - display: inline-block; - margin-left: 8px -} - -.Q_D:after { - content: attr(title) -} - -.N_A { - color: #64748b; - color: rgb(var(--secondary-text-color)); - z-index: 1 -} - -.N_A, -.N_B { - position: relative -} - -.N_B { - height: 100%; - margin-left: 12px; - padding-left: 8px -} - -.N_B:before { - border-left: 1px solid hsla(0, 0%, 100%, .5); - border-left: 1px solid rgba(var(--white-color), .5); - content: ""; - height: 100% -} - -.N_B:before, -.N_C { - position: absolute -} - -.N_C { - background-color: #fff; - background-color: rgb(var(--primary-background-color)); - border-radius: 6px; - box-shadow: 0 10px 15px rgba(0, 0, 0, .1), 0 -1px 6px rgba(0, 0, 0, .05); - box-shadow: 0 10px 15px rgba(var(--black-color), .1), 0 -1px 6px rgba(var(--black-color), .05); - left: 0; - min-width: 240px; - padding: 16px; - top: calc(100% + 8px); - z-index: 1 -} - -.N_D { - color: rgb(rgb(100, 116, 139)); - color: rgb(rgb(var(--secondary-text-color))); - font-size: 12px; - font-weight: 700; - margin: 0 0 12px; - text-align: center -} - -.N_D, -.N_E { - text-transform: uppercase -} - -.N_E { - display: flex; - height: 16px; - margin: 16px -16px; - position: relative; - width: calc(100% + 32px) -} - -.N_E:before { - border-top: 1px solid #e2e8f0; - border-top: 1px solid var(--line-color); - content: ""; - display: block; - height: 0; - position: absolute; - top: 50%; - width: 100% -} - -.N_E:after { - background-color: #fff; - background-color: rgb(var(--white-color)); - color: #64748b; - color: rgb(var(--secondary-text-color)); - content: attr(title); - display: block; - font-size: 12px; - margin: auto; - padding: 0 12px; - position: relative; - text-transform: uppercase -} - -.dark .N_E:after { - background-color: #262626; - background-color: var(--color8) -} - -.N_F { - display: flex; - justify-content: center; - margin-bottom: 16px -} - -.N_G { - color: #64748b; - color: rgb(var(--secondary-text-color)); - cursor: pointer; - display: inline-block; - font-size: 12px; - font-weight: 700; - height: 24px; - line-height: 24px; - padding: 0 12px; - position: relative; - text-transform: uppercase -} - -.N_G+.N_G { - margin-left: 16px -} - -.N_H { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border: 0; - height: 0; - margin: 0; - opacity: 0; - padding: 0; - position: absolute; - width: 0 -} - -.dark .N_G { - color: #a6a6a6; - color: var(--color32) -} - -.N_H:checked+.N_G { - background-color: rgba(0, 170, 170, .1); - background-color: rgba(var(--primary-color), .1); - border-radius: 2px; - color: #0aa; - color: rgb(var(--primary-color)) -} - -.dark .N_H:checked+.N_G { - background-color: rgba(0, 170, 170, .4); - background-color: rgba(var(--primary-color), .4); - color: #fff; - color: rgb(var(--white-color)) -} - -.N_I { - display: flex; - margin-bottom: 12px; - width: 100% -} - -.N_J { - flex: 0 -} - -.N_K { - display: inline-block; - margin-left: -4px; - margin-right: 2px -} - -.N_L { - align-items: center; - border-radius: 2px; - color: inherit; - display: inline-flex; - height: 28px; - justify-content: center; - margin-left: auto; - position: relative; - width: 28px -} - -.N_L:hover { - background-color: rgba(0, 170, 170, .1); - background-color: rgba(var(--primary-color), .1) -} - -.N_M { - box-sizing: border-box; - font-family: inherit; - font-size: 16px; - margin: 0; - max-height: 200px; - min-height: 60px; - padding: 4px 8px; - resize: vertical; - width: 100% -} - -.N_N { - border: 0; - height: 0; - margin: 0; - opacity: 0; - padding: 0; - position: absolute; - width: 0 -} - -.N_O { - font-size: 16px; - height: 36px; - padding: 0 20px; - width: 100% -} - -.N_P { - background-color: rgba(255, 70, 111, .169); - background-color: var(--error-background); - color: #b91c1c; - color: var(--error-color); - line-height: 1.2; - margin-bottom: 12px; - padding: 6px 8px -} - -.H_A { - border-radius: 4px; - display: block; - max-width: 100% -} - -.H_B { - border: 1px solid #9cdddb; - border: 1px solid var(--color40) -} - -.E_A, -.H_B { - box-sizing: border-box -} - -.E_A { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border: 0; - border-radius: 2px; - display: inline-flex; - margin: 0; - padding: 4px; - transition: transfrom .15s ease-out -} - -.E_A:hover { - transform: scale(1.06); - transition: transfrom .15s ease-in -} - -.E_A:active { - transform: scale(1) -} - -.E_A:focus { - box-shadow: inset 0 0 0 2px rgba(0, 170, 170, .5); - box-shadow: inset 0 0 0 2px rgba(var(--primary-color), .5) -} - -.G_A { - font-size: 14px -} - -.G_A, -.G_B { - align-items: center; - display: flex -} - -.G_B { - color: #64748b; - color: rgb(var(--secondary-text-color)); - font-weight: 700; - transition: color .15s -} - -.G_B:hover { - color: inherit -} - -.G_C { - margin-left: 12px -} - -.G_D { - height: 20px; - margin-right: 8px; - width: 20px -} - -.M_A { - align-items: center; - border-radius: 2px; - display: inline-flex; - font-weight: 600; - padding: 2px; - position: relative -} - -.M_B { - font-size: 14px -} - -.M_C { - box-shadow: 0 0 0 2px rgba(0, 170, 170, .4); - box-shadow: 0 0 0 2px rgba(var(--primary-color), .4); - outline: none -} - -.M_D { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border: 0; - cursor: pointer; - height: 100%; - left: 0; - margin: 0; - opacity: 0; - padding: 0; - position: absolute; - top: 0; - width: 100% -} - -.M_E { - margin-left: .4em -} - -.raw-content .root_theme_dark { - --chroma-bg: hsla(0, 0%, 100%, .1); - --chroma-base: #93a1a1; - --chroma-c: #586e75; - --chroma-01: #8ad200; - --chroma-03: #3af; - --chroma-05: #8eca03; - --chroma-06: #dc322f; - --chroma-07: #95d5e8 -} - -.raw-content { - word-break: break-word -} - -.raw-content blockquote, -.raw-content p { - margin: .5rem 0 -} - -.raw-content blockquote:first-child, -.raw-content p:first-child { - margin-top: 0 -} - -.raw-content blockquote:last-child, -.raw-content p:last-child { - margin-bottom: 0 -} - -.raw-content a { - color: var(--color9) -} - -.raw-content a:hover { - color: var(--color33); - text-decoration: none -} - -.raw-content img { - max-height: 300px; - max-width: 100% -} - -.raw-content h1:first-child, -.raw-content h2:first-child, -.raw-content h3:first-child, -.raw-content h4:first-child, -.raw-content h5:first-child, -.raw-content h6:first-child { - margin-top: 0 -} - -.raw-content blockquote { - border-left: 2px solid; - padding: 12px 8px 12px 16px -} - -.raw-content table { - border-collapse: collapse; - border-spacing: 0; - display: block; - overflow: auto -} - -.raw-content table th { - font-weight: 600; - text-align: left -} - -.raw-content table td, -.raw-content table th { - padding: 6px 13px -} - -.raw-content table tr { - border-top: 1px solid var(--color43) -} - -.raw-content code { - background-color: var(--chroma-bg); - color: var(--chroma-base); - display: inline-block; - margin: 0; - overflow: visible; - padding: 0 .4em; - white-space: pre; - word-break: normal -} - -.raw-content code, -.raw-content pre { - word-wrap: normal; - border-radius: 3px; - font-size: 85%; - line-height: 1.45 -} - -.raw-content pre { - overflow-x: auto; - overflow-y: hidden; - padding: 12px 16px 12px 18px; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2 -} - -.raw-content pre:first-child { - margin-top: 0 -} - -.raw-content pre:last-child { - margin-bottom: 0 -} - -.raw-content pre>code { - background-color: transparent; - padding: 0 -} - -.raw-content sub sub, -.raw-content sub sup, -.raw-content sup sub, -.raw-content sup sup { - vertical-align: middle -} - -.raw-content hr { - border-width: 0 0 1px -} - -pre { - background-color: var(--chroma-bg); - color: var(--chroma-base) -} - -pre .c, -pre .c1, -pre .ch, -pre .cm, -pre .cp, -pre .cpf, -pre .cs { - color: var(--chroma-c) -} - -pre .ge { - font-style: italic -} - -pre .gr, -pre .gs { - font-weight: 700 -} - -pre .kd { - color: var(--chroma-07) -} - -pre .k, -pre .kc, -pre .kn, -pre .kp, -pre .kr, -pre .kt, -pre .ow { - color: var(--chroma-01) -} - -pre .nb, -pre .nc { - color: var(--chroma-02) -} - -pre .bp, -pre .fm, -pre .n, -pre .na, -pre .nd, -pre .ne, -pre .nf, -pre .ni, -pre .nl, -pre .nn, -pre .no, -pre .nt, -pre .nv, -pre .nx, -pre .py, -pre .vc, -pre .vg, -pre .vi, -pre .vm { - color: var(--chroma-03) -} - -pre .dl, -pre .il, -pre .l, -pre .ld, -pre .m, -pre .mb, -pre .mf, -pre .mh, -pre .mi, -pre .mo, -pre .s, -pre .s1, -pre .s2, -pre .sa, -pre .sb, -pre .sc, -pre .sd, -pre .se, -pre .sh, -pre .si, -pre .sr, -pre .ss, -pre .sx { - color: var(--chroma-04) -} - -pre .g, -pre .gd, -pre .ge, -pre .gh, -pre .gi, -pre .gl, -pre .go, -pre .gp, -pre .gr, -pre .gs, -pre .gt, -pre .gu { - color: var(--chroma-06) -} - -.raw-content_theme_dark blockquote { - border-left-color: var(--color44) -} - -.raw-content_theme_dark table td, -.raw-content_theme_dark table th { - border: 1px solid var(--color24) -} - -.raw-content_theme_dark table tr { - background-color: var(--color8) -} - -.raw-content_theme_dark table tr:nth-child(2n) { - background-color: var(--color23) -} - -.raw-content_theme_dark hr { - border-color: var(--color22) -} - -.raw-content_theme_light blockquote { - border-left-color: var(--color45) -} - -.raw-content_theme_light table td, -.raw-content_theme_light table th { - border: 1px solid var(--color16) -} - -.raw-content_theme_light table tr { - background-color: var(--color6) -} - -.raw-content_theme_light table tr:nth-child(2n) { - background-color: var(--color21) -} - -.raw-content_theme_light hr { - border-color: var(--color21) -} - -.comment-form { - border-radius: 2px; - border-style: solid; - border-width: 6px 12px 12px; - display: block; - position: relative -} - -.comment-form__dropdown_rss { - text-align: left -} - -.comment-form__dropdown_rss .dropdown__content { - width: 8em -} - -.comment-form__actions { - align-items: center; - display: flex; - flex-wrap: wrap; - gap: 12px; - justify-content: space-between; - min-height: 30px; - padding-top: 12px -} - -.comment-form__button { - align-self: flex-start; - margin-right: 8px -} - -.comment-form__button:last-child { - margin-right: 20px -} - -.comment-form__button_type_preview:focus, -.comment-form__button_type_preview:hover { - box-shadow: inset 0 0 0 2px var(--color9); - color: var(--color15) -} - -.comment-form__button_type_send { - background: var(--color15); - color: var(--color6) -} - -.comment-form__button_type_send:focus, -.comment-form__button_type_send:hover { - background: var(--color9) -} - -.comment-form__control-panel { - background-color: var(--color5); - height: 30px -} - -.comment-form__counter { - bottom: 4px; - color: var(--color38); - font-size: 10px; - font-weight: 700; - position: absolute; - right: 4px -} - -.comment-form__error { - font-size: 14px; - line-height: 18px; - margin: 0; - padding: 10px 12px -} - -.comment-form__field { - --height: 109.6px; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - border: 0; - box-sizing: border-box; - display: block; - font-size: 16px; - height: var(--height); - line-height: 1.4; - margin: 0; - min-height: var(--height); - overflow: hidden; - padding: 10px 12px; - resize: none; - transform: translateZ(0); - width: 100% -} - -.comment-form__field:focus { - border-color: var(--color15); - box-shadow: 0 0 0 2px var(--color47); - outline: none -} - -.comment-form__field:disabled { - color: var(--color10) -} - -.comment-form__field-wrapper { - position: relative -} - -.comment-form__preview { - border: 1px dashed; - border-radius: 2px; - font-size: 16px; - line-height: 1.2; - margin-top: 8px; - overflow: hidden; - padding: 7px 11px -} - -.comment-form__preview-wrapper { - overflow: hidden -} - -.comment-form__rss { - font-size: 12px; - line-height: 1 -} - -.comment-form__rss-link { - color: var(--color9); - cursor: pointer; - font-weight: 700; - text-decoration: none; - white-space: nowrap -} - -.comment-form__rss-link:hover { - color: var(--color33) -} - -.comment-form__markdown { - font-size: 12px; - margin-bottom: 5px -} - -.comment-form__markdown-link { - color: var(--color9); - cursor: pointer; - font-weight: 700; - text-decoration: none; - white-space: nowrap -} - -.comment-form__markdown-link:hover { - color: var(--color33) -} - -.comment-form__toolbar { - display: block; - float: right -} - -.comment-form__toolbar-file-input { - clip: rect(0 0 0 0); - height: 1px; - overflow: hidden; - position: absolute; - width: 1px -} - -.comment-form__toolbar-item { - align-items: center; - background: none; - border: 0; - color: var(--color37); - cursor: pointer; - display: flex; - float: left; - height: 24px; - justify-content: center; - width: 24px -} - -.comment-form__toolbar-item:hover { - color: var(--color9) -} - -.comment-form__toolbar-icon { - fill: currentColor; - display: inline-block -} - -.comment-form__toolbar-group { - display: inline-block; - margin-left: 20px -} - -.comment-form__toolbar-group:first-child { - margin-left: 0 -} - -.comment-form__subscribe-by-email { - box-sizing: border-box; - display: flex; - flex-direction: column; - flex-wrap: wrap; - line-height: 1.2; - padding: 8px; - text-align: left; - width: 200px -} - -.comment-form__subscribe-by-email_token { - padding-top: 0 -} - -.comment-form__subscribe-by-email_subscribed, -.comment-form__subscribe-by-email_unsubscribed { - font-size: 14px; - padding: 8px 12px; - text-align: left -} - -.comment-form__subscribe-by-email__title { - margin-bottom: 12px -} - -.comment-form__subscribe-by-email__button { - flex-grow: 1; - margin-top: 10px -} - -.comment-form__subscribe-by-email__preloader { - margin: 0 auto -} - -.comment-form__subscribe-by-email__token-input { - border: 1px solid var(--color31); - font-family: inherit; - font-size: .8em; - font-weight: 400; - line-height: 1.5; - padding: 4px; - resize: vertical -} - -.comment-form__subscribe-by-email__token-input:focus { - border-color: var(--color15); - box-shadow: 0 0 0 2px var(--color47); - outline: none -} - -.comment-form__subscribe-by-email__error { - line-height: 1.2; - margin-top: 8px; - padding: 6px 8px -} - -.comment-form__subscribe-by-email_theme_dark .comment-form__subscribe-by-email__error { - background: var(--color28); - color: var(--color27) -} - -.comment-form__subscribe-by-email_theme_light .comment-form__subscribe-by-email__error { - background: var(--color26); - color: var(--color25) -} - -.comment-form__rss-dropdown { - text-align: left -} - -.comment-form__rss-dropdown__link { - color: var(--color9); - cursor: pointer; - font-weight: 700; - text-decoration: none; - white-space: nowrap -} - -.comment-form__rss-dropdown__link:hover { - color: var(--color33) -} - -.comment-form_theme_dark { - background: var(--color8); - border-color: var(--color7) -} - -.comment-form_theme_dark .comment-form__actions { - background: var(--color7) -} - -.comment-form_theme_dark .comment-form__button_type_preview { - background: var(--color8); - color: var(--color20) -} - -.comment-form_theme_dark .comment-form__button_type_send { - color: var(--color20) -} - -.comment-form_theme_dark .comment-form__error { - background: var(--color28); - border-top: 8px solid var(--color7); - color: var(--color27) -} - -.comment-form_theme_dark .comment-form__field { - background: var(--color8); - color: var(--color5) -} - -.comment-form_theme_dark .comment-form__preview { - background: var(--color8); - border-color: var(--color8); - color: var(--color20) -} - -.comment-form_theme_dark .comment-form__preview-wrapper { - background: var(--color7) -} - -.comment-form_theme_dark .comment-form__toolbar-item { - color: var(--color20) -} - -.comment-form_theme_dark .comment-form__toolbar-item:hover { - color: var(--color9) -} - -.comment-form_theme_dark .comment-form__control-panel { - background-color: var(--color7) -} - -.comment-form_theme_light { - background: var(--color6); - border-color: var(--color5) -} - -.comment-form_theme_light .comment-form__actions { - background: var(--color5) -} - -.comment-form_theme_light .comment-form__button_type_preview { - background: var(--color6); - color: var(--color0) -} - -.comment-form_theme_light .comment-form__button_type_send { - color: var(--color6) -} - -.comment-form_theme_light .comment-form__error { - background: var(--color26); - border-top: 8px solid var(--color5); - color: var(--color25) -} - -.comment-form_theme_light .comment-form__field { - background: var(--color6); - color: var(--color0) -} - -.comment-form_theme_light .comment-form__preview { - background: var(--color6); - border-color: var(--color5); - color: var(--color7) -} - -.comment-form_theme_light .comment-form__preview-wrapper { - background: var(--color5) -} - -.comment-form_simple { - border-width: 12px -} - -.dropdown { - display: inline-block; - position: relative -} - -.dropdown_active>.dropdown__content { - display: block -} - -.dropdown__item>.dropdown, -.dropdown__item>a, -.dropdown__item>button { - display: inline-block; - padding: 5px; - text-align: left -} - -.dropdown__item_separator { - border-bottom: 1px solid var(--color15); - margin-bottom: 5px -} - -.dropdown__items { - padding: 5px 0 -} - -.dropdown__items:last-child { - padding-bottom: 0 -} - -.dropdown__title:after { - content: "\25BE"; - margin-left: 2px -} - -.dropdown__content { - border: 2px solid var(--color15); - border-radius: 3px; - display: none; - left: 0; - max-width: 260px; - min-width: 120px; - outline-width: 0; - padding: 0 0 5px; - position: absolute; - top: 100%; - transform: translate(-.5em, 5px); - z-index: 20 -} - -.dropdown_theme_dark .dropdown__content { - background-color: var(--color8) -} - -.dropdown_theme_light .dropdown__content { - background-color: var(--color6) -} - -.O_A { - box-sizing: border-box; - display: flex; - flex-direction: column; - flex-wrap: wrap; - line-height: 1.2; - padding: 8px; - text-align: left; - width: 250px -} - -.O_B { - filter: invert(1); - margin: 0 auto -} - -.K_A { - background: #fff; - background: var(--color6); - border: 1px solid #e2e8f0; - border: 1px solid var(--color16); - border-radius: 3px; - box-shadow: 0 1px 5px rgba(27, 31, 35, .15); - box-shadow: 0 1px 5px var(--color46); - cursor: pointer; - left: 0; - list-style: none; - margin: 24px 0 0; - min-width: 180px; - padding: 0; - position: absolute; - top: 0; - z-index: 30 -} - -.K_B { - background: #262626; - background: var(--color8); - border: 1px solid #333; - border: 1px solid var(--color7); - color: #ddd; - color: var(--color20) -} - -.K_C { - border-bottom: 1px solid #e2e8f0; - border-bottom: 1px solid var(--color16); - display: block; - font-size: 14px; - font-weight: 600; - padding: 4px 8px -} - -.K_D { - border-bottom: 1px solid #333; - border-bottom: 1px solid var(--color7) -} - -.K_C:hover, -.K_C[aria-selected=true] { - background-color: rgba(37, 156, 154, .6); - background-color: var(--color48); - color: #fff; - color: var(--color6); - text-decoration: none -} - -.K_C:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px -} - -.K_C:last-child { - border-bottom: none; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px -} - -.K_E { - display: inline-block; - font-size: 20px; - height: 20px; - line-height: 20px; - margin-right: 0; - vertical-align: middle -} - -.thread { - position: relative -} - -.thread_indented { - margin-left: 17px -} - -.thread_level_6 .thread_level_6 { - margin-left: 0 -} - -.thread_theme_dark .thread__collapse:after { - border-color: var(--color36) -} - -.thread_theme_dark .thread__collapse:hover:after { - border-color: var(--color6) -} - -.thread__collapse { - cursor: pointer; - height: calc(100% - 50px); - left: -4px; - position: absolute; - top: 50px; - width: 11px -} - -.thread__collapse:after { - border-left: 1px dotted var(--color35); - content: ""; - display: block; - height: 100%; - left: 5px; - position: absolute; - top: 0 -} - -.thread__collapse:hover:after { - border-left: 3px solid var(--color10); - transform: translateX(-1px); - z-index: 10 -} - -.thread__collapse_collapsed { - border: 1px solid; - border-radius: 2px; - display: flex; - height: 18px; - left: 0; - opacity: .8; - text-align: center; - top: 12px; - width: 18px -} - -.thread__collapse_collapsed:after { - display: none -} - -.thread__collapse_collapsed:hover { - opacity: 1 -} - -.thread__collapse_collapsed:hover:after { - transform: translateX(0) -} - -.thread__collapse_collapsed>div { - border-bottom: 2px solid; - height: 2px; - left: 3px; - position: relative; - top: 6px; - width: 12px -} - -.thread__collapse_collapsed>div:after, -.thread__collapse_collapsed>div:before { - border-bottom: 2px solid; - content: ""; - height: 2px; - left: 0; - position: absolute; - top: -4px; - width: 100% -} - -.thread__collapse_collapsed>div:after { - top: 4px !important -} - -.comment { - display: block; - font-size: 16px; - line-height: 1.4; - padding: 12px 0 8px; - transition: background .3s ease-in-out -} - -@media (hover:hover) { - .comment:hover>.comment__body .comment__actions .comment__controls { - opacity: 1 - } -} - -.comment__avatar { - height: 24px; - margin-right: 8px; - width: 24px -} - -.comment_level_6 .comment__actions, -.comment_level_6 .comment__text { - padding-left: 0 -} - -.comment-form_type_reply { - margin-left: 17px -} - -@media (-moz-touch-enabled:1) and (max-width:768px), -(pointer:coarse) and (max-width:768px) { - .comment-form_type_reply { - margin-left: 0 - } -} - -.comment__body { - padding-left: 17px -} - -.comment__info { - align-items: center; - display: flex; - flex-wrap: wrap; - font-size: 14px; - margin-bottom: 12px; - padding-right: 84px; - position: relative -} - -.comment__input { - margin-top: 8px -} - -.comment__status { - font-weight: 700; - margin-left: 8px; - vertical-align: middle -} - -.comment__text { - margin-bottom: 4px; - overflow: hidden -} - -.comment__time { - margin-left: 8px; - margin-right: 8px; - text-decoration: none; - vertical-align: middle -} - -.comment__time:first-child { - margin-left: 0 -} - -.comment__time:hover { - text-decoration: underline -} - -.comment__user-id { - font-weight: 400 -} - -.comment__username { - font-weight: 700; - text-decoration: none; - vertical-align: middle -} - -.comment__username:hover { - opacity: .75 -} - -.comment_collapsed { - padding: 12px 0 12px 28px -} - -.comment_collapsed>.comment__body .comment__actions, -.comment_collapsed>.comment__body .comment__text { - display: none -} - -.comment_collapsed .comment__info { - margin-bottom: 0; - min-height: 20px; - opacity: .8 -} - -.comment_collapsed .comment__avatar { - height: 20px; - opacity: .6; - width: 20px -} - -.comment_collapsed .comment__time, -.comment_collapsed .comment__username { - font-style: italic -} - -.comment_editing .comment__text { - display: none -} - -@media (-moz-touch-enabled:1) and (max-width:768px), -(pointer:coarse) and (max-width:768px) { - .comment_editing { - border: 8px solid; - padding-bottom: 0 - } - - .comment_editing .comment__body { - padding: 8px 8px 0 - } - - .comment_editing .comment__input { - border-width: 8px 0 0 - } -} - -.comment_replying { - padding-bottom: 0; - position: relative; - z-index: 1 -} - -@media (-moz-touch-enabled:1) and (max-width:768px), -(pointer:coarse) and (max-width:768px) { - .comment_replying { - border: 8px solid - } - - .comment_replying .comment__info { - padding-left: 8px - } - - .comment_replying .comment__body { - padding: 8px 8px 0 - } - - .comment_replying .comment__input { - border-width: 8px 0 0 - } -} - -.comment_useless .comment__body { - opacity: .35 -} - -.comment_useless .comment__body:hover { - opacity: 1 -} - -.comment_view_admin .comment__username, -.comment_view_admin.comment_theme_dark .comment__username, -.comment_view_admin.comment_theme_light .comment__username { - color: var(--color29) -} - -.comment_view_preview, -.comment_view_preview.comment_theme_dark, -.comment_view_preview.comment_theme_light { - font-size: 14px; - padding-bottom: 0 -} - -.comment_view_preview .comment__title, -.comment_view_preview.comment_theme_dark .comment__title, -.comment_view_preview.comment_theme_light .comment__title { - color: var(--color9); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap -} - -.comment_view_preview .comment__title-link, -.comment_view_preview.comment_theme_dark .comment__title-link, -.comment_view_preview.comment_theme_light .comment__title-link { - color: var(--color9); - text-decoration: none -} - -.comment_view_preview .comment__title-link:hover, -.comment_view_preview.comment_theme_dark .comment__title-link:hover, -.comment_view_preview.comment_theme_light .comment__title-link:hover { - opacity: .75 -} - -.comment_view_preview .comment__info, -.comment_view_preview.comment_theme_dark .comment__info, -.comment_view_preview.comment_theme_light .comment__info { - color: var(--color10); - display: inline; - font-weight: 700; - padding-right: 0 -} - -.comment_view_preview .comment__info:after, -.comment_view_preview.comment_theme_dark .comment__info:after, -.comment_view_preview.comment_theme_light .comment__info:after { - content: " " -} - -.comment_view_preview .comment__username, -.comment_view_preview.comment_theme_dark .comment__username, -.comment_view_preview.comment_theme_light .comment__username { - color: var(--color9) -} - -.comment_view_preview .comment__text, -.comment_view_preview.comment_theme_dark .comment__text, -.comment_view_preview.comment_theme_light .comment__text { - display: inline; - vertical-align: bottom -} - -.comment_view_user.comment_collapsed .comment__actions, -.comment_view_user.comment_collapsed .comment__text { - display: block -} - -.comment_view_user .comment__title { - margin-bottom: .2rem -} - -.comment_view_user .comment__body { - padding-left: 0 -} - -.comment_view_user .comment__title-link { - color: var(--color29); - display: block; - font-weight: 700; - overflow: hidden; - text-decoration: none; - text-overflow: ellipsis; - white-space: nowrap -} - -.comment_view_user .comment__title-link:hover { - opacity: .75 -} - -.comment_theme_dark .comment__action_type_collapse { - border-color: var(--color34); - color: var(--color34) -} - -.comment_theme_dark .comment__action_type_collapse.comment__action_selected { - background: var(--color34); - color: var(--color8) -} - -.comment_theme_dark .comment__action_type_delete, -.comment_theme_dark .comment__action_type_edit { - color: var(--color14) -} - -.comment_theme_dark .comment__action+.comment__controls:before { - color: var(--color5) -} - -.comment_theme_dark .comment__control_view_inactive, -.comment_theme_dark .comment__control_view_inactive:focus, -.comment_theme_dark .comment__control_view_inactive:hover { - color: var(--color11) -} - -.comment_theme_dark .comment__edit-timer { - color: var(--color32) -} - -.comment_theme_dark .comment__edit-timer+.comment__controls:before { - color: var(--color5) -} - -.comment_theme_dark .comment__status, -.comment_theme_dark .comment__time { - color: var(--color11) -} - -.comment_theme_dark .comment__user-id { - color: var(--color13) -} - -.comment_theme_dark .comment__username { - color: var(--color10) -} - -.comment_theme_dark.comment_editing .comment__input { - border-color: var(--color7) -} - -@media (-moz-touch-enabled:1) and (max-width:768px), -(pointer:coarse) and (max-width:768px) { - .comment_theme_dark.comment_editing { - border-color: var(--color7) - } -} - -.comment_theme_dark.comment_replying .comment__input { - border-color: var(--color7) -} - -@media (-moz-touch-enabled:1) and (max-width:768px), -(pointer:coarse) and (max-width:768px) { - .comment_theme_dark.comment_replying { - border-color: var(--color7) - } -} - -.comment_theme_dark.comment_view_preview .comment__info:after { - color: var(--color10) -} - -.comment_theme_dark.comment_highlighting { - background: var(--color19) -} - -.comment_theme_light .comment__action_type_collapse { - border-color: var(--color20); - color: var(--color20) -} - -.comment_theme_light .comment__action_type_collapse.comment__action_selected { - background: var(--color20); - color: var(--color6) -} - -.comment_theme_light .comment__action_type_delete, -.comment_theme_light .comment__action_type_edit { - color: var(--color32) -} - -.comment_theme_light .comment__action+.comment__controls:before { - color: var(--color10) -} - -.comment_theme_light .comment__control_view_inactive, -.comment_theme_light .comment__control_view_inactive:focus, -.comment_theme_light .comment__control_view_inactive:hover { - color: var(--color11) -} - -.comment_theme_light .comment__edit-timer { - color: var(--color32) -} - -.comment_theme_light .comment__edit-timer+.comment__controls:before { - color: var(--color10) -} - -.comment_theme_light .comment__status, -.comment_theme_light .comment__time { - color: var(--color11) -} - -.comment_theme_light .comment__user-id { - color: var(--color13) -} - -.comment_theme_light .comment__username { - color: var(--color10) -} - -.comment_theme_light.comment_editing .comment__input { - border-color: var(--color5) -} - -@media (-moz-touch-enabled:1) and (max-width:768px), -(pointer:coarse) and (max-width:768px) { - .comment_theme_light.comment_editing { - border-color: var(--color5) - } -} - -.comment_theme_light.comment_replying .comment__input { - border-color: var(--color5) -} - -@media (-moz-touch-enabled:1) and (max-width:768px), -(pointer:coarse) and (max-width:768px) { - .comment_theme_light.comment_replying { - border-color: var(--color5) - } -} - -.comment_theme_light.comment_view_preview .comment__info:after { - color: var(--color10) -} - -.comment_theme_light.comment_highlighting { - background: var(--color4) -} - -.L_A { - align-items: center; - display: flex; - font-weight: 700; - line-height: 16px; - min-width: 72px; - position: absolute; - right: 0; - text-align: right; - top: 5px; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none -} - -.L_B { - justify-content: center -} - -.L_C { - align-items: center; - color: #888; - color: var(--color13); - display: flex; - opacity: .4; - padding: 2px; - transition: opacity color .15s .15s -} - -.L_A:hover .L_C { - opacity: 1 -} - -.L_D:hover, -.L_E { - color: #259e06; - color: rgb(var(--color12)); - opacity: 1 -} - -.L_F:hover, -.L_G { - color: #cc0606; - color: rgb(var(--color30)); - opacity: 1 -} - -.L_H { - border-radius: 3px; - color: #969696; - color: rgb(var(--secondary-darker-text-color)); - font-weight: 700; - margin: 0 4px; - min-width: 16px; - padding: 2px 6px; - text-align: center -} - -.L_I { - background-color: rgba(204, 6, 6, .1); - background-color: rgba(var(--color30), .1); - color: #cc0606; - color: rgb(var(--color30)) -} - -.L_J { - background-color: rgba(37, 158, 6, .1); - background-color: rgba(var(--color12), .1); - color: #259e06; - color: rgb(var(--color12)) -} - -.L_K { - transform: rotate(180deg) -} - -.L_L { - font-weight: 500; - white-space: nowrap -} - -.P_A { - position: relative -} - -.P_B { - background-color: #000; - background-color: rgb(var(--black-color)); - border-radius: 4px; - color: #fff; - color: rgb(var(--white-color)); - padding: 4px 6px; - visibility: hidden -} - -.P_B, -.P_B:after { - position: absolute -} - -.P_B:after { - border: 6px solid transparent; - border: 6px solid var(--transparent); - content: "" -} - -.P_A:hover .P_B, -.P_C, -.P_D { - visibility: visible -} - -.P_C { - opacity: 1 -} - -.P_E { - display: block -} - -.P_F { - bottom: 100%; - margin-bottom: 10px; - right: 0 -} - -.P_F:after { - border-bottom-width: 0; - border-top-color: #000; - border-top-color: rgb(var(--black-color)); - right: 10px; - top: 100% -} - -.P_G { - bottom: 100%; - left: 0 -} - -.J_A { - align-items: center; - color: #0aa; - color: rgb(var(--primary-color)); - display: flex; - font-size: 14px -} - -.J_A>*+*, -.J_B>*+* { - margin-left: .5em -} - -.J_C { - color: #969696; - color: rgb(var(--secondary-darker-text-color)) -} - -@media (hover:hover) { - .J_B { - opacity: 0; - transition: opacity .15s - } - - .J_A:hover .J_B { - opacity: 1 - } -} - -.J_B:before { - color: #64748b; - color: rgb(var(--secondary-text-color)); - content: "•"; - margin-right: .5em -} - -.F_A { - align-items: center; - display: flex -} - -.F_A>*+* { - margin-left: 4px -} - -.F_B { - align-items: center; - display: flex; - height: 16px; - padding: 2px; - width: 16px -} - -.F_C { - color: #0e7e9d; - color: var(--color29) -} - -.F_D { - color: #aaa; - color: var(--color1); - transition: opacity .15s -} - -.F_D:hover { - opacity: .75 -} - -.F_E { - align-items: center; - color: #d1d5db; - color: var(--color35); - display: inline-flex; - height: 1rem; - justify-content: center; - width: 1rem -} - -.F_E:hover { - color: #0e7e9d; - color: var(--color29) -} - -.A_A { - display: flex; - font-size: 14px; - justify-content: flex-end; - margin-top: 24px -} - -.A_B { - display: block; - margin: 20px auto; - max-width: 320px -} - -.B_A { - display: flex; - height: 100%; - justify-content: flex-end; - transform: translateX(100%); - transition: transform .5s ease-out; - width: 100% -} - -@media (min-width:448px) { - .B_A { - transform: translateX(448px) - } -} - -.B_B { - transform: translateX(0) -} - -.B_C { - transition: transform .5s ease-in -} - -.B_D { - background: #fff; - background: rgb(var(--primary-background-color)); - display: flex; - flex-direction: column; - flex-shrink: 0; - height: 100%; - max-width: 100%; - position: relative; - width: 100% -} - -@media (min-width:448px) { - .B_D { - width: 400px - } -} - -.B_E { - box-sizing: border-box; - color: #64748b; - color: rgb(var(--secondary-text-color)); - position: absolute; - right: 10px; - top: 18px; - z-index: 1 -} - -@media (min-width:448px) { - .B_E { - box-sizing: border-box; - color: #fff; - color: rgb(var(--white-color)); - padding: 4px; - position: static; - text-align: right; - width: 100% - } -} - -.B_F { - align-items: center; - flex-shrink: 0; - padding: 16px -} - -.B_F, -.B_G { - display: flex -} - -.B_G { - flex-direction: column; - flex-grow: 1; - overflow-y: auto; - padding: 0 16px 16px -} - -.B_H { - align-self: center; - margin: auto; - text-align: center -} - -.B_I { - font-size: 14px; - margin: 0 0 16px -} - -.B_G::-webkit-scrollbar { - width: 10px -} - -.B_G::-webkit-scrollbar-track { - background: transparent none repeat 0 0/auto auto padding-box border-box scroll; - background: initial; - border-radius: 3px -} - -.B_G::-webkit-scrollbar-thumb { - background-color: #fff; - background-color: rgb(var(--primary-background-color)); - border: 2px solid #fff; - border: 2px solid rgb(var(--white-color)); - border-radius: 5px -} - -.B_J { - bottom: 0; - left: 0; - padding: 16px; - position: -webkit-sticky; - position: sticky; - right: 0; - text-align: center -} - -.B_K { - flex-shrink: 0; - height: 32px; - margin-right: 8px; - width: 32px -} - -.B_L { - line-height: 1; - margin: 0; - max-width: 100%; - overflow: hidden; - padding-right: 8px -} - -.B_M { - font-size: 16px; - font-weight: 700 -} - -.B_M, -.B_N { - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap -} - -.B_N { - color: #888; - color: var(--color13); - font-size: 12px -} - -.B_O { - color: #64748b; - color: rgb(var(--secondary-text-color)); - margin-left: auto; - margin-right: 28px -} - -.B_O:hover { - color: inherit -} - -@media (min-width:448px) { - .B_O { - margin-right: 0 - } -} - -.B_P { - background-color: #fff; - background-color: rgb(var(--primary-background-color)); - left: 0; - margin: 0 0 4px; - position: -webkit-sticky; - position: sticky; - top: 0; - z-index: 1 -} - -.B_P:after { - background-image: linear-gradient(0deg, hsla(0, 0%, 100%, 0), #fff); - background-image: linear-gradient(0deg, rgba(var(--primary-background-color), 0), rgba(var(--primary-background-color), 1)); - content: ""; - height: 20px; - left: 0; - position: absolute; - top: 100%; - width: 100% -} - -.B_Q { - display: inline; - margin: 0; - padding-right: 6px -} - -.B_Q, -.B_R { - vertical-align: middle -} - -.B_R { - display: inline-block -} - -.B_S, -.B_T { - color: #888; - color: var(--color13); - margin: auto -} - -.B_U { - align-items: center; - display: flex; - flex-shrink: 0; - height: 35px; - justify-content: center -} - -.I_A { - background-color: #0e7e9d; - background-color: var(--color29); - border-radius: 2px; - color: #fff; - color: var(--color6); - font-size: 14px; - font-weight: 700; - line-height: 1; - padding: 3px 4px 2px -} - -.dark .I_A { - background-color: hsla(0, 0%, 100%, .12); - background-color: rgba(var(--white-color), .12) -} \ No newline at end of file