mirror of
https://github.com/ada-dmitry/ada-dmitry.github.io.git
synced 2026-09-24 09:20:40 +00:00
Обновить заголовки в markdown-файлах, добавив кавычки для улучшения совместимости
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
created: 04.08.2025
|
created: 04.08.2025
|
||||||
title: Как Дима сервер домашний поднимал...
|
title: "Как Дима сервер домашний поднимал..."
|
||||||
layout: single
|
layout: single
|
||||||
---
|
---
|
||||||
Как я и обещал, запускаю небольшой цикл постов о моём маленьком проекте: "Домашняя виртуализация на базе мини-ПК"
|
Как я и обещал, запускаю небольшой цикл постов о моём маленьком проекте: "Домашняя виртуализация на базе мини-ПК"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Коробочки-коробочки...
|
title: "Коробочки-коробочки..."
|
||||||
layout: single
|
layout: single
|
||||||
---
|
---
|
||||||
Мы возвращаемся к нашей эпопее с домашним сервером, напомню, мы в прошлый раз обсуждали, что такое *виртуализация* - это технология, с помощью которой мы можем на одном устройстве (сервере, ПК и т.д.) разместить множество "виртуальных устройств".
|
Мы возвращаемся к нашей эпопее с домашним сервером, напомню, мы в прошлый раз обсуждали, что такое *виртуализация* - это технология, с помощью которой мы можем на одном устройстве (сервере, ПК и т.д.) разместить множество "виртуальных устройств".
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Новое начало
|
title: "Новое начало"
|
||||||
layout: single
|
layout: single
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: SLI, SLO, SLA
|
title: "SLI, SLO, SLA"
|
||||||
---
|
---
|
||||||
|
|
||||||
## ✅ SLI — Service Level Indicator
|
## ✅ SLI — Service Level Indicator
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Отказоустойчивость VS Высокая доступность
|
title: "Отказоустойчивость VS Высокая доступность"
|
||||||
---
|
---
|
||||||
|
|
||||||
В мире ИТ надёжность систем — критически важная задача. Часто используют два термина: **отказоустойчивость** и **высокая доступность**. Несмотря на схожесть целей, это разные подходы.
|
В мире ИТ надёжность систем — критически важная задача. Часто используют два термина: **отказоустойчивость** и **высокая доступность**. Несмотря на схожесть целей, это разные подходы.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Автоматизация в программной инфраструктуре
|
title: "Автоматизация в программной инфраструктуре"
|
||||||
---
|
---
|
||||||
|
|
||||||
> 👨🏫 Лектор: *Дмитрий Ширяев* — старший системный инженер (CROC)
|
> 👨🏫 Лектор: *Дмитрий Ширяев* — старший системный инженер (CROC)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Базовые сетевые службы
|
title: "Базовые сетевые службы"
|
||||||
---
|
---
|
||||||
|
|
||||||
👨🏫 *Лектор: Никита Ефимов*
|
👨🏫 *Лектор: Никита Ефимов*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Введение в виртуализацию
|
title: "Введение в виртуализацию"
|
||||||
---
|
---
|
||||||
|
|
||||||
> Лектор: Артур Марцинкевич - Системный инженер Департамента инфраструктурных решений и сервисов
|
> Лектор: Артур Марцинкевич - Системный инженер Департамента инфраструктурных решений и сервисов
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Инфраструктура на уровне железа
|
title: "Инфраструктура на уровне железа"
|
||||||
---
|
---
|
||||||
|
|
||||||
👨🏫 *Антон Иванов*
|
👨🏫 *Антон Иванов*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Системы мониторинга
|
title: "Системы мониторинга"
|
||||||
---
|
---
|
||||||
|
|
||||||
**Зачем нужен мониторинг:**
|
**Зачем нужен мониторинг:**
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Системы резервного копирования (СРК)
|
title: "Системы резервного копирования (СРК)"
|
||||||
---
|
---
|
||||||
|
|
||||||
**Источник:** Летняя Школа «System-инженер»
|
**Источник:** Летняя Школа «System-инженер»
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Что такое IT-инфраструктура
|
title: "Что такое IT-инфраструктура"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Домашняя лаборатория — хаб
|
title: "Домашняя лаборатория — хаб"
|
||||||
layout: single
|
layout: single
|
||||||
permalink: /homelab/
|
permalink: /homelab/
|
||||||
description: Центральная страница проекта по домашнему серверу: цели, оглавление, дорожная карта и быстрые ссылки.
|
description: Центральная страница проекта по домашнему серверу: цели, оглавление, дорожная карта и быстрые ссылки.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Домашняя страница
|
title: "Домашняя страница"
|
||||||
layout: home
|
layout: home
|
||||||
classes: wide
|
classes: wide
|
||||||
author_profile: true
|
author_profile: true
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
layout: single
|
layout: single
|
||||||
title: Все заметки
|
title: "Все заметки"
|
||||||
permalink: /notes/
|
permalink: /notes/
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,96 @@
|
|||||||
|
---
|
||||||
|
title: "Проекты"
|
||||||
|
layout: single
|
||||||
|
permalink: /projects/
|
||||||
|
description: Подборка моих активных проектов: Домашняя лаборатория (Homelab) и конспекты Летней IT‑школы КРОК.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Проекты
|
||||||
|
|
||||||
|
Ниже — мои текущие живые проекты. Это не статичные статьи, а развивающиеся хабы с практикой, конспектами и дорожной картой.
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.projects-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
margin-top: .75rem;
|
||||||
|
}
|
||||||
|
.project-card {
|
||||||
|
border: 1px solid #e5e7eb;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 1rem 1.1rem;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 1px 2px rgba(0,0,0,.04);
|
||||||
|
transition: transform .18s ease, box-shadow .18s ease;
|
||||||
|
}
|
||||||
|
.project-card:hover { transform: translateY(-2px); box-shadow: 0 8px 22px rgba(0,0,0,.08); }
|
||||||
|
.project-title { margin: 0 0 .35rem; font-size: 1.15rem; }
|
||||||
|
.project-desc { margin: .35rem 0 .75rem; color: #4b5563; }
|
||||||
|
.badges { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 .8rem; }
|
||||||
|
.badge {
|
||||||
|
display: inline-block; padding: .18rem .5rem; border-radius: 999px;
|
||||||
|
font-size: .8rem; line-height: 1; background: #f3f4f6; color: #374151; border: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
.project-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
|
||||||
|
.btn {
|
||||||
|
display: inline-block; padding: .45rem .75rem; border-radius: 8px; font-weight: 600;
|
||||||
|
text-decoration: none; border: 1px solid #111827; color: #111827;
|
||||||
|
}
|
||||||
|
.btn:hover { background: #111827; color: #fff; }
|
||||||
|
.btn.secondary { border-color: #6b7280; color: #374151; }
|
||||||
|
.btn.secondary:hover { background: #6b7280; color: #fff; }
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
.project-card { background: #111; border-color: #222; box-shadow: none; }
|
||||||
|
.project-desc { color: #c7c7c7; }
|
||||||
|
.badge { background: #1a1a1a; color: #d1d5db; border-color: #2a2a2a; }
|
||||||
|
.btn { border-color: #e5e7eb; color: #e5e7eb; }
|
||||||
|
.btn:hover { background: #e5e7eb; color: #111; }
|
||||||
|
.btn.secondary { border-color: #9ca3af; color: #d1d5db; }
|
||||||
|
.btn.secondary:hover { background: #9ca3af; color: #111; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="projects-grid">
|
||||||
|
|
||||||
|
<div class="project-card">
|
||||||
|
<h3 class="project-title">🏠 Домашняя лаборатория (Homelab)</h3>
|
||||||
|
<div class="badges">
|
||||||
|
<span class="badge">Proxmox VE</span>
|
||||||
|
<span class="badge">KVM/LXC</span>
|
||||||
|
<span class="badge">WireGuard</span>
|
||||||
|
<span class="badge">VPS + Reverse‑proxy</span>
|
||||||
|
</div>
|
||||||
|
<p class="project-desc">
|
||||||
|
Практический цикл о мини‑ПК и Proxmox: виртуалки и контейнеры, публикация сервисов через туннели и VPS,
|
||||||
|
инфраструктурные принципы и безопасность. Внутри — обзор, быстрые ссылки и дорожная карта.
|
||||||
|
</p>
|
||||||
|
<div class="project-actions">
|
||||||
|
<a class="btn" href="/homelab/">Перейти в хаб</a>
|
||||||
|
<a class="btn secondary" href="/homelab/#публикации">Публикации</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="project-card">
|
||||||
|
<h3 class="project-title">📘 Летняя IT‑школа КРОК (Системная инженерия)</h3>
|
||||||
|
<div class="badges">
|
||||||
|
<span class="badge">Виртуализация</span>
|
||||||
|
<span class="badge">Сети</span>
|
||||||
|
<span class="badge">Мониторинг</span>
|
||||||
|
<span class="badge">Бэкапы</span>
|
||||||
|
</div>
|
||||||
|
<p class="project-desc">
|
||||||
|
Конспекты и практические заметки по курсу системной инженерии: основы инфраструктуры, автоматизация,
|
||||||
|
виртуализация, базовые сетевые службы, СРК и мониторинг. Постепенно пополняется.
|
||||||
|
</p>
|
||||||
|
<div class="project-actions">
|
||||||
|
<a class="btn" href="/system-engineer/">Перейти в хаб</a>
|
||||||
|
<a class="btn secondary" href="/system-engineer/#📘-теория">Оглавление</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Подобные страницы‑хабы помогают отслеживать прогресс и быстро переходить к нужным разделам. Если видите неточности — дайте знать, поправлю.
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: Летняя IT-школа КРОК
|
title: "Летняя IT-школа КРОК"
|
||||||
layout: single
|
layout: single
|
||||||
permalink: /system-engineer/
|
permalink: /system-engineer/
|
||||||
---
|
---
|
||||||
|
|||||||
+15
-14
@@ -1,42 +1,43 @@
|
|||||||
# _plugins/wikilinks.rb
|
# _plugins/wikilinks.rb
|
||||||
# Автоконвертация [[wikilinks]] -> [label](url) по коллекции _notes (и др. коллекциям, если надо)
|
# Конвертирует [[wikilinks]] и [[slug|Текст]] в обычные markdown-ссылки
|
||||||
|
# Ищет цели по коллекции `notes` (title и basename).
|
||||||
|
|
||||||
module Wikilinks
|
module Wikilinks
|
||||||
def self.build_index(site)
|
def self.build_index(site)
|
||||||
# Возьмём все документы из коллекции notes
|
col = site.collections['notes']
|
||||||
notes = site.collections['notes']&.docs || []
|
docs = col ? col.docs : []
|
||||||
index = {}
|
idx = {}
|
||||||
|
|
||||||
notes.each do |d|
|
docs.each do |d|
|
||||||
# ключи для поиска: title и basename без расширения
|
|
||||||
title = (d.data['title'] || File.basename(d.basename, '.*')).to_s
|
title = (d.data['title'] || File.basename(d.basename, '.*')).to_s
|
||||||
slug = File.basename(d.basename, '.*').to_s
|
slug = File.basename(d.basename, '.*').to_s
|
||||||
|
|
||||||
[title, slug].each do |k|
|
[title, slug].each do |k|
|
||||||
|
k = k.to_s.downcase.strip
|
||||||
next if k.empty?
|
next if k.empty?
|
||||||
index[k.downcase] = d.url
|
idx[k] = d.url
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
index
|
idx
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.convert(content, site)
|
def self.convert(content, site)
|
||||||
|
return content if content.nil? || content.empty?
|
||||||
|
|
||||||
idx = build_index(site)
|
idx = build_index(site)
|
||||||
|
|
||||||
content.gsub(/\[\[([^\]|#]+)(?:\|([^\]]+))?\]\]/) do
|
content.gsub(/\[\[([^\]|#]+?)(?:\|([^\]]+))?\]\]/) do
|
||||||
key = Regexp.last_match(1).strip
|
key = Regexp.last_match(1).strip
|
||||||
label = (Regexp.last_match(2) || key).strip
|
label = (Regexp.last_match(2) || key).strip
|
||||||
url = idx[key.downcase]
|
url = idx[key.downcase]
|
||||||
|
|
||||||
# если нашли — заменяем, иначе оставляем как есть
|
|
||||||
url ? "[#{label}](#{site.baseurl}#{url})" : Regexp.last_match(0)
|
url ? "[#{label}](#{site.baseurl}#{url})" : Regexp.last_match(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Прогоним через фильтр все страницы/посты/доки до рендера
|
# Важно: используем doc.site, а не payload['site']
|
||||||
Jekyll::Hooks.register [:pages, :posts, :documents], :pre_render do |doc, payload|
|
Jekyll::Hooks.register [:pages, :posts, :documents], :pre_render do |doc|
|
||||||
site = payload['site']
|
doc.content = Wikilinks.convert(doc.content, doc.site)
|
||||||
doc.content = Wikilinks.convert(doc.content, site)
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user