Pull to refresh
109
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

Бэкенд разработчик
Старший
Golang
Git
PostgreSQL
Docker
MySQL
Linux
Английский язык
SQL
gRPC