~/NeonXP.log

Go

Идеальный формат конфигов *

* лично для меня

В общем, случилось и на неделе я таки присвоил тег v1 для своей самописной Go библиотеки для разбора конфигов! Но обо всём по порядку. Или можно пропустить предысторию и сразу перейти к описанию библиотеки.

Предыстория

Около месяца назад я задумался написать небольшую утилиту для себя, которая бы организовывала для меня рабочее окружение. Не важно сейчас, как именно должна была организовывать, а важно, что эта утилита должна бы была иметь весьма разухабистый конфиг вследствие своей планируемой гибкости. И встал вопрос, а какой формат конфигов использовать? Казалось бы, возьми yaml, toml, на худой конец, json (hjson, json5, итп). Даже думал об ini формате! Но всё было не то…

Читать дальше...

Тернарник в Go

Хотите немного наркомании сахара для Go?

Их есть у меня:

Тернарный оператор для Go на генериках

func If[T any](condition bool, thn T, els T) T {
	if condition {
		return thn
	}
	return els
}

Плейграунд чтобы потыкать

Будет настроение — добавлю в свою либку https://neonxp.ru/go/extra , а пока, как-то так держите.

Не стоит использовать в реальном коде. Я лично не вижу никакого оправдания для использования, кроме как покекать.

Читать дальше...

Golang подборка 1

Просто собираю подборку интересных ссылок по гошке на почитать потом.

import "math"
...
// https://en.wikipedia.org/wiki/Haversine_formula
func GetDistance(lat1, lon1, lat2, lon2 float64) float64 {
    lat1 *= math.Pi / 180
    lon1 *= math.Pi / 180
    lat2 *= math.Pi / 180
    lon2 *= math.Pi / 180
    return 12742 * math.Asin(
      math.Sqrt(
        math.Pow(math.Sin((lat2-lat1)/2), 2) +
        math.Cos(lat1) *
        math.Cos(lat2) *
        math.Pow(math.Sin((lon2-lon1)/2), 2)
      )
    )
}
  • god — Утилита подгатавливающая демоны из go программы. Для меня ценное — что генерит systemd конфиги.
Читать дальше...

Jsonnet

Редко такое бывает, что случайно натыкаешься на какую-то технологию и она вызывает вау-эффект и буквально переворачивает всё верх дном. На днях для меня такой технологией стал Jsonnet от Google.

Jsonnet
Jsonnet

В кратце, это надмножество JSON являющееся языком описания шаблонов. Пока звучит не очень круто, да? На деле это офигенный Тьюринг полный функциональный язык, результатом выполнения которого будет сформированый JSON (и не только) документ(или несколько документов1).

Если интересно, рекомендую сразу переходить к туториалу — https://jsonnet.org/learning/tutorial.html.

Читать дальше...