Search
Write a publication
Pull to refresh
107
0
Николай Тузов @JustSkiv

Senior Golang Developer

Send message

Спасибо всем организаторам и причастным! Очень приятно, было увидеть свою статью в списке победителей. Благодраю за столь высокую оценку моего творчества ❤️

Нет, они попадают в GRQ.

Спасибо за вопрос, это важный момент. Чуть позже добавлю уточнение и в статью.

Раздачу go рутин по очередям вроде как планировщик должен осуществлять а не сам процесс

Дяденька, а вы точно настоящий сварщик..?

Просто формулировка немного неточная получилась, под "существуют" я имел в виду это:

Так вот — планирование горутин происходит на уровне user space, то есть ими управляет планировщик Go (если точнее — Go Runtime), а планирование тредов на уровне kernel space, то есть ими управляет ОС.

Так устроит?

И ещё много чего...

Внимательно слушаю, что ещё?

Да, но не только оттуда. Как-нибудь руки доберутся, я причешу и скину весь список материалов, которые использовал.

Советую глянуть мой пост на эту тему, станет понятней что есть что. Судя по комментарию, вы сейчас в этом плаваете.

Может, эту статью ChatGPT написал?)

Думаю, больше чем 2 минуты, с учетом того что автоматический деплой придётся чуток усложнить. Плюс поддержка в долгосрочной переспективе. Плюс дампы и бэкапы..

Но не суть - даже если для этого достаточно бороду почесать, в чем профит то?

Мой опыт научил меня избавляться от любых излишних сложностей. Нам нужна база - какая? Postgres? Окей. А можем проще? Например, sqlite. Супер, берём её. А можем вообще от БД отказаться? Идеально! :D

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

А что нам даст наличие postgres вместо sqlite? Да, postgres поставить и использовать не супер сложно, но, всё же, её надо будет:

  • Завести: описать в docker-compose, в конфиге приложения, в целом правильно сконфигурировать

  • Запустить: обязательно придется иметь докер на удалённой машине

  • Поддерживать и мониторить: если упадёт, то приложение сломается

  • Отдавать чуть больше ресурсов: повышаются минимальные требования к серверу

  • Сложнее делать дампы и бэкапы: в случае sqlite достаточно просто скопировать один файл

Это навскидку, список можно продолжить. Проблемы не критичные, конечно, но какой профит наличие postgres даёт взамен? При условии, что у нас пет-проект.

Я бы сказал даже так, sqlite это не компромисс в стиле "для пет-проекта сойдёт", это наиболее предпочтительный вариант. Не нужно усложнять себе жизнь раньше времене. При необходимости вы всегда сможете переехать на любую другую СУБД - наш код позволяет это сделать без проблем, достаточно лишь написать новую реализацию Storage.

Ни разу не встречался с подобными комментариями в рабочих проектах, и проблемой это не становилось. Обычно IDE с этим справляется неплохо.

Если и добавлять такое в игнор, то я бы посоветовал .git/info/exclude, тогда не придется коммитить это вместе с .gitignore

Иначе каждый разработчик проекта будет коммитить в gitignore свои личные локальные файлы.

Ошибки могут возникнуть и при работе с переменными окружения - они могут окзаться пустыми и не валидными. Это частично решает проблему, конечно, но на мой взгляд, эти усилия того не стоят.

Ошибки инициализации конфига в логах нам и не нужны, т.к. наше приложение без конфига вообще не запустится, а такое поведение тоже нужно уметь мониторить.

По поводу первого варианта - я тоже думаю, что проблема на стороне task. Но если сделать вот так, то будет работать и через него:

protoc -I proto proto/**/*.proto --go_out=./gen/go/ --go_opt=paths=source_relative --go-grpc_out=./gen/go/ --go-grpc_opt=paths=source_relative

Тут я убрал sso из пути, указал общий путь до protos. Такой вариант и в целом правильней, т.к. помимо sso у вас тут могут лежать контракты и для других сервисов.

Это я без наезда, если что :) Просто просьба с моей стороны, чтобы проще было ориентироваться в комментариях. Группировка внутри одной ветки помогла бы.

За поправки к статье я благодарен, в любом случае. У вас они, как правило, по делу, но я не всегда успеваю отвечать.

Интерфейс Auth - это интерфейс для сервисного слоя, не для gRPC-сервера. То есть, это уже бизнес-логика, а не хэндлеры.

Ну так это в исходниках) Где-то недоглядел, да. Копипастил из предыдущего проекта.

Но в статье такого нет.

Было бы удобней, если бы вы писали все подобные комментарии в одной ветке, таким образом сгруппировав их. То есть, в ответе к какому-то из своих предыдущих комментариев.

Иначе среди ваших комментариев затеряются те, что от других людей :)

Так у меня и используется "log/slog"

golang.org/x/exp/slog я использовал в прошлой статье, тогда еще не было 1.21

Спасибо, добавил в статью

Так надо было просто PR создать, поправим

Information

Rating
Does not participate
Location
Казахстан
Registered
Activity

Specialization

Backend Developer
Senior
Golang
Git
PostgreSQL
Docker
MySQL
Linux
English
SQL
gRPC