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 получился много лет назад, как напечатал "чудище" в английской раскладке.
Фотография → Клоп красавец
Энергодар, август 2018-го
News → Новая старая админка
Решил, раз уж активно работаю и с админкой этого блога, освежить и её. Внешне не должно ничего поменяться, а вот под капотом изменения предстоят. Как уже писал тут в 2016-м, сделана она на Ember.js с Symfony. Вот с JS-частью и затеял обновление. Изначально и довольно давно задумал удалить SPA (single page application), переделать на обычный серверный рендеринг и избавиться от геморроя, связанного с быстрым устареванием фронтендовой инфраструктуры.
Но прошло уже 7 лет, а админка продолжает работать, bower не исчез, а всё так же скачивает пакеты, хоть и предупреждает уже несколько лет, что пора мигрировать на Yarn и Vite (что это, кстати?), крутится в докере 8-я версия Node.js, а выше не поднимешь, так как собираться код уже не будет...
Git → Git-хуки
Решил на днях починить автотесты в админке этого блога и в процессе их восстановления начал обнаруживать и баги, которые появились с тех пор, как тесты были заброшены, включая и недавние изменения. Не то, что бы и баги, здесь не так много функциональности, чтобы поломка прошла незамеченной, скорее некорректное поведение системы, вроде неправильного часового пояса в контейнере приложения и т.п.
Чтобы обойтись без внешних CI-сервисов, решил запускать тесты локально перед каждый пушем, автоматически, для чего в системе контроля версий Git предусмотрены хуки, ниже как раз приведён пример подобного pre-push хука (в папке .git/hooks их на разные случаи жизни):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/env bash
echo -e "Start pre-push hook\n"
docker compose run --rm --remove-orphans -T rhinoceros bash -c "bin/phpspec run"
retVal=$?
if [ $retVal -ne 0 ]; then
echo -e "\e[31m phpspec error\e[0m\n"
exit 1
else
echo -e "\e[32m phpspec OK\e[0m\n"
fi
exit 0
|

Программирование → Санкции (рестрикции) и программирование оффлайн
Почти год уже нахожусь в Крыму и часто сталкиваюсь с вводимыми ограничениями со стороны разнообразных технологических компаний. Например, не работает сайт документации по Go, да и сами релизы этого ЯП не скачиваются без дополнительных манипуляций. Вместо этого или 403-я ошибка, или 404-я
Кроме этого пока ещё нет толком интернета и мобильной связи на даче в горах, мобильная вышка с другой стороны горы и ею же закрывается 😅 Программирование само по себе без интернета приобретает иной уровень сложности, попробуйте, допустим, без поисковика определить программным методом в каком-нибудь питоне или PHP определить время последней модификации файла и тому подобное. Поэтому пришлось озаботиться оффлайн-документаций.

News → Замеры на будущее, 2-я часть
Ну вот это самое будущее и наступило, даже существенно раньше, чем предполагал :) Показатели на свежевыложенной новой версии. Хоть инструменты для измерений и претерпели изменения и сравнивать напрямую нельзя, но приблизительно оценивать можно. Стало хуже, но впереди будут оптимизации, пока было не до них, нужно было публиковать уже то, что есть, а то, что есть, активно доделывается и обрастает новыми задачами и задумками. Главное, чтобы не отпустило, а то неизвестно на сколько меня ещё хватит, опять заброшу этот блог.
GTmetrix и аудит Lighthouse из гугл-хрома:
слиплись картинки
