From e2685ddde67eaa82d2eab14f233e4bf89ca66f35 Mon Sep 17 00:00:00 2001 From: serr Date: Sun, 13 Apr 2025 12:26:48 +0300 Subject: [PATCH] posts cache bug fixed --- mvc/controllers/controllers_pages/post.go | 4 ++-- posts/post-upload-system.md | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 posts/post-upload-system.md diff --git a/mvc/controllers/controllers_pages/post.go b/mvc/controllers/controllers_pages/post.go index 7fa07b5..54445fd 100644 --- a/mvc/controllers/controllers_pages/post.go +++ b/mvc/controllers/controllers_pages/post.go @@ -12,7 +12,7 @@ func PostPageHandler(app *models.App) http.HandlerFunc { var err error // Страничка рендерится только если ее нет в кэше - pageData, ok := app.PagesCache.Get(models_pages.PostPageTmplName) + pageData, ok := app.PagesCache.Get(r.URL.Path) if !ok { post := app.Posts[models_pages.PostLink(r.URL.Path)] @@ -22,7 +22,7 @@ func PostPageHandler(app *models.App) http.HandlerFunc { http.Error(w, err.Error(), http.StatusInternalServerError) return } - app.PagesCache.Set(models_pages.PostPageTmplName, pageData) + app.PagesCache.Set(r.URL.Path, pageData) } sendPostPage(w, pageData.([]byte)) diff --git a/posts/post-upload-system.md b/posts/post-upload-system.md new file mode 100644 index 0000000..c1a6442 --- /dev/null +++ b/posts/post-upload-system.md @@ -0,0 +1,16 @@ +# Система загрузки постов +Началось всё с того, что я задумался о том, как же всё таки лучше хранить посты на этом сайте. + +Раньше в своих блогах я хранил посты записями в sql базе данных. Ячейка с непосредственно данными поста содержала в себе его html разметку. Я также делал админ-панель на сайте чтобы эту разметку можно было редактировать прямо там. + +Но писать что-то в html довольно неудобно, медленно и тд. Писать в *markdown* намного удобнее. Сразу же нашел инструмент [github.com/gomarkdown/markdown](https://github.com/gomarkdown/markdown), позволяющий легко ([пример](https://github.com/gomarkdown/markdown?tab=readme-ov-file#usage)) конвертировать md байты в html байты. А это все что мне нужно. + +## Горячая перезагрузка + +Подумал, что неплохо было бы написать hot-reloader, чтобы посты менялись на сайте если я как-то их меняю в папке на сервере. + +**Идея выглядит следующим образом:** есть команда для сборки бинарника (может быть абсолютно любой, хоть cargo, хоть make, хоть gcc и тд., главное чтобы соответствующая система сборки была установлена на устройстве), путь до собранного бинарника, и список директорий, за которыми надо следить. + +Далее, запускается скрипт, собирает указанной командой бинарник и начинает следить за директориями. При каких-либо изменениях в директориях, бинарник пересобирается и перезапускается. + +На чем писать? Я хочу чтобы никаких зависимостей у скрипта не было вообще. Чтобы можно было его скачать, настроить за пару секунд и все. Решил писать на bash. Который я кстати **вообще не знаю**. Посидел пару часов, спрашивая непонятные моменты у deepseek. Скрипт в итоге [получился](https://git.hikan.ru/serr/eye-hot-reloader) ровно таким, какой был мне нужен, и уже контролирует работу серверной программы этого сайта. \ No newline at end of file