some changes

posts
serr 2025-04-13 16:26:57 +03:00
parent f616d45278
commit 5f52a4dd7b
6 changed files with 22 additions and 18 deletions

2
eye.sh
View File

@ -3,7 +3,7 @@ stty -echoctl # Отключает вывод управляющих симво
# НАСТРОЙКА СКРИПТА ТУТ ###########################################################
DURATION=1 # Задержка между проверками в секундах
WATCH_DIRS=("posts" "mvc" "assets") # Массив директорий для наблюдения
WATCH_DIRS=("posts" "mvc" "assets" "tools") # Массив директорий для наблюдения
BINARY_PATH="./main" # Путь до бинарного файла
BUILD_CMD="go build -o $BINARY_PATH main.go" # Команда для сборки
###################################################################################

View File

@ -14,10 +14,10 @@ const (
)
type Post struct {
Link PostLink
Preview template.HTML
Data template.HTML
ModTimestamp int64
Link PostLink
Preview template.HTML
Data template.HTML
Timestamp int64
}
func RenderPostPage(templates *template.Template, version int64, data template.HTML) ([]byte, error) {
@ -36,7 +36,7 @@ func RenderPostPage(templates *template.Template, version int64, data template.H
return pageData.Bytes(), nil
}
func newPost(link string, data []byte, modTimestamp int64) *Post {
func newPost(link string, data []byte, timestamp int64) *Post {
previewBuf := make([]byte, 0, 503)
if len(data) > 500 {
@ -47,9 +47,9 @@ func newPost(link string, data []byte, modTimestamp int64) *Post {
}
return &Post{
Link: PostLink(link),
Preview: template.HTML(previewBuf),
Data: template.HTML(data),
ModTimestamp: modTimestamp,
Link: PostLink(link),
Preview: template.HTML(previewBuf),
Data: template.HTML(data),
Timestamp: timestamp,
}
}

View File

@ -42,8 +42,8 @@ func LoadPosts(dir string) (Posts, error) {
html := tools.MdToHTML(md)
link := fmt.Sprintf("/%s/", strings.TrimSuffix(filepath.Base(path), ".md"))
modTimestamp := f.ModTime().Unix()
posts[PostLink(link)] = newPost(link, html, modTimestamp)
timestamp := f.ModTime().Unix()
posts[PostLink(link)] = newPost(link, html, timestamp)
}
return nil
})
@ -65,7 +65,7 @@ func (p *Posts) RenderPostsPage(templates *template.Template, version int64) ([]
// Сортирую по ModTimestamp (новые сначала)
sort.Slice(postsSlice, func(i, j int) bool {
return postsSlice[i].ModTimestamp > postsSlice[j].ModTimestamp
return postsSlice[i].Timestamp > postsSlice[j].Timestamp
})
context := map[string]any{

View File

@ -13,7 +13,7 @@
<strong>some system information</strong>:
</p>
<ul>
<li>unix timestamp of page rendering - <strong>{{ .renderingTimestamp }}</strong></li>
<li>unix timestamp of page rendering: <code>{{ .renderingTimestamp }}</code></li>
<li><code>curl -X COUNT https://hikan.ru</code> - 24-hour server request count</li>
<li><code>curl -X LIMINAL https://hikan.ru</code> - what do you know about liminal spaces?</li>
<li>this site code repository - <a href="https://git.hikan.ru/serr/hikan.ru" target="_blank">git.hikan.ru/serr/hikan.ru</a></li>

View File

@ -4,7 +4,11 @@
<body>
{{ template "header" . }}
<main>
<div>
<p>
<code>posts sorted by last mod time</code>
</p>
</div>
{{ range $ind, $post := .posts }}
<div>
<p>
@ -14,7 +18,7 @@
<a href="{{ $post.Link }}">read more</a>
</p>
<p>
<code>changed at: {{ $post.ModTimestamp }}</code>
<code>mod time: {{ $post.Timestamp }}</code>
</p>
</div>
{{ end }}

View File

@ -9,8 +9,8 @@
Подумал, что неплохо было бы написать hot-reloader, чтобы посты менялись на сайте если я как-то их меняю в папке на сервере.
**Идея выглядит следующим образом:** есть команда для сборки бинарника (может быть абсолютно любой, хоть cargo, хоть make, хоть gcc и тд., главное чтобы соответствующая система сборки была установлена на устройстве), путь до собранного бинарника, и список директорий, за которыми надо следить.
**Идея выглядит так:** есть команда для сборки бинарника (может быть абсолютно любой, хоть cargo, хоть make, хоть gcc и тд., главное чтобы соответствующая система сборки была установлена на устройстве), путь до собранного бинарника, и список директорий, за которыми надо следить.
Далее, запускается скрипт, собирает указанной командой бинарник и начинает следить за директориями. При каких-либо изменениях в директориях, бинарник пересобирается и перезапускается.
На чем писать? Я хочу чтобы никаких зависимостей у скрипта не было вообще. Чтобы можно было его скачать, настроить за пару секунд и все. Решил писать на bash. Который я кстати **вообще не знаю**. Посидел пару часов, спрашивая непонятные моменты у deepseek. Скрипт в итоге [получился](https://git.hikan.ru/serr/eye-hot-reloader) ровно таким, какой был мне нужен, и уже контролирует работу серверной программы этого сайта.
На чем писать? Я хочу чтобы никаких зависимостей у скрипта не было вообще. Чтобы можно было его скачать, настроить за пару секунд и все. Решил писать на bash script. Который я кстати **вообще не знаю**. Посидел пару часов, спрашивая непонятные моменты у deepseek. Скрипт в итоге [получился](https://git.hikan.ru/serr/eye-hot-reloader) ровно таким, какой был мне нужен, и уже контролирует работу серверной программы этого сайта.