24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.
>>2972398 Первая пикча охуенна, конечно. Самый, так сказать, дзен.
На самом деле - в этом нет ничего плохого. Совершенно нормальный функциональный паттерн. Я подобное в перле делаю постоянно, хотя там есть и эксепшны, и стактрейсы, и прочий фарш.
>>2972747 Язык минималистичный, можно строить веб-приложения начиная с самых основ. Есть строгая типизация, а значит тип не будет перетекать из строки в число, всегда знаешь что у тебя в переменной. Не нужно учить всякие ОРМ, а сразу писать всё на SQL. Но вот требования в вакансиях пугают. Ещё собесы на ютубе посмотрел и вообще теперь боюсь соваться в го.
>>2972831 >Язык минималистичный, можно строить веб-приложения начиная с самых основ. Закон сохранения никто не отменял. Если язык минималистичный, и делать с самых основ - значит писать придётся много. И по ходу дела решать задачи, которые где-то в других средах уже решили. Плохого в этом ничего нет, но, новичок может быстро устать.
Так что, мне кажется, для начала лучше что-то другое. Пыха - это если надо быстро найти работу и чтобы было на что жить (хотя, высоких зарплат не жди). Но, и сам язык и практики программирования на нём - далеки от идеала. И быдло-коммьюнити тоже не добавляет оптимизма.
Так что лучше - питон. Те же веб-сервисы на Flask делаются ну очень минималистично. Ну и питон - один из лучших на сегодня вариантов чтобы просто научиться программировать. Насчёт работы - это второй вопрос. Но, вроде есть, и больше чем на Го, и без опыта тоже. Также, на питоне можно писать разные небольшие практически полезные вещи, для чего угодно, буквально. Включая несколько вариантов десктопных GUI (рекомендую wxPython). Количество библиотек - огромно. И если чего-то нет, но, есть на Си(++) - то можно и самому подключить. Ни на одном другом языке такого разнообразия возможностей не будет. И перекат с питона на го - это довольно распространенное явление, насколько я понимаю. Точнее, наверное, не перекат, а расширение зоны комфорта, лол.
>>2972831 Добавлю ещё, что огромный плюс Го - это то, что в результате компиляции получается 1 бинарник, большой, но без зависимостей. А с версии 1.16 в него можно также встраивать все нужные статические ресурсы - html, css, js, картинки и т.п. Т.е. получается 1 файл, который можно ставить на голую систему (в голый контейнер), который быстро стартует и жрёт относительно мало памяти. Это очень хорошо для облачного деплоймента. И ради этого люди мучаются и терпят, лол. Т.е. мотивации не новичковые, а чисто взрослые и энтерпрайзные.
>>2972891 Нет, это не то. Это сейчас чистый сервер-сайд. С довольно высоким порогом вхождения. Т.е. чистый энтерпрайз. Нельзя писать скрипты, мелкие утилиты и т.п. Т.е., если ты учишься на джаве - вознаграждений по ходу дела ты почти не получаешь. На питоне же - постоянно положительная обратная связь.
>>2972398 1. Так удобнее 2. Дженерики есть 3. У него в метаданных есть оригинальный тип, который ты не можешь поменять, но спокойной конвертировать в него получится 4. Дженерики опять же есть
>>2973448 3. Да, вот только когда тебе приходит hui_mocha: interface{}, то как ты поймешь какой набор возможных типов там спрятано? Любой статический язык без вменяемого ADT жрёт говно.
>>2973500 Ну в пыхе, жс и питоне как-то же понимают вот уже лет 30? Это же программа, у неё есть какая-то логика, оно же всё не из воздуха берётся?
Если бы сразу (без дженериков) додумались как-то реализовать comparable и прочее подобное, то и дженерики делать бы не пришлось. Ибо полезность их в таком языке довольно сомнительна, тут я согласен с Робом Пайком. В Си вот нет дженериков, и как-то похуй.
>>2973593 >В Си вот нет дженериков, и как-то похуй На самом деле не похуй, знаю кучу сишников которые таскают с собой самописные либы что бы большую часть говняка заново не реализовывать из проекта в проект. Но сишка древний язык со своим ограниченным скоупом применения и не пытается казаться средством для создания джесономешалок игнорирующие достижения других языков созданные за это время.
>>2973694 > джесономешалок Ну, в этом деле хороший рефлекшн решает, а не дженерики. А с этим в Го всё в порядке, насколько я понял.
Вообще, им бы вот эту вот конструкцию - "interface{}" - назвать бы как-то по-другому, например "any", и всё бы сразу стало выглядеть гораздо приличнее. Слова имеют значение.
Если что - у меня в ежедневной работе ехал дженерик через дженерик, т.к. джава и тс. И рефлексия через рефлексию, т.к. генераторы кода и сериализация. Так что предмет разговора мне понятен.
>>2973500 >Любой статический язык без вменяемого ADT жрёт говно. Ну, что сделать, тогда все жрет говно. Нормальные АДТ только в хаскеле и других языках с типовой системой Хиндли-Милнера, если еще всякие попытки типа std::variant в плюсах но это треш с отсутствием строгих гарантий и запредельная дрочка SFINAE, поэтому гошный any это не самое худшее что может быть.
>>2974293 Потому, что я, в основном, пишу на java, ts, js. И идея с плагином go == goland.
>>2974575 Я даже специально смотрел ответ на этот вопрос на сайте JB. И там официально написано, что разницы нет вообще никакой. Кроме того, что некоторым нравится меньше клаттера в интерфейсе ide, и им удобнее специализированный интерфейс под конкретный язык. Но, я старый полиглот, мне похуй абсолютно. И даже лучше, когда всё сразу под рукой.
>>2974379 Ой, блять, не начинай, клоун. Вскод - ненужная хуйня.
>>2974655 Потому, что плагин старый, и не поддерживает дженерики. Которые мне прямо сейчас не нужны совершенно для текущего проекта. А плагин старый, потому, что идея сейчас старая стоит. А почему идея старая - это долго рассказывать.
>>2974686 Как-то двусмысленно получилось. Дженерики сейчас не нужны, да. Но, если использовать сдк с дженериками (1.18+) то плагин показывает ложные ошибки в некоторых местах кода. И при просмотре исходников стд либы тоже.
>>2974686 Как-то двусмысленно получилось. Дженерики сейчас не нужны, да. Но, если использовать сдк с дженериками (1.18+) то плагин показывает ложные ошибки в некоторых местах кода. И при просмотре исходников стд либы тоже.
>>2974656 Он пробовал - не осилил. Забавно видеть как кто-то в го готов тратить 60% времени на написание шаблонного кода, но не готов потратить минут 10 на настройку вскода.
>>2974730 А как мне проводить рефакторинг в вскоде? Он просто не умеет в него, ну в плане… совсем А в голенде одну кнопочку нажму, и у меня сразу сигнатура функции поменяется, все само и все автоматизировано, оно мне даже строчки поменяет при моем хотении, или рефакторинг переоценен и его вообще не существует? После голенда вообще не могу пользоваться вскодом, слишком мало функционала, который не расширяется ни одним плагином
>>2974867 Уверен, у кого-то возникнет вопрос: «Зачем в 2021-ом пользоваться -vim- neovim, когда есть замечательный Goland?». Я до какого-то времени сам пользовался только продуктами от JetBrains, но вот уже более 1.5 лет пишу исключительно в vim.
Основной причиной для моего перехода с Goland стала его прожорливость. Отдавать по 3-4 Гб программе, которая просто подсказывает мне названия методов, запускает тесты и реализует «Go to definition», очень расточительно. Вкупе с непонятной политикой индексации проекта, когда у тебя в момент взывают куллеры, а батарейка на глазах тает, привело меня к vim.
Реально раздражает то, что это ваше Го создавалось безо всяких мыслей о больших проектах. С инкапсуляцией - полная жопа.
Если у меня есть енум, то это, блять, не енум, а просто набор констант в неймспейсе пакета. Т.е., глобальных, по сути. Ну что это за хуйня, блять? Как такое можно было родить в 21 веке, это уму непостижимо. Причём, сделать константу структурой (литералом) - нельзя, пиздец идиоты. Это-то почему нельзя, с хуя ли это "не константа"?
И вот у меня есть три константы состояния записи - EntryAdded, EntryChanged, EntryDeleted, в пакете zalupa. И пиздец - создать в этом пакете функцию с таким именем я уже не могу. Это просто какой-то позор.
>>2975950>>2975952 Ну, конкретно, про константы я немножко подумал, и понял, почему так сделано. Всё в угоду скорости компиляции и минимальному потреблению ресурсов в рантайме. Вообще, большинство сомнительных решений в Го имеют вполне разумные объяснения. Но, большие проекты делать на таком языке действительно не очень удобно. И самый правильный путь - инкапсуляция в мелкие вложенные пакеты. И да, это будет не совсем идеоматический Го.
Тут, опять же, есть 2 стула стиля - либо пишем без ide, либо - с хорошей ide, джава-стайл. Идеоматический Го (см. стандартную библиотеку) очевидно рассчитан на вариант без ide. Но, писать большие проекты без ide - это мазохизм. А если с ide - то надо таки писать немножко в стиле джавы, в смысле разбиения кода на части. Нету классов - значит делать кучу мелких пакетов, и играться с public-private (экспорт-не экспорт). И с ide так будет гораздо удобнее и писать, и читать.
>>2976084 Ну, я это понимаю так, что сначала сделали простой, но эффективный (!= удобный) язык из говна и палок. А потом начали улучшать. И это было ошибкой. Говно и палки-то никуда не денешь. Не надо было модули-шмодули, дженерики-хуерики и прочее добавлять. Не масштабируется - ну так и нехуй масштабировать.
Алсо, вот тут чел выдал такой длинный конкретный прогон про Го: https://fasterthanli.me/articles/i-want-off-mr-golangs-wild-ride И, среди прочего, пишет какой ценой делается разработка больших проектов в крупных компаниях: Go lets you whip something up quickly, but making the result "production-ready" is left as an exercise to the writer. Big companies that have adopted it have developed tons of tooling around it, use all available linters, do code generation, check the disassembly, and regularly pay the engineering cost of just using Go at all. И, несмотря на это, всё равно делают хуйню.
Так что - простой бекенд и утилитки - это самое то. Для всего остального есть джава.
>>2976261 С другой стороны - вот сейчас надо одну утилиту сделать. Которая тянет данные по одному протоколу из одного места, и потом заливает по другому протоколу в другое. Преобразуя и фильтруя по ходу дела. У меня есть версия на перле, которой года 3, но, она не соответствует новым реалиям. И можно или доработать перловую версию, или переписать на питоне, или написать с нуля на Го.
На Го я до сих пор ничего кроме разных хелловорлдов не писал. А на питоне и перле - написал много разного полезного. Поэтому, казалось бы, ответ очевиден. Но, делов в том, перл немножечко утомил своей необычностью. Вспоминать его каждый раз просто надоело. А большая любовь к питону осталась в далёком прошлом, и нехуй его ворошить.
В итоге - посмотрев либы, сделав несколько примеров, и т.п. - решил делать на Го. И уже сделал изрядный кусок. Сам не ожидал. И могу сказать, что несмотря на все обозначенные недостатки - язык довольно приятный. Особенно, при наличии хорошей ide, которая сильно ускоряет эксперименты.
>>2976261 Нет не так. Го придумали буквально на коленке в попытках улучшить и оптимизировать гугол. В нём очень много странных и недоделанных решений. Я вообще хз почему его начали распространять куда-то за пределы. Его максимум - микросервисы для систем наподобие гугла. Всё.
Десктопные гуи и прочие нейронки можно сделать и на го. Можно вообще это всё сделать на чистом ассемблере, так будет ещё быстрей работать. Это очень неудобный язык для разработки больших проектов, а уж сколько историй про то как в кубике вертятся стопитсот микросервисов, когда один наебнется - наебнутся и все остальные - просто не счесть. Почему микросервисы? Потому что их гугол использует, их нельзя обижать и вообще добейся.
>>2976500 >историй про то как в кубике вертятся стопитсот микросервисов, когда один наебнется - наебнутся и все остальные - просто не счесть
Го - сложный язык, он для тех кто умеет программировать. И когда на нём начинает писать какая-нибудь вчерашняя пыхоблядь с физфака да, это Тузов, то получается то, что получается. А микросервисы - пиздецки сложная тема. И когда их начинают пихать куда надо и куда не надо под предлогом "упрощения разработки" - это пиздец. Короче - время дураков. Впереди нас ждёт ещё много интересного.
>>2976866 Писать шаблонный код из раза в раз это не "уметь программировать", го не оправдать этим. На но может пимать даже джун, просто он тратит кучу времени на написание этих шаблонов, а мидл уже копипастит его из существующих проектов.
>>2972879 >Пыха - это если надо быстро найти работу и чтобы было на что жить (хотя, высоких зарплат не жди). Но, и сам язык и практики программирования на нём - далеки от идеала. И быдло-коммьюнити тоже не добавляет оптимизма.
В общем, пообщался с нужными людьми и понял, что вкатиться в го можно, но либо ты москвич и идёшь работать в офис, а если не москвич, то должен накручивать опыт. Сейчас оптимальной накруткой считается 2 года. Вопросы к собесам давно уже слиты и можно тупо вызубрить. Не получится ответить на первых собесах, к дцатому уже будет как от зубов отскакивать. Так что вкатиться в го возможно, не слушайте местных нытиков.
>>2976500 >а уж сколько историй про то как в кубике вертятся стопитсот микросервисов, когда один наебнется - наебнутся и все остальные это просто неправильный коммунизм
>>2978157 Правильный вопрос - почему нельзя объявить новые переменные типа на уровне метода. Ну, вообще "методы" в Го не такие, как в джаве. Дактайпинг и всё такое. Скорее всего, это как-то связано с тем, как делается поиск метода. Говорят, что дженерики и так немножко тормозят. А с таким сильным колдунством тормозили бы не немножко.
Короче, не еби мозги, делай функции в таких случаях. Оно и более осмыленно будет, т.к. тут появляется тип, не связанный с базовым типом (метода), и это, как бы, намекает нам, что эта операция - что-то отдельное.
>>2979591 Вот в данном случае, как раз, нет. В Го _нет_ ООП. Методы - это _не_те_ методы. Оно местами похоже, но не то. И это не какое-то "недоделанное ООП", это вообще не ООП.
И есть куча постов в интернетах, где люди пытаются (в силу инерции мышления) делать какие-то вещи методами, и не могут, по причине "ограничений языка". При этом функциями это решается легко и просто.
>>2979689 Не перестаёт удивлять, как гошники записывают отсутствие чего бы то ни было в достоинства языка, а нежелание строчить бессмысленные бойлерплейты в инерцию мышления.
>>2980508 Да просто не нравится и никогда не нравилась. Ооп это ебанутое, какие то аннотации блять, скрытое поведение, аспекты, нихуя не понятно. Спринг этот вонючий повсюду. В голанге пусть и многословно, но всё понятно, как книжку читаешь. Мне ещё нравится питон, они с голангом как будто из одного мира) Но страшно уйти на миску риса и похлопывание по плечу.
>>2980781 Тут ещё такой момент - я всех наебал и вкатился в ит, почти три года делаю вид что умею кодить. А по факту просто макака быдлоБелый Медведь с курсов. Возможно мне просто кажется что в другой тарелке хрючево вкуснее.
Что вообще делают интересного на Новогодняя ночье кроме перекладывания данных из запроса в бд и из бд в ответ? Я понимаю что что-то делают, но ничего в голову не идёт.
>>2980781 >Ооп это ебанутое, какие то аннотации блять, скрытое поведение, аспекты, нихуя не понятно. Спринг этот вонючий повсюду. То, что ты перечислил - не имеет никакого отношения к ООП. Спринг, АОП, DI - это рак, который убивает д'жаву. Когда-то всё это было прогрессивно. Но, затем дураки (как всегда) не смогли вовремя остановиться. Чудовищные нагромождения аннотаций, за которыми не видно мысли - это пиздец.
Пи'тон - да, хорош. Но, в нём сейчас происходят примерно те же процессы. И по тем же причинам - дураки оЗаяц-белякевают. Голанг - тоже хорош, и да, чувствуется идеологическая общность с пи'тоном, но, язык своеобразный, мягко говоря.
>почти три года делаю вид что умею кодить. Погугли "синдром самозванца".
Вообще, если ты хочешь стать более лучшим Белый Медведьом - не надо учить голанг. Посмотри в сторону Scala и FP. Это тебе поможет подняться над собой. Есть прекрасная книга Functional Programming in Scala. Это не столько про скалу, сколько про фп вообще. Можно первое издание, второе - под новую скалу, не факт, что это нужно. Есть также Functional Programming in Ja'va - тоже весьма духоподъёмно. Но, на скале код короче и выразительнее, плюс - есть специальные фп-конструкции.
Основные идеи: - экзешники в /cmd - то, что не должно импортироваться снаружи - в /internal
Ещё могу добавить, что то, что _должно_ импортироваться снаружи - принято помещать в /pkg
Внутри папок cmd, internal, pkg - папки пакетов. Или просто файлы, если не хочешь выделять доп. пакеты. Тогда имя пакета в этих файлах будет именем основного пакета (модуля). Или main - для экзешников в cmd. Если у тебя свой проект, и им никто со стороны пользоваться не будет - internal и pkg не нужны.
Вообще - можешь делать такую структуру, как хочешь. Главное - другой пакет = другая папка. При этом родительская папка значения не имеет. Т.е. package zalupa может быть в папке myproect/foobar/zalupa.
>>2981223 >чувствуется идеологическая общность с пи'тоном Где ты эту общность усмотрел, если не секрет? У меня пока прямо противоположное ощущение, что Го забивает большого толстого хуя на какую-либо общность с современными технологиями и вообще на весь немалый прогресс в области языков за последние 20 лет.
>>2972895 >Добавлю ещё, что огромный плюс Го - это то, что в результате компиляции получается 1 бинарник, большой, но без зависимостей. >А с версии 1.16 в него можно также встраивать все нужные статические ресурсы - 🕛, 🕛, 🥂, картинки и т.п. >Т.е. получается 1 файл, который можно ставить на голую систему (в голый контейнер), который быстро стартует и жрёт относительно мало памяти. Да всем ПОХУЙ на количество файлов. Ты во время сборки все упаковал в образ и все. Время старта тоже такой себе параметр, если у тебя не амазон лямбды, где тебя ебут долларом за каждую секунду старта - то тоже похуй. А все сэкономленные центы ты отдашь в виде зарплаты Белый Медведьам, которые будут по много раз переписывать один и тот же шаблонный код.
junior - умение писать скрипты; - Белый Медведьотка приложений на основе шаблонов проектирования; - знание 🍊, 🕛, 🕛, Linux; - опыт работы с веб-сервисами REST, микросервисами; - знание Git; - опыт в DevOps.
middle - Go (желательно с различными фреймворками); - 🥂 (со знанием одного из Хоровод-фреймворков: Vue, Angular или React); - 🕛5 и 🕛; - Опыт работы с базами данных SQL и NoSQL, такими как PostgreSQL, Redis, MongoDB, RabbitMQ, Kafka; - Понимание принципов контейнеризации, опыт работы с Docker и Kubernetes; - Опыт интеграции с API сторонних Web-сервисов; - Умение писать тесты; - Знание REST, HTTP, 🥂ON; - Опыт участия в highload-проектах, создания масштабируемых решений; - Знание микросервисных архитектур; - Опыт Белый Медведьотки с использованием таких языков, как 🍾, 🎄, Perl, Typescript, Node.🥂 и т. д
senior - 5+ лет профессионального опыта работы со сложными серверными веб-сервисами; - 5+ лет опыта Белый Медведьотки программного обеспечения; - 2+ года опыта в Белый Медведьотке программного обеспечения на Golang; - Опыт Белый Медведьотки API (GraphQL / gRPC / REST); - Опыт Белый Медведьотки сервисно-ориентированных решений; - Опыт построения высоконагруженных систем.
>>2980853 Да много чего, навскидку: компилятор языка для описания множеств с лексером, парсером и AST-деревом, разные число/лого-дробилки и большие ин-мемори хранилища для одновременного отслеживания состояний 10kk+ сущностей. И все написано на go, и по сути является такой же прослойкой меду базой и http-реквестами, только в боди POST-запроса будет лежать код твоего языка или параметры для конфигурирования файла лицензии. По опыту скажу, го в плане написания сложных велосипедов не сильно отличается от других языков, все инструменты для этого есть.
>>2981266 >junior/middle >умение, знание, кучи технологий >senior >ОПЫТ 2+ года, ОПЫТ 5 лет, стаж 10 лет ОПЫТ ПОПЫТ ААААА Ну как бы все понятно, с сеньки требуют только трудовую книжку, на остальные знания всем насрать. А Зайчишку/Эльфа прогонят по всем паттернам, так еще знания ноды и реакта в добавок спросят. ЗАЧЕМ?
>>2981233 >забивает большого толстого хуя на какую-либо общность с современными технологиями и вообще на весь немалый прогресс в области языков за последние 20 лет. Так ведь и п'итон...
>>2981269 >все инструменты для этого есть. Интересен один инструмент, каким образом происходит отладка коммуникации между микросервисами, что есть для мониторинга коммуникации? И вообще микросервисная Белый Медведьотка, в деталях? Вот пишу я сервис, которому надо дёрнуть данные из других сервисов, нужно убедиться что код работает, мне на локальной машине поднимать в дев-среде контейнеры с кучей сервисов? А если там что-то не то, как посмотреть что внутри другого сервиса, лезть в запущенный контейнер, ставить там точку останова?
>>2981223 Спасибо анончик, буду изучать. Я вообще подозреваю что мои пиздострадания от недостаточного погружения в тему. Все языки говно и просто перекладывают биты, а я ищу какой то чудо-инструмент который позволит быдлокодить не изучая матчасть(
>>2981396 >Все языки говно и просто перекладывают биты Чем более производительный и низкоуровневый язык тем в нём больше бестолковой хуйни, просто снизь планку и откроешь целый пласт скриптовых языков, которые по своей сути приближены к обычному человеческому и сфокусированы на решении бизнес-проблем, а не на конфигурации вычислительной машины ради дрочки наносекунд.
>>2981340 Возьми хорошую книжку по микросервисам (и вообще, и на го) - и почитай. Их есть. Отладка коммуникаций - через хттп дебаг прокси. Ошибки и прочее - в лог - в файлы или в лог-сервис. Можно и в контейнер залезть, и точку останова поставить. И это всё не специфично именно для микросервисов.
>>2981340 Ёпта у тебя микросервисы работают по какому принципу? Событийно-ориентированные с event bus'ом в роли кафки? Если так, то можно просто повесить слушателя на все события. А внутри там просто будет логгер. Это самый простейший способ.
Вот сейчас мне кусок кода из 5 совершенно невинных строк стабильно выдаёт "panic while printing panic value". На ровном месте вообще. Причём, код (сетевой запрос по протоколу X) работает, и делает, что должен. Это какая-то ложная паника. В трейсе - только вызовы рантайма.
Это не говоря о том, что я уже за эти несколько дней успел уже немножко устать от отсутствия нормальной инкапсуляции в этом чудесном языке и прочих концептуальных проблем. При том, что в целом пишется нормально. Но, есть нюансы. Этакий запашок, если вы понимаете, о чём я.
Думаю, что я эту утилиту, всё таки, на пи'тоне напишу. Да и по отношению к работодателю так будет честнее, лол.
>>2975994 >Всё в угоду скорости компиляции и минимальному потреблению ресурсов в рантайме. Если бы их так заботила скорость компиляции, то не делали бы forward declarations и разбивки пэкеджа на файлы. Про рантайм вообще смешно, в том же ❄️ енумы спокойно компилируются в инты и никакого оверхеда. Да что там ❄️, в древнейшем Паскале уже освоили такую технику.
>>2981916 Держу в курсе - нашёл причину. "panic while printing panic value" - это было просто. А вот самую мякотку увидел только в дебаггере. В смысле - печать в консоль не помогала понять, что именно происходило. Код после if err != nil печатал <nil>. Охуенно, да?
В общем, типичная г'ошная хуйня. Пытливый читатель может сам посмотреть вот здесь изолированный пример: https://go.dev/play/p/oFxSY952-YB
Там без паники, правда, просто проверка на nil не работает так, как ждёт наивный чукотский юноша. И без рефлексии это никак не обойти. Потому, что пидарасы, вот почему.
А сколько такой красоты в реальном продакшн-коде ждёт своего часа? Страшно подумать.
Упёрся я в это, пытаясь достать реальную ошибку из-под интерфейса error, который возвращает функция одной либы (а внутри - красота с кодом ошибки и прочим). Г'ошникам это похуй, потому, что они не обрабатывают ошибки. В смысле - не делают с ними ничего, кроме обнаружения факта ошибки и получения строки с сообщением. Т.е. не выходят за пределы интерфейса error.
А у меня - наоборот, принято ошибки обрабатывать. Поэтому - нахуй такое счастье, извините. Пишите на нём сами, лол.
>>2982036 Добавлю ещё, что это не просто кака-то "особенность" языка, которую надо просто "знать", и всё. Это фундаментальный просчёт в дизайне. Который ведёт к порочным кругам, и к тому, что люди вынуждены нарушать их же собственные best practices. Например, возвращать интерфейс error вместо структуры CustomError, хотя явно рекомендовано принимать интерфейсы, а возвращать структуры. Да и насчёт "принимать интерфейсы" - тоже, как видим, немножко не складывается, лол.
И этот косяк, на мой взгляд, делает невозможным сколь-нибудь серьёзное программирование на этом языке. И да, теперь я начал гораздо лучше понимать всю ту критику г'о, которую я читал раньше.
>>2982083 Да ладно, это моя первая попытка написать что-то полезное на Г'о. И я реально охуеваю, как в первый раз. В принципе, цель make programming fun again достигнута, лол.
Алсо, я тут просветился на эту тему. Про это много написано весьма противоречивого. И пришёл к выводу, что это опять не баг, а фича. Вот только могли бы проверку интерфейса на nil сделать попроще, просто какой-то builtin функцией, чтобы рефлект не подтягивать.
>>2981460 > скриптовых языков > сфокусированы на решении бизнес-проблем Что забавно, жабу я использую исключительно потому, что её использует работодатель. Все околорабочие задачи (распарсить, прочитать и проанализировать, побегать по директориям и т.д.) я решаю на питоне, потому что реальные задачи в нём сделать проще: три высокоуровневых строчки -> запустить -> глянуть результат. Задачи по фану тоже решаю на нём. Отсюда же интерес к сабжу.
>>2982200 Мне на ум пока приходит только портянка из кучи if ... else или switch. Потому что тут надо сразу и URL проверять и по какому методу прилетело (GET, POST и т.п.), а может и ещё какую-нибудь фигню проверить в загловке.
>>2982204 Мапу сделай с кейсами. Подними контексты, нет, маршрутизацию. Обычно берут фреймворк спринг и начинают переписывать на гоу. Как настоится, переходим к бизнес логике.
>>2982197 Энвоем перекладываешь в нормальный протобуф и работаешь только с протобуфами. Вообще для быстрого вката есть echo, а вопросы типа такого принято сначала смотреть на awesome-go
Да го норм язык если делать на нём небольшие микросервисы. Я хз почему некоторые пишут на нём большие проекты, а потом страдают от количества шаблонного кода. Он даже для сервисов не подходит, только микро. И при этом не весь проект, а отдельные части связанные через grpc.
inb4 зато быстрей, ну пиши тогда на ассемблере, он ещё быстрей
>>2982454 >пиши тогда на ассемблере Мало кто может писать на ассемблере быстрые программы. Современные оптимизирующие компиляторы уделывают кожанных мешков в этом плане. Сейчас уже скриптовые языки вроде РНР обзавелись JIT-компиляторами и работают на уровне компилируемых языков, там буквально накладные расходы только на чтение и разбор скрипта, а выполнение уже в машинном коде идёт.
Лично мне в гошке не хватает поддержки десктопных приложений. Было бы прикольно писать один раз код, а потом просто компилировать под все платформы программки.
>>2982036>>2982083>>2982087 Я ещё почитал про это. Как говорят знающие люди - это единственный настоящий косяк в языке. И абсолютно все на это натыкаются, поначалу. Один дед даже багрепорт им по этому поводу им заебенил, и устроил срач, лол.
Но, я, по зрелому размышлению, даже косяком это не считаю. Го - это другой язык. И null в нём понимается совершенно иначе, чем в си или джаве. Но, книги и руководства не акцентируют на этом внимание. Также, и тема интерфейсов разъясняется недостаточно, т.е. акцент обычно делают не на том. А надо подчёркивать, что интерфейс - это не "тип", не "контракт" (как все привыкли), а просто значение. Которое, иногда, инициализируется довольно необычным способом.
И да, им надо было сделать встроенную функцию для проверки интерфейсов на nil.
>>2982534 >И да, им надо было сделать встроенную функцию для проверки интерфейсов на nil. Во первых им надо было слать нахер Пайка. А во вторых нормально реализовывать интерфейсы.
Нигде больше такой хуйни нет, а тут есть. Вначале НИНУЖНО, а потом БЛЯЯЯЯ, А КАК ТЕПЕРЬ СДЕЛАТЬ?. И вот такой факап дривен девелопмент от версии к версии. Вначале пустой error в котором кроме текста нихера нет, а потом давай наворачивать Unwrap и прочий is/as.
>>2982548 Напомню, что go - это c для plan9 и в C обработка ошибок выглядит примерно так: if res < 0 { fprintf(stderr, "%s: %s\n", s, strerror(errno)); exit(1); }
>>2982595 И не говори. А ещё есть контекст, который на самом деле не контекст, и использовать его именно как контекст - не рекомендуется, разве что в крайнем случае, и осторожно, лол. Говно и палки, как и было сказано.
Я уже на питоне начал эту свою утилиту писать. Не то, чтобы не осилил, там, скорее, задача ближе к скрипту, чем к самодостаточной утилите. Надо, чтобы и админ мог поковырять, в случае чего. На го пришлось бы толстый слой конфига намазывать, а нету ни времени, ни сил, ни желания.
>>2982602 >и в C обработка ошибок выглядит примерно так Вот только С это язык для написание низкоуровнего кода под все платформы включая эмбед вообще без ОС и 64к памяти.
А с другой стороны Говноланг с жирнючим рантаймом, бинарниками в десятки мегабайт, сборщиком мусора, ебанной политикой аллокации данных. ВНЕЗАПНО стал переживать, что эксепшены это оказывается накладно с т.з. перформанса.
>>2983251 Им бы то, что есть, до ума довести сначала. А то вот люди пишут: Over and over, Go is a victim of its own mantra - "simplicity". It constantly takes power away from its users, reserving it for itself. It constantly lies about how complicated real-world systems are, and optimize for the 90% case, ignoring correctness. It is a minefield of subtle gotchas that have very real implications - everything looks simple on the surface, but nothing is. https://fasterthanli.me/articles/i-want-off-mr-🍾🍾🍾s-wild-ride
Это примерно то же, что я сам почувствовал буквально сразу же после первого знакомства с го. И вот будет ещё одна (весьма непростая) фишка, реализованная с таким вот подходом.
>>2983251 >Как думаете, взлетит? Как обычно высрут недоделанную хуету.
Почему range только от 0 до n-1? Нельзя сделать как в нормальных языках для произвольного диапазона? Нахуя высирать yield с непонятной семантикой? Вам всего-то нужен простой интерфейс с двумя функциями HasNext() Next() или даже вообще с одной.
>>2983673 > Нахуя высирать yield с непонятной семантикой? Как в 🐍е и 🥂 же, только там это ключевое слово, а тут явный вызов колДети в костюмах снежинока. Единственное что непонятно как с ошибками быть, разве что в структуру сохранять, а итератор методом делать
> Вам всего-то нужен простой интерфейс с двумя функциями HasNext() Next() или даже вообще с одной. Так логику итератора сложнее писать/читать
>>2981340 >Вот пишу я сервис, которому надо дёрнуть данные из других сервисов, нужно убедиться что код работает, мне на локальной машине поднимать в дев-среде контейнеры с кучей сервисов
У нас для этого развернуто тестовое окружение. И есть интеграционные тесты, которые в тего стучатся. Вроде никаких секретов нет. Локально все сервисы не разворачиваем, так как это охуеть как сколько телодвижений нужно сделать, да и к тому же много сервисов, куда ходим мы, или откуда ходят к нам, написаны не нашей командой и не нашим отделом вообще. Поэтому тут только интеграционные тесты спасают.
>>2980853 В яндексе свой S3 написан практически полностью на го. Ну и вообще всякие инфра инструменты вроде самописной графаны у них тоже на го/❄️ написаны.
>>2983841 >Так логику итератора сложнее писать/читать Вот эта нечитаемая eбaла: func на func, через func понятнее? Это г0вн0 нечитаемое! Понятнее в пит0не, где компилятор делает всю магию, но сам код и правда очень простой и читаемый.
То что они предлагают, это засунуть forEach() внутрь цикла. Нахуя - решительно непонятно, его можно использовать и так. Более того это требует корректно обрабатывать все варианты управления циклом, о проблемах с чем они и сами пишут.
>Today, range makes the decision of how to iterate based only on the underlying type of the range variable, not its methods. In fact, no syntax in Go ever makes use of specific methods. The closest exception is the predefined error interface, but even that never has its Error method called by any Go syntax. People often ask for operator methods, and we have avoided doing that for the same reason: we don't want to privilege specific methods. It is of course possible to create a language structured around such methods (🐍 is one example), but Go is not designed that way. Nothing in the Go language invokes specific method names.
В результате вместо for i, x := range myTree { придется писать for i, x := range myTree.DFS() { Оxуеть какое удобство.
А еще функция итератора может проигнорировать то, что возвращает yield и тогда, у тебя перестанут работать break и прочее. Но это пока конечно, а потом-то они обязательно >we will make sure the check happens, with a panic on misuse, without noticeably hurting performance. with a panic и without noticeably hurting performance звучит очень многообещающе.
В общем как обычно замутят какое-то половинчатое решение, которое будет работать через Тулуп. Таков путь.
Как выучить гошку, чтобы пройти через круги ада Стишок на табуреткеов с душными Волшебниками, которые будут гонять по кишочкам с усмешками, а потом на лайв-кодинге и вовсе унижать ебанутыми задачками с нечёткой постановкой? https://youtu.be/GD0iHLucYdU Вот взять видрил, чел уже реально работает сенькой много лет, постоянно пишет на го, а его по сути опустили на Стишок на табуреткее, как Зайчишку. А как тогда "с улицы" туда попадать? Мне кажется, единственный вариант — это как-то перескочить с 🎄и внутри компании.
Обьясните плз что такое бизнес логика и чем он отличается от кода. Тип просто сценарий обработки? Получить данные, сделать 1, потом 2 потом 3 и закончить, это бизнес логика?
>>2984020 > Вот эта нечитаемая eбaла: func на func, через func понятнее? Это г0вн0 нечитаемое! Если введут, то будет встроенный/в стандартной либе типы, можно будет их использовать и не вникать каждый раз type Seq[V any] func(yield func(V) bool) type Seq2[K, V any] func(yield func(K, V) bool) Главное саму суть понимать - yield-нуть значение - значит вызвать тело цикла с этим значением.
>То что они предлагают, это засунуть forEach() внутрь цикла. Не всё что коллДети в костюмах снежинок принимает это форич. Оно мощнее, можно генерировать любую последовательность, не только обходить коллекции. Можно генерировать последовательности из других последовательностей, можно писать потоковый код на много проще теперь. Вон в том же 🐍е на генераторах делают ленивые вычисления и можно результат запроса в дб вычитывать только при рендеренге шаблона и отправке его в соединение, т.е. обрабатывая только одну строку за раз
>>2984082 Это как "бизнес-процесс", в отличие от системного процесса. Т.е. какая-то логика, имеющая дело не с системными или инфраструктурными объектами, а с объектами предметной области. И это обычный программный код, как правило.
Чувак, не смотри это. Это просто инфоцыганская хуйня. Эти люди шлюхи, а не Белый Медведьы. Иначе бы они писали программы, а не торговали еблом в ютупе. Одно с другим довольно плохо сочетается.
>>2984157 А в чем цыганство? Типа чел раскручивает свои платные курсы? Вроде бы нет. Да и челы, представленные в Голубой Огонёк РАБотают на реальных РАБотах и пишут коды.
>>2984133 Речь шла о том, что yield в Г0вн0 реализции, это нечитаемое г0вн0. Обычный итератор проще, там семантика каждой функции ясна тупо из названия функции. И даже использование его в foreach не вызывает особых вопросов, тупо переписаный for for iter := collection.Iter(); iter.HasNext(); { value := iter.Next() } Всё! Никакой магии, предельно ясно что будет если: break, continue, break label, panic, return, goto. А то что предлагают авторы г0вна это магия которую будет генерировать компилятор. Для примера расскажи как будет работать возврат значения из функции, учитывая что ты уже внутри двух вложенных функций.
>Не всё что коллДети в костюмах снежинок принимает это форич. У тебя память как у рыбки, не помнишь вообще о чем идет речь просто триггеришься на слова без контекста. Мы тут обсуждаем охуенную иннициативу улучшения foreach. К0лДети в костюмах снежиноки пока, слава богу, никто не предлагает улучшать.
>>2984179 Ты не видел их на работе. И не видел, что они пишут. И в каких объёмах.
А чел раскручивает себя и свой к'анал. Торгует еблом, в самом буквальном смысле. Видимо, это приносит больше денег, чем то про'граммирование, которое он умеет.
>>2981340 >мне на локальной машине поднимать в дев-среде контейнеры с кучей сервисов У нас для этого развернуто тестовое окружение. При локальном запуске твой сервис роутится автоматом на зависимости в тестовом окружении. Все урлыпорты автоматом прописываются утилитой в генерируемый конфиг. Той же утилитой разворачиваются локальный миникуб и личные зависимости сервиса - очереди/БД. Запускать сервис можно хоть go run/IDE и соответственно дебажить стандартно, всё подтягивается из конфига. Конечно не всегда это катит и мб придется дебажить на проде через логи/метрики, но это редкие случаи.
>>2984230 В чем проблема параллельно работать и раскручивать свой канал? Так многие делают, называется самопиар, может помочь потом с поиском работы или сотрудников.
>>2984575 В данном конкретном Голубой Огонёк (>>2984041) "Стишок на табуреткеедуемый" очень профессионально тычется лицом в микрофон. И вообще, ведёт себя как шоумен. Человек, просто пришедший на Стишок на табуреткеедование, будет вести себя совершенно иначе. Я думаю, это постановка. Такое же ощущение у меня было и от предыдущего Голубой Огонёк, ссылку постили в предыдущем треде.
Это просто шоу на тему около-программирования. Вопросы - детские, ответы - детские. Чтобы неискушенному зрителю (уровня стажёра максимум) было понятно. Иначе массовая аудитория не будет смотреть.
>>2984633 Не надо в такие места соваться. Это живо напомнило мне, как в 90-е уборщиц нанимали с высшим образованием. Совчиной всё это попахивает, просто поверх ещё одеколоном побрызгали.
>>2984624 > Вопросы - детские, ответы - детские. > Чтобы неискушенному зрителю (уровня стажёра максимум) было понятно. Так мне нихуя не понятно было, ЗАВСТАВИЛО ЗАДУМАТЬСЯ, как говорится, а я уже далеко не стажёр, поэтому и спрашиваю, что надо делать/читать, чтобы это детским казалось.
>>2984457 >А если у вас что-то в тестинге упадёт/сломается У нас такое регулярно происходит. А еще регулярно падает тестинг сервисов, куда мы ходим. В итоге большая часть интеграционных тестов просто помечены как необязательные в CI. На них нужно смотреть только если вносишь изменения в код, которые в теории проверяются интеграционными тестами.
>>2985193 >что надо делать/читать, чтобы это детским казалось. Надо больше читать. По-английски. А движущиеся картинки смотреть, в основном, с голыми тётками.
>>2985211 Добавлю, что у меня от такого кина совершенно пропадает стояк желание писать на Го. Видимо, подсознательное нежелание становиться таким же, как эти актёры.
>>2985917 Валидацию надо делать в том месте, где ты получаешь данные. И слать их на хуй, если не валидируются. Чтобы тот кто их послал, сразу понял, что его послали. В репозитории, например, это делать уже как-то поздновато. Там можно просто делать проверку каких-то инвариантов. Но, это, скорее, про гарантии целостности данных, а не про валидацию.
>>2985283 У меня вообще даже изначального желания нет писать на го, я на него смотрю уже лет семь-восемь, всё никак не могу начать, но сейчас уже такое чувство, что если с пыхи не соскочить в ближайшее время то ВСЁ. Но мотивируют только большие зепки гошников, а на сам язык как-то похуй, наоборот, гуглозависимость отвращает.
>>2986286 Почему бы тебе не соскочить с пыхи на джаву, например? Или на питон (хз как там с работой).
Го - весьма специфический нишевый язык. И он сложный, с кучей подводных камней на каждом шагу (как написал один умный чел - fake simplicity). После пыхи будет Весело на утреннике.
А гугол - да, та ещё хуйня. Они не умеют в юзабилити, о чём бы ни шла речь - системы, программы, библиотеки, языки. Хуй знает, как вообще можно быть настолько последовательными в этом деле.
>>2986302 Го сейчас идёт как бы приложением к пыхе, если ты не в курсе. На него переписываются всякие критичные к производительности сервисы. Джава - хз, в принципе, я думаю что смогу осилить, но хуй знает, с чего начинать. Да и уныло это, опять будет кровавый энтерпрайз с дрочерами на абстракции абстракций и дядюшку Боба. Про фейк симплисити в курсе. Петон - хз, думаю что осилю в два счёта, но там с работой похоже туго, либо надо какую-то нишу искать.
>>2986513 >>кубы https://github.com/search?q=operator&type=repositories уже бегу переписывать на питон. Есть конторы (биг Техи), которые делают собственные дистры кубов. Там дохуя работа для прогеров. офк нужно знать девопс и кубы. >>блокчейн Нахрюк крепкий! Делай дальше круды на пхп, унтерменш
Можно добавить еще задачи - логи, метрики и етц. Какой смысл менять язык и делать то же самое.
>>2986470 Так я ж не спорю что они есть, я вообще изначально толкую про перекат в го из пыхи в рамках той же компании. Это и хорошо, что гошка востребована в хайповых отраслях типа блокчейна, можно будет наконец заработать ДЕНЕГ, а не выживать на ссаные 2.5 сотыги. Но сначала надо перекатиться, везде требуют каммерческий опыт. Хотя я и писал один простенький микросервис на гошке, всё равно сквозит НЕУВЕРЕННОСТЬ и тянет по низам ДАННИНГОМ-КРГЮГЕРОМ.
>>2986627 Расслабься и иди на собес в ноунейм контору. Тренировка и раскрепощение. Толку на дачах сидеть и разговаривать с вкатунами, если ты прошел пhп гойду.
>>2986641 Я уже в "нейм" конторе, КОТВАСЯ. Да, надо сходить, но типа чтоб совсем не опозориться надо же что-то знать/уметь, да?
>>2986645 Клал данные в базу из джейсончика, потом отдавал + сваггер. Практически обычный круд, по сути. Один потому что это было как бы экспериментом, там основная часть людея на сисярпе писала, я на пыхе поддерживал сервис авторизации и еще один сервис с данными. Для эксперимента в рамках "перехода на го" написал вот ето.
>>2986886 Я же говорю - это _нишевый_ язык. В РФ - это только крупные компании, типа авито-хуяндекс и банков, и они могут себе позволить повыёбываться.
Асло, им проще взять ждуном школьника, который дрочит на кино с Тузовым, и отформовать его, чем бодаться с опытным (но не в го) человеком, который привык прогибать ситуацию под себя. Собственно, для этого такое кино и снимают, как я понял.
Думаю, если поискать как следует, то найдётся есть некоторое к-во вариантов, но, зарплата там будет попроще. Что делает эту затею бессмыссленной, если ты не маньяк.
>>2986886 Я думаю, что если этим даунам объяснить, что ты законтрибутил в попенсорс проект, которым пользуются десятки тысяч или сделал свой работающий сервис с закрытым кодом, то они охуеют.
>>2986900 > проще взять ждуном школьника, который дрочит и отформовать его, чем бодаться с опытным человеком, который привык прогибать ситуацию под себя Так это везде так. Кабанчик хочет быстро, качественно и бесплатно. Вон, один клоун-бизнесмен хочет рабов на цепи держать, чтоб к восьми утра все в офисе были! https://t.me/bezsmuzi/4972
>>2981263 Если у тебя динамические стенды в кубе это плюс, жрет мало ресов, не надо тратится на доп ноды, также регистри не забивает быстро(да можно настроить чистку) ибо образ весит мало. Также старт сервиса быстрый по сравнению с той же джавой, которая по минуте поднимается...
но с нюансами (или я не разобрался как). смотри, у нас во всех сервисах главный бинарник компилируется из cmd/service/main.go. Я добавил глобальный конфиг для запуска в общий settings.json. Этого хватает в 90% случаев. Бинарники по другим путям запускаю через консольку. Если нужно подебажить, то добавляю конфиг для конкретного бинарника в локальный конфиг для проекта - для этого буквально нужно конфиг скопировать и поменять пути.
>>2987966 У тебя N бинарей в проекте. Как ты поймешь какой бинарник запускать когда ты нажмешь кнопку в пакете, который во всех из них используется? Очевидно, нужен какой-то отдельный дропдаун для выбора конкретной main.go. В вскоде его нет, там можно вручную указать путь. В этом и различие - указываешь путь вручную.
>>2987897 Крч как то через launch.json я разобрался как по F5 и ctrl+F5 делать debug/run, твой способ выглядит как то что похожее, но чет я не вкурил
>>2987966 Дебаг там имеется, насколько он пиздатый пока не проверял. Голанд есть, но я глянул сколько он ресурсов жрет ради программки вычисляющей условно 2+2 и чет грустно стало, пробовал VSC как что то легковесное и маложрущее, но чет подсказывает, что я останусь на жибрейне
>>2987988 >нужен какой-то отдельный дропдаун для выбора конкретной main.go. В голенде так и есть. И даже более того, это можно группировать в папки. И выполнять можно что угодно, не только го (скрипты и прочее), и всё это будет в одном дропдауне.
>>2987996 >сколько он ресурсов жрет Он их совсем не просто так жрёт, всё по делу. И при увеличении размера программки ресурсов он будет жрать столько же. Алсо, там какие-то вещи можно отключать, оптимизировать производительность, я никогда не заморачивался (за ненадобностью), но можешь погуглить. В том числе, можно оперативно отключать подсказки и т.п., это экономит.
Уверен, у кого-то возникнет вопрос: «Зачем в 2021-ом пользоваться -vim- neovim, когда есть замечательный Goland?». Я до какого-то времени сам пользовался только продуктами от JetBrains, но вот уже более 1.5 лет пишу исключительно в vim.
Основной причиной для моего перехода с Goland стала его прожорливость. Отдавать по 3-4 Гб программе, которая просто подсказывает мне названия методов, запускает тесты и реализует «Go to definition», очень расточительно. Вкупе с непонятной политикой индексации проекта, когда у тебя в момент взывают куллеры, а батарейка на глазах тает, привело меня к vim.
>>2972512 Ты сказал perl? Я думал он умер лет 15 назад. Жаль, что он не умер. Он такой забавный - на нём очень просто писать, но через недеелю уже не понимаешь что твой код делает. А если код чужой, то всё, пиздец, приехали.
>>2988291 > Отдавать по 3-4 Гб программе, которая просто подсказывает мне названия методов, запускает тесты и реализует «Go to definition», очень расточительно Я уж думал, что не осталось программистов-бомжей, которые не могут себе позволить иметь 32/64 Гб RAM на своей рабочей машине.
>>2988291 >Основной причиной для моего перехода с Goland стала его прожорливость. Отдавать по 3-4 Гб программе, которая просто подсказывает мне названия методов, запускает тесты и реализует «Go to definition», очень расточительно. У него платное использование памяти что ли? Типа ГБ×час тариф? Ну я понимаю, оно бы 10 ГБ жрало и на всё остальное бы не хватало, но 3-4 то почему жалко? >Вкупе с непонятной политикой индексации проекта, когда у тебя в момент взывают куллеры, а батарейка на глазах тает, привело меня к vim. Он не пробовал ноут к сети подключать? Ноут без сети это просто бесполезная хуйня.
>>2988313 У меня на первом компе 32МБ было и винт на 1.66ГБ, я же не ною, что на нём вижуал студия не работает, поэтому я на кубейсике программы пишу. 2ГБ памяти это год 2006, наверное. Это просто гроб какой-то, а не ПК.
>>2988304 У меня 32 гига на топовом ThinkPad. Но увы - железо принадлежит компании. А своего компа уже давно нет - хуй угонишься за современным железом.
>>2988312 Серьёзно? У меня валяется штук шесть старых ноутов и я тоже думал что без сети они бесполезны. Да они и были бесполезны, а затем на работе выдали божественный ThinkPad и мир перевернулся.
Впрочем, на нёи нет ни одной игры (нахуя, если плойка для игр лучше), весь софт исключительно лицензионный и, если надо загрузить чем-то действительно тяжёлым, то всегда под рукой putty и rdesktop - пусть сервера греются, а не прерасный "ящичек Пандоры".
>>2988358 > А своего компа уже давно нет - хуй угонишься за современным железом. Да ладно, а зачем за ним гнаться? Я как собрался на райзенах года 3-4 назад, так до сих пор всё актуально.
>>2988441 В го нет фреймворков, язык ближе всех к unix way, каждый раз клепаешь себе франкенштейна из разных либ которые заточены под одну задачу. Иногда можешь обойтись только стандартной библиотекой, иногда кастомный велосипед пишешь.
А что у нас по зепкам? С учётом годовой премии, у меня российской компании по текущему курсу вышло около 100к баксов за год заработка. Это норм или не норм? Прост сомнения, потому что гоферы как-то сложно нанимаются - многие просят непропорциональнр много относительно своего опыта. И тут всплывает в голове, а не недоплачивают ли мне.
>>2988616 Какие именно веб-приложения? Они бывают очень разные. Есть куча книг (англоязычных) с примерами. А фреймворков действительно нет, они не нужны. Потому, что то, что делает какой-нибудь flask уже есть в стандартной библиотеке и в gorilla mux. Т.е. сам язык создавался уже заточенным под это применение.
>>2988291 Ахах. Тогда уж проще на бумажке код писать, прогонять в голове и уже потом переносить на пк. Зачем тратить заряд ноута лишний раз, правильно?
>>2988625 Я его буду размещать на гитхабе, а ссылку в резюме, чтобы при устройстве на работу все видели, что я крутой программист и сам написал веб-приложение.
>>2988622 Мне надо веб-приложение, которое может отвечать жсонами и хтмл-страничками, чтобы там была авторизация и аутентификация с миддлварями, чтобы была защита от CSRF-атак и т.п.
Есть список этих книг? Почему их никто не переводит? Неужели только я один задумался о написании веб-приложений?
В самом языке ничего нет. Он пустой. В том же РНР всё заточено для работы с вебом, а тут буквально ничего нет.
>>2988579 В /cmd размещают то, что будет компилироваться в исполняемый файл (команду). В /internal - то, что _не_ должно импортироваться при импорте твоего модуля (библиотеки).
Т.е., в твоём случае - ни то, ни другое. Или в /pkg или, лучше, просто в /controllers, если ты хочешь именно так структурировть код. Это не единственный способ. Можно группировать по функционалу, а не по типу кода. Какого-то одного правильного способа нет.
>>2988627 Или просто скопировал готовую структуру проекта хз где, а вместе с ним и код. Все эти контроллеры и прочее - это с пхп пришло.
Лучше делай по своему. Потому что тебя в любом случае заставят делать так как у них принято. Спросят почему так а не эдак - говоришь так мне удобно, а в го нет жестких правил касательно структуры проекта. Начинают доебываться - шлёшь нахуй этих душнил ебаных.
>>2988637 Почему язык пкстой и на нём нихера нет? Потому что это язык для микросервисов через grpc блядт, он даже на рест не тянет. Гуглу до зарезу нужен был язык для кучи пхп макак, желательно чтоб они не зависели друг от друга. Вот и появился го. Для микросервисов там сделано моё почтение. А на всё остальное просто положили болт, потому что они им не пользуются. Лучше сделай морду на реакте, рест на питоне, а какую-нибудь прокладку по типу чятиков на го.
Все охуеют и поймут что ты нормальный разработчик, а не дрочер на один язык и выясняющий в интернете кто из них круче.
>>2988646 Потому что некоторые конторы так и разрабатывают свои проекты. Заставляют делать тестовые, опрокидывают, а сами втихую пиздят код под свои нужды. Если код непонятен - нанимают на работу чтоб ты сам с ним разбирался.
>>2988637 Веб-приложения, отдающие html, не слишком популярны в го. Потому, что в этом нет большого смысла, этот язык для другого. Хотя, есть встроенные шаблоны, и их можно использовать. Но, основная масса литературы - про rest api и микросервисы.
>>2988656 Ну а ты как думал, на хх вон сколько вакансий по сотни и тысячи откликов. Представь себе, тысячи бесплатных одноразовых программистов каждый день. Делишь проект на элементарные части, каждую раздаешь по 10-20 соискателями. Выбираешь из них лучшую и собираешь готовый рабочий код.
>>2988675 Ну, если ты не знаешь го и не знаешь питон, то какая разница? В итоге, по затратам времени сделать работающий проект на питоне - будет в разы быстрее, чем на го.
>>2988680 А может у него цель пет проект для резюме для вката голангером. Выучить питон, понаписать проектов по книгам и курсам, потом выучить го и переписать все на нем, но уже самостоятельно - норм идея?
>>2988657 >full-stack-web-development-go Автор тянет на каждый чих библиотеку с гитхаба. У него реально кривосшитый франкенштейн. Стандартную библиотеку он не использует.
>pro-go-programming-efficient Дотнетчик Адам Фриман написал мини ASP.NET на голанге с рефлексией и инверсией зависимостей. Так явно никто не пишет на го.
Что сретесь? В гошке стандарт - чистая архитектура дяди боба. Так что с его книжки и можно начать. Если читали, но лень самому делать структуру, можно утащить от three dots или evrone.
>>2988707 Походу и мне придётся идти с го на пыху. А жаль, язык хороший, но что-то конкретное написать сложно. Нет, был бы у меня вагон времени, то с удовольствием бы разработал свой фреймворк, но когда готовишься для работы, то времени столько нет.
>>2988728 >берёшь и пишешь что угодно И в итоге спустя 5 лет получаешь абсолютно устаревший и неподдерживаемый кал во многих местах. Видел я такое однажды: в команде заморочились и сделали целый свой набор общих компонент и тулзов, чтобы в разных микросервисах использовать. Писались эти тулзы и микролибы одним челиком. А как он уволился - всю его работу просто взяли и выбросили нахуй, решили дать другому челику переписывать с нуля все заново. Ебало имаджинировали?
Сказки джуна фрилансера, который "это невозможно поддерживать, давайте переписку, а? Позязя, у меня долг по комуналке".
Неподдерживаемый код на гошке бывает конечно, когда приходит пыхер/питонщик/джавмст/etc и пишет как привык, но получая по рукам он быстро становится нормальным. Go на уровне языка подталкивает разработчика пользоваться стандартными кирпичиками, делать код максимально solid, бить его на микроскрвисы. Что делает ситуацию с переписать все невозможной, если, конечно, сильно не поменялись бизнес требования.
Сказки джуна фрилансера, который "это невозможно поддерживать, давайте переписку, а? Позязя, у меня долг по комуналке".
Неподдерживаемый код на гошке бывает конечно, когда приходит пыхер/питонщик/джавмст/etc и пишет как привык, но получая по рукам он быстро становится нормальным. Go на уровне языка подталкивает разработчика пользоваться стандартными кирпичиками, делать код максимально solid, бить его на микроскрвисы. Что делает ситуацию с переписать все невозможной, если, конечно, сильно не поменялись бизнес требования.
>>2988813 >>2988814 Да причем тут сказки, просто в команде решили повыебываться и написать свой микрофреймворк. Автор микрофреймворка ушел, поэтому все его тулзы заново переписывать начали, а старые тулзы и микролибы выбросили. Сам код микросервисов особо не трогали, кроме как если нужно было сами тулзы по другому начать использовать, не более. Переписывал не я, меня лишь заставили переводить часть микросервисов на новые либы постепенно.
>>2988813 >бить его на микроскрвисы Уже в другом проекте мы сознательно делали монолит. Ну, вернее, так лид захотел. Причина - не хочется ебаться с распределенными транзакциями и двухфазными коммитами. Поэтому сделал по старинке одну базу с гигантской центральной сущностью в 30 полей и монолит, который на 10 виртуалок в облаке деплоится.
>>2988684 Ну, что-то такое я и имел в виду. Это выгляди сложным, но, учиться вообще сложно.
Конечно, не надо год учить питон, потом год фласк или фаст-апи. Смысл в том, чтобы быстро получить что-то работающее, поковырять его, и потом делать подобное на го, уже понимая куда копать. Сам питон при этом можно глубоко не учить, просто базу. Оно вообще не лишне - скрипты писать, прототипы и т.п.
>>2988842 >с гигантской центральной сущностью в 30 полей Вот чем вы там все занимаетесь, лол? Лайки считаете? В бизнес-задачах 30 полей - это вообще ни о чём. Просто так, побаловаться. А тут - гигантская сучность, лол. Отсюда и микросервисы эти ваши дурацкие. В задачах реального сектора - склад, планирование, прозводство, crm - такая хуита просто не жизнеспособна. Да и не нужна.
>>2988893 Ващето бабки считаем, ну да и похуй. Ну там не 30, а чуть больше полей, вроде 40, не считал на самом деле. Просто есть центральная сущность, которая нужна в абсолютно всех бизнес-процессах. Поэтому и приходится ее везде тянуть. А если монолит делать, да так, чтобы у каждого сервиса своя база была, то придется постоянно изо всех сервисов обращаться к тому, который обладает базой с таблицей, где эти сущности лежат. Вот и хуй знает как тут на микросервисы монолит грамотно распилить...
Эти статьи и комменты уровня яндекс дзена, к кому хабра и скатилась.
Ложная дизотомия, монолит vs микросервисы. Должна решать команда разработки, не поддаваться на желтые статьи, а исходя из требований и ограничений конкретного бизнеса.
>>2988969 Ты точно прочитал, что там написано? Оба текста? На хабре - это перевод. И хабр не "скатился", а всегда был говном.
Микросервисы (в большинстве случаев) - это способ искусственно увеличить сложность и стоимость разработки проекта, прикрываясь благими целями и умными словами. Инфоцыганство в чистом виде. Хотя, часто это делают просто по глупости - все побежали - и я побежал.
>>2972146 (OP) Всем привет. Хочу написать API-GateWay сервер на го. Использовал генерацию echo-сервера по спеке. Подскажите пожалуйста в чем ошибка?
моя структура пакетов: main: - main.go - server.go
В обоих файликах прописан package main
в server.go лежит type GatewayServer struct { } в main.go лежит server := &GatewayServer{}
В VSCode go-to-definition работает, ошибок нет, но если пытаюсь запустить то получаю ./main.go:22:18: main.GatewayServer is not a type (exit status 1)
Чат гпт и гугл уже задрочил, не понимаю в чем проблема. Если перенести server.go в отдельную папку и поменять пакет то все работает нормально, но если main.go и server.go лежат вместе - то все пизда
>>2989112 Питон (до определённой степени). Всё остально - это, скорее, анти-го.
Сами создатели позиционируют Го как "Си 21 века". Т.е., это си со сборкой мусора, слайсами вместо массивов, интерфейсами, асинхронностью из коробки. А питон многие определяют как "си с отступами" (в смысле - синтаксис на отступах). И питон - прекрасный клей для сишных либ, интеграция очень простая. Как-то так.
Алсо, в питоне то же лютое дрочево на стандарты кода (PEP-ы), диктаторские подходы (Гвидо - "милостивый диктатор") и прочий лол. Как и в го.
>>2989108 >type GatewayServer struct {} У тебя там, случайно, '=' не стоит? type GatewayServer = struct {...} Ну или ещё какая-то хуйня, которую вскод не распознаёт как ошибку. Внимательно посмотри.
>>2986981 >Если у тебя динамические стенды в кубе это плюс, жрет мало ресов, не надо тратится на доп ноды, также регистри не забивает быстро(да можно настроить чистку) ибо образ весит мало. Мало жрет сервис на сях, а реальный сервис на говноланг жрет ± на уровне джавы.
>Также старт сервиса быстрый по сравнению с той же джавой, которая по минуте поднимается... Если у тебя каждую минуту стартует сервис, то у тебя проблемы с архитектурой или окружением. И решать их надо не ускорением старта сервиса, а исправлением основных проблем.
>>2989276 То есть, го не нужен, так? А мужики-то не знают.
Памяти он жрёт реально меньше. А цпу - больше. Время старта реально меньше. Об этом много написано. Алсо, 1 самодостаточный бинарник ставится в голый контейнер, в отличие от.
>>2989279 Кого вообще парит время старта приложухи? Всё давно уже бесшовно деплоится, старый контейнер не отключается пока новый не стартанёт, так что это вообще не фактор, пусть хоть 10 минут стартует.
>1 самодостаточный бинарник ставится в голый контейнер Опять же, какая разница, голый контейнер или не голый, его придумали чтобы набивать туда всё что нужно и не забивать себе голову - команда для запуска будет одна и та же.
>>2989033 Аргументации? Ты потратишь кучу времени на изучение го, устроишься на работу, будешь делать какие-то костыльные рализации реста на языке который для этого в принципе не предназначен. Поймёшь что на других языках это делается в разы проще, гораздо легче разработка, поддержка. Но к тому времени осознаешь, что просто потратил время на узкоспециализированное говно и в итоге Тулуп будет в огне потому что надо будет переучиваться.
>>2989288 >на языке который для этого в принципе не предназначен Что значит, блять, "не предназначен"? Там json встроен в язык. Декларативная сериализация/десериализация из коробки. Как ещё это должно быть "предназначено", по-твоему?
А насчёт grpc и protobuf есть разные мнения. В том числе и такие, что это ненужное гугло-говно.
Я получил такой интерфейс, который, как я понял, мне нужно имплементировать
type ServerInterface interface { RegisterUser(ctx echo.Context) error LoginUser(ctx echo.Context, params LoginUserParams) error // остальные методы такие же }
почему тут нет типизации никакой? я думал эта штука за меня напишет сериализацию/десереализацию тел ответов/запросов. А мне получается самому нужно это делать? и еще у меня генерируются модели запросов, типа AddWordJSONRequestBody, но не генрируются модели ответов. Почему так нахуй?
>>2989108 ты запускаешь через go run main.go? оно компилирует только main.go из пакета. зависимости оно подтягивает, другие файлы пакета не будет. запускай через go run .
>>2989287 >Кого вообще парит время старта приложухи? Всё давно уже бесшовно деплоится, старый контейнер не отключается пока новый не стартанёт, так что это вообще не фактор, пусть хоть 10 минут стартует. вот я качу свои охуенные правки на прод и мне нужно следить не сломалось ли что. 10 минут непродуктивного тупняка в пайплайн это хуйня. либо отвлекаешься на другую таску, но тогда можешь вообще забыть, что тебе надо следить за метриками вообще-то. у нас и так пайплайн деплоя минут по 5-10. было бы 20, то вообще пиздец.
>>2989294 Голанг это и есть гуглоговно которое почему-то пытаются тянуть в массы. Они сделали язык под свои задачи, а некоторые тут хотят на нём игры ещё делать. Он существует уже больше десяти лет, а адекватных устоявшихся фреймворков до сих пор нет. Я уж молчу про всё остальное.
Он банально недоделан в качестве главного языка для проектов, его максимум - затычки для узких мест. Косяки стандартных библиотек превращают в фичи, которые создатели не хотят фиксить прикрываясь обратной совместимостью, раз уж комьюнити превратило это в фичу.
>>2981263 >Да всем ПОХУЙ на количество файлов. Ты во время сборки все упаковал в образ и все. Поебись с докером, поебись с регистри и может быть ты запустишь свою cli. Нет, спасибо, мне как-то проще сервис и клиент для него на одном языке разрабатывать.
>>2989488 Рест это не про тип http запроса, а про организацию роутинга и апи, чтобы шаблонные вещи оставались простыми и одинаковыми везде, а не приходил очередной Вася и лепил костыли UsersInGroup, AssignUserToGroup, в ресте это было бы GET /groups/:id/users и PUT /groups/:id/users, таким образом рест даёт стандартный интерфейс для доступа к большинству данных и любой веб-фреймворк сейчас генерирует эти ресты одной командой, только Гошники в очередной раз изобретают колесо зачем-то, еще спорите какая форма лучше, круглая или квадратная.
>>2989279 >Памяти он жрёт реально меньше. А цпу - больше. Время старта реально меньше. Об этом много написано. Если сравнивать хелопорлд на голом Го и на Спринге может быть. А если реальные приложения, то разница будет в пределах погрешности. Кривая архитектура, на любом языке, перебьет индивидуальные особенности языка.
>>2989420 >вот я качу свои охуенные правки на прод и мне нужно следить не сломалось ли что. Потому что ваша говноконтора не умеет в девопс. А по нормальному - у тебя есть стейджинг и канари с мониторингом и пробами. А не так что Паджит сидит и мониторит глазками.
>>2989513 >Поебись с докером, поебись с регистри и может быть ты запустишь свою cli. Нет, спасибо, мне как-то проще сервис и клиент для него на одном языке разрабатывать. У тебя каша вместо мозгов, как вообще связан докер и то на каком язык разаработки клиента?
Книги читать не хочу просто потому что зачем тратить время на чтение 500 страниц когда можно посмотреть видео за 2 часа. По видео как по мне обучаешься в разы быстрее.
>>2989276 >Мало жрет сервис на сях, а реальный сервис на говноланг жрет ± на уровне джавы. Сразу видно человека не в теме... У меня в проде джава(спринг) была, жрало как не в себя, потом переписывали на гошку, сами образы меньше стали, сборка моментальная, и по ресам ест фигню...
>>2989796 >Книги читать не хочу просто потому что зачем тратить время на чтение 500 страниц когда можно посмотреть видео за 2 часа Заблуждение. По книгам учиться гораздо эффективнее.
>>2989906 >У меня в проде джава(спринг) была, жрало как не в себя, потом переписывали на гошку, сами образы меньше стали, сборка моментальная, и по ресам ест фигню... Ты не отдупляешь суть. Главное это >переписывали а не >на
>>2990241 Не надо грязи. Сделать рабочий вариант, а потом, по результатам тестирования, оптимизировать - это нормально. Прототип на питоне был бы ещё проще, но, людям привыкшему писать на типизированном языке питон не катит (от тайп-хинтов там толку мало, это не то).
Алсо, Го таки быстрее джавы. Особенно в части работы с данными, вычислений и т.п. Например, я недавно узнал, что генерация случайных чисел на го в несколько раз быстрее, чем на джаве. И потребление памяти, опять же, не надо забывать.
А так-то, если по запросам в секунду смотреть, то оно всё примерно одинаково - что джава, что го, что питон.
>>2990241>>2990292 Вот цитатка с реддита, про fastapi vs go: https://www.reddit.com/r/golang/comments/u5squc/golang_vs_fastapi/ Generally, slower languages use Request Per Second to determine speed and show good numbers, which is super irrelevant for basically any real workload. Fast API is definitely fast in responding thanks to Uvloop and the underlying system calls, but in a real world application it will never be as fast a Go.
I've written a significant web API in both Go and Python using FastAPI and I consistently hit bottle necks inside python with the serialization and validation of data, which I've never had in Go.
>>2989468 > адекватных устоявшихся фреймворков до сих пор нет Детектор неосилятора-пхпшника, все знают что ИДНЫЙ ФРЕЙМВОРК это не говей. А пыхари/питонисты жрут симфони/джанго и просят ЕЩЁ.
>>2990336 Ты заебал уже, на го пишут М И К Р О С Е Р В И С Ы И К Р О С Е Р В И С Ы Сервис рекомендаций, сервис рейтинга, сервис матрасчётов Где много данных и нужно быстрое время обработки Ваши магазины ссаные уже все давно написаны на пэхапэ
>>2990349 Про тёплое с мягким там пишут твои братья по разуму. Остальные прекрасно поняли, о чём речь.
Фастапи в питоне делает то, что в Го уже встроено из коробки. А остальное - как сделаешь, что тут, что там. Поэтому, такое сравнение "фреймворк vs язык" более чем правомерно.
>>2990375 Нахуя ты сравниваешь тормознутый фреймворк на тормознутом интерпретируемом языке с стандартной библиотекой на компилируемом языке? Да даже если так, для таких дуболомов, как ты, там внизу написано про blacksheep и litestar (а про granian не написали), которые под капотом используют не тормознутый pydantic, а msgspec. Ой, а ещё можно заменить uvicorn на nginx unit или написать свою реализацию asgi-сервера. Да, это всё ещё будет медленнее такой же дефолтной веб-дрисни даже на fiber или gin по бенчмаркам, но про ботлнек сервиса, которым пользуется даже 200 тёть срак из твоего бэк-офиса, смешно слышать.
>>2990419 Зато есть умники, которые рассуждают не исходя из своего практического опыта и собственных замеров, а на основе тредов на реддите. И вправду ботлнек головного мозга.
Посмотрел тут книжку Облачный Go и что-то офигел от сложности. Это реально всё надо знать что ли? Или можно написать простой сайт на го и устраиваться на работу?
>>2990467 Ну всякие дроссельные заслонки надо учить и потом прям сложные примеры он даёт. Я практически ничего не понял. Это блин реально надо быть на уровне сеньора, чтобы вкатиться в го. Новичку тут просто не освоить.
>>2990474 Я хотел сразу оценить, что нужно знать по го в плане микросерсивом и офигел от сложности. Толку читать ещё одну книгу го для чайников, она не приблизит к трудоустройству.
>>2989740 Разница в том что если твой софт запускать будешь не ты у себя локально, то чем проще запуск и чем меньше требований к окружению - тем лучше. Статическая сборка бинарей из коробки - это очень мощный бонус go, наравне с электроном для js. Контейнеры - это хороший способ доставить приложение из дева в прод, и очень хуёвый способ дистрибуции софта клиентам.
>>2990448 Судя по содержанию, это книга для техлида/архитектора - такие почти нет смысла читать без наглядного примера решаемой задачи под боком.
Если не стрессуешь с провалов, на собеседования можно ходить в любое время - только не ходи на вакансии мидла когда ты не уверен что даже джуна потянешь.
>>2990485 Я учил по книжке Адама Фримана. Первая часть вполне годная в плане изучения языка, до проекта реального веб-приложения. Я пытался разобраться в его веб-приложении, но там всё на рефлексии и она нужна просто для красоты, чтобы было похоже на ASP.NET. Потом ещё нашёл в интернете статьи чувака по разработке более идеоматичные: https://golangify.com/go/web-app-go Но он не до конца написал. Пробовал читать Цукалоса, но он слишком коряво пишет. Одновременно пытается объяснить основы языка и какие-то сложные моменты. В итоге - каша.
>>2990448 У книжек от O'Reilly обычно в начале написано для кого они предназначены.
>This book is directed at intermediate-to-advanced developers, particularly web application engineers and DevOps specialists/site reliability engineers
Хороших книг по Go навалом, но они на английском. Хороши издательства O'Reilly, Manning, No Starch, иногда Packt и Apress, с этими двумя надо внимательнее быть.
>>2990490 И что мне теперь ещё английский учить? Я планировал в марте уже искать работу. Считай 2 месяца осталось на подготовку, а у меня - не у шубы рукав как говорится.
>>2990475 Ну что за абстрактный вопрос? Быстрее всего вести разработку в copilot в привычном для себя стеке. У нас веб-приложения даже на плюсах пилят, потому что все инструменты для этого готовы и рядом в монорепе куча примеров (https://userver.tech), но если ты дома с нуля попробуешь, то сольёшь кучу времени в хэлло-ворлд.
Вы выбираете не жену, а инструмент на ближайшие полгода-год. Куда правильнее выбирать язык по вакансии на которую метишь и задачам которые ты хочешь решать, а не по абстрактному кол-ву фреймворков - на работе всё равно придётся использовать локальный стэк.
>>2990483 Тогда могу только порекомендовать стажировку с проживанием и последующую релокацию, но это вариант для молодых и шутливых. На удалёнку все опасаются брать ждунов.
>>2990496 Его очень полезно знать. Тем более, для чтения не так уж сложно выучить. А так на русском тоже что-то есть, хотя и негусто. Head First Go, Донован и Керниган, Боднер, Харшани. Еще можешь какие-то курсы на рутрекере и nnmclub поискать.
Но вообще учи английский, если есть свободное время. Ты же как-то помимо работы/учебы/вката чиллишь, сериалы, игры, ютуб. Перейди на чисто англоязычный контент и за месяц уже будешь понимать более-менее. Алсо пройди A Tour of Go с гугл переводчиком хотя бы.
>>2990448 >Облачный Go Лол, они перевели Cloud Native Go. Да ещё так быстро. Оригинал - отличная книга, но, это ни разу не учебник по Го.
Перевод я не видел, но, хороших переводов комп. литературы вообще мало. а этот сделали очень быстро - оригинал издан в апреле 2021, а перевод - уже в сентябре. Хотя, ДМК, вроде, раньше делал норм. переводы, когда я ещё читал такие вещи на русском (лет 20 назад).
Но, вот эти вот "дроссельные заслонки" немного настораживают. В оригинале, конечно же, было throttle. Кстати, как они там debounce перевели? Короче - не читайте до обеда советских газет, лол.
>>2990496 Но, если ты "ничего не понял" в книге, где рассказывают, что такое микросервисы, то что ты собрался делать на работе? Я бы тебе посоветовал просто учить Го, и делать что-то по книжкам с пошаговыми примерами. Их есть на scanlibs.com (на английском). Причём, упор не на "микро" а прост на REST API. Переводить можно гуглом. А потом честно пытаться устроиться стажёром за еду. Это единственный реальный вариант.
>>2990527 Короче, посмотрел перевод - на сайте ДМК есть оглавление и несколько отрывков. Хуета. Переводчик - Киселёв, известный персонаж. Из тех, кто переводит паттерн как "шаблон". И изобретает свои термины, вместо устоявшихся англоязычных. С терминологией, в итоге - пиздос. Учите английский, дети.
>>2989729 это всё есть. на стейдже все проблемы не отловишь. и проберы в канари на всё не настроишь. простой пример - накосячил в логике с условием и запросы в новую зависимость не идут. или наоборот задублировались. по графикам легко будет заметить, а проберы на такую хуиту никто не настраивает. или если другой сервис может начать стрелять (а он может), то ты будешь проберы на соседние сервисы тоже себе завозить? да или еще проще пример - порог на пробере может не заметить проблему, даже если с EWMA/производными/бейзлайнами наизвращаешься. так что вообще-то да, поглядывать на метрики при деплое помогает.
>>2990527 Проблема тут очевидно в завышенных требованиях в вакансиях. Как человек вообще может этому обучиться, если он в глаза не видел этих ваших хайлоадов!? У меня вот на учебном проекте ни каких хайлоадов нет, там один пользователь - я. Мне кажется го сам себя загоняет в тупик такими завышенными требованиями к программистам и быстро схлопнется. Уже сейчас наблюдается снижение его уровня популярности.
>>2990982 >завышенных требованиях Да не завышены требования, они как раз такие, какие требуются, го это инструмент для хайлоада и ты идёшь работать на хайлоад с микросервисной арихтектурой, которая хуёво отлаживается, хуёво мониторится, хуёво деплоится и мутная со всех сторон, зато быстрая и хорошо масштабируется, возьмешь новичка на такую работу - он тебе заминирует весь проект так, что на этих минах будут подрываться другие разрабы, плохой код и плохие архитектурные решения придётся переписывать, а издержки на переписывание кода в такой системе просто колоссальные. Го это не язык для вката, это не язык для обучения программированию, это язык который решает узкую техническую проблему для уже развившихся и устоявшихся систем, требования к которой известны и жестко зафиксированы, не надо себе иллюзий строить что вот сейчас прочтешь книгу по микросервисам и начнешь писать распределенные системы не имея опыта работы с другими архитектурами и подходами, это так не работает. Откуда у вас вообще возникла идея в голове, что можно вот так с нихуя посмотрев видосики на ютубе вкатиться в хайлоад? Далеко не все программисты с опытом-то дорастают до таких вещей.
>>2991010 Обычные круды делаются обычным инструментом, предназначенным для клепания крудов, десятки их, очень простых и удобных, в популярных веб-фреймворках уже встроен генератор крудов.
>Чисто российский термин Термин может и местный, но проблема, которую он характеризует, понятна любому специалисту.
>>2991030 У белых людей это называется high performance. Потому, что не важно, насколько ты устал, важно, что ты в итоге сделал. А у нас - "здесь мерилом работы считают усталость".
>>2991053 Сынок, еблан - это твой папа. И посмотри в словаре, что значит слово literally. Потом подумай.
Термин "high load" не отражает вообще ничего. Большая нагрузка - и что? Вот если тебе дать штангу 200 кг - это будет "хайлоад". И под этим хайлоадом ты просто обосрёшься, и всё. А вот хай перфоманс - это когда серьёзный перец подошёл, и эту штангу поднял. Понимаешь разницу?
>>2991004 >хуёво отлаживается, хуёво мониторится Так бывает у дебилов, которые вместо саги срут ивентами в кафку, а потом с горящей жопой бегают по 100500 логам и пытаются понять, куда пропала транзакция ебаная. Микросервисы - это литерали про "наймем кучу дешевых мартышек и пусть они пердолятся".
>>2991012 Менторы из яндекса, лол. Слушай больше, они тебе расскажут.
Клоун справа даже не понимает, что при разговоре демонстрирует полный набор маркеров лжеца, раз за разом. Зато, наверное, не прочь порассуждать про "софт-скилы". Ебаный стыд, короче.
>>2991213 Какая разница как называть это говно вообще. Хайлоад, хуйлоад хай перформанс. Ваще насрать, это одна и та же проблема, а вместо того чтоб сосредоточиться над проблемой люди спорят как её правильно называть. Филологи комнатные блядь
>>2991010 >на рынке рф большинство вакансий го это обычные круды Двачую. Голанг тащат в те места, где более чем достаточно связки python+flask+pydantic
>>2990505 >на работе всё равно придётся использовать локальный стэк Ну это только в Я по большей части. Помню как работал там, такого говна поел, особенно по части деплоя в няню.
>>2991228 Это было сказано мимоходом, для лулзов, неужели не понятно? Алсо, разница в названиях прекрасно иллюстрирует разницу менталитетов - понты и пафос против реальных результатов. Это как подросток vs взрослый.
>>2991221 Ну, ты бы просветился сначала, зачем их вообще отдельными делают. Т.е. зачем вообще микросервисы. Сферическая идея в вакууме такова, что можно масштабироваться под нагрузкой, автоматически запуская параллельно нужное число контейнеров с отдельными инстансами сервиса. Каждый сервис делает свой маленький кусочек, но делает очень быстро и т.д. и т.п.
На самом деле, в 90% случаев это всё нахуй не нужно, и нормальный монолит будет в разы быстрее и дешевле.
>>2991066 Весело на утреннике тебе жить :) Сколько девушек за ручку держал?(кроме мамы, если она есть)
Мало того, что ты говоришь с людьми из снг, где все понимают под хайлодом - высокие нагрузки (хотя само определение не дает понимание о каких нагрузках идет речь), так еще и пытаешься маневрировать, как последний малолетний кретин. Саги тебе свинья.
>>2990481 >Контейнеры - это хороший способ доставить приложение из дева в прод, и очень хуёвый способ дистрибуции софта клиентам. У клиента должен быть браузер или аппка на мобилке, никакого другого софта ему дистрибутить не надо.
>>2990621 >на стейдже все проблемы не отловишь. и проберы в канари на всё не настроишь И что ты предлагаешь? После каждого релиза каждый разраб должен пыриться на прод метрики, логи, вручную тестировать свою фичу? Ты понимаешь, что такой подход абсолютно не продуктивен и подвержен ошибкам?
>>2991243 Мальчик, сосни-ка хуйца. А когда проглотишь - попытайся научиться понимать прочитанное. Можно несколько раз читать, если с первого не доходит.
>>2991284 Чувак, видишь ли, в чём проблема - термин high load - англоязычный. Но, англоязычная аудитория таким термином не пользуется в принципе. Вообще никогда, понимаешь? Там думают по-другому. Вопрос - зачем этот карго-культ? Почему не использовать русскоязычный термин? Если это не понты и пафос, то что это?
>>2991332 >термин high load - англоязычный >Если это не понты и пафос, то что это? Не понты и не пафос, просто калька с конференции HighLoad++, на которой уже 20 лет ежегодно обсуждают проблемы высоких нагрузок, так что твои наезды к устоявшимся терминам в глазах опытных анонов выглядят как тупость залётного вкатунишки и никак иначе.
По итогу вчерашних или позавчерашних обсуждений спрошу.
Если я в универе немного учил Питон и сейчас повторю основы, а потом возьмусь за бэкенд на Flask или FastAPI, то через пару месяцев практики норм будет взяться уже за Golang? Или лучше не ходить окольными путями?
>>2991429 Мне кажется - лучше ходить. Можешь смотреть на это не как на "окольный путь", а как на создание прототипа. Ты Го вообще знаешь? Можешь что-то написать?
>>2991454 >Ты Го вообще знаешь? Нет, я сейчас прохожу A Tour of Go, потом хотел какие-то книги с упором на практику почитать. Не переписывать код, а так: пару часов читаю, потом пару часов делаю сам.
Из языков программирования знаю JS и Python. В универе изучал Python для работы с данными, еще на нем же немного изучал алгоритмы. JS когда-то знал неплохо, на React кое-что делал, но потом понял, что фронтенд не вариант для вката. Не только из-за конкуренции, но и в целом перспектив развития как разработчика.
Хочу какой-то оптимальный путь обучения выбрать, чтобы летом можно было по собесам начать ходить. Мне в целом импонирует идея знания многих языков программирования, если они применяются для схожих задач. Встречал, что многие себя так и идентифицируют "Python/Go разработчик" или вакансии так называются. Но вроде в Go повыше вероятность вката, чем в Python, так что вопрос в конвертации знаний, полученных на примере Flask/FastAPI, в Go.
>>2991486 Ну, если ты никогда не делал веб-сервисы, то питон - самый простой способ это начать. Насчёт "конвертации" знаний - я думаю, так не совсем правильно говорить. Ты получишь знания о том, как вообще делаются веб-сервисы. Независимо от языка.
Насчёт книжек по Го - выше упоминалась Cloud Native Go (и её перевод). Там всё не так сложно. Первая часть - просто введение в тему, совсем короткая. Во второй части дано введение в Го и рассмотрен пример простейшего сервиса, который пишет transaction log. В третьей - разговор про паттерны и про то, почему и зачем делают так или иначе. Третья часть может быть сложновата, т.к. без опыта может быть непонятно, зачем это всё.
Могу также посоветовать Distributed Services with Go: Your Guide to Reliable, Scalable, and Maintainable Systems (очень годная книга с хорошими отзывами на амазоне). Там в течение всей книги делается несложный сервис распределённого лога, который по ходу дела обрастает разными фишками. Но, всё с самого начала делается на gRPC, а на на REST. https://scanlibs.com/distributed-services-go-reliable/
Ещё могу сказать, что книги микросервисам и т.п. на Го содержат массу интересных подробностей, которых нет в книгах по этим же темам на джаве, например. Потому, что в Го принято делать всё без фреймворков (и делается это, в целом, несложно).
>>2991278 не, предлагаю обмазать весь проект проберами на каждый чих и обтекать с отваливающимися от колебаний воздуха деплоями. а чатик с алертами замютить чтобы постоянные флапы не мозолили глаза. или еще лучше идея - хуяк хуяк и в продакшн.
>>2991278 от разраба нужно не кода больше высрать, а фичи сделать и деньги не потерять. то, что деплой мониторит 1 (один) человек это не непродуктивно. и лучший человек для этого это сам разраб, который знает, что он релизит. >После каждого релиза каждый разраб должен пыриться на прод метрики, логи, вручную тестировать свою фичу тестить до релиза надо. после релиза - по ситуации. в зависимости от сложности/рисков выбирается как фичу тестить и мониторить. юнит-тесты нужно писать однозначно. малорисковые штуки уровня цвет кнопки/либу обновить - можно не следить и не тестить вручную. что-то посложнее хорошо бы хеппи патх на стейдже протестить и деплой проконтролировать. это значит в идеале пару раз в графану заглянуть как канари себя ведет, даже если проберы не стреляют. более рисковое уже в зависимости от масштабов - qa подключать/делать внутренний тест на компанию/пыриться в метрики и логи/добавлять проберы/дохуя всего >подвержен ошибкам нихуя не понял. мониторишь/не мониторишь, ошибки все равно будут. если мониторить, то есть шанс про них раньше узнать и меньше разбирать потом.
>>2991429 это тупо развитие кругозора. есть шанс, что поможет, но когда - тут не угадаешь.
предвижу, что в петоне будет много сахара, который скрывает то, что в го надо будет научиться писать самому. из фласка ты в итоге перенесешь тупа общие знания как писать бэкенд, а всё остальное будешь учить заново. да и даже общие знания о бэке это нихуя без работы с реальными системами. imo на петоне надо уметь писать, но учить лучше сразу гошку.
>>2991429 > пара месяцев практики Этого даже на проект не хватит, нужен опыт. Потому что на го очень неприятно делать рефакторинг. Чтоб за него браться, надо набить руку сразу делать проект на хорошем уровне. Для этого нужен опыт.
Поэтому на го не берут джунов. Они сами перегорают от сроков одного и того же проекта, так ещё и потом за него гавно чистить надо когда он свалит и поймёт что это не его.
>>2991241 Микросервисы это не архитектура, это стиль управления. Они нужны, чтобы нанимать хохлов из епама за тарелку мивины. Когда у тебя мусорный стартап и ты не можешь год искать синьоров, а хохлы вот они, за забором хрюкают. Опыта у них ноль, мозгов еще меньше, но их много, они дешевые и могут начать работать прям завтра. Разделение на микропенисы придумали, чтобы эти долбоебы не утонули в бесконечных мерджах пул реквестов и хоть как-то работали. К масштабируемости микропенисы никакого отношения не имеют, ведь тормозит не говнокод, а база, которую хуй отмасштабируешь. Можно до усрачки поднимать контейнеры, но когда они все ходят в одну базу, будет пиздец с блокировками, это классика, это знать надо.
>>2991241 >>2991633 >Сферическая идея в вакууме такова, что можно масштабироваться под нагрузкой Микросервисы решают задачу менеджмента а не масштабирования. Чтобы компанию можно было поделить на группки и дать каждой группе по одному микросервису. И они могли независимо от других разрабатывать, тестировать, деплоить.
Это удобно, если у тебя 100 программистов, ты можешь сделать 10-20 микросервисов. Микросервис приёма заказов например. Над ним может работать менеджер по продажам, два программиста и дизайнер.
Монолиты прекрасно масштабируются. С помощью кеширования + лоад балансинга. Микросервисы можно более ТОНКО отмасштабировать. То есть дать какому-то сервису чуть больше ресурсов, другому чуть меньше. Но общей сути это не меняет.
>>2991635 >Это удобно, если у тебя 100 программистов, ты можешь сделать 10-20 микросервисов. Микросервис приёма заказов например. Над ним может работать менеджер по продажам, два программиста и дизайнер.
И кто мешает делать то же самое с модульным монолитом? Возможно, несколько усложнится деплоймент, и то не факт.
>>2991638 Ничего! Но монолит как ты его не модуляризируй как не выноси в плагины, остаётся монолитом. Какая хуй разница, ну окей, у тебя есть интернет-магазин. Ты его написал на java/c#/go/rust. Вынес checkout, cart, заказы в отдельную библиотеку. Этот проект всё равно будет компилироваться полдня, от того что ты вынес в библиотеки, это особой погоды не сделало. Посмотри сколько условный файрфокс компилируется. Потом ещё полдня будет тестироваться. Ну и плюс, это всё сидит в монорепе.
Я не привязан к одному языку программирования в микросервисах. Захотел в одном месте питон использую, в другом go, в третьем rust. У меня только один сервис на которым я работаю. Он быстро компилится, быстро тестируется и быстро деплоится.
Чаще всего под модульным монолитом имеют ввиду 3-х слойную архитектуру. Ну типа фронтэнд, бекенд, данные. Но это не совсем то. Что скажем маленькая команда программист + дизайнер + менеджер по продажам, работающая над микросервисом.
>>2991638 Из твоих 100 программистов 95 - это вкатунцы после курсов, синьоры уровня епам и мастера софт-скиллов 80 уровня. То есть, стадо долбоебов. Когда они все начинают комитить в одну репу, наступает хаос. Уволить этих мартышек тоже нельзя, ведь когда ты начальник 5 человек - ты тимлид Вася, а когда 100 - ты руководитель направления разработки Василий Петрович, понимаешь ли. Поэтому мартышек делят на команды по 5-10 голов и там они кидаются джейсоном в кафку, а толковых ребят выделяют в отдельную команду инфраструктуры и кластер крутится, код мутится. Потом падает какой-то из 500 микросервисов и вся система встает раком. Архитектура жи есть.
>>2991648 >Чаще всего под модульным монолитом имеют ввиду 3-х слойную архитектуру. Ну типа фронтэнд, бекенд, данные. Нет. Ты описал горизонтальные слои. А модули - вертикальные блоки. В каждом модуле - свои три слоя. То же самое, что микросервисы, но, связь не по сети, а средствами языка - просто вызовами функций или очередь сообщений и т.п.
>>2991648 >Что скажем маленькая команда программист + дизайнер + менеджер по продажам, работающая над микросервисом. И я тебе даже больше скажу - вот это вот, что ты описал - это модуль, а не микросервис. Возможно - реализованный через Тулуп, но модуль. Потому, что в микросервисе дизайнер не нужен. Вообще, завязывай учить, и начинай учиться. https://blogs.newardassociates.com/blog/2023/you-want-modules-not-microservices.html
>>2991652 >читать высеры от инфоциган Ты лучше посмотри на ютубе выступления с конференций хайлоад, где люди делятся реальными кейсами, а не влажными фантазиями. Сначала микросервисы, теперь модули, завтра очередной джон хуй высрет очередной фанфик про разработку и все будут обсуждать какие-нибудь юниты, блять.
>>2972146 (OP) Ищу работу на Гошке. Связался с компанией, они пилят мобильные игори на айос, при этом у них бек на го. Никогда не имел дело с такой специфической штукой как мультиплеер игори. Расскажите вообще че это. Как я понял, это дохуя сокетов, которые получают какие-то изменения мира и возвращают актуальное состояние карты/персонажа/мира/прочей фигни.
>>2990543 >Выступление великого Пайка Хуета. Все got wrong ограничивается в документации было мало примеров, с комьюнити неправильно работали, int надо было сделать безразмерным, syslog плохо написан. На критику Го как языка он никак не ответил.
>>2991638 ну представим что все микросервисы стали модулями. каждый модуль может общаться с другими модулями только по API, который валидируется и всегда валиден, как сейчас. и все модули в отдельных репах, как сейчас. и каждый модуль может ходить только в личную БД, как сейчас. и, конечно, вся сборка монолита абстрагирована от разработчиков - пайплайн пуллит модули и собирает монолит.
что ты получил? усложнение сборки монолита, невозможность поскейлить отдельные модули - можно скейлить только монолит целиком. и непонятные деплои - у тебя очередь из деплоев на каждый апдейт одного модуля или можно катить правки в N модулях одновременно? как делать канари деплои? роутинг на уровне кода разруливать и держать старый код рядом? хотя ладно, окей, теоретически можно роутить на разные версии модулей одновременно из кода монолита и в пайплайне пуллить пару последних тегов. это конечно еще доп. сложность для сборки. но вот ещё некоторые модули делают довольно долгие запросы к своей БД, им норм 5 секунд ждать инфу, бизнес-требования расслабленные. уверен, что у тебя ФД не кончатся?
а если пролезла паника/сегфолт (а некоторые фичи могут быть завязаны на CGO)? у тебя падает сразу абсолютно всё, ок?
>>2992040 >тебя падает сразу абсолютно всё, ок? Система останавливается целиком, абсолютно благоприятный сценарий в отличии от микросервсиов, где всё пошло в разнос и при этом продолжает функционировать непредсказуемым образом.
>>2992166 Идея микросервисов хорошо ложится на кубер хуюбер+ если большая компания и много команд, каждая может на своем текущем стеке пилить, а не переучиваться.
>>2991588 >>2991592 Я тебя понял. Го очень подходит для говнокодеров, потому что они не могут в тестирование, а деплоймент происходит быстро и можно быстро сломать проверить на проде.
>>2992040 Я имел в виду джаву. Надо было уточнить. На Го такого опыта у меня нет, я написал всего пару cli-утилит, хотя и достаточно сложных. И, я думаю, что в случае Го такой подход не очень подходит, просто потому, что это нативный код в одном толстом бинарнике. И делать .so тоже не вариант, как мне кажется. Более того - при таком подходе Го становится просто не нужен, скорее всего.
>>2992181 Без микросервисов кубер просто не нужен. Вообще, очень надеюсь, что когда-нибудь все уже поумнеют, и сольют всё это раздутое говно в унитаз. Потому, что заменить один bloat другим - это так себе прогресс.
>>2992082 >Система останавливается целиком, абсолютно благоприятный сценарий нихуя не благоприятный, когда у тебя весь сайт тупо сдох. это сразу потери в деньгах и новости в СМИ. вот у нас есть несколько источников дохода. если один отваливается, то продолжает работать. с большой вероятностью отваливается сценарий, который пока меньше дохода приносит - он новый и не такой стабильный ещё. но если он будет класть весь сайт, то это хуевая архитектура. непредсказуемое поведение это тоже хуевая архитектура, но его легко избежать тупо правильными практиками и грейсфул деградейшном.
>>2992250 Я уже писал тут - это инфоцыганский развод заказчика на бабки. Реально пилят на микросервисах то, что в других местах прекрасно работало и работает на java EE. Работает в разы лучше, чем весь этот ёбаный хаос. Дебилы, блять. Воистину - время дураков.
>>2992263 если прошла оплата, то деньги для начала просто захолдированы и их можно бесплатно вернуть. чтобы они не списались, если нихуя в реальности не произошло, то надо просто нормально делать и нормально будет. пусть даже падает весь биллинг, но не сам сайт. есть редкие кейсы когда всё пиздец неудачно - в них платить компенсацию норм. а падение отдельных сервисов не должно к этим кейсам приводить.
>>2992082 >Система останавливается целиком, абсолютно благоприятный сценарий И не поднимается назад пока не починят модуль. Абсолютно хуёвый сценарий для бизнеса с задекларованным SLA. И теперь девопс должен уметь не только разбираться как что-то поднять и замониторить, но и как правильно отключать модули приложения руками в проде чтобы приложение не крешилось сразу после старта.
Полная остановка допустима только для некоторого коробочного софта.
>>2992263 Если биллить клиентов за незафиксированный заказ или неоказанную услугу для тебя ок, то компенсировать, откатывать транзакции и проводить сверку транзакций ты тоже должен уметь. А для крупного бизнеса это даже не право, а обязанность.
>>2991638 Охуеть как усложнится CI твоего монолита. Задача решаемая, но обычно ты не в гугле и разрабатываешь не хром, обычно вся история заканчивается тем что перед очередными празниками из-за изменений в куче сервисов сборка ломается в нескольких местах, и её не могут починить неделю.
>>2992330 >компенсировать, откатывать транзакции и проводить сверку транзакций ты тоже должен уметь У нас сделали биллинг монолитом, чтобы не ебаться с транзакциями.
>>2992330 >И не поднимается назад пока не починят модуль. Поднимается в последнее стабильное состояние, еще 10 лет назад деплой автоматом всё это делал, программа падает и всё встаёт на уши сразу же, а разбор полётов и ремонт уже в дев-среде, за чашечкой кофе, другое дело когда ты задеплоил, потом у тебя через час выстрелил алерт, за этот час система гоняла транзакии по сломанному пайплайну и тебе приходится подключать бухгалтерию чтобы всё это разгрести.
Микросервисы - охуенная технология. Правда, транзакций нет. И работает через Тулуп. Зато прогрессивно. И люди постоянно заняты.
Ебанаты слили в унитаз все наработки последних лет 50 примерно. И теперь делают велосипеды с квадратными колёсами из говна и палок. Из каких-то маргинальных кейсов сделали систему. С которой кормятся тысячи паразитов. Пидарасы, просто слов нет.
>>2992389 Ещё один долбаёб порвался. Отношение к монолита/микросервисам отлично даёт представление о человеке. Яростно против микросервисов топят или вкатуны после курсов где их такому не научили, или сорокалетние сисядмины с атрофированным мозгом. Столь же яростно против монолитов топят уже-не-вкатуны которые успешно вкатились на работку, и сидят пердят над микросервисами, никогда грамотных монолитов не нюхали. А разгадка как всегда где-то посередине, здоровый человек понимает что это просто инструменты со своими применениями
>>2992426 Ну вот как быть с транзакциями, расскажешь мне, джуну? У нас на работе именно из-за них не хотят монолит распиливать. Распределенные транзакции с сагами или двухфазным коммитом очень Весело на утреннике в рабочем состоянии поддерживать. А без транзакций нам никак - нужно чтобы бд всегда консистентной была.
>>2991507 >Ну, если ты никогда не делал веб-сервисы, то питон - самый простой способ это начать. Нет, не делал. Поэтому подумываю попробовать в уже знакомом Python.
>Ты получишь знания о том, как вообще делаются веб-сервисы. Независимо от языка. Вот это звучит интересно. Вообще кто-нибудь итт перекатывался в Go из бэкенд-разработки на Python? Пришлось долго перенастраиваться на новый язык или просто освоили синтаксис, прочитали пару книг и уже могли идти на собесы? А может кто-то на работе переносил проекты с Python на Go?
За книги спасибо, я сейчас скачал довольно много литературы по Go, почти все из изданного в 2020-2023 на английском. По содержанию надо посмотреть и выстроить оптимальный порядок чтения.
В network programming бэкендеру стоит вкатываться или только первые главы с теорией посмотреть? Нашел книжку Network Programmability and Automation, что-то она мне понравилась по содержанию, там и Python, и Go, и Linux, и много чего еще затрагивается.
>>2992429 Он бы рассказал тебе, если бы знал. Судя по тому, что он тут выдаёт - ему такими вещами лучше вообще не заниматься. И без него хватает специалистов в тулупах, ололо.
>>2992429 Мышление надо менять. Вам не база нужна, а данные из нее. И не все, а если хорошо подумать, милипиздрическая часть, которая к бизнесу относится. Если заменить подход с тотального контпроля над целосностью на ивент дривен, то окажется что транзакции и нахуй не нужны не распределенные, ни какие другие. Если нужна статистика, то она точно также собирается в процесс обработки ивентов, а не анализом портянок скл выхлопа.
>>2991609 >из фласка ты в итоге перенесешь тупа общие знания как писать бэкенд У меня нет опыта в бэкенде. Так что общие знания не помешали бы.
>imo на петоне надо уметь писать, но учить лучше сразу гошку Просто Python уже немного знаю. Читал еще такое мнение, что Go обманчиво простой язык, легко разобраться в синтаксисе и запускать какие-то программы, но язык предназначен для решения сложных задач, а для этого нужно много знаний не самого Go, а вообще про разработку и особенно бэкенд-разработку.
>>2992443 Вот тут (>>2990543) ссылка на обсуждение выступления Роба Пайка. И в этом обсуждении, помимо прочего, разные люди пишут, что Го - это как раз таки замена Питону в бэкенде. Оттуда, типа, в основном и перекатываются, когда нужна производительность и типизация.
>нужно много знаний не самого Go Нет. нет, именно самого Го. Там подводный камень на камне, буквально. Особенно после пыхи, питона или жс. Да и вообще.
>>2992352 Поздравляю, но вам в любом случае надо уметь проводить платежи и ты вряд ли лезешь напрямую в АБС банка, а значит тебе надо уметь отслеживать статусы платежей до их полного проведения и уметь перепрогнать платёжку с некоторых состояний.
Проверь, не пиздят ли там случаем?
>>2992366 > Поднимается в последнее стабильное состояние Ага, ну раз ты любишь биллинг, давай на примере биллинга, он как раз охуенно подходит.
Смотри - у нас законодательство корректируется примерно 1-2 раза в год, в том числе с измнением форматов передачи данных и сроков их передачи. Поэтому в своём биллинге вы должны были заранее заложить что откат на последнее стабильное состояние тупо невозможен, т.к. это состояние уже нахуй никому не сдалось. А также что на исправление проблемы у вас обычно есть около 4 рабочих дней. И чем больше у тебя монолит, так больше модулей которые нет смысла откатывать, потому что внешняя система с которыми модуль работает же не сможет работать со старым модулем.
А что лучше - 4 дня лежать и нихуя не проводить, или 4 дня работать в контролируемо-сдеградировавшем состоянии и как писать сервис так чтобы состояние деградировалось контролируемо - вопрос для ваших архитекторов с бизнесами, но не для тебя, т.к. ты тупо даже не понимаешь границы применимости архитектур.
>>2992389 Во первых, примерно 30 из этих 50 лет индустрия решала задачи под мейнфреймы и на языках которые ты не слышал. Плавали, знаем. Во вторых, не слили, а проанализировали и поняли что эти наработки решали задачи 50/20/10-летней давности, а современные задачи они или решали плохо, или меняли их на груз своих проблем. А вот последние 10 лет индустрия как раз изобретает микросы и учится управлять получившимся флотом, что тоже нетривиальная задача.
> Правда, транзакций нет Также как в монолитах - или у тебя используются двуфазные коммиты, или в любом случае решаешь проблемы на стыке трёх разных систем различными статус-сообщениями.
>>2991614 Я правильно тебя понял, что надо делать Python-проект на хорошем уровне с рефакторингом и всем остальным, как полагается, тогда в Go будет легче? А сколько после такого займет перейти на Go, если, допустим, полгода на Python что-то делал?
Тут анон пикрил советовал, например. Опыт проработки таких книг облегчит разработку на Go?
Сейчас смотрел книги и не понял, почему актуальное издание Refactoring от Мартина Фаулера с примерами на JS... JS норм язык, но почему именно он.
У нас свой собственный биллинг. Грубо говоря - пользователь пополняет счет на нашем сайте (типо кошелек), а оттуда уже бабки сами списываются. Если в кошельке бабок недостаточно, то автооплата должна сработать. И вот тут много всякой бизнес-логики еще накручено, с банком тут мы только на этапе выполнения самих платежей взаимодействуем, да и то, не лично мы - а через цепочку сторонних сервисов написанных другими командами и отделами.
Нужно сделать так, чтобы у юзера ни одной лишней копейки не исчезло, да и чтобы мы ни одной копейки не проебали по глупости. И вот сеньки наши говорят, что с микросервисами мы жидко пукнем с транзакциями в базе. У нас на целостность данных дрочат очень сильно, вплоть до того, что даже асинхронные действия (которые у нас через task queue сделаны) выполняются в той же транзакции, в которой мы условную фьючу этого действия создали. Для большей простоты - вот хотим мы обновить бабло на счету у юзера (предположим, что это тяжелая операция, которую нужно в асинхроне делать) - каждый раз для этого стартует асинхронная операция, которая ставится в очередь, и которую когда-нибудь воркер подхватит и выполнит. И вот когда мы эту операцию начинаем выполнять, то сразу же создаем транзакцию, в которой через хуй пойми сколько времени начнет сама бизнес-логика работать. Так мы в целом гаранитируем, что ничего не должно разъебаться между началом транзакции и ее окончанием после того, как таска в очереди отработает. Как такое с микросервисами и разными БД сделать я пока не очень понимаю.
>>2992451 ну я как раз к тому, что эти самые знания про разработку и бэкенд-разработку для сложных задач из круда на петоне ты не подцепишь, максимум основы. от круда на го ты хотя бы можешь в гошке поразбираться помимо основ. не то, чтобы петон знать бесполезно, просто гарантированной ценности от дальнейшего изучения я бы не ждал.
>>2992462 >Поздравляю, но вам в любом случае надо уметь проводить платежи и ты вряд ли лезешь напрямую в АБС банка, а значит тебе надо уметь отслеживать статусы платежей до их полного проведения и уметь перепрогнать платёжку с некоторых состояний
Статусы мы отслеживаем, но вот перепрогнать с определенного чекпоинта у нас уже вряд ли возможно. У нас просто ретраи идут какое-то количество раз, если платеж зафейлился, и все.
Вообще было бы интересно почитать статьи на тему того, как платежи должны быть сделаны, какие стейты должны быть, должна ли это вообще стейтмашина быть или что-то другое, итд... У нас они на похуй+отъебись делались несколько лет назад каким-то джуном, который уже уволился давно.
>>2992473 Мне еще кажется полезной насмотренность в плане технологий, например, на собесах спрашивают, с какими технологиями работал и ты можешь рассказать про опыт работы с питоновскими фреймворками и пояснить, чем в конкретных случаях Go лучше и оптимальнее.
В целом опыт написания одного и того же с нуля на двух разных языках кажется не лишним.
>>2992462 >работать в контролируемо-сдеградировавшем состоянии и как писать сервис так чтобы состояние деградировалось контролируемо - вопрос для ваших архитекторов с бизнесами В то время как монолит просто делает роллбек в стабильное состояние, у вас консилиум архитекторов разруливает деградацию системы, вот это го-вей, создать себе проблем и потом героически их решать.
>>2992466 >И вот когда мы эту операцию начинаем выполнять, то сразу же создаем транзакцию, в которой через хуй пойми сколько времени начнет сама бизнес-логика работать. Так мы в целом гаранитируем, что ничего не должно разъебаться между началом транзакции и ее окончанием после того, как таска в очереди отработает. Как такое с микросервисами и разными БД сделать я пока не очень понимаю. да примерно так и работает. создаете в БД запись со статусом pending или вроде того. если банк ответил ОК, ставите джобу на обновление баланса кошелька и переводите в статус успеха. если не отработало/прошло больше N времени, то пишете что фейл. всё с ретраями. если ретраев не хватит, то по обращениям в саппорт фиксите отдельные кейсы.
>>2992481 Про такое лучше интернеты читать. Гуглишь что-то типа go gotchas Есть такой сайт "50 оттенков Go", лол. Про садо и про мазо: http://golang50shad.es/
Я смотрю, к нам какой-то известный архитектор на гастроли приехал. Вспомнился анекдот: теоретически у нас 3 миллиона доллларов, а фактически - две шлюхи и старый педик.
>>2992466 >Как такое с микросервисами и разными БД сделать я пока не очень понимаю. Никак. Такие вопросы обычно стыдливо обходятся микросервисными пропагандистами. Или идёт словоблудие и подмена понятий. Или - есть ещё и такой вариант - всё будет, но очень-очень-очень медленно. И тогда становится непонятно - а нахуя вообще такое счастье?
>>2992429 Как делать распределенные транзакции придумали еще в Древнем Шумере за хуй знает сколько лет до нашей эры. Суть такова: резервирование. Когда тебе надо перекинуть деньги от Васи к Пете, которые находятся на разных серверах в разных базах, ты сначала делаешь Зарезервировать - уменьшить сумму в основной таблице и записать ее во вспомогательную таблицу, все в одной асид транзакции. У Пети делаешь так же - приход денег пишешь не в основную таблицу, а во вспомогательную. Потом, если все ок, делаешь Подтвердить и данные переносятся из вспомогательной таблицы в главную для Пети, а у Васи данные удаляются. Если ошибка - делаешь Отменить, реализация очевидна.
>>2992787 >сорокалетний сисядмин Оба раза мимо, лол.
>>2992783 >придумали еще в Древнем Шумере Вот на этих ваших микросервисах оно примерно как в древнем Шумере и работает. Так же быстро и так же надёжно.
>>2992792 >Вот на этих ваших микросервисах оно примерно как в древнем Шумере и работает. Так же быстро и так же надёжно. CAP теорема жи есть. Или быстро, или надежно, или работает только на локалхосте.
Да никто не говорит что микросервисы плохо. Просто есть моменты когда их целесообразно использовать, а когда нет. Если у клиента сельский интернет магазин, то нет смысла ему такое делать. А проектировать типа " с заделом на будущее" это плохая затея потому что хер знает когда это будущее наступит и наступит ли вообще.
>>2992815 >А проектировать типа " с заделом на будущее" Это сразу два мема - преждевременная оптимизация (корень всех зол) и YAGNI.
Вообще, здравая рекомендация в таких случаях - пилить модульный монолит, который потом безболезненно делится на микросервисы, если это когда-то понадобится. Но, это таки тоже преждевременная оптимизация. Т.к. модульный монолит сильно дороже обычного. Поэтому самая здравая рекомендация - minimum viable product. А там видно будет.
>>2992815 Микропенисы - это очень плохо, и в жизни, и в архитектуре. Для создания масштабируемой надежной архитектуры достаточно монолита с шардированием (call-based architecture) и не надо поднимать кластер кафки. Но тогда не получится разводить заказчика на бабло и чарджить деньги за облака, поэтому проплаченые хуесосы кукарекают за микросервисы снова и снова. Вкатунцы без опыта и без образования думают, что раз у дядьки борода и раскрученый канал, то дядька дохуя эксперт, а он всего лишь виртуальная шлюха и работает ртом в интернетах за деньги.
>>2992962 Я хоть и не люблю кубер, но масштабируемость и устойчивость это говно может обеспечить. Ценой ебических накладных расходов.
Ну и как говорится - миллионы леммингов ошибаться не могут. Или, иными словами, раз миллиарды мух любят говно, значит в говне есть что-то хорошее.
Только нихуя не пойму, с каких пор Go и "микро" употребляются вместе? Это когда ваша Goвнопрограмма статически линкуется с миллиардом библиотек и весит больше, чем весь объём жесткооо диска в 1993 году - это "микро"? Да идитн нахуй с такими "микро".
И самое смешное что эта многлмегабайтная програама АКА "микросервис" при ппреносе с одного линукса на другой не сттартует по причине разнвх версий либы для системных вызовов.
ПИ-ДА-РА-СЫ, нахуя вы налепили стольао говна в исполняемом файле, если он непереносим между разными версиями линуксов? Такой хуйни не помню со статически сл нкованными Си программами, которые весят в десятки раз меньше.
Бля, системные вызовы ядра Линукс не менялись со времён до появления Go. Какую хуя гниды не сумели встроить в Гошные либы прямые вызовы к ядру?
А ответ прост - они хуесосы. Вот и весь сказ. Оэуенная задумка, кривейшая реализацию.
>>2992962 >call-based architecture Может быть cell-based? Но, это же такой же облачный микросервисный понос, насколько я понял после беглого гуглинга? Баззворды заебали уже
>>2992968 Лол, только сегодня проверил - набор скриптов на питоне + сам питон, упакованные в 1 экзешник, весят меньше, чем программа на го, которая делает примерно то же самое.
>>2992815 Был такой случай — нашел типа подработку через телегу, чел русский, заказчик из Израиля. Платит в крипте. Делает типа свойстартап: SaaS букинг сервис. Этот русский чел ему делал год или больше сервис, причем работал один, и заказчик тоже один, то есть сам себе и менеджер и хуенеджер, причём с коммуникациями у него не очень было, только письменный ынглиш среднего уровня. Говорят, осталось только платёжный шлюз сделать отдельным микросервисом. Захожу на проект — а он ему там нахуярил микросервисов ДЕСЯТЬ (пикрил), типа на каждый пук отдельный сервис, отдельный контейнер с ларкой, лол. Ну у меня на тот момент заказов было много, я не стал сильно погружаться, залутал немного бабок с него и на хуй послал. Наверное, до сих пор доделывает свой стартап, лул.
>>2992973 На картинке не 10, а почти 20. Некоторые названия выглядят довольно смешно для микросервисов. Заказчик - дурак. Исполнитель - жулик (либо тоже дурак, не знаю). А ты что там делал?
>>2992970 Да, cell-based. По русски соты, но по словам "сотовая архитектура" выдает всякое про gsm сеть. Это не микросервисы, это классический монолит, но с ограниченным количеством юзеров. Логика простая: если наш сервер держит лям юзеров, а два ляма нет, то поставим два монолита и все будет ок. На входе, еще на уровне ngnix, вытаскиваем из jwt токена userid и сразу роутим на нужный сервер. Если один сервер отвалится, приложение будет недоступно только части юзеров, а не как в микросервисах хуяк и все лежит. Деплоймент простой. Долгая сборка, да, но тебе один хуй надо прогнать 100500 тестов перед выкаткой на прод, лишние пару часов роли не сыграют. Дорогая и сложная кафка не нужна, все транзакции крутятся в одной бд, репликации быстрее. Сплошной профит, но не получится раздуть команду на порядок, как с микросервисами.
>>2992977 Я же написал, залутал пару тыщ долларов за парочку крудов и съебал. Да, все дураки кроме тебя, зато у них деньги есть. Исполнитель заряжает сейчас $40-50/hour, типа не ебаться архитектор и фуллстек разраб. Тот еврей я думаю тоже не бедствует, разжился где-то криптой и мутит свой стартап.
>>2992977 На картинке скрин из постмана, там не всё сервисы. По факту их было одиннадцать: account slot activity role employee customer company book dispatcher mail sms И я должен был ещё один впилить - billing, который должен был включать тарифные планы и их оплату. ТЗ чёткого не было, всё на коленке и "по ходу дела".
>>2982563 >С чего ты Прочитал что ассемблер быстрее? какой-нить gcc/g++ намного лучше тебя оптимизирует асм
Твоё утверждение справедливо для больших проектов. Но если нужно написать библиотечную функцию, то компилятор отсосёт у меня. Впрочем, скорее всего, тот анон, которому ты отвечал, не сможет захуячить оптимальнее компилятора - по стилю его поста видно, что он никогда не заглядывает в код, который ему генерит компилятор.
Оптимизировать маленькую функцию лучше компилятора я смогу в виду того, что компилятор ограничен ABI, а я нет.
Но при этом, надо отдать должное, в современных компиляторах мегаохуенные оптимизаторы. Намедни мне надо было реализовать "очень быструю подпрограмму" и я смотрел что генерирует компилятор с разными ключами оптимизации и игрался с исходным кодом, пытаясь исходным кодом и ключами выжать каждый такт по быстродействию. Охуительнейше оптимизируют современные компиляторы, моё почтение.
Собственно сочетание хорошего компилятора и ручной оптимизации исходного кода и есть способ выжать из железа максимум возможностей. Но я к чему - если не говорить о всём проекте, а лишь о некоторых функциях, то опытный программист всё же умнее компилятора и способен захуячить код лучше. Потратив при этом кучу времени, сил и энергии.
>>2992989 Но, зачем же делать это отдельными микросервисами? Какова цель? Разработчик - один. Нагрузок каких-либо в принципе не предполагалось, это очевидно. Обычный небольшой монолит на чём угодно решил бы проблему легко. Зачем вся эта ёбань? Год (как минимум) труда? Зачем?
>>2993006 >сочетание хорошего компилятора и ручной оптимизации исходного кода и есть способ выжать из железа максимум возможностей Осталось ещё понять зачем - и всё будет заебись.
>>2993010 Не мог бы ты привести конкретный пример того, чем тебе мешает питон в дистрибутиве линукса? Он каким-то образом мешает тебе писать скоростное говно на си7
>>2993028 Ну у того чела в резюме появилась строчка "Full MicroService Architect (MSA) with separated DB and API logic on the backend (aggregation, MSA-transaction)" , кек. И денег он выжал немало. А на остальное - насрать. Ну видимо он налечил спонсору проекта что проект будет держать миллиарды запросов от юзеров со всего мира. Вот открытие для него будет, когда он поймёт что надо было делать MVP, а все бабки вливать в рекламу.
>>2992968 >>2992972 Дегенеративный хуесос, ну почему ты решил, что "микро" это про то чтобы занимать мало мегабайт? И вообще бинари на го должны крутится в докере, и вот тебе совместимость между всем подряд
>>2993116 Это вообще-то 2 разных человека написали. И я (>>2992972) не "дегенаративный хуесос", я это просто для смеха написал. Потому, что в обоих случаях у меня получилось ~7.5 мегабайта. И мне это показалось забавным.
Но, при этом, размер бинарников в Го я вообще проблемой не считаю, хотя, знаю, что многим не нравится. И вообще, сборку в толстый независимый бинарник я считаю одной из главных фишек го.
>>2993116 Сдохни в муках, быдло. Чем медленнее, тем лучше.
>>2993124 >независимый С хуя ли он независимый? Он между линуксами не совместимый. Я поебался и собрал себе k9s из исходников, правда давненько. И при копировании с одного дистрибутива другой он оказался нерабочим. Уносите своё говно.
>>2992979 а если у тя какая-то чатсь монолита не будет вывозить нагрузку, допустим по авторизации полдьзователей, ты будешь этот жирный монолит скалировать? а если потом еще-что притупится? получаеся тебе придется поднимать реплики тех же монолитов, токо теперь это будет жирно делать. По поводу микросервисов, типа если отпадет то все попало.. Это ни так, тупо делаешь несколько реплик и все. Также плюс у микросервисов это скорость релизов и прогонка тестов. Т.е. ты меняешь условно какую то фичу в блоке авторизации и тебе не надо прогонять весь монолит... Ну минусы на счет кафки это да, есть точка отказа, но тут нужны хорошие девопсы чтобы поддерживать инфру.
>>2993127 Там проблемы с системными вызовами из-за сборки мусора, как я понял. Вот тут эту тему затрагивают: https://news.ycombinator.com/item?id=38872362 В смысле - является ли Го языком для системного программирования (скорее нет, чем да) и почему. Вообще там охуенный тред, я прямо с удовольствием почитал.
>>2993132 Авторизация делается просто: ты отправляешь реквест всем своим серверам и ждешь, пока кто-то ответит ок или отвалится по таймауту. Таймауты настраиваются в одном месте, тебе не надо бегвть по всем микросервисам и настраивать каскадные таймауты в каждой микропиське. Для скаллирования используются виртуальные шарды. Скорость релиза одного микросервиса - это хуйня, релиз делается по бизнес фичам, которые затрагивают несколько сервисов и для которых надо прогнать все тесты. Про тайм ту маркет придумали инфоцыгане, пользователю лучше получить стабильную версию раз в неделю, чем каждый день видеть, как сайт сломался то тут, то там.
>>2992454 >разные люди пишут, что Го - это как раз таки замена Питону в бэкенде. Надо только уточнить, что замена в Гугле. Раньше стандартным языком SRE был Питон, теперь Го.
А есть кто в крипте работает? Ещё не поздно выкатываться? Поделитесь хорошими курсами/книжками. - по крипте в целом, что такое и как работает биток я понимаю, а вот что за новомодные стейкинги/свопы/лайтнинги, как несколько крипт живут на одном блокчейне, как исполняется код, и прочее - вообще хз. Биток был прост. - что обычно разрабатывают под блокчейн на горшке? Вот курсы об этом - по разработке на солидите или что там можно - если знаете, то бизнесовым материалам тоже буду благодарен, в смысле назера все это
>>2993208 ага. только теперь если ломается сайт, то он или ломается полностью или аналогично кусками, если вы правильно пишете код. но зато фиксы в прод теперь за 10 минут не раскатить. монолит тебя от багов не избавит, равно как и релиз раз в неделю автоматом стабильность не даст. можно и микросервисы разрешить только в определенное окно (пятницу вечер) деплоить. получишь собственно нихуя.
>>2993490 Каждый файл в отдельном сервисе, потом каждая строчка кода отдельно... Это же aws lambda и прочая serverless залупа, не? Кстати, почему она не стрельнула?
>>2993508 >почему она не стрельнула? Я думаю, потому, что это была чисто маркетинговая залупа. Попытались впарить народу что-то типа налога на воздух - сколько раз вдохнул - столько и заплатил. Ещё и воздух не слишком свежий. Народ не оценил.
>>2992783 И вот ты сделал Подтвердить, а потом у Васи данные перенеслись, а у Пети - нет. И что? Я вообще не понимаю, зачем ты это написал. Потому, что по сути дела ты ничего не сказал вообще. Зато асид транзакции приплёл для красного словца, лол.
>>2993508 >Кстати, почему она не стрельнула? На больших нагрузках это становится пиздец как дорого. Но есть юзкейсы когда она вполне оправдана и я знаю компании которые используют.
Пацаны, чо сча со вкатом? Тостер 7 с хуем лет, пишу тосты на бэк уже несколько лет на петухевене, всякие кафки, постгри, grpc, графкл. Надоело автоматить и не хочу в менеджмент. Думаю покатиться в суровый бэк, ибо в принципе и так большинство всего умею из современной разработки. Думаю над языком. Рассматриваю гоху. Миддлы нужны сейчас, что с рыночком вообще?
>>2993127 > Сдохни в муках, быдло. Чем медленнее, тем лучше. Иди нахуй > С хуя ли он независимый? Он между линуксами не совместимый. > Я поебался и собрал себе k9s из исходников, правда давненько. И при копировании с одного дистрибутива другой он оказался нерабочим. Уносите своё говно. Ну и схуяли это вообще проблема? Ты собрал бинарник для роботы в одном рантайме, ожидаемо что в другом он может не заработать. Парирую наперед твой ожидаемый тупорылый тейк о том что "ну бинари же больше по размеру, значит там очевидно собран весь рантайм мира", а ты почитай 10 минут о процессе компиляции в го и что вообще находится в бинарнике, может перестанешь выставлять себя дебилом на анонимном интернет форуме
Анонсы, сложно на вас перекатываться после питона? Работаю с ним относительно плотно, знаю несколько паттернов из ооп, ну и всякие там солиды, киссы и драи.
>>2994262 Перекатиться несложно, сложно найти работу. Где-то в треде писал анон синьор питон, он пытался устроиться на го мидла. Везде отказали, потому что нужен прувен экспириенс именно на говяшке и похуй, что ты уже десять лет пишешь под клауды на другом языке.
>>2994268 Лол да. Я после сишарпа знатно прихуел. Го более 10 лет, а в стандартной библиотеке нет нихуя. Зато я понял, зачем на собесах спрашивают алгоритмы, тебе реально придется на го самому все писать. Бонусом идет ебанутая система модулей и ебанутый ооп, которого нет, но он есть.
>>2993787 >Можно выставить в продажу любую совершенно нелепую хуйню, по совершенно несуразной цене, и всегда найдутся те, кто это купит. Несуразная хуйня получилась у твоей мамки. Лямбды полезны для обработки редких сообщений, это выходит дешевле, чем постоянно держать включенный инстанс. А если их ещё и пачкой присылать, то экономия будет ещё больше.
>>2994270 Ну с этим у меня в принципе нет проблем, у меня начальству похуй, на каком стеке я пишу, т.к. босс не технарь команда разработки внутри не-разработческого отдела, техдиру вообще поебать, главное, чтобы не сломали ничего. Я думал взять го в качестве запасного аэродрома, если вдруг с питоном что-то пойдет по пизде.
>>2995932 >Докер И эта поебень тоже на Go нвписана? Ну охуеть теперь! А пацаны-то думали что только Kuber-мать-его-netes.
Сначала Майкрософть двигала электронную промышленность, выпуская overblow систему и софт, а нынче эстафету перехватил Гугол.
А по сути, во всём виновать Линус-мать-его-Торвальдся, введя неймспейсы в ядро. И понеслось-поехало. Затем подключилась Красная Шляпа, наплевав на Unix way и пересадив полмира линуксоидов на systemd. Только Патрик Фолькердинг стойко держался, послав ну могучие хуи systemd. Затем какие-то арабы и еврей, все французского гражданства, придумали Docker на основе всей этой беды в ядре. Шоб им пусто было.
Тем временем Гугол пилил свою систему оркестрации Borg. И тут им подвернулся Docker. И начался пиздетс. Появились новые профессии, новые языки и возможность любому Васяну из подвортни, прочтив пару статей и HowTo развернуть собственный кластер. И потекло говно по трубам по проводАм. И настал новый безумный безумный безумный мир.
>>2996146 Меня удивляет, с какой скоростью тупое мудачьё бросилось делать свои маленкие гуголы. С микросервисами и кубернетисами. Нахуй не нужные при их реальных нагрузках.
Дружно слили в унитаз годами наработанные технологии, и начали городить огород с нуля. Просто потому, что им сказали, что так надо. Умиляет смотреть на всю эту петушню на ютубе, как они с умными рожами несут тупую хуйню, отсасывая друг другу в прямом эфире.
В индустрии чувствуется острая нехватка людей с мозгами. Которые могли бы находить новые пути, а не громоздить тонны говна для решения простейших проблем. Отрасли нужны герои, а пизда рожает айтишников.
>>2996146 >во всём виновать Линус-мать-его-Торвальдс Нет, виноваты пидары, огородившие BSD анальными лицензиями. И в результате мы теперь имеем вот это вот говно вместо юникса.
>>2996493 Го тоже был внутренним продуктом. Но программисты в гугле же получают много, а значит надо изучать их инструменты чтоб в конце попасть туда. Вот и нехитрая причина почему го пихают везде.
>>2996832 Borg не функционален без инфраструктуры. Докер он изолирован, в нем можно запустить любое приложение. А в Borg можно запустить только приложение которое для него собрано. Borg-у нужен логгер, балансер, мониторинг, архитектура датацентров, система прод конфигов.
С чего начать:
- В обязательном порядке проходим Go Tour:
https://go.dev/tour/welcome/1
- Читаем документацию прямо по порядку (пункт "Learning Go"): https://go.dev/doc/
- Ознакамливаемся с общим roadmap по изучению языка и сопутствующих инструментов: https://github.com/Alikhll/golang-developer-roadmap (постоянно обновляется сообществом)
Литература:
- Донован, Керниган "Язык программирования Go"
- Также хорошие книги для начала: https://www.golang-book.com/ и https://www.practical-go-lessons.com/ (веб-версия - бесплатная и хорошо подходит для новичков в программировании)
- Книги из списка https://github.com/dariubs/GoBooks
Полезные ресурсы:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/
- Обновляемый список с пакетами: https://github.com/avelino/awesome-go
Прошлый тред: