Anonymous
да, любишь ты себя однако)
Anonymous
и где ты сейчас работаешь?
Anonymous
собесы не надоедает проходить?
Сергей
да, любишь ты себя однако)
Нет, я пытаюсь убедить, что наш мир гораздо проще и в нём нет барьеров, которые мы себе надумываем
Anonymous
Сергей
и где ты сейчас работаешь?
Сейчас в какой-то продуктовой компании. Пришёл в неё из золотодобывающий. До неё у оптовиков трудился. До этого в разведке нефтегаза. Ну и так далее 😁
Anonymous
в какой-то?
Anonymous
ты так шифруешься?
Сергей
собесы не надоедает проходить?
А что их проходить? Пришёл, сказал что хочу у них работать и на следующий день работаю. Что там сложного?
Anonymous
меня в универе гоняли на собесе
Anonymous
графы, хеши, кортежи, ооп
Anonymous
массивы
Anonymous
апи
Сергей
понятное дело, что под силу все, но перегорания никто не отменял
Вот когда больше года на одном месте сидишь и там всё отлажено, развитие останавливается. А это беда бедовая
Anonymous
рест апи
Anonymous
Сергей
а что в золотодобывающей компании за софт?
Полюс золото. Я там на когносе трудился. А так одинэсник 🤣🤣🤣
Сергей
то есть ты хочешь сказать, что работу прогера нужно менять каждый год?
Да. Каждый год. А иначе превратишься в своих коллег без мечты и стремления. Будешь тоже как и они только завидовать более успешным, гнобить мелкота и всегда злиться на начальников
Anonymous
первый раз такое слышу
Сергей
понятно
Но там ещё сап, Оракл и проги на шарпе сидят. Ит отдел в несколько сотен человек
Anonymous
я думаю люди, которые работают в тинкофе/мтс/сбер
Anonymous
не хотят менять свою работу
Anonymous
российские конгломераты хорошо платят наверно
Сергей
не хотят менять свою работу
Не могут, а не не хотят. Это разные вещи. Они знают, что их больше никуда не возьмут, поэтому сидят смирно и не дёргаются. Даже не мечтают о новых знаниях, новых зп и новом опыте
Anonymous
у меня вопрос
Anonymous
тут можно так спамить не по теме?
Anonymous
люди будут не довольны
Сергей
российские конгломераты хорошо платят наверно
Копейки. Обычные торгаши больше платят. Я работал даже в бамтоннельстрое, поэтому мне есть с чем сравнивать
Anonymous
Логично. Ушёл 🤣
не, мне нравится говорить с опытными людьми
Anonymous
но если тут только голанг, то я могу и в муте посидеть
Сергей
какой лвл? сениор?
Иван-дурак. Я гонюсь только за зп и опытом, а статусы и медальки - лесом. Сейчас в очередной организации готовлю презентацию, как всем будет хорошо жить, используя стандарты и технологии будущего. И да, тут опять на должности джуна, с зп большущих начальников огромных компаний России 🤣🤣🤣
Anonymous
и это ты называешь новыми знаниями?
Сергей
А голанг прикольный. Для хобби прям крутая штука. Он мне всё больше и больше нравится
Anonymous
презентация?
Сергей
презентация?
Да, я визуально покажу злыдням как они хорошо заживут, когда примут эти наставления. Параллельно начальникам выдаю инфу и они проникаются идеей уменьшать бардак. Это круто и новый опыт
Maks
С точки зрения архитектуры нет единого паттерна. Изначально делаешь монолит если не ожидается супер хайлоад. Монолит можно сделать в рамках ДДД если у вас есть доменный специалист. Если нет то ДДД лишь усложнит жизнь. Но некоторые вещи из него можно взять и применить в другой архитектуре. Сами по себе микросервисы бесполезны. Увеличивают время и стоимость разработки, поддержки. Нужны только когда у вас будет разная нагрузка на разные части системы и это нужно как то флексово масштабировать. Сервер сайд рендеринг имеет смысл делать для сео оптимизаций без заморочек с нюксом например. Подходы к чистой архитектуры и чистому коду можно и нужно применять всегда. Но на практике получается так, что на любом проекте есть говнокод, места которые невозможно протестировать. В общем и целом нужно стараться придерживаться некоторых моментов: 1. Зависимости на интерфейсах. 2. Передача всех зависимостей через конструктор. 3. Минимальная ответственность класса/объекта 4. Забыть что такое синглтон. 5. Оборачивать фреймворковые вызовы, объекты в свой адаптер.
Null
Идеальная настройка вашего Golang проекта https://nuancesprog.ru/p/5966/ @Golang_google
Alexander
Идеальная настройка вашего Golang проекта https://nuancesprog.ru/p/5966/ @Golang_google
Вообще не согласен. В cmd должны быть каталоги с именем фактических приложений и main.go в них
Anonymous
С точки зрения архитектуры нет единого паттерна. Изначально делаешь монолит если не ожидается супер хайлоад. Монолит можно сделать в рамках ДДД если у вас есть доменный специалист. Если нет то ДДД лишь усложнит жизнь. Но некоторые вещи из него можно взять и применить в другой архитектуре. Сами по себе микросервисы бесполезны. Увеличивают время и стоимость разработки, поддержки. Нужны только когда у вас будет разная нагрузка на разные части системы и это нужно как то флексово масштабировать. Сервер сайд рендеринг имеет смысл делать для сео оптимизаций без заморочек с нюксом например. Подходы к чистой архитектуры и чистому коду можно и нужно применять всегда. Но на практике получается так, что на любом проекте есть говнокод, места которые невозможно протестировать. В общем и целом нужно стараться придерживаться некоторых моментов: 1. Зависимости на интерфейсах. 2. Передача всех зависимостей через конструктор. 3. Минимальная ответственность класса/объекта 4. Забыть что такое синглтон. 5. Оборачивать фреймворковые вызовы, объекты в свой адаптер.
спасибо, что расписал
Anonymous
сохраню даже
Alexander
С точки зрения архитектуры нет единого паттерна. Изначально делаешь монолит если не ожидается супер хайлоад. Монолит можно сделать в рамках ДДД если у вас есть доменный специалист. Если нет то ДДД лишь усложнит жизнь. Но некоторые вещи из него можно взять и применить в другой архитектуре. Сами по себе микросервисы бесполезны. Увеличивают время и стоимость разработки, поддержки. Нужны только когда у вас будет разная нагрузка на разные части системы и это нужно как то флексово масштабировать. Сервер сайд рендеринг имеет смысл делать для сео оптимизаций без заморочек с нюксом например. Подходы к чистой архитектуры и чистому коду можно и нужно применять всегда. Но на практике получается так, что на любом проекте есть говнокод, места которые невозможно протестировать. В общем и целом нужно стараться придерживаться некоторых моментов: 1. Зависимости на интерфейсах. 2. Передача всех зависимостей через конструктор. 3. Минимальная ответственность класса/объекта 4. Забыть что такое синглтон. 5. Оборачивать фреймворковые вызовы, объекты в свой адаптер.
так цель микросервисов может наполовину только в масштабировании, основная все-таки в разделении ответственности. что тебе мешает наплодить инстансов монолита и настроить роутинг так, что x инстансов под такой-то запрос, y под другой, z под третий?
Maks
потому что масштабирование микросервисов позволяет увеличить пропускную способность только определенных сервисов, которые являются высоконагруженными. И там делать это проще. А вообще микросервисы сложнее разрабатывать, потому что там больше точек отказа, нужно подключать очереди, следить за всем.
Maks
Можно и на монолите сделать разделение ответственности.
Maks
Придерживаешься модульности
Maks
И нет таких накладных расходов
Maks
а масштабировать монолит таким образом значит сорить деньгами
Alexander
так еще раз: масштабируй копии монолита, на которые ты будешь посылать только один вид запросов - и вот твой подход
Alexander
другое дело уже изоляция и разделение ответственности
Maks
Ты в монолите можешь ответственность разделять так же
Maks
модулями
Maks
пиши грамотный код и разделяй как хочешь.
Alexander
это уже не совсем монолит будет
Maks
В реальном мире можно вообще ни о чем не говорить)) Это не повод стараться всегда делать правильно)))
Maks
Просто если совсем на всё забивать то самому работать не приятно)
Сергей
Придерживаешься модульности
Вот честно, сколько лет воюю с автоматизацией, никто не придерживается модульности. Народ прям не понимает зачем это, ведь дерьмокодом проще и быстрее
Anonymous
потом при попытке добавить, что-то новое приходится проводить фул рефакторинг
Anonymous
как я понял архитектура должна быть легко изменяемой
Сергей
Модульность в моём понимании: модуль в программировании, это что-то законченное и независимое с минимальным набором связей с внешним миром. Главный признак модуля, это возможность его просто выкинуть и на его место водрузить другой. И ничего не поломается (в идеале) 😁
Алексей
Народ проконсультируйте пожалуйста. у меня есть поток слайсов, который в себе содержит много джейсонов. Ну и мне соответственно надо их оттуда выделить и обработать. Я написал вот такую функцию. Можно ли как то это сделать более просто
Алексей
go func() { buf := []byte{} bytesBuf := bytes.NewBuffer(buf) for data := range newSender.dataOutputCh { tmpSlice := make([]byte, len(data)) copy(tmpSlice, data) bytesBuf.Write(tmpSlice) n := strings.Index(bytesBuf.String(), "}") for n != -1 { slice := bytesBuf.Next(n + 1) fmt.Println(string(slice)) n = strings.Index(bytesBuf.String(), "}") } } ch <- struct{}{} }()
Алексей
На выходе данные корректно разделяются
Алексей
да
Алексей
но данные я через канал получаю
Алексей
":"hellow"}{"Id":"35","Message":"hellow"}{"Id":"36","Message":"hellow"}{"Id":"37","Message":"hellow"}{"Id":"38","Message":"hellow"}{"Id":"39","Message":"hellow"}{"Id":"40","Message":"hellow"}{"Id":"41
Алексей
","Message":"hellow"}{"Id":"42","Message":"hellow"}{"Id":"43","Message":"hellow"}{"Id":"44","Message":"hellow"}{"Id":"45","Message":"hellow"}{"Id":"46","Message":"hellow"}{"Id":"47","Message":"hellow"
Алексей
и куски одного сообщения могут быть в 2 слайсах
Алексей
как тут где id я получил в первом слайсе а месседж уже во втором
Алексей
Да это лишнее
Алексей
но в пакете bytes нет аналога strings.Index
Алексей
а именно он мне позволяет из буфера выделять слайсы сообщений
Алексей
Прошу прощения
Алексей
действительно
Алексей
go func() { bytesBuf := bytes.NewBuffer([]byte{}) for data := range newSender.dataOutputCh { bytesBuf.Write(data) n := bytes.Index(bytesBuf.Bytes(), []byte("}")) for n != -1 { slice := bytesBuf.Next(n + 1) fmt.Println(string(slice)) n = bytes.Index(bytesBuf.Bytes(), []byte("}")) } } ch <- struct{}{} }()
Anonymous
почему в голанге допустимо множественное наследование?