Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, кому-то может быть это интересно
Так весь смысл в том, чтобы посмотреть как это работает в компиляторе и добавить. В чем толк от AST пакета, если никак нативно поддержку оператора обратного чтения кода вы через него в язык не добавите?)
Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Не знаю на сколько можно делиться ссылками у себя в комментариях, но я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, надеюсь кому-то может быть это интересно
Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Не знаю на сколько можно делиться ссылками у себя в комментариях, но я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, надеюсь кому-то может быть это интересно
Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Не знаю на сколько можно делиться ссылками у себя в комментариях, но я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, надеюсь кому-то может быть это интересно
В небольших проектах я кладу прямо в entities, в больших я бы разделил, чтобы не мешать ответственность, можно положить где-нибудь рядом с хендлерами/адаптерами.
На самом деле мне не кажется поддержка большого количества сущностей проблемой, тебе нужен юзер, ты проходишь по его роутеру, юзкейсам, репозиторию, зачем тебе думать о других сущностях)
Еще в больших проектах иногда выносят стораджи в отдельные сервисы и за взаимодействие с БД отвечает другая команда. Возможно, иногда, как вариант решения проблемы)
Для чего по вашему гошка, если не для сложной логики и бекенда?) Замысловатая прокся в Джаву?) И чем должен обладать язык для "сложной" бизнес-логики? В чем вообще заключается сложность бизнес-логики и как выбор языка на нее влияет?
Простая, быстрая, лёгкая ещё и с горутинами (Как раз огромный плюс для веба, когда бекенд на джаве отвалится по воркерам, гошка будет спокойно работать на горутинах), имхо странный тейк про то что голанг не для веба, если даже гугл его изначально под это и пилили. Да и по опыту всего бигтеха гошка себя отлично показывает
А какое решение используется у вас в проекте, если не секрет?) 216 сущностей в одном сервисе, мне кажется, в любом формате и архитектуре тяжело поддерживать
По сути, назначение адаптера сводится к хендлеру, только в обратном порядке. Если в хендлере мы получаем запрос, обрабатываем его и отдаем ответ, то в адаптере мы обрабатываем данные, отправляем запрос и затем обрабатываем ответ. Так что, отвечая на вопросы:
В принципе, ответственности не сильно больше, чем у хендлера: обрабатывать и отправлять/получать данные.
Исходя из первого, маппинг можно отнести к обработке данных, так что да, вполне логично сделать его на этом уровне.
Передавать все в контексте - антипаттерн, в контексте лежит по минимуму и реально необходимое. В моей структуре как раз наоборот практически ничего в контексте не лежит, а передается от слоя в слой через аргументы
CRUD - не панацея. Организуйте как удобно, тут про слои и их взаимодействие
3 пункт звучит круто, никогда о таком не задумывался, спасибо)
БД - абстрактный пример. Лично я за свою жизнь пережил переезд на другой логгер и на другую версию тарантула, без интерфейсов - больно
Как раз тестируется это проще за счет интерфейсов "с двух сторон", мокаешь и делаешь юниты, не вижу проблемы в тестировании.
Спасибо за виденье, учту в следующих своих проектах)
Смена субд взята абстрактно, как более наглядный пример. На практике такие ситуации случались дважды: - Переезжали на новый логгер - Разрабы ломали обратную совместимость и при переезде на новую версию надо было все перелопачивать (Привет tarantool)
Да, изначально подумал, что как тестовый пример пойдет, но сейчас вижу, что многие сохраняют и возможно будут использовать этот код, поэтому подправил код и предлагаю запустить постоянно читающую логи горутину, писать их в канал, а из канала потом вычитывать)
Привет, спасибо за замечание) А какие могут быть потенциально проблемы с пустой строкой?
В моем понимании это как бы означает не ошибку, а то что логи еще не писались в файл, нет логов - нет файла, собственно поэтому логически это не вынесено под иф с ошибкой)
Сорри, это HTML-экранирование.
Должно быть так
return &Blob{data: make([]byte, kb1024)}
UPD Поправил, спасибо что заметил
Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, кому-то может быть это интересно
Так весь смысл в том, чтобы посмотреть как это работает в компиляторе и добавить. В чем толк от AST пакета, если никак нативно поддержку оператора обратного чтения кода вы через него в язык не добавите?)
Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Не знаю на сколько можно делиться ссылками у себя в комментариях, но я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, надеюсь кому-то может быть это интересно
Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Не знаю на сколько можно делиться ссылками у себя в комментариях, но я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, надеюсь кому-то может быть это интересно
Привет! Я долго тружусь над статьями, но некоторыми мыслями или наблюдениями хочется делиться в более быстром и доступном формате, что-то хочется обсудить или узнать у более опытных людей)
Не знаю на сколько можно делиться ссылками у себя в комментариях, но я решил, что хочу начать вести свой ТГ-канал и делиться мыслями там: https://t.me/siliconchannel. Надеюсь никого не смущает такая самореклама в комментариях к своей статье, надеюсь кому-то может быть это интересно
Всем устроила. Статья - разбор работы компилятора, а while - простейший пример
В небольших проектах я кладу прямо в entities, в больших я бы разделил, чтобы не мешать ответственность, можно положить где-нибудь рядом с хендлерами/адаптерами.
По структуре примерно это может выглядеть так:
Service/
cmd/
config/
internal/
app/
apiserver
pkg/
delivery/
router/
entities/
repository/
usecase/
pkg/
dbadapter/
middleware/
Имхо, разбивать сервис на несколько только из-за количества сущностей - глупо. Микросервисы, ради микросервисов...
Звучит как питонячия история)
На самом деле мне не кажется поддержка большого количества сущностей проблемой, тебе нужен юзер, ты проходишь по его роутеру, юзкейсам, репозиторию, зачем тебе думать о других сущностях)
Еще в больших проектах иногда выносят стораджи в отдельные сервисы и за взаимодействие с БД отвечает другая команда. Возможно, иногда, как вариант решения проблемы)
Для чего по вашему гошка, если не для сложной логики и бекенда?) Замысловатая прокся в Джаву?) И чем должен обладать язык для "сложной" бизнес-логики? В чем вообще заключается сложность бизнес-логики и как выбор языка на нее влияет?
Простая, быстрая, лёгкая ещё и с горутинами (Как раз огромный плюс для веба, когда бекенд на джаве отвалится по воркерам, гошка будет спокойно работать на горутинах), имхо странный тейк про то что голанг не для веба, если даже гугл его изначально под это и пилили. Да и по опыту всего бигтеха гошка себя отлично показывает
А какое решение используется у вас в проекте, если не секрет?) 216 сущностей в одном сервисе, мне кажется, в любом формате и архитектуре тяжело поддерживать
Привет! Спасибо за крутой фидбек)
По сути, назначение адаптера сводится к хендлеру, только в обратном порядке. Если в хендлере мы получаем запрос, обрабатываем его и отдаем ответ, то в адаптере мы обрабатываем данные, отправляем запрос и затем обрабатываем ответ. Так что, отвечая на вопросы:
В принципе, ответственности не сильно больше, чем у хендлера: обрабатывать и отправлять/получать данные.
Исходя из первого, маппинг можно отнести к обработке данных, так что да, вполне логично сделать его на этом уровне.
Передавать все в контексте - антипаттерн, в контексте лежит по минимуму и реально необходимое. В моей структуре как раз наоборот практически ничего в контексте не лежит, а передается от слоя в слой через аргументы
CRUD - не панацея. Организуйте как удобно, тут про слои и их взаимодействие
3 пункт звучит круто, никогда о таком не задумывался, спасибо)
БД - абстрактный пример. Лично я за свою жизнь пережил переезд на другой логгер и на другую версию тарантула, без интерфейсов - больно
Как раз тестируется это проще за счет интерфейсов "с двух сторон", мокаешь и делаешь юниты, не вижу проблемы в тестировании.
Спасибо за виденье, учту в следующих своих проектах)
Смена субд взята абстрактно, как более наглядный пример. На практике такие ситуации случались дважды:
- Переезжали на новый логгер
- Разрабы ломали обратную совместимость и при переезде на новую версию надо было все перелопачивать (Привет tarantool)
Да, изначально подумал, что как тестовый пример пойдет, но сейчас вижу, что многие сохраняют и возможно будут использовать этот код, поэтому подправил код и предлагаю запустить постоянно читающую логи горутину, писать их в канал, а из канала потом вычитывать)
Привет, спасибо за замечание) А какие могут быть потенциально проблемы с пустой строкой?
В моем понимании это как бы означает не ошибку, а то что логи еще не писались в файл, нет логов - нет файла, собственно поэтому логически это не вынесено под иф с ошибкой)