Ivan
И существенная
Ivan
Влияет на производительность и связано это со сборщиком
Alexander
Влияет на производительность и связано это со сборщиком
прости за вопрос, а у тебя там объекты по пару гб передаются или ты решил заняться оптимизацией заранее?
Ivan
Нет в том то и дело, если пару Гб то по указателю
Ivan
Это ясно
Артем
Правильно ли понимаю, что в голанг структуру передавать и возвращать предпочтительно не по ссылке? По ссылке вообще никогда не стоит. Даже если нужно изменять лучше копию возвращать. Так это или существует альтернативные точки зрения?
Ну смотри, если ты внутри функции это определил и возвращаешь, то переменная разместится в куче, а потом уже в стек переместится, поэтому это расходы. Но вроде как у компилятора есть оптимизации, что он определяет будет ли снаружи использоваться и сразу на стек кидает ее
Артем
Щас попробую видос найти полезный по этой теме
Ivan
Возвращаем указатель, значение или зависит от ситуации?
Ivan
А пример ситуации для указателя? Любой самый банальный
Артем
Спасибо, очень жду
https://youtu.be/ZMZpH4yT7M0
Alexander
А пример ситуации для указателя? Любой самый банальный
Указатель как аргумент или как возвращаемое значение?
Ivan
Как возвращаемое значение, про аргумент я усвоил - 99% по значению
Артем
Там прям очень подробно описаны ситуации что будет если в функцию передавать ссылки или возвращать, как лучше и т д
Evgeny
Да вродь не плохо
Evgeny
ток я раньше там ковырялся, вроде за бесплатно, ток шляпа была, норм курс норм денег стоил) Ну из зп джуна повеселила)))
Khalid
Как же я старался
Khalid
Evgeny
Как же я старался
Судя по описанию POST и PUT делают одно и тоже, вставляют новую запись
Evgeny
Я до этой строчки доколупался)
Evgeny
что и там и там new record
Khalid
Да но в в пут бд запрос INSERT, в другой UPDATE
Rostislav
Правильно ли понимаю, что в голанг структуру передавать и возвращать предпочтительно не по ссылке? По ссылке вообще никогда не стоит. Даже если нужно изменять лучше копию возвращать. Так это или существует альтернативные точки зрения?
Да, предпочтительно не по ссылке (указателю). Нет. Иногда есть смысл передавать по указателю, когда занимаешься оптимизацией, но в ней не все так очевидно. Сперва надо измерить, потом поменять и опять измерить. Не надо передавать значение в функцию по указателю только по той причине, чтобы его менять. Это нечистый код, он плохо читается, мы пишем не на си, где это делается, а на го. возвращать по указателю тоже лучше не надо. Только в случае, если надо оптимизировать и только в случае, если доказано, что так реально быстрее, а оно так не всегда.
Rostislav
эти знания про кучу и стек в го не нужны опять же для большинства ситуаций. Если ты только начинаешь то просто по значению передавай и будет это и правильно и красиво
Парфен
Да, предпочтительно не по ссылке (указателю). Нет. Иногда есть смысл передавать по указателю, когда занимаешься оптимизацией, но в ней не все так очевидно. Сперва надо измерить, потом поменять и опять измерить. Не надо передавать значение в функцию по указателю только по той причине, чтобы его менять. Это нечистый код, он плохо читается, мы пишем не на си, где это делается, а на го. возвращать по указателю тоже лучше не надо. Только в случае, если надо оптимизировать и только в случае, если доказано, что так реально быстрее, а оно так не всегда.
"возвращать по указателю тоже лучше не надо. " А если у нас возвращается вторым параетром ошибка, не удобнее ли использовать указатель для возврата основной переменной, чтобы иметь возможность вернуть nil? Типо: val, err := getResult() *Test, error При этом в теле getResult избавляемся от обработчика if err != nil { val := Test{} } return val, err
Null
🖥 26 основных паттернов микросервисной разработки Несмотря на достоинства микросервисов, при их внедрении можно столкнуться с множеством проблем. Изучение общих закономерностей в решении этих проблем привело к появлению паттернов микросервисной разработки (Microservices Patterns), или шаблонов проектирования микросервисов. Основная цель — предоставить проверенные временем решения для таких задач, как разработка микросервисной архитектуры, организация взаимодействия микросервисов друг с другом, клиентскими приложениями, базами данных, обеспечение их отказоустойчивости. Рассмотрим несколько основных паттернов, разделив их на условные группы в зависимости от решаемой задачи. ➡️ Читать дальше @Golang_google
Артемий
а как вообще можно попасть на мидла, если от всех джунов требуют коммерческий опыт?
Anton
никак
Anton
сколько раз тут уже был этот вопрос
Vladislav
а как вообще можно попасть на мидла, если от всех джунов требуют коммерческий опыт?
да тут мидлов-то не берут (единороги нужны), какие еще джуны🤣
Артемий
но если ты работаешь джуном, разве ты сам не станешь мидлом?
Anton
нет
Anton
можно 5 лет перекладывать джейсоны
Emin Zalaev
сам по себе не становишься
Anton
мидлом от этого не станешь
Emin Zalaev
у тебя должен пулл задач вырасти и их сложность, также больше с бизнесом общаться
Артемий
а как же джун в убыток компании
Vladislav
Вообще все это деление очень странная вещь. Человек нарабатывает опыт в одно стеке, решая определённые задачи и становится типо мидлом.сеньером. Но если его перекинуть на другую область то он он опять станет дужном. Даже не меняя язык.
Парфен
Вообще все это деление очень странная вещь. Человек нарабатывает опыт в одно стеке, решая определённые задачи и становится типо мидлом.сеньером. Но если его перекинуть на другую область то он он опять станет дужном. Даже не меняя язык.
Сеньор джуном не станет при смене проекта / стека (в рамках разумного). Мидлом - да, может вполне. Джун решает простые задачи, как правило, не может работать БЕЗ контроля и помощи. Сеньор, перешедший на другой стек, МОЖЕТ работать без помощи, может решать не только легкие задачи. Другое дело, что будет это делать сильно медленнее, чем с привычными инструментами.
Emin Zalaev
язык это инструмент
Emin Zalaev
также как и технологии
Egor
джун мидл сеньер это не про язык, а про умение решать задачи
Человек, который действительно умеет решать сложные задачи может на любой новый язык относительно быстро переключиться и начать решать задачи уже в нём. Это как взять вместо молотка отвёртку, чтобы не вбить гвоздь, а закрутить шуруп.
Egor
Поэтому я вот не понимаю эти всякие попытки использовать некоторые языки там, где им не совсем место только потому что "я кроме этого языка ничего не знаю, я в нём 15 лет сижу". Когда JS какой-нибудь нетипизированный тащат в бэкенд, или когда Python толкают в обработку высоконагруженных систем реального времени.
Egor
Речь не о стеке, а о здачах. Я например перекинул сеньора который писал сеть, на задачи по обработки изображений. Прошёл уже месяц, результат - просраные сроки.
Ну, здесь нужно учитывать, что ему нужно время на адаптацию к новой предметной области. Мне пришлось в одно время допиливать приложение на Swift+Rx со всякими конструкциями типа $0.$1.$0 и прочими ништяками, которые я до этого в глаза не видел. Потратил около трёх недель, но теперь могу в Swift.
Артемий
15 лет он работает по 40 часов в неделю. Как можно не набраться при этом опыта и знаний? Это же количество, которое перейдёт в качество, грубо говоря. Иначе не понятно как его 15 лет содержат
Egor
15 лет он работает по 40 часов в неделю. Как можно не набраться при этом опыта и знаний? Это же количество, которое перейдёт в качество, грубо говоря. Иначе не понятно как его 15 лет содержат
Я работал человеком, который много лет пилил сайты на Wordpress, и кроме этого ничего его не интересовало в принципе. И его это устраивало. И наверняка до сих пор устраивает. Можно ли его считать Senior? Ну и да, на нём веб-студия эта висела считай, т.к. компания занималась как раз сайтами на WP :)
Vladislav
Зависит от задач и от человека.
Задача например написать алгоритм non-local means на го
Артемий
тогда странно претендовать на сеньора с таким стажем
Sakhil
тогда странно претендовать на сеньора с таким стажем
Ну он же синьор фактически, но только в своей области
Egor
Задача например написать алгоритм non-local means на го
А нельзя разве взять готовое, написанное кем-то, изучить, и доработать/написать на другом языке?
Парфен
тогда странно претендовать на сеньора с таким стажем
Часто под "сеньором" понимают "этот парень лучше всех знаком с проектом". + в разных конторах различные понятия о грейдах. Поэтому, не стоит через чур серьезно относиться к этим лычкам. Главное понять на собесе, насколько эффективно человек в нужной перспективе будет решать конкретно ваши задачи или нет. А именовать ли при этом мидлом, сеньором, staff engineer или L4, или космическим десантником - вообще все-равно.
Vladislav
А нельзя разве взять готовое, написанное кем-то, изучить, и доработать/написать на другом языке?
Оно есть готовое, но на питоне. И из-за этого оно работает крайне медленно
Vladislav
Ну вот. Можно наверное переписать.
Так я то не против. Проблема в том, что у современных сеньеров проблема с операциями над матрицами
Vladislav
А в чем проблема то?
В том, что большинство сеньеров приходящих на собеседование не могут найти детерминант матрицы.
Vladislav
А в чем проблема?
Не знаю. Даешь задание а они сидят и тупят
Sakhil
Не знаю. Даешь задание а они сидят и тупят
Его задачи связаны постоянно с определением детерминанта матрицы? Если да, то доеб засчитан, иначе звучит, как "Можешь вывести эту формулу сейчас, так как я математику учил в университете"
Sakhil
Его задача связана с операциями над матрицами, умножение сложение и тд и тп, в том числе и нахождение детерминанта.
Тогда странный синьор у вас собеседовался, который не знает предметной области куда идет, если он конечно синьор в этой области
Egor
Ну так под эти матричные операции тоже есть скорее всего куча библиотек. Алгоритмы описаны уже все.
Vladislav