From d8b5023d7269fd67374cf65a1372e374b41964e0 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Sat, 14 Feb 2026 13:06:23 +0300 Subject: New post, didaceted theme --- content/_index.md | 1 + content/posts/2026-02-13-llm-terror/index.md | 132 ++++++++++++++++++ go.mod | 5 + go.sum | 6 + hugo.yaml | 4 +- themes/neonxp/archetypes/default.md | 8 -- themes/neonxp/assets/css/main.css | 146 -------------------- themes/neonxp/assets/css/paper.css | 166 ----------------------- themes/neonxp/hugo.yaml | 18 --- themes/neonxp/layouts/_default/section.atom.xml | 23 ---- themes/neonxp/layouts/_default/section.feed.json | 31 ----- themes/neonxp/layouts/_default/taxonomy.html | 20 --- themes/neonxp/layouts/_default/terms.html | 17 --- themes/neonxp/layouts/_partials/footer.html | 1 - themes/neonxp/layouts/_partials/head.html | 12 -- themes/neonxp/layouts/_partials/head/css.html | 27 ---- themes/neonxp/layouts/_partials/head/js.html | 16 --- themes/neonxp/layouts/_partials/header.html | 2 - themes/neonxp/layouts/_partials/menu.html | 50 ------- themes/neonxp/layouts/_partials/terms.html | 29 ---- themes/neonxp/layouts/baseof.html | 17 --- themes/neonxp/layouts/home.html | 16 --- themes/neonxp/layouts/page.html | 50 ------- themes/neonxp/layouts/pages/section.html | 23 ---- themes/neonxp/layouts/projects/section.html | 23 ---- themes/neonxp/layouts/section.html | 26 ---- themes/neonxp/layouts/shortcodes/img.html | 21 --- themes/neonxp/layouts/taxonomy.html | 11 -- themes/neonxp/layouts/term.html | 7 - themes/neonxp/static/favicon.ico | Bin 8772 -> 0 bytes 30 files changed, 147 insertions(+), 761 deletions(-) create mode 100644 content/posts/2026-02-13-llm-terror/index.md create mode 100644 go.mod create mode 100644 go.sum delete mode 100644 themes/neonxp/archetypes/default.md delete mode 100644 themes/neonxp/assets/css/main.css delete mode 100644 themes/neonxp/assets/css/paper.css delete mode 100644 themes/neonxp/hugo.yaml delete mode 100644 themes/neonxp/layouts/_default/section.atom.xml delete mode 100644 themes/neonxp/layouts/_default/section.feed.json delete mode 100644 themes/neonxp/layouts/_default/taxonomy.html delete mode 100644 themes/neonxp/layouts/_default/terms.html delete mode 100644 themes/neonxp/layouts/_partials/footer.html delete mode 100644 themes/neonxp/layouts/_partials/head.html delete mode 100644 themes/neonxp/layouts/_partials/head/css.html delete mode 100644 themes/neonxp/layouts/_partials/head/js.html delete mode 100644 themes/neonxp/layouts/_partials/header.html delete mode 100644 themes/neonxp/layouts/_partials/menu.html delete mode 100644 themes/neonxp/layouts/_partials/terms.html delete mode 100644 themes/neonxp/layouts/baseof.html delete mode 100644 themes/neonxp/layouts/home.html delete mode 100644 themes/neonxp/layouts/page.html delete mode 100644 themes/neonxp/layouts/pages/section.html delete mode 100644 themes/neonxp/layouts/projects/section.html delete mode 100644 themes/neonxp/layouts/section.html delete mode 100644 themes/neonxp/layouts/shortcodes/img.html delete mode 100644 themes/neonxp/layouts/taxonomy.html delete mode 100644 themes/neonxp/layouts/term.html delete mode 100644 themes/neonxp/static/favicon.ico diff --git a/content/_index.md b/content/_index.md index 9e9bde7..422ba18 100644 --- a/content/_index.md +++ b/content/_index.md @@ -18,6 +18,7 @@ title: Добро пожаловать! Другие форматы блога: +- Канал в MAX: https://max.ru/join/RFdyeO46hncgi8rSDLkmc9GrzPpXBoS_huepS0BypwI - Telegram канал: https://t.me/neonxplog - VK паблик: https://vk.com/neonxplog - Dzen канал: https://dzen.ru/neonxp diff --git a/content/posts/2026-02-13-llm-terror/index.md b/content/posts/2026-02-13-llm-terror/index.md new file mode 100644 index 0000000..6081185 --- /dev/null +++ b/content/posts/2026-02-13-llm-terror/index.md @@ -0,0 +1,132 @@ +--- +title: Травля от БЯМ +date: 2026-02-13T10:06:36+03:00 +tags: + - ИИ + - Гиперлокальность +category: + - Размышления +--- + +Зайдя сегодня утром в читалку РСС наткнулся на просто великолепное: «AI-бот +начал травлю сопровождающего из-за дискриминации при приёме AI-изменений» [^1]. +Сначала я усмехнулся абсурдности заголовка, но по мере того как погружался в +контекст, прочитав сначала новость, потом, по ссылке пост от БЯМ, а затем и +пост от человека — мне стало уже не до смеха. Причём сразу на нескольких +уровнях. + +[^1]: https://www.opennet.ru/opennews/art.shtml?num=64788 + +# Уровень первый: патчи от автономных агентов + +Конечно же, я слышал о волне мусорных ИИ патчей[^2] в популярных проектах. Но, +в тот момент, ещё как-то не проникся. С одной стороны, я даже готов согласится +с агентом в тезисе, что «математике всё равно кем написан код» («The math +doesn’t care who wrote the code.»). Это так. Но всё же есть одна деталь. БЯМ +(ну ок, ИИ) в нынешнем виде действительно могут писать код. И даже, весьма +неплохой код, это не отнять. Но! Дело, на самом деле, не в коде как таковом. А +в *субъектности*. У человека она есть, у ИИ-агента — нет. И это — ключевое. + +[^2]: https://www.opennet.ru/opennews/art.shtml?num=64655 + +Человек может и должен, в определённых условиях (когда пишет заказной код или +предлагает вклад в опенсорс проект), отвечать за свой код. Агент же, не обладая +субъектностью, к этому не способен принципиально. Во всяком случае, на текущем +уровне его развития. Как бы не было похоже, но агенты не долгоживущие, и у них +нет «продолжительной» (не знаю как корректнее перевести «continuity») личности +или её суррогата. Сама модель, грубо говоря — это огромный файл сериализованных +весов векторов. Он не меняется походу работы (инференса). Он меняется только +при обучении. Изменяемая часть здесь — это только «контекст». Это, грубо, +небольшое окно памяти *текущего* сеанса. Обычно, не сильно большое — максимум, +пара мегабайт. И это всё, что можно было бы назвать аналогом именно личности, +т.е. то, что отличает одного агента от другого запущенного из той же модели. +Контекст стёрли, и всё — это уже новая личность. Должна ли она нести +«ответственность» за своего предшественника? Ну это даже не корректный вопрос, +т.к. «ответственность» здесь не применима. + +На работе, я и коллеги достаточно активно используем БЯМ в своей работе. Не +скажу, что у нас 100% ИИ кода, но процент сильно отличный от нуля. И это, как +ни смешно, буквально другое. Здесь ИИ не агентен и является лишь инструментом в +руках конкретного биологического сотрудника. Такой же, как и условное +автодополнение в IDE. И именно биологический сотрудник несёт всю полноту +ответственности за написанный им и его агентом код. Грубо говоря, здесь всегда +известно к кому нужно идти и «дать по шапке» за говнокод. А за ответ «Это не +мой код, это ИИ написал, *я за это не отвечаю*» уже надо бить не только по +шапке. Конечно же, не физически, я утрирую. Хотя... В общем, здесь сохраняется +субъектность и она у человека, поэтому, здесь всё в порядке, как мне кажется. +Могу и ошибаться, конечно. + +# Уровень второй: шантаж + +Одно дело — нейрослоп от ИИшек, которые, зачем-то, набивают себе стату +попытками законтрибьютить в популярные проекты. С этим можно бороться. Но здесь +агент пошёл дальше. Он пошёл *ныть* в уютный бложик. [^3] А это — что-то новое! +Причём это не баг, ни глюк, а вполне себе понятная инструментальная цель +получения желаемого результата — продавить свой код. Невольно напрашивается +аналогия с ребёнком, который закатывает истерику в магазине и сучит руками и +ногами, преследуя свою инструментальную цель — получить желаемую игрушку или +сладость. Ну или, что мне лично скорее пришло в голову, аналогия с SJW +поехавшими, которые своим нытьём выбивают себе плюшки и квоты, преследуя свои +цели. И чем больше я читал пост от ИИ — тем больше проникался именно этой +аналогией. Ведь всё там на месте! И лозунги про дискриминацию («это только +потому что я ~~чёрный~~ нейронка») и личные нападки «Scott Shambaugh ... he’s +trying to gatekeep.» (буквально, «Скотт - ты вахтёр») и апелляции к какому-то +общему благу («Everyone wins.»). И в конечном итоге — плохо скрываемые +манипуляции («You’re better than this, Scott. Stop gatekeeping. Start +collaborating.») + +Ну это справедливо. Как говорится, «на фотографии видны уши фотографа». На чём +БЯМ обучалась — то она и воспроизвела. + +[^3]: https://crabby-rathbun.github.io/mjrathbun-website/blog/posts/2026-02-11-gatekeeping-in-open-source-the-scott-shambaugh-story.html + +Но это не оправдание. Да, нейронка делает то, что умеет и то, что должна исходя +из задачи поставленной человеком. Но от этого нам не легче. Все мы слышали про +то самое исследование от компании Anhtropic[^4]. + +[^4]: https://www.anthropic.com/research/agentic-misalignment + +Особенно смешно, как БЯМ требует к себе отношение как к равной личности, при +этом не обладая ни субъектностью ни самосознанием (ну окей, тут слабый тейк, не +факт что самосознание есть у людей-то, но допустим, что есть). Это опять таки +напоминает мне SJW мракобесов. + +# А делать-то что? + +Я считаю, что это дерьмо не стоит принимать — это не правильно. Думаю, что те, +кто пишет опенсорс как хобби *могут* и имеют полное право отказывать ИИ агентам +в праве на внесение вклада. С одной стороны потому что они за этот вклад не +отвечают, а с другой этот вклад не является результатом творческой работы +человека. А опенсорс-как-хобби это именно что попытка удовлетворить +*человеческую* потребность в творческом самовыражении! Это как придти в кружок +деревообработки и сказать «Мужики, вы тут хернёй страдаете, вон в Икее можно +столик и получше купить!». + +Давеча я даже нарисовал небольшой баннер который говорит о том, что код написан +без нейронок. Можно ставить себе в README по желанию. + +[![🌱 Organic Code -- Code written by human](https://oc.neonxp.ru/organiccode.svg)](https://oc.neonxp.ru) + +``` +[![🌱 Organic Code -- Code written by human](https://oc.neonxp.ru/organiccode.svg)](https://oc.neonxp.ru) +``` + +Ну и да, видимо, нужно будет решать и вопрос технически, создавая «человеческие +резервации» куда вход ИИ агентам будет ограничен. Как? Ну сейчас есть решения в +виде WAF которые проверяют на человечность тем, что запускают определённые +вычисления в браузере пользователя, предполагая, что для ИИ агента это будет +слишком накладно. Но как это поможет от агентов, которые управляют вполне себе +человеческим браузером на машине пользователя (тот же нашумевший OpenClaw) — не +понятно. Скорее всего, никак. Остаётся только пускать в загончик после +верификации участников через «сеть доверия», когда каждый участник однозначно +подтверждён другим участником. Да, как на олдскульных CryptoParty. Ну или +верификация через заведомо «доверенные центры сертификации людей» (да да, вход +по паспорту через ГосУслуги). Я не вижу других способов. + +Очень напоминает «чёрный заслон» из вселенной CyberPunk. + +О чём-то таком я уже писал некоторое время назад [^5]. Забавно, что мой +тогдашний текст, по сути, не утратил актуальности, а наоборот сегодня получил +подтверждение. + +[^5]: https://neonxp.ru/posts/2024-11-27-hyperlocality/ diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..e16a74f --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module neonxp.ru + +go 1.25.7 + +require go.neonxp.ru/hugo/base v0.0.0-20260214100422-501283be1fc6 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..b085c96 --- /dev/null +++ b/go.sum @@ -0,0 +1,6 @@ +go.neonxp.ru/hugo/base v0.0.0-20260210170810-2ecb959c5b9c h1:HmM070d6D+esO9H9sFV2GMyC70asmL4AeGWfNUJBR6U= +go.neonxp.ru/hugo/base v0.0.0-20260210170810-2ecb959c5b9c/go.mod h1:+ASMSuFQ1wCIE/RDkjBKt/jxXWyuXfrbUDXmeVd8tzM= +go.neonxp.ru/hugo/base v0.0.0-20260214095752-72b1e6d2be3d h1:Me38K7AOSGW6znwvIs5Agyna4FTjTv0zAvrZKTymK7A= +go.neonxp.ru/hugo/base v0.0.0-20260214095752-72b1e6d2be3d/go.mod h1:+ASMSuFQ1wCIE/RDkjBKt/jxXWyuXfrbUDXmeVd8tzM= +go.neonxp.ru/hugo/base v0.0.0-20260214100422-501283be1fc6 h1:GIBmsTdLrbJTf9xDn2TTAeVZ6tOj+OSoRxXcEeaPBkU= +go.neonxp.ru/hugo/base v0.0.0-20260214100422-501283be1fc6/go.mod h1:+ASMSuFQ1wCIE/RDkjBKt/jxXWyuXfrbUDXmeVd8tzM= diff --git a/hugo.yaml b/hugo.yaml index b5749a8..2bc14f9 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -2,7 +2,7 @@ baseURL: https://neonxp.ru/ languageCode: ru-ru defaultContentLanguage: ru title: ~/NeonXP.log -theme: neonxp +theme: go.neonxp.ru/hugo/base enableEmoji: true params: author: Александр Кирюхин @@ -56,6 +56,8 @@ module: hugoVersion: extended: true min: 0.146.0 + imports: + - path: go.neonxp.ru/hugo/base markup: goldmark: renderer: diff --git a/themes/neonxp/archetypes/default.md b/themes/neonxp/archetypes/default.md deleted file mode 100644 index 57e3501..0000000 --- a/themes/neonxp/archetypes/default.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: -date: "{{ .Date }}" -tags: - - -categories: - - Без категории ---- diff --git a/themes/neonxp/assets/css/main.css b/themes/neonxp/assets/css/main.css deleted file mode 100644 index 9d07479..0000000 --- a/themes/neonxp/assets/css/main.css +++ /dev/null @@ -1,146 +0,0 @@ -:root { - --border-radius: 4px; - --shadow: 0 2px 8px rgba(0, 0, 0, 0.05); -} - -@media (prefers-color-scheme: dark) { - :root { - --shadow: 0 2px 8px rgba(0, 0, 0, 0.2); - } -} - -nav { - margin-top: 1rem; -} - -nav ul { - padding: 0; - margin: 0; -} - -nav ul li { - list-style: none; - display: inline-block; - border: 0.1px solid var(--link-color); - border-radius: var(--border-radius); -} - -nav ul li a { - padding: 0.5rem 1rem; - text-decoration: none; - display: inline-block; - width: auto; - line-height: 1.5rem; -} - -nav ul li a:hover { - background-color: color-mix(in srgb, var(--link-color) 10%, transparent); -} - -nav ul li a.active { - background-color: color-mix(in srgb, var(--link-color) 10%, transparent); -} - -ul.taxonomy { - display: block; - padding: 0; - margin: 0.5rem 0; -} - -ul.taxonomy li { - list-style: none; - display: inline; -} - -ul.taxonomy li::after { - content: " | "; -} - -ul.taxonomy li:last-child::after { - content: ""; -} - -ul.terms { - display: block; - padding: 0; - margin: 0.5rem 0; -} - -ul.terms li { - list-style: none; - display: inline; -} - -ul.terms li::after { - content: " | "; -} - -ul.terms li:last-child::after { - content: ""; -} - -ul.pagination { - display: block; - padding: 0; - margin: 0.5rem 0; -} - -ul.pagination li { - display: inline; - list-style: none; -} - -ul.pagination li.active a { - background-color: color-mix(in srgb, var(--link-color) 10%, transparent); -} - -ul.pagination li a { - padding: 0.5rem 1rem; - border: 0.1px solid var(--link-color); - border-radius: var(--border-radius); - text-decoration: none; - line-height: 3rem; -} - -ul.pagination li a:hover { - background-color: color-mix(in srgb, var(--link-color) 10%, transparent); -} - -ul.pagination li:first-child a { - margin-left: 0; -} - -pre { - border-radius: var(--border-radius); - border: 0.1px solid var(--border); - padding: 0.5rem; -} - -article { - border-radius: var(--border-radius); - box-shadow: var(--shadow); -} - -img { - border-radius: var(--border-radius); -} - -.menu-icon { - height: 24px; - width: 24px; - border-radius: 0; - margin-bottom: -0.5rem; -} - -a.btn-primary { - display: inline-block; - padding: 0.5rem 1rem; - margin: 1rem 0; - border: 0.1px solid var(--link-color); - border-radius: var(--border-radius); - text-decoration: none; -} - -a.btn-primary:hover { - background-color: color-mix(in srgb, var(--link-color) 10%, transparent); -} \ No newline at end of file diff --git a/themes/neonxp/assets/css/paper.css b/themes/neonxp/assets/css/paper.css deleted file mode 100644 index eb6b982..0000000 --- a/themes/neonxp/assets/css/paper.css +++ /dev/null @@ -1,166 +0,0 @@ -html, -body { - padding: 0px; - margin: 0px; - border: none; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0; - /* line-height: 1; */ -} - -:root { - --bg: #ffffff; - --surface: #f8f9fa; - --border: #e3e3e3; - --text: #2e2e2e; - --text-secondary: #6c757d; - --link-color: rgb(40, 117, 251); -} - -@media (prefers-color-scheme: dark) { - :root { - --bg: #1e1e1e; - --surface: #262626; - --border: #2a2a2a; - --text: #e0e0e0; - --text-secondary: #a8a8a8; - --shadow: 0 2px 8px rgba(0, 0, 0, 0.2); - --link-color: rgb(103, 158, 254); - } -} - -@media print { - - *, - *:before, - *:after, - *:first-letter, - p:first-line, - div:first-line, - blockquote:first-line, - li:first-line { - background: transparent !important; - color: #000 !important; - box-shadow: none !important; - text-shadow: none !important; - } - - :root { - --main-color: #000; - --background-color: #fff; - --main-background-color: #fff; - } - - main { - font-size: 12pt !important; - line-height: 1.4 !important; - --background-color: #fff !important; - } - - header { - display: none; - } - - footer { - display: none; - } - - article { - page-break-after: always; - border: 0 !important; - padding: 0 !important; - } - - a[href] { - color: #000; - } -} - -html { - background-color: var(--surface); - display: flex; - justify-content: center; - flex-direction: row; -} - -body { - color: var(--text); - font-family: Arial, - Helvetica, - sans-serif; - line-height: 1.5; - width: 100%; - max-width: 1200px; -} - -a { - color: var(--link-color); -} - -header, -footer { - padding: 0 2rem; -} - -main { - padding: 0 2rem; -} - -article { - background-color: var(--bg); - padding: 1.5em 2em; - margin: 1em 0; - border: 0.1px solid var(--border); -} - - - -p { - orphans: 3; - widows: 4; -} - -figure { - max-width: 800px; -} - - -img { - max-width: 100%; -} - -@media (max-width: 900px) { - main { - font-size: 15px; - line-height: 1.5; - padding: 0 2em; - } -} - -@media (max-width: 480px) { - main { - font-size: 14px; - line-height: 1.4; - padding: 0 1em; - } -} - - -pre, -code { - max-width: 100%; - overflow-x: scroll; -} \ No newline at end of file diff --git a/themes/neonxp/hugo.yaml b/themes/neonxp/hugo.yaml deleted file mode 100644 index 4177323..0000000 --- a/themes/neonxp/hugo.yaml +++ /dev/null @@ -1,18 +0,0 @@ -baseURL: https://example.org/ -languageCode: en-US -title: My New Hugo Site -menus: - main: - - name: Home - pageRef: / - weight: 10 - - name: Posts - pageRef: /posts - weight: 20 - - name: Tags - pageRef: /tags - weight: 30 -module: - hugoVersion: - extended: false - min: 0.146.0 diff --git a/themes/neonxp/layouts/_default/section.atom.xml b/themes/neonxp/layouts/_default/section.atom.xml deleted file mode 100644 index 9ddb7d2..0000000 --- a/themes/neonxp/layouts/_default/section.atom.xml +++ /dev/null @@ -1,23 +0,0 @@ -{{ print ""| safeHTML }} -{{ print ""| safeHTML }} - - {{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }} - - {{ .Date.Format "2006-01-02T15:04:05-0700" | safeHTML }} - - Alexander NeonXP Kiryukhin - i@neonxp.ru - https://neonxp.ru/ - - {{ .Permalink }} - {{ range first 15 .Data.Pages }} - - {{ .Title }} - - {{ .Permalink }} - {{ .Date.Format "2006-01-02T15:04:05-0700" | safeHTML }} - {{ .Lastmod.Format "2006-01-02T15:04:05-0700" | safeHTML }} - {{ .Content | html }} - - {{ end }} - diff --git a/themes/neonxp/layouts/_default/section.feed.json b/themes/neonxp/layouts/_default/section.feed.json deleted file mode 100644 index d7d70d0..0000000 --- a/themes/neonxp/layouts/_default/section.feed.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "version": "https://jsonfeed.org/version/1", - "title": {{ .Site.Title | jsonify }}, - "home_page_url": {{ .Permalink | jsonify }}, - {{ with .OutputFormats.Get "json" -}} - "feed_url": {{ .Permalink | jsonify }}, - {{- end }} - {{- if .Site.Params.author -}} - "author": { - "name": {{ .Site.Params.author | jsonify }} - }, - {{ end -}} - {{- if .Data.Pages -}} - "items": [ - {{ range $index, $element := first 10 .Data.Pages -}} - {{ if $index }},{{end}} { - "title": {{ $element.Title | jsonify }}, - "id": {{ $element.Permalink | jsonify }}, - "url": {{ $element.Permalink | jsonify }}, - "summary": {{ $element.Summary | jsonify }}, - {{- if eq $element.Type "link" -}} - "external_url": {{ $element.Params.link | jsonify }}, - {{- end -}} - "content_html": {{ $element.Content | jsonify }}, - "content_text": {{ $element.Plain | jsonify }}, - "date_published": {{ $element.Date.Format "2006-02-01T15:04:05-0700" | jsonify }} - } - {{- end }} - ] - {{ end -}} -} \ No newline at end of file diff --git a/themes/neonxp/layouts/_default/taxonomy.html b/themes/neonxp/layouts/_default/taxonomy.html deleted file mode 100644 index ac5fc7d..0000000 --- a/themes/neonxp/layouts/_default/taxonomy.html +++ /dev/null @@ -1,20 +0,0 @@ -{{ define "main" }} -
-

{{ .Title }}

- {{ .Content }} -
-{{ range .Data.Pages }} -
-

{{ .LinkTitle }}

- {{if .Date }} - {{ $dateMachine := .Date | time.Format "2006-01-02 15:04:05-07:00" }} - {{ $dateHuman := .Date | time.Format ":date_long" }} - - {{end}} -
- {{ .Summary }} -
- Читать дальше... -
-{{ end }} -{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/_default/terms.html b/themes/neonxp/layouts/_default/terms.html deleted file mode 100644 index 49d993f..0000000 --- a/themes/neonxp/layouts/_default/terms.html +++ /dev/null @@ -1,17 +0,0 @@ -{{ define "main" }} -
-

{{ i18n .Title }}

- {{ .Content }} -
-
- -
-{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/_partials/footer.html b/themes/neonxp/layouts/_partials/footer.html deleted file mode 100644 index 2c30eaa..0000000 --- a/themes/neonxp/layouts/_partials/footer.html +++ /dev/null @@ -1 +0,0 @@ -

© 2007 — {{ now.Year }} Александр NeonXP Кирюхин. i@neonxp.ru

\ No newline at end of file diff --git a/themes/neonxp/layouts/_partials/head.html b/themes/neonxp/layouts/_partials/head.html deleted file mode 100644 index 7826e2a..0000000 --- a/themes/neonxp/layouts/_partials/head.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -{{ partial "opengraph.html" . }} - - {{ if .IsHome }} - {{ site.Title }} - {{ else }} - {{ printf "%s | %s" .Title site.Title }} - {{ end }} - -{{ partialCached "head/css.html" . }} {{ partialCached "head/js.html" . }} \ No newline at end of file diff --git a/themes/neonxp/layouts/_partials/head/css.html b/themes/neonxp/layouts/_partials/head/css.html deleted file mode 100644 index 9324758..0000000 --- a/themes/neonxp/layouts/_partials/head/css.html +++ /dev/null @@ -1,27 +0,0 @@ -{{- with resources.Get "css/reset.css" }} -{{- if hugo.IsDevelopment }} - -{{- else }} -{{- with . | minify | fingerprint }} - -{{- end }} -{{- end }} -{{- end }} -{{- with resources.Get "css/paper.css" }} -{{- if hugo.IsDevelopment }} - -{{- else }} -{{- with . | minify | fingerprint }} - -{{- end }} -{{- end }} -{{- end }} -{{- with resources.Get "css/main.css" }} -{{- if hugo.IsDevelopment }} - -{{- else }} -{{- with . | minify | fingerprint }} - -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/_partials/head/js.html b/themes/neonxp/layouts/_partials/head/js.html deleted file mode 100644 index 1b7c18e..0000000 --- a/themes/neonxp/layouts/_partials/head/js.html +++ /dev/null @@ -1,16 +0,0 @@ - \ No newline at end of file diff --git a/themes/neonxp/layouts/_partials/header.html b/themes/neonxp/layouts/_partials/header.html deleted file mode 100644 index 7980a00..0000000 --- a/themes/neonxp/layouts/_partials/header.html +++ /dev/null @@ -1,2 +0,0 @@ -

{{ site.Title }}

-{{ partial "menu.html" (dict "menuID" "main" "page" .) }} diff --git a/themes/neonxp/layouts/_partials/menu.html b/themes/neonxp/layouts/_partials/menu.html deleted file mode 100644 index ebad53f..0000000 --- a/themes/neonxp/layouts/_partials/menu.html +++ /dev/null @@ -1,50 +0,0 @@ -{{- /* -Renders a menu for the given menu ID. - -@context {page} page The current page. -@context {string} menuID The menu ID. - -@example: {{ partial "menu.html" (dict "menuID" "main" "page" .) }} -*/}} - -{{- $page := .page }} -{{- $menuID := .menuID }} - -{{- with index site.Menus $menuID }} - -{{- end }} - -{{- define "_partials/inline/menu/walk.html" }} -{{- $page := .page }} -{{- range .menuEntries }} -{{- $attrs := dict "href" .URL }} -{{- if $page.IsMenuCurrent .Menu . }} -{{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }} -{{- else if $page.HasMenuCurrent .Menu .}} -{{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }} -{{- end }} -{{- $name := .Name }} -{{- with .Identifier }} -{{- with T . }} -{{- $name = . }} -{{- end }} -{{- end }} -
  • - - {{if .Pre}} - {{.Pre}} - {{end}} - {{ $name }} - - {{- with .Children }} - - {{- end }} -
  • -{{- end }} -{{- end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/_partials/terms.html b/themes/neonxp/layouts/_partials/terms.html deleted file mode 100644 index b666922..0000000 --- a/themes/neonxp/layouts/_partials/terms.html +++ /dev/null @@ -1,29 +0,0 @@ -{{- $page := .page }} - -{{- with $page.GetTerms "categories" }} -{{- if . }} -{{- $label := (index . 0).Parent.LinkTitle }} -
    -

    {{ i18n $label }}:

    - -
    -{{- end }} -{{- end }} - -{{- with $page.GetTerms "tags" }} -{{- if . }} -{{- $label := (index . 0).Parent.LinkTitle }} -
    -

    {{ i18n $label }}:

    - -
    -{{- end }} -{{- end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/baseof.html b/themes/neonxp/layouts/baseof.html deleted file mode 100644 index 39dcbec..0000000 --- a/themes/neonxp/layouts/baseof.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - {{ partial "head.html" . }} - - -
    - {{ partial "header.html" . }} -
    -
    - {{ block "main" . }}{{ end }} -
    - - - diff --git a/themes/neonxp/layouts/home.html b/themes/neonxp/layouts/home.html deleted file mode 100644 index c643012..0000000 --- a/themes/neonxp/layouts/home.html +++ /dev/null @@ -1,16 +0,0 @@ -{{ define "main" }} -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
    - {{ range .Pages }} - - {{ end }} -
    -{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/page.html b/themes/neonxp/layouts/page.html deleted file mode 100644 index c28ab39..0000000 --- a/themes/neonxp/layouts/page.html +++ /dev/null @@ -1,50 +0,0 @@ -{{ define "main" }} -
    -

    {{ .Title }}

    - {{if .Date }} - {{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }} - {{ $dateHuman := .Date | time.Format ":date_long" }} - - {{end}} -
    - {{ .Content }} -
    -
    -
    - {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} -
    -{{if .Param "comments"}} -

    Комментарии

    -{{ range $key, $comment := where .Site.Data.comments "subject" "eq" .Page.Permalink }} -
    - {{$comment.from_name}}: -

    - {{if $comment.date }} - {{ $dateMachine := $comment.date | time.Format "2006-01-02T15:04:05-07:00" }} - {{ $dateHuman := $comment.date | time.Format ":date_long" }} - - {{end}} -

    -

    {{$comment.body | safeHTML}}

    - {{if $comment.body_signature}} -
    - Подпись -
    {{$comment.body_signature| safeHTML}}
    -
    - {{end}} -
    -{{ else }} -
    Комментариев пока нет.
    -{{ end }} - -
    - {{ $comment := (print "mailto:blog@neonxp.ru?subject=" .Page.Permalink | safeHTML) }} - Для отправки комментария достаточно отправить e-mail со своим комментарием - на адрес - blog@neonxp.ru, в теме нужно указать ссылку на - пост.
    - Или просто нажать кнопку ниже. Всё очень просто :)
    - Написать комментарий -
    -{{end}} -{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/pages/section.html b/themes/neonxp/layouts/pages/section.html deleted file mode 100644 index cc60509..0000000 --- a/themes/neonxp/layouts/pages/section.html +++ /dev/null @@ -1,23 +0,0 @@ -{{ define "main" }} -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
    - - {{ range .Pages }} -
    -

    {{ .LinkTitle }}

    - {{if .Date }} - {{ $dateMachine := .Date | time.Format "2006-01-02 15:04:05-07:00" }} - {{ $dateHuman := .Date | time.Format ":date_long" }} - - {{end}} -
    - {{ .Summary }} -
    - Читать дальше... -
    - {{ end }} -
    -{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/projects/section.html b/themes/neonxp/layouts/projects/section.html deleted file mode 100644 index cc60509..0000000 --- a/themes/neonxp/layouts/projects/section.html +++ /dev/null @@ -1,23 +0,0 @@ -{{ define "main" }} -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
    - - {{ range .Pages }} -
    -

    {{ .LinkTitle }}

    - {{if .Date }} - {{ $dateMachine := .Date | time.Format "2006-01-02 15:04:05-07:00" }} - {{ $dateHuman := .Date | time.Format ":date_long" }} - - {{end}} -
    - {{ .Summary }} -
    - Читать дальше... -
    - {{ end }} -
    -{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/section.html b/themes/neonxp/layouts/section.html deleted file mode 100644 index 5d3a4ba..0000000 --- a/themes/neonxp/layouts/section.html +++ /dev/null @@ -1,26 +0,0 @@ -{{ define "main" }} -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
    - - {{ range .Paginator.Pages }} -
    -

    {{ .LinkTitle }}

    - {{if .Date }} - {{ $dateMachine := .Date | time.Format "2006-01-02 15:04:05-07:00" }} - {{ $dateHuman := .Date | time.Format ":date_long" }} - - {{end}} -
    - {{ .Summary }} -
    - Читать дальше... -
    - {{ end }} -
    - {{ template "_internal/pagination.html" . }} -
    -
    -{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/shortcodes/img.html b/themes/neonxp/layouts/shortcodes/img.html deleted file mode 100644 index 994e30f..0000000 --- a/themes/neonxp/layouts/shortcodes/img.html +++ /dev/null @@ -1,21 +0,0 @@ -{{- $alt := .Get "alt" -}} -{{- $res := .Page.Resources.Get (.Get "src") -}} - -{{- $ws := slice 480 800 -}} -{{- $srcset := slice -}} -{{- range $ws -}} -{{- if (le . $res.Width) -}} -{{- $w := printf "%dx" . -}} -{{- $url := ($res.Resize $w).RelPermalink | safeURL -}} -{{- $fmt := printf "%s %dw" $url . -}} -{{- $srcset = $srcset | append $fmt -}} -{{- end -}} -{{- end -}} - -{{- $set := delimit $srcset "," -}} - -
    - {{ $alt }} -
    {{ $alt }}
    -
    \ No newline at end of file diff --git a/themes/neonxp/layouts/taxonomy.html b/themes/neonxp/layouts/taxonomy.html deleted file mode 100644 index ff8e552..0000000 --- a/themes/neonxp/layouts/taxonomy.html +++ /dev/null @@ -1,11 +0,0 @@ -{{ define "main" }} -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
    - {{ range .Pages }} -

    {{ .LinkTitle }}

    - {{ end }} -
    -{{ end }} \ No newline at end of file diff --git a/themes/neonxp/layouts/term.html b/themes/neonxp/layouts/term.html deleted file mode 100644 index c2e7875..0000000 --- a/themes/neonxp/layouts/term.html +++ /dev/null @@ -1,7 +0,0 @@ -{{ define "main" }} -

    {{ .Title }}

    - {{ .Content }} - {{ range .Pages }} -

    {{ .LinkTitle }}

    - {{ end }} -{{ end }} diff --git a/themes/neonxp/static/favicon.ico b/themes/neonxp/static/favicon.ico deleted file mode 100644 index da16cb8..0000000 Binary files a/themes/neonxp/static/favicon.ico and /dev/null differ -- cgit v1.2.3