ВсячинаБесконечный проект, блог о блоге

Вчера хотел здесь в админке добавить счётчик статей в категориях, а попутно проверить почему не генерируются картинки в формате avif и обнаружил, что вылезли фатальные ошибки после обновления симфони (5.4 на данный момент времени), хотя в TODO пометил их на исправление из-за предупреждений об устаревании. Но не исправлял 🙂

Вот и сейчас не могу сохранить пост с картинкой. 500-я... Ладно, запушу исправление и добавлю позже. Вообще, выход из этой ситуации только один - это автотесты. И они были в моём бложике. Не помню, почему я перестал их поддерживать, скорее всего сменилась версия API CircleCI, вручную же я их не запускал, а прогон автотестов после пуша в репозиторий был удобновй штукой. Надо будет это всё восстановить, главным сдерживающим фактором по автотестам была устаревшая версия симфони, но это уже было ликвидировано.

Из-за ошибки этой при сохранении записей и забыл уже, что собирался писать 😅 Планы анонсировать не хотел, они висят перманентно и никуда не деваются обычно, могут откладываться. Захотелось перенести сюда некоторые записи из жеже, но потребуется разработка, хотя бы потому, что нужно перенос автоматизировать, а не копировать текст руками (хотя вручную это сделать невообразимо быстрее), но цель уже не в самом переносе из жежешки, а в том, чтобы этот перенос запрограммировать.

SkyLight

РаботаКомандировка

Ну вот и выбрался наконец в Москву. Пока не на гуляния, а по рабочим активностям, на разведку.

Как и почти два десятилетия назад, когда я был там в последний раз, ощущается более высокий уровень цивилизации, чем в других местах моего обитания. Метро в старой его части, ещё советской, местами как близнец напоминает Харьковское, или когда попадаешь в старые вагоны. Но есть и станции современные, которые выглядят масштабнее что-ли, круче. Как и современные поезда ☺️

А офис с каждой очередной работой всё круче и круче. Жаль я могу его посещать только эпизодически, по крайней мере, пока живу совсем в другой локации. Сейчас добавлю ещё несколько фото...

Grafana dashboard

NewsCDN минус, Prometheus плюс

Отключил тут CDN, вернее перевёл раздачу статических файлов на свой же nginx на сервере. Не такая уж и большая потеря для сайта с 2-10 посетителями в день, не считая роботов 😁 Санкции лишили возможности оплачивать услуги и оставили прекрасный сервис BunnyCDN без моего доллара в месяц. Ну да ладно, поигрался с content delivery и хватит.

А из нового прикрутил метрики Prometheus и Grafana, не ради самих метрик и графиков, а скорее в рамках изучения нового инструментария. Нужно же где-то тренироваться (на кошках), помимо рабочих проектов, где чаще делаешь не то, что хочется, а то, что нужно

Golanggo-chi: Генерация URL по имени роута

Пересадил свой блог с gorilla/mux на go-chi и в процессе переделывания обнаружил два момента:

  • В go-chi нет генерации урлов из коробки
  • gorilla/mux уже не заброшенный проект, у него появилась новая команда мантейнеров

Последний пункт, в принципе, сделал задачу по замене роутера ненужной, ведь я менял его потому, что gorilla/mux не поддерживается, но меня было уже не остановить, ведь процесс программирования тоже важен, а не только конечный результат 😊

Веб-серверКак проверить SSL-сертификат в командной строке

Допустим, вы склонировали из репозитория проект, а в нём в настройках веб-сервера уже настроено https-подключение и прописаны сертификат и ключ. И интересно посмотреть, для какого домена и не просроченный-ли этот самый сертификат. Сделать это можно в командной строке при помощи OpenSSL

1
openssl x509 -in cert.pem -text -noout

Ключ -text говорит о том, что будет выведена вся информация сертификата, а не отдельные детали, вроде -subject, -dates и т.п. -noout убирает собственно сам сертификат из вывода в консоль

Опять на работу

РаботаВнедрился в VK

Неожиданно для самого себя попал на новую работу с первой же попытки, хотя думал, что искать её буду и 3, и 4 месяца. Ужасно не люблю собеседования, так что повезло, что их было существенно меньше, чем могло бы быть 😊

Была у меня теория, что работа всегда найдёт меня сама и раньше так и выходило. Но не в этот раз, пришлось предпринимать какие-то шаги со своей стороны, потому что после смены своей локации в LinkedIn поток сообщений/предложений пропал.

GitПерезапись истории, замена автора

Иногда возникает необходимость перезаписать в истории коммитов автора этих саммых коммитов. На такой случай как раз и добавлю эту заметку, потому что с тех пор, как использую git, такая потребность случалась уже трижды! 😏

Далее под кат...

NewsПроба gRPC

Несколько дней изучаю данную тему (gRPC) и всё думаю, куда применить и где вкрутить. В свои пет-проджекты, естественно, тренироваться нужно на кошках, а не на чужом проде 😄

И вот внезапно пришла идея сделать серверную часть моего "автоблокнота", долгостроя, который четыре года лежит в задумке, именно как gRPC-сервис, а не привычным REST API. Придётся и приложение заодно писать, которое будет стучаться к сервису, про авторизацию не забывать и т.п.

А автоблокнот выполняет функции обычного блокнота, бумажного, куда я записывал по своей машине когда запчасти/расходники покупал да менял масло и прочие технические жидкости. Заправки топлива туда же, гаражи, парковки и другие траты деняк. После блокнота записи перекочевали в гугл-таблицы. И совсем недавно импортировал данные из гугл-таблиц в БД, бекенда только никакого ещё нет, как и фронтенда. Но будет 😎

P.S.: Работа уже идёт → вот репозиторий

Часы "Молния"

GolangДата, время и часовые пояса в Golang

Можно сказать, что сейчас будет краткий пересказ документации и всё элементарно, но когда столкнулся с необходимостью работать с таймзонами, то пришлось поискать информацию и примеры. Так что пусть будет 🙂

Создадим объект даты и времени, соответствующий данному моменту времени. Этим в Go занимается пакет time

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
package main

import (
	"fmt"
	"time"
)

func main() {
	dt := time.Now()

	fmt.Println("Current time:", dt)
}

В результате увидим:

1
Current time: 2024-04-29 12:52:04.130203218 +0300 MSK

Создадим объекты даты и времени, соответствующие конкретному моменту времени. В явном виде и через его текстовое представление. Последний вариант на практике приходится использовать куда чаще

NewsРебрендинг

Был morontt.info, стал xelbot.com 😁 Разницы особой нет, потому что и нет тут никого, кроме меня. Произвожу оптимизацию, чтобы не платить просто так за разные домены. А xelbot получился много лет назад, как напечатал "чудище" в английской раскладке.