From 246c5b3d15a1009aa2d30ad0ccc4ef4cbfa05366 Mon Sep 17 00:00:00 2001 From: serr Date: Sat, 5 Apr 2025 21:33:24 +0300 Subject: [PATCH] ru vers added --- main.go | 3 + mvc/controllers/pages/main_ru.go | 34 ++++++++ mvc/models/pages/main_ru.go | 27 +++++++ mvc/views/pages/main.gohtml | 5 ++ mvc/views/pages/main_ru.gohtml | 129 +++++++++++++++++++++++++++++++ 5 files changed, 198 insertions(+) create mode 100644 mvc/controllers/pages/main_ru.go create mode 100644 mvc/models/pages/main_ru.go create mode 100644 mvc/views/pages/main_ru.gohtml diff --git a/main.go b/main.go index a10aa7e..b6a7eff 100644 --- a/main.go +++ b/main.go @@ -53,6 +53,9 @@ func setupRoutes(a *models.App) *http.ServeMux { // Обработка статических файлов с кэшированием router.Handle(a.Config.AssetsPath, controllers.StaticHandler()) + // Обработка главной страницы + router.Handle("/ru/", controllers_pages.MainRuPageHandler(a)) + // Обработка главной страницы router.Handle("/", controllers_pages.MainPageHandler(a)) diff --git a/mvc/controllers/pages/main_ru.go b/mvc/controllers/pages/main_ru.go new file mode 100644 index 0000000..6f67a13 --- /dev/null +++ b/mvc/controllers/pages/main_ru.go @@ -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) +} diff --git a/mvc/models/pages/main_ru.go b/mvc/models/pages/main_ru.go new file mode 100644 index 0000000..8650fc5 --- /dev/null +++ b/mvc/models/pages/main_ru.go @@ -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 +} diff --git a/mvc/views/pages/main.gohtml b/mvc/views/pages/main.gohtml index c9e487b..058c864 100644 --- a/mvc/views/pages/main.gohtml +++ b/mvc/views/pages/main.gohtml @@ -20,6 +20,11 @@ you can message me on telegram or mastodon

+
+ +
diff --git a/mvc/views/pages/main_ru.gohtml b/mvc/views/pages/main_ru.gohtml new file mode 100644 index 0000000..7bf01a1 --- /dev/null +++ b/mvc/views/pages/main_ru.gohtml @@ -0,0 +1,129 @@ + + + + hikan.ru + + + + + + +
+
+ +
+
+

+ контакты +

+

+ вы можете написать мне в telegram или mastodon +

+
+
+ +
+
+
+
+

+ + эту страничку на русский переводил DeepSeek, имейте в виду + +

+
+
+

+ $whoami +

+

+ меня зовут serr (мое настоящее имя легко угадать, если вы говорите по-русски :d), и это не я придумал этот никнейм - просто меня стали так называть +

+

+ я родился в 2003 году, сейчас учусь на специалиста по кибербезопасности +

+

+ местоимения: он/его +

+
+
+

+ чем я занимаюсь? +

+

+ программирование - это моё всё: работа, хобби, пожизненная одержимость +

+

+ мне нравится развиваться во всех областях программирования - мне буквально интересно всё: кибербезопасность (хаотичный взлом вещей, анализ кода, написание автоматических анализаторов и перекладывание байтов туда-сюда), многопоточность, веб-разработка, низкоуровневое программирование, криптография и многое другое! +

+

+ мне нравится идея символьного/конколического выполнения и виртуального выполнения кода в целом +

+
+
+

+ что я люблю +

+
    +
  • кофе. я ОЧЕНЬ люблю кофе. почти любой. и много
  • +
  • фильмы и сериалы (особенно сериалы). я смотрю что-то почти каждый день
  • +
  • true crime. я одержим делами о серийных убийцах, таинственных исчезновениях, нераскрытых убийствах - всем этим тёмным материалом
  • +
  • русский андерграундный рэп типа Slava KPSS, Zamay, MB Packet, Ovsyankin и т.д.
  • +
  • простой и расширяемый код. я считаю, что если ваш код слишком сложен, значит вы делаете что-то не так. большинство вещей проще, чем кажутся
  • +
+
+
+

+ проекты +

+
    +
  • git.hikan.ru/serr - мои репозитории
  • +
  • телеграм-бот с расписанием для СПбПУ - polysched_bot (передан более активному владельцу)
  • +
  • телеграм-бот с расписанием для Горного - gornischedule_bot (закрыт)
  • +
+
+
+

+ интересные ссылки +

+
    +
  • Mo, спасибо за идею дизайна!
  • +
  • огромная коллекция номеров Xakep - 図書館.きく.コム
  • +
  • мне нравится этот сайт о Small Web - smallweb
  • +
  • очень атмосферный форум о блэк-метале - lycanthropia
  • +
+
+
+ + + \ No newline at end of file