some changes
parent
f616d45278
commit
5f52a4dd7b
2
eye.sh
2
eye.sh
|
@ -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" # Команда для сборки
|
||||
###################################################################################
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 }}
|
||||
|
|
|
@ -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) ровно таким, какой был мне нужен, и уже контролирует работу серверной программы этого сайта.
|
Loading…
Reference in New Issue