ru vers added
parent
47cf4f628e
commit
246c5b3d15
3
main.go
3
main.go
|
@ -53,6 +53,9 @@ func setupRoutes(a *models.App) *http.ServeMux {
|
||||||
// Обработка статических файлов с кэшированием
|
// Обработка статических файлов с кэшированием
|
||||||
router.Handle(a.Config.AssetsPath, controllers.StaticHandler())
|
router.Handle(a.Config.AssetsPath, controllers.StaticHandler())
|
||||||
|
|
||||||
|
// Обработка главной страницы
|
||||||
|
router.Handle("/ru/", controllers_pages.MainRuPageHandler(a))
|
||||||
|
|
||||||
// Обработка главной страницы
|
// Обработка главной страницы
|
||||||
router.Handle("/", controllers_pages.MainPageHandler(a))
|
router.Handle("/", controllers_pages.MainPageHandler(a))
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"main/mvc/models"
|
||||||
|
models_pages "main/mvc/models/pages"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Обработчик главной страницы
|
||||||
|
func MainRuPageHandler(a *models.App) http.HandlerFunc {
|
||||||
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
// Страничка рендерится только если ее нет в кэше
|
||||||
|
pageData, ok := a.Cache.Get(models_pages.MainRuPageTmplName)
|
||||||
|
if !ok {
|
||||||
|
pageData, err = models_pages.RenderMainRuPage(a.Templates, a.Version)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
a.Cache.Set(models_pages.MainRuPageTmplName, pageData)
|
||||||
|
}
|
||||||
|
|
||||||
|
SendMainPage(w, pageData.([]byte))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Отправляет страницу
|
||||||
|
func SendMainRuPage(w http.ResponseWriter, data []byte) {
|
||||||
|
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
w.Write(data)
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"html/template"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Имя соответствующего шаблона
|
||||||
|
MainRuPageTmplName = "main_ru.gohtml"
|
||||||
|
)
|
||||||
|
|
||||||
|
func RenderMainRuPage(templates *template.Template, version int64) ([]byte, error) {
|
||||||
|
var pageData bytes.Buffer
|
||||||
|
|
||||||
|
context := map[string]any{
|
||||||
|
"version": version,
|
||||||
|
"renderingTimestamp": time.Now().Unix(),
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := templates.ExecuteTemplate(&pageData, MainRuPageTmplName, context); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageData.Bytes(), nil
|
||||||
|
}
|
|
@ -20,6 +20,11 @@
|
||||||
you can message me on <a href="https://t.me/semaphoreslover" target="_blank">telegram</a> or <a href="https://mastodon.ml/@serr" target="_blank">mastodon</a>
|
you can message me on <a href="https://t.me/semaphoreslover" target="_blank">telegram</a> or <a href="https://mastodon.ml/@serr" target="_blank">mastodon</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/ru">switch to ru version</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<title>hikan.ru</title>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="shortcut icon" href="/assets/pic/favicon.webp?v={{ .version }}" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" href="/assets/css/styles.css?v={{ .version }}" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<div>
|
||||||
|
<img src="/assets/pic/header.webp?v={{ .version }}" width="100%" height="100%">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
контакты
|
||||||
|
</h1>
|
||||||
|
<p>
|
||||||
|
вы можете написать мне в <a href="https://t.me/semaphoreslover" target="_blank">telegram</a> или <a href="https://mastodon.ml/@serr" target="_blank">mastodon</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/">английская версия</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<main>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
<code>
|
||||||
|
эту страничку на русский переводил DeepSeek, имейте в виду
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
$whoami
|
||||||
|
</h1>
|
||||||
|
<p>
|
||||||
|
меня зовут serr (мое настоящее имя легко угадать, если вы говорите по-русски :d), и это не я придумал этот никнейм - просто меня стали так называть
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
я родился в 2003 году, сейчас учусь на специалиста по кибербезопасности
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>местоимения: он/его</code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
чем я занимаюсь?
|
||||||
|
</h1>
|
||||||
|
<p>
|
||||||
|
программирование - это моё всё: работа, хобби, пожизненная одержимость
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
мне нравится развиваться во всех областях программирования - мне буквально интересно всё: кибербезопасность (хаотичный взлом вещей, анализ кода, написание автоматических анализаторов и перекладывание байтов туда-сюда), многопоточность, веб-разработка, низкоуровневое программирование, криптография и многое другое!
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
мне нравится идея <a href="https://en.wikipedia.org/wiki/Symbolic_execution" target="_blank">символьного</a>/конколического выполнения и виртуального выполнения кода в целом
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
что я люблю
|
||||||
|
</h1>
|
||||||
|
<ul>
|
||||||
|
<li><strong>кофе</strong>. я ОЧЕНЬ люблю кофе. почти любой. и много</li>
|
||||||
|
<li><strong>фильмы и сериалы</strong> (особенно сериалы). я смотрю что-то почти каждый день</li>
|
||||||
|
<li><strong>true crime</strong>. я одержим делами о серийных убийцах, таинственных исчезновениях, нераскрытых убийствах - всем этим тёмным материалом</li>
|
||||||
|
<li><strong>русский андерграундный рэп</strong> типа Slava KPSS, Zamay, MB Packet, Ovsyankin и т.д.</li>
|
||||||
|
<li><strong>простой и расширяемый код</strong>. я считаю, что если ваш код слишком сложен, значит вы делаете что-то не так. большинство вещей проще, чем кажутся</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
проекты
|
||||||
|
</h1>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://git.hikan.ru/serr" target="_blank">git.hikan.ru/serr</a> - мои репозитории</li>
|
||||||
|
<li><del>телеграм-бот с расписанием для СПбПУ - <a href="https://t.me/polysched_bot" target="_blank">polysched_bot</a></del> (передан более активному владельцу)</li>
|
||||||
|
<li><del>телеграм-бот с расписанием для Горного - <a href="https://t.me/gornischedule_bot" target="_blank">gornischedule_bot</a></del> (закрыт)</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
интересные ссылки
|
||||||
|
</h1>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://mo.rijndael.cc/" target="_blank">Mo</a>, спасибо за идею дизайна!</li>
|
||||||
|
<li>огромная коллекция номеров Xakep - <a href="https://図書館.きく.コム/" target="_blank">図書館.きく.コム</a></li>
|
||||||
|
<li>мне нравится этот сайт о Small Web - <a href="https://smallweb.cc/" target="_blank">smallweb</a></li>
|
||||||
|
<li>очень атмосферный форум о блэк-метале - <a href="https://www.lycanthropia.net/" target="_blank">lycanthropia</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div>
|
||||||
|
<img src="/assets/pic/footer.webp?v={{ .version }}" width="100%" height="100%">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
а ещё можно подписаться на мой телеграм-канал с картинками!
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="https://t.me/lolistack" target="_blank">цифровая деревня</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
_немного системной информации_
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>unix-время генерации страницы - <strong>{{ .renderingTimestamp }}</strong></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
этот сайт написан на Go без использования фреймворков за несколько часов, хостинг - <a href="https://htk.ge" target="_blank">hostetski</a>, домен куплен по цене банки пива
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>2024 - настоящее время</code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue