oleg_log
1.72K subscribers
1.88K photos
131 videos
9 files
2.82K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
Кто не в курсе, мы в @generictalks завели рубрику читаем вместе, по одной главе в неделю, а потом обсуждения и разбор (книгу с кабанчиком сейчас).

Так вот, через 2ч будет выпуск и была глава Encoding & Evolution. Как можно догадаться, там не только о жсон.

По случаю такой важной, увлекательной, красивой, стильной, непревзайденной теме нашел сборник-сравнение, полезно ознакомиться https://wiki.alopex.li/BetterThanJson
Просто говори, что ты делаешь как Martin Thompson и никто не усомнится
Если вы работаете с Go и кто-то вам занёс мысль "а давайте юзать wire для dependency injection", то смело говорите "неа" и пишите iferrnil дальше.

Блин не понимаю, какой пластик нужно было раскуривать в офисе, чтобы это вышло на свет. И кто их пустил писать пост на blog.golang.org

А еще я нашел там свой коммит с фиксом кода. Очень стыдно.

Теперь пойду это выпиливать. Кодген это круто, когда в нём есть сокращение рутины, вот только для этого кодгена приходится копипастить буквально столько же, сколько получишь на выходе.

Ь
Развернутое сравнение rust & Zig. Не побоюсь сказать, что лучшее из увиденного по теме.

https://scattered-thoughts.net/writing/assorted-thoughts-on-zig-and-rust/
взорал
Те, кто сталкивается с БД и скриптами миграции: какие вы тулзы используете?

https://github.com/pressly/goose
https://github.com/golang-migrate/migrate
и...не только в го конечно же.

Поделитись своим опытом. В теории интересны только накатывания-откатывания новых-старых версий схем для Постгри или Майскл. Но все средства хороши.

А ну и проприетарные тоже можно, мы не такие бедные, чтобы жить за счет одного опенсурса. Тыкать @olegkovalov
Если интересно про интеграцию и любовь-ненависть Apple & Google, то советую читнуть. Логично, что дружба выгоднее войны, и сделка считается успешной, когда каждая сторона считает, что кинула другую. В общем все очевидно. Хотя думаю Apple в чуть большем плюсе.

https://www.nytimes.com/2020/10/25/technology/apple-google-search-antitrust.html
oleg_log
Те, кто сталкивается с БД и скриптами миграции: какие вы тулзы используете? https://github.com/pressly/goose https://github.com/golang-migrate/migrate и...не только в го конечно же. Поделитись своим опытом. В теории интересны только накатывания-откатывания…
https://flywaydb.org/
https://www.liquibase.org/

Для python+postgres
https://pypi.org/project/yoyo-migrations/

Для Go используем https://github.com/golang-migrate/migrate

alembic, на питоне, но очень обширный, правда весьма сложный в освоении был на тот момент, документация была на уровне приватных либ.

еще кстати вариант создать пустой любой active record фреймворка проект (django, rails) и делать автомиграции которые уже есть + редактировать их если что-то не подходит, очень удобные инструменты

https://github.com/rubenv/sql-migrate

Для мускля есть такая штука прекрасная:
https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html

Йо. Мы для миграции схем на больших объемах юзаем gh-ost https://github.com/github/gh-ost

dotnet-ef. Как понятно из названия это dotnet only, но это очень круто и удобно

Используем https://github.com/amacneil/dbmate
Простая как палка, при этом все базово нужные вещи есть

Спасибо всем откликнувшимся.
Postgres Feature Matrix.

Понятия не имею, зачем это может понадобиться (хотя пригодится), но повтыкать можно.

https://www.postgresql.org/about/featurematrix/
oleg_log
Postgres Feature Matrix. Понятия не имею, зачем это может понадобиться (хотя пригодится), но повтыкать можно. https://www.postgresql.org/about/featurematrix/
И давайте еще о Постгрес. Померяем что там с хранением текста и как это влияет на перф.

А еще на странице можно 203 раза прочитать TOAST. Советую не упустить возможность.

https://hakibenita.com/sql-medium-text-performance

И перевод https://habr.com/ru/company/ruvds/blog/525412/
Forwarded from 🇺🇦 Go performance channel (Oleg Kovalov)
More #golang awesomness! Happening in 1.16 🎉

Go 1.16 will include an early devirtualization pass, which allows better escape analysis of interface method calls (i.e., fewer heap allocations) when the compiler can see the interface always has a known concrete type.

https://github.com/golang/go/issues/33160

https://twitter.com/mdempsky/status/1321894360116420608
Вот аще гениальный конфиг линтера. Цикломатическая сложность 99. Дайте два.
Сперва хотел поругаться на документацию к ah-pee Google Firestore (https://pkg.go.dev/cloud.google.com/go/firestore)(вот эта строка вывела из себя status.Code(err) == codes.NotFound, она с потолкам, непонятно что это, короч как часто у гугла и их апи).

Но на самом деле я пришел похвалить даже. Берешь такой, ставишь env-var FIRESTORE_EMULATOR_HOST на свой желаемый хост и гоняешь в тестах.

Мне эт оч понравилось, что торчащее апи для клиента ничего не знает про хост, к которому надо идти, а в тестах нормально, что мы одной переменной все клиенты переключим (наверное некоторые пуристы тут не согласятся и захотят HostResolver интерфейс, но проигнорим их).

Да, как можете догадаться, в коде все просто https://github.com/googleapis/google-cloud-go/blob/firestore/v1.3.0/firestore/client.go#L65

Короч лайк.
Сегодня в Generic Talks (https://t.me/generictalks/163) обсудили статью об отменах операций (timeout, deadline, cancel), которую я вспомнил из-за одного выпуска Good-Bad reviewer (https://t.me/good_bad_reviewer/58).

Так вот, советую почитать. Довольно полезно и интересно описано о том, почему каждый из способов может быть неочень. Еще там рассказывают про либку на питоне Trio от автора, но теория применима ко всему и всем.

Ссыль https://vorpus.org/blog/timeouts-and-cancellation-for-humans/
Восхитительная иллюстрация TCP