some changes
parent
f616d45278
commit
5f52a4dd7b
2
eye.sh
2
eye.sh
|
@ -3,7 +3,7 @@ stty -echoctl # Отключает вывод управляющих симво
|
||||||
|
|
||||||
# НАСТРОЙКА СКРИПТА ТУТ ###########################################################
|
# НАСТРОЙКА СКРИПТА ТУТ ###########################################################
|
||||||
DURATION=1 # Задержка между проверками в секундах
|
DURATION=1 # Задержка между проверками в секундах
|
||||||
WATCH_DIRS=("posts" "mvc" "assets") # Массив директорий для наблюдения
|
WATCH_DIRS=("posts" "mvc" "assets" "tools") # Массив директорий для наблюдения
|
||||||
BINARY_PATH="./main" # Путь до бинарного файла
|
BINARY_PATH="./main" # Путь до бинарного файла
|
||||||
BUILD_CMD="go build -o $BINARY_PATH main.go" # Команда для сборки
|
BUILD_CMD="go build -o $BINARY_PATH main.go" # Команда для сборки
|
||||||
###################################################################################
|
###################################################################################
|
||||||
|
|
|
@ -17,7 +17,7 @@ type Post struct {
|
||||||
Link PostLink
|
Link PostLink
|
||||||
Preview template.HTML
|
Preview template.HTML
|
||||||
Data template.HTML
|
Data template.HTML
|
||||||
ModTimestamp int64
|
Timestamp int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func RenderPostPage(templates *template.Template, version int64, data template.HTML) ([]byte, error) {
|
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
|
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)
|
previewBuf := make([]byte, 0, 503)
|
||||||
|
|
||||||
if len(data) > 500 {
|
if len(data) > 500 {
|
||||||
|
@ -50,6 +50,6 @@ func newPost(link string, data []byte, modTimestamp int64) *Post {
|
||||||
Link: PostLink(link),
|
Link: PostLink(link),
|
||||||
Preview: template.HTML(previewBuf),
|
Preview: template.HTML(previewBuf),
|
||||||
Data: template.HTML(data),
|
Data: template.HTML(data),
|
||||||
ModTimestamp: modTimestamp,
|
Timestamp: timestamp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,8 +42,8 @@ func LoadPosts(dir string) (Posts, error) {
|
||||||
|
|
||||||
html := tools.MdToHTML(md)
|
html := tools.MdToHTML(md)
|
||||||
link := fmt.Sprintf("/%s/", strings.TrimSuffix(filepath.Base(path), ".md"))
|
link := fmt.Sprintf("/%s/", strings.TrimSuffix(filepath.Base(path), ".md"))
|
||||||
modTimestamp := f.ModTime().Unix()
|
timestamp := f.ModTime().Unix()
|
||||||
posts[PostLink(link)] = newPost(link, html, modTimestamp)
|
posts[PostLink(link)] = newPost(link, html, timestamp)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -65,7 +65,7 @@ func (p *Posts) RenderPostsPage(templates *template.Template, version int64) ([]
|
||||||
|
|
||||||
// Сортирую по ModTimestamp (новые сначала)
|
// Сортирую по ModTimestamp (новые сначала)
|
||||||
sort.Slice(postsSlice, func(i, j int) bool {
|
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{
|
context := map[string]any{
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<strong>some system information</strong>:
|
<strong>some system information</strong>:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<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 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><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>
|
<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>
|
<body>
|
||||||
{{ template "header" . }}
|
{{ template "header" . }}
|
||||||
<main>
|
<main>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
<code>posts sorted by last mod time</code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
{{ range $ind, $post := .posts }}
|
{{ range $ind, $post := .posts }}
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
|
@ -14,7 +18,7 @@
|
||||||
<a href="{{ $post.Link }}">read more</a>
|
<a href="{{ $post.Link }}">read more</a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<code>changed at: {{ $post.ModTimestamp }}</code>
|
<code>mod time: {{ $post.Timestamp }}</code>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
|
|
||||||
Подумал, что неплохо было бы написать hot-reloader, чтобы посты менялись на сайте если я как-то их меняю в папке на сервере.
|
Подумал, что неплохо было бы написать 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