Forwarded from How to Go wrong (Alexey Palazhchenko)
Выступал недавно на митапе Armenia PostgreSQL (который и соорганизовывал – никуда не деться от старых привычек) про использование FerretDB (написанного, напомню, на Go с горутинами/потоками) внутри PostgreSQL (написанного на C с форками). Если фразы в скобках не вызвали у вас ужаса, то вы просто не форкали процессы с тредами 🙂
Видео – тут, слайды – тут, реальный код – вот тут.
Видео – тут, слайды – тут, реальный код – вот тут.
YouTube
Alexey Palazhchenko - Using PostgreSQL's Background Worker Processes For Fun and Profit (Meetup #2)
Alexey Palazhchenko presented Using PostgreSQL's Background Worker Processes For Fun and Profit at the inaugural 2025 PostgreSQL Meetup in Yerevan.
Alexey's talk focused on PostgreSQL’s one unique extensibility option: the ability to run any custom code…
Alexey's talk focused on PostgreSQL’s one unique extensibility option: the ability to run any custom code…
☕️ Мерлин заваривает τσάι 🐌
Релизнулся golangci-lint 1.18.0 с пофикшеной поддержкой go1.13 и новыми линтерами! https://github.com/golangci/golangci-lint/releases/tag/v1.18.0
Релизнулась версия v2 лучшего #Go линтера #golangci-lint
Заметки к релизу можно прочесть тут https://ldez.github.io/blog/2025/03/23/golangci-lint-v2/
Изменения прежде всего в UX конфига – некоторые места упростили, сделали исключения из проверок более человекочитаемыми, подчистили селекторы линтеров.
Меня больше радует не изменения конфига, а новая команда
Старые конфиги не нужно будет переписывать руками –
Заметки к релизу можно прочесть тут https://ldez.github.io/blog/2025/03/23/golangci-lint-v2/
Изменения прежде всего в UX конфига – некоторые места упростили, сделали исключения из проверок более человекочитаемыми, подчистили селекторы линтеров.
Меня больше радует не изменения конфига, а новая команда
golangci-lint fmt
, которая поддерживает все основные форматтеры – gci, gofmt, gofumpt, goimports, golines – и позволяет накручивать на них кастомную конфигурацию.Старые конфиги не нужно будет переписывать руками –
golangci-lint migrate
должна преобразовать конфиг в большинстве случаев автомагическиThe Best Code is No Code At All
Welcome to golangci-lint v2
I am thrilled to announce the release of v2!
I hope is that these features will enhance your development experience.
I hope is that these features will enhance your development experience.
🤝3
☕️ Мерлин заваривает τσάι 🐌
«Прежде всего, дзен Python говорит, что любое решение должно быть единственное. Поэтому в Python всего минимум по три.»
Telegram
igrishaev
Шел 2025 год, а в Питоне делают очередное форматирование строк. На этот раз оно называется t-строки из-за префикса t. Такие строки по-настоящему всемогущи: могут делать любые преобразования, ходить по модулям, вызывать такси и заказывать пиццу. Без шуток…
🤝4
Если кому-то нужно быстро потыкать unix-lile консольку, то есть busybox, собранный для браузера
https://busybox.net/live_bbox/live_bbox.html
https://busybox.net/live_bbox/live_bbox.html
🤝3
Вышел #go 1.25
Новинок в самом языке нет — релиз про рантайм и библиотеки.
Больше всего хайпую насчёт:
- нового greentea GC (эксперимент, включается `GOEXPERIMENT=greenteagc`): на реальных мусорящих сервисах обещает заметно срезать GC-оверхед;
- container-aware
-
Ещё из прикольного —
Жаль, я всё ещё не вижу готовой открытой системы для централизованного сбора/хранения/просмотра
По мелочи:
-
- Больше методов у
-
- Новый экспериментальный
Интерактивный тур по релизу:
https://antonz.org/go-1-25/
Заметки к релизу:
https://go.dev/doc/go1.25
Новинок в самом языке нет — релиз про рантайм и библиотеки.
Больше всего хайпую насчёт:
- нового greentea GC (эксперимент, включается `GOEXPERIMENT=greenteagc`): на реальных мусорящих сервисах обещает заметно срезать GC-оверхед;
- container-aware
GOMAXPROCS
: теперь по умолчанию учитывает лимиты cgroup и может динамически обновляться;-
testing/synctest
— вышел из эксперимента, можно писать детерминированные тесты конкуррентщины.Ещё из прикольного —
runwww.tg-me.com/trace.FlightRecorder
: по сути кольцевой буфер трейса, который держит последние N секунд и по .WriteTo
даёт снапшот. Можно держать включённым постоянно (хотя бы на части инстансов) и дампать трейсы при серьёзных ошибках или SLA-триггерах.Жаль, я всё ещё не вижу готовой открытой системы для централизованного сбора/хранения/просмотра
.trace
объектов. Вьюверы есть (`go tool trace`, отличный `gotraceui`), а вот «трейс-сторандж» под FlightRecorder — прям идея для совместного OSS-пета.По мелочи:
-
net/http.CrossOriginProtection
— мидлварь для CSRF-защиты с конфигурируемыми правилами и deny-handler. Похоже, похоронит зоопарк самописных решений;- Больше методов у
os.Root
(`Chmod/Chown/Chtimes/Link/MkdirAll/ReadFile/Readlink/RemoveAll/Rename/Symlink/WriteFile` и т. д.) — почти полноценная файловая песочница;-
testing.T|B|F.Attr
— атрибуты в лог теста; `testing.T|B|F.Output()` — даёт io.Writer
в тот же поток (больше не нужны адаптеры логгеров под `testing`);- Новый экспериментальный
encoding/json/v2
(`GOEXPERIMENT=jsonv2`): заметно быстрее на декодинге и с кучей приятных опций.Интерактивный тур по релизу:
https://antonz.org/go-1-25/
Заметки к релизу:
https://go.dev/doc/go1.25
antonz.org
Go 1.25 interactive tour
Fake clock, new GC, flight recorder and more.
🤝2✍1
Forwarded from bruhcollective. (iTaysonLab)
the following content will be interesting for Russian-speaking only:
тут начали закупать в ТГ рекламу некого мессенджера "Telega", общающегозолотые горы стабильную работу ТГ на территории РФ
но в чем подвох? а в том, что эта "Telega" (которая https://telega.me) - является проектом VK.
но как об этом узнать? а все просто - берем APK и открываем декомпилятор
идем в ru.dahl.messenger.Extra и видим:
-> PROXY_ADDRESS = "dal.mvk.com", прокси-адрес, запишем
-> MYTRACKER_SDK_KEY = "*", SDK-ключ от трекера MyTracker, который принадлежитMai VK Group
-> CALLS_BASE_URL = "https://calls.okcdn.ru/" - те самые рабочие звонки, которые на самом деле являются звонками через инфраструктуру Одноклассников (на которых работает еще MAX и VK Звонки, ага)
а теперь берем dal.mvk.com:
-> неймсервера mvk.com идут на малоизвестный домен VKONTAKTE.RU
-> в декомпиляции официального клиента VK для Android можно найти референсы на "https://jira.mvk.com"
(и вся реклама этого клиента в ТГ ведет на трекинг-домен trk.mail.ru)
но кому не пофиг? вдруг ВК просто по приколу решили сделать форк ТГ, прикрывшись прокладкой из Татарстана?
а вот тут уже обнаруживается прикольная вещь: в клиенте есть "черный список" нежелательных ТГ-каналов, ботов и пользователей! при нажатии на которых выводится ТГ-шная "заглушка" с своим текстом:
какие правила платформы? Telegram? но таких строчек нет в официальном клиенте Telegram :)
и да - черный список включается по флагу из сервера, то есть они могут включить это в любой момент
///
а кроме этого, в клиенте есть замена иконок на ВКшные. все бы ничего, но весь код замены был взят из такого малоизвестного клиента как Catogram (https://github.com/Catogram/Catogram/blob/a34ddfb42f50b86eb7cd83fb68ea24fa041084a9/TMessagesProj/src/main/java/ua/itaysonlab/catogram/vkui/ReplaceKtx.kt)
BaseIconReplace -> ru.dahl.messenger.icons.BaseIconReplacement
No/VkIconReplace -> ru.dahl.messenger.icons.AltIconReplacement/IconReplacementNone
ReplaceKtx.newSparseInt -> ru.dahl.messenger.icons.BaseIconReplacementKt
причем взяли все подчистую - те же названия переменных, методов, параметров и даже код тот же (даже тот же sparseInt сделали root-level функцией Kotlin)
а забавный факт в том, что основной разработкой Catogram занимался... я
как-то так....
тут начали закупать в ТГ рекламу некого мессенджера "Telega", общающего
но в чем подвох? а в том, что эта "Telega" (которая https://telega.me) - является проектом VK.
но как об этом узнать? а все просто - берем APK и открываем декомпилятор
идем в ru.dahl.messenger.Extra и видим:
-> PROXY_ADDRESS = "dal.mvk.com", прокси-адрес, запишем
-> MYTRACKER_SDK_KEY = "*", SDK-ключ от трекера MyTracker, который принадлежит
-> CALLS_BASE_URL = "https://calls.okcdn.ru/" - те самые рабочие звонки, которые на самом деле являются звонками через инфраструктуру Одноклассников (на которых работает еще MAX и VK Звонки, ага)
а теперь берем dal.mvk.com:
-> неймсервера mvk.com идут на малоизвестный домен VKONTAKTE.RU
-> в декомпиляции официального клиента VK для Android можно найти референсы на "https://jira.mvk.com"
(и вся реклама этого клиента в ТГ ведет на трекинг-домен trk.mail.ru)
но кому не пофиг? вдруг ВК просто по приколу решили сделать форк ТГ, прикрывшись прокладкой из Татарстана?
а вот тут уже обнаруживается прикольная вещь: в клиенте есть "черный список" нежелательных ТГ-каналов, ботов и пользователей! при нажатии на которых выводится ТГ-шная "заглушка" с своим текстом:
<string name="ContentIsUnavailable">Материалы недоступны</string>
<string name="ContentUnavailableInfo">Этот %1$s недоступен в связи \n с нарушениями правил платформы</string>
какие правила платформы? Telegram? но таких строчек нет в официальном клиенте Telegram :)
и да - черный список включается по флагу из сервера, то есть они могут включить это в любой момент
///
а кроме этого, в клиенте есть замена иконок на ВКшные. все бы ничего, но весь код замены был взят из такого малоизвестного клиента как Catogram (https://github.com/Catogram/Catogram/blob/a34ddfb42f50b86eb7cd83fb68ea24fa041084a9/TMessagesProj/src/main/java/ua/itaysonlab/catogram/vkui/ReplaceKtx.kt)
BaseIconReplace -> ru.dahl.messenger.icons.BaseIconReplacement
No/VkIconReplace -> ru.dahl.messenger.icons.AltIconReplacement/IconReplacementNone
ReplaceKtx.newSparseInt -> ru.dahl.messenger.icons.BaseIconReplacementKt
причем взяли все подчистую - те же названия переменных, методов, параметров и даже код тот же (даже тот же sparseInt сделали root-level функцией Kotlin)
а забавный факт в том, что основной разработкой Catogram занимался... я
как-то так....
😱12✍5🥰1