Этого треда уже нет.
Это копия, сохраненная 10 февраля 2020 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред про лучший в мире язык GO №5 /go/ # OP 1482493 В конец треда | Веб
GO (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего.

Для вката в Go читай Донован, Керниган "Язык программирования Go", https://www.golang-book.com/, книги из списка https://github.com/dariubs/GoBooks, а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw

Пэкеджи можно искать тут https://github.com/avelino/awesome-go

Живем в ожидании Go2, пробрасываем ошибки, смеемся над джавистами, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики.

Предыдущий: >>1452808 (OP)
2 1482519
>>482493 (OP)

Предлагаешь клиенту просто отслеживать статус задачи? Чтобы в случае ошибки он мог об этом узнать и повторить запрос/забить хуй? Я правильно тебе понимаю?
3 1482521
4 1482631
>>482493 (OP)

> смеемся над джавистами, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики.



Скоро джависты будут смеяться, когда разрабы Go окончательно прогнутся под сообщество и превратят Go в кресты но зато Go хотя бы пошустрее жабы
5 1482705
>>482631

> Go хотя бы пошустрее жабы


Жаба-интерпретируемые кресты, Го-ненужное говно
6 1482861
А как вы мониторите сервисы?
Недавно попал в ситуацию, которую я не смог решить основываясь на цифрах. Но все решилось методом тыка.

Докер контейнер на ecs, метрики все отличные - памяти и процессора хватает с избытком. База данных не тормозит.
Но время ответа периодически жуткое - по 2 минуты, при 95 перцентиле около 20 мс.

Вот как бы вы решали?
7 1482867
>>482493 (OP)

>Керниган


Тот самый? Что он забыл в goвне?
8 1482870
>>482705

>Го-ненужное говно


Нет ли здесь тавтологии?
9 1482878
>>482519
Ты не очень умненький да?

Все завис от доменной области.
Если это сохранение документа после редактирования, клиент должен знать, да?
Если это работа с кэшем и кэш отвалился, то знать ему не положено да?

Но во всех случаях эти таски не должны работать в системных потоках/процессах бизнес логики.
10 1482881
>>482631

>но зато Go хотя бы пошустрее жабы


Ох лол, откуда эта байка идёт?
Как раз великий фейл го в том, что он тормознутее прогретой жабы оказался.
11 1482892
>>482881

>Как раз великий фейл го в том, что он тормознутее прогретой жабы оказался.


Пруфы?
image.png232 Кб, 1215x731
12 1482998
13 1483000
14 1483040
>>482998
Ну ахуеть. Я че, зря гошу учу штоли
15 1483051
>>482998
Какое же c++ говно, не зря жаву учил
16 1483053
>>483040
даун.
1. го - говно язык.
2. гнаться за скоростью - ты ебанутый?
3. все равно попадешь на легаси говно проект
4. го абстраргируют под другие задачи.
5. Самые быстрые части, твич и тому подобное - написаны на плюсах.

А теперь съеби.
17 1483090
>>483053
С++ юзают там где нельзя сваливаться в GC. Писать на сях что-то крупное, это боль.

И да, у ламеров какой-то дроч на скорость, они верят что это им что-то дает. Писать "быстро" надо еще уметь, даже на быстром языке, тот сайт тому доказательство (внизу можно найти топ языки, в том числе и с++ и жабу со спрингом, лол)
18 1483095
>>483053

Съеби.
19 1483119
>>483090
Тут скорее речь о том, что гошу выставят на мороз, если он будет и дальше просирать текущим топовым языкам.
20 1483127
>>483119
Да он и так на морозе, надо уже признать что его поддувал только хайп.
21 1483131
>>483127

>хайп


Кокой хайп? Только гугля там чето кукарекала.
benchmarktuesday.png213 Кб, 469x485
22 1483153
Go - определенно лучший язык современности. Лёгкий синтаксис, скорость написания кода, близкая к скриптовым языкам, но в тоже время строгая типизация и высокая производительность. Плюс каналы и горутины - абсолютно интуитивных подход для написания многопоточных программ, который красиво вписан в синтаксис.
GO ONE LOVE
23 1483160
>>482998
верить бенчам в вакууме такое себе
24 1483167
>>483153

> Лёгкий синтаксис


Поимитивный синтаксис, на любое нетривиальное действие приходится писать десятки строк кода, потому что нужные конструкции просто отсутствуют в языке. Привет от сишки.
25 1483169
>>482878

>Произошла ошибка, а клиент думает что все ок, но видит некорректный результат (или вообще ничего не видит). Чистая магия, которая противоречит юзабельности.


Тогда нахуя ты это высрал, долбоеб? Я тебя только за эту хуйню спрашивал, а оказалось, что ты ничего не можешь предложить лучше

> от доменной области


Иди лучше, блять, русский подучи, каждый раз ловлю фейспалм с твоих простыней говна
image.png174 Кб, 1904x842
26 1483171
https://kristoff.it/blog/why-go-and-not-rust/

>Go is a better Java / C#, while Rust is not. The clarity that Go can bring to enterprise software development is without a doubt much more valuable than removing garbage collection at the cost of worsening the overall productivity.

27 1483182
>>483160
Как раз бенч реал приложух, а не маня-дробилки в 100 строк
28 1483184
>>483153
Где вас такой херней кормят?
29 1483187
>>483169
Когда человек обосрался по обсуждаемой теме, он начинает придираться к личности, к орфографии и т.д.
С тобой все ясно было еще в том треде, когда ты стал маня-архитектуру на коленке описывать.
30 1483198
>>482867

>Керниган


Ну так-то с Пайком ( автором Го) они дружат давно и книги давно вместе пишут
31 1483200
>>483187
Чувак, я тебе уже третий раз пытаюсь объяснить, что я встрял в ваш разговор только в этом сообщении >>1481660 Мне правда было интересно, каким образом ты собрался решать эту проблему, я даже был вежлив до некоторого момента, но ты оказался ебанным шизиком.
32 1483225
>>483200

Мальчики, не ругайтесь.

Есть два подхода - пессимистичный и оптимистичный.
С оптимистичным мы сразу показываем результат готовым (а потом можем откатить визуальщину), с пессимистичным только когда все точно готово.

Выбор зависит от того, насколько критичная операция.

Все остальное - мелочи реализации. Если вам что-то кажется нереализуемым/сложным/etc - гуглите или спрашивайте. Все реализуемо.
33 1483227
>>483200
Врывается в диалог двух анонов.
@
Без ремарок ведет диалог как бы от второго анона
@
Называет собеседника шизиком.
34 1483234
>>483225
Анон говорит, что большинству местных анонов асинхронщина не нужна.
@
Другой анон, оспаривает, говорит про веб
@
У него спрашивает где и как конкретно.
@
Тот высирает придуманный на коленке ответ, не используемый в реальных приложениях, сложнее домашнего пет-проекта.
@
Его ловят на этом.
@
Анон понял что обосрался, начал маневрировать, говорить с позиции второго анона, придумывать что он мимокродил и прочее.

И что получилось.
Вместо того чтобы пойди почитать по матчасти и тихо слиться, ибо это анонимный форум и всем насрать, анон засрал полтреда маневрами.
35 1483255
>>483227

>Врывается в диалог двух анонов.


И?

>Без ремарок ведет диалог как бы от второго анона


Ещё один долбоеб. Можешь перечитать историю сообщений, я раза три отчётливо пытаюсь донести суть своего вопроса и указываю на то что я другой анон прошу пояснить за эту хуйню

>Произошла ошибка, а клиент думает что все ок, но видит некорректный результат (или вообще ничего не видит). Чистая магия, которая противоречит юзабельности.


В итоге чувак мне все разы отвечает, что я не должен запускать таски в потоке с бизнес-логикой
36 1483258
>>483234
Ну кста по поводу асинхронности тот чувак ещё большую хуйню спизданул. Охуенно рассуждать о том что асинхронность не нужна и как бы ты все проблемы решил микросервисом на го, в то время как у тебя в 99% случаев каждый запрос сервится отдельной горутиной
37 1483329
>>483258

>сервится отдельной горутиной


Еще одна жертва хайпа. Ну есть у тебя 100.000 горутин, а толку если они в четырёх физических потоках?
Подвесил ты один поток, одной горутиной и ~25.000 горутин сосут.
38 1483339
>>482493 (OP)
Как там Го, пасаны?
39 1483357
>>483329

>Подвесил ты один поток, одной горутиной и ~25.000 горутин сосут.


Днина, ты? Есть же нетворк поллер.
40 1483363
>>483329
Бля, да все же знают, что если поток локируется, то рантайм создаёт ещё один.
41 1483436
>>483182
нихера,там именно проствя страница
42 1483449
>>483363
Как она узнает что поток блокирован? Это же не бесплатно.
43 1483456
>>483363
То есть, при дидос атаке, будут еще неконтролируемо треды создаваться?
44 1483528
>>483456
На дваче.
45 1483556
>>483449

>Как она узнает что поток блокирован? Это же не бесплатно


Очевидно потому что поток блокируется системным вызовом.
46 1483557
47 1483558
>>483456

>То есть, при дидос атаке, будут еще неконтролируемо треды создаваться?


Нет, нетворк коллы обслуживаются одним тредом через асинк сисколлы.
48 1483563
>>483557
Рантайм понимает что будет блокирующий вызов и берет из пула свободный тред, или создаёт новый.
49 1483885
>>483558
Почему одним тредом, когда у тебя много ядер?
Какой-то node.js прям получается.
50 1483892
>>483885

>Почему одним тредом, когда у тебя много ядер?


че ты за хуйню пишеш нахуй лезиш если не шариш иди пару статей почитай
51 1483901
>>483892
Так я и спрашиваю, тормоз.
52 1483902
>>483892

>иди пару статей почитай


Прочитал пару статей в мужском журнале, до сих пор не понял, не работает это.
3bc7bc030fad10c9b37619a25a9b05ff.jpg70 Кб, 640x570
53 1484255
>>482493 (OP)
Привет, двач. Есть у кого на примете годный курс лекций по алгоритмам? Знаю, что библией алгоритмизации считается книга Кормэна(потом по нисходящей идут Дасгупта и Бхагарва, тоже знаю) и мне нравится её полнота, однако, формальный язык очень и очень отталкивает, не способствуя пониманию. Да и вообще, формат лекций мне как-то ближе, нежели просто чтение книги. В общем, какие требования? Полнота(речь не об N-полноте, лол) Кормэна в сочетании с интересным, не сухоформально рассказывающим преподом. А, да, и чтобы на русском(знаю, что охуел). Подскажите чего по сабжу?
54 1484312
>>483885

>Почему одним тредом, когда у тебя много ядер?


>Какой-то node.js прям получается.


Потому что нетворкполлер работает через асинхронные системные вызовы. Одного треба видимо посчитали, что хватит.
55 1484782
>>484312

>нетворкполлер


Это в го или какой-то системный драйвер?
56 1484962
>>484782

>Это в го или какой-то системный драйвер?


В го есть два вида i/o Нетворк и ненетворк(файлы/другиесисколы/хуемое). Так вот все не нетворк сисколлы блокируют поток, поэтому планировщик го имеет пул потоков и умеет создавать новые. Когда происходит блокировка, планировщик подменяет заблокированный тред на тред из пула или новый. При разблокировке тред возвращается в пул.
Для Нетворк i/o в рантайме есть отдельный поток, так называемый Нетворк поллер. Данный механизм в одном потоке имеет очередь горутин, которые хотят сделать Нетворк i/o. Вместо обычных блокирующих системных вызовов используется семейство асинхронных сисколлов ОС. Таким образом все горутины в данном потоке могут работать с сетью, не блокируя поток при этом. Ка столько результат вызова получен, горутины возвращается в очередь к планировщику го.
57 1485040
>>482861
trace посмотри
58 1485608
Блин, как научиться заумным вещам вроде cqrs es, паттернам, вроде саг? И другим вещам, которые стоят в списке требований в проектах на микросервисах?
Есть ли курсы/книги, где идёт разбор на практике?
59 1485733
>>485608
Есть ли смысл использовать TLS/SSL при взаимодействии между сервисами которые крутятся в кубере и не смотрят наружу?
Если ответ будет с аргументацией, то вообще отлично.
60 1485738
>>485733
Случайно нажал "ответить"
61 1485765
>>485733

Ssl не бесплатный, его терминацию лучше выносить на apigateway
62 1485833
>>485608

>Блин, как научиться заумным вещам вроде cqrs es, паттернам, вроде саг? И другим вещам, которые стоят в списке требований в проектах на микросервисах?


>Есть ли курсы/книги, где идёт разбор на практике?



microservices.io
63 1485838
>>485733

>Есть ли смысл использовать TLS/SSL при взаимодействии между сервисами которые крутятся в кубере и не смотрят наружу?


Зачем вообще используют TLS/SSL? В основном, наверное, чтобы прятать траффик от MitM. Если у тебя в кластере кубернетеса находится негодяй, то, боюсь, MitM это наименьшая из проблем. Плюс внутри кластера же все должно быстро работать, надо минимизировать latency. А так у тебя в цепочке появляется лишний запрос, это невыгодно.
64 1485840
>>485833
А, ещё книга Building microservices Ньюмена
65 1486355

>Given non-empty array nums of integers, return an array output such that output is equal to the product of all the elements of nums except nums.



Example:
Input: [1,2,3,4]
Output: [24,12,8,6]
Why?
output[0] = 234 = 24
output[1] = 134 = 12
output[2] = 124 = 8
output[3] = 123 = 6

Задачу решил (https://pastebin.com/ujrnMJB6), но возник вопрос - какой идеологически верный способ смержить два слайса (т.е. создать слайс, состоящий сначала из айтемов первого, а затем второго слайса)?
С одной стороны, append(after, before...) работает нормально, но если поменять слайсы местами - все сломаеться нахуй.
Очевидно, что тут дело в том, как именно брать слайс от слайса/массива, верояно тут дело в том, происходит ли алокация иннер аррея при взятии слайса.
С другой же, в случае с append(append([]int{}, before...), after...) наплевать на месторасположение аргументов, что намного более ошибкоустойчево, но выглядит как говно из жопы.
На какой из стульев сесть?
66 1486531
>>486355
А зачем тебе каждый раз делать аппенд?
Не проще ли черз двойной цикл
где будет
if j!= i {
result*=input[j]
?
67 1486820
>>482493 (OP)
бля епта, установил себе этот го а дальше что??? как писать код? Я даже не могу хелло.го запустить, как вообще это работает?
68 1486838
>>486820
готур хуяч и не выебывайся
69 1486876
>>482493 (OP)
*lambda expressions

А разве этого нет в первой версии? В Go есть же анонимные функции, не?
70 1486880
>>486876
Наверное, имеются в виду однострочные функции без слова func и без фигурных скобок. Типа такого:
((a, b) -> a + b)(1, 2)
71 1486884
>>486880

Просто синтаксический сахар короч в JS стрелочные функции хотя бы имеют смысл: они берут this из внешнего скопа, а не тот который им забиндили или global как в обычных function expressions
72 1486885
>>486884

*бля спойлер проебал
73 1486889
Алсо нахуя дженерики, если есть function expressions?
74 1486904
>>486884
Да любые новые фичи в языках программирования поверх команд ассемблера - это синтаксический сахар. Они не добавляют ничего, что принципиально нельзя сделать без них.
75 1486913
>>486904

> Да любые новые фичи в языках программирования поверх команд ассемблера - это синтаксический сахар


> синтаксический сахар



Значение знаешь?

Про то что стрелочные функции в Go 2 - просто синтаксический сахар, я ошибся: стрелочные функции возвращают значение выражения, которое записано после стрелки. Так что они отличаются и семантически от обычных анонимных функций.
76 1486917
>>486913

Синтаксическим сахаром стрелочные функции были бы если бы без return statement они не возвращали значение
77 1486923
>>486917

Бесполезный сахар. Лямбды нужны были джаве, так как их не было, джсу, потому что всех заебал this.
В го уже есть все необходимое, непонятно зачем нужна ещё одна запись для функций
78 1486965
>>486923

А Python зачем нужны тогда лямбда-функции, если контекст может быть только у функций класса?
79 1487022
>>486965

В питоне нельзя без лямбды определить функцию инлайн, в го - можно.
ПАМАХИТЕ 80 1487243
Гоанон, памахи!
Короче есть один веб скраппер и у него есть следующий стракт

type WebApi struct {
Api IApi
Database db.Database
}

У стракта есть поле Api, которое интерфейс для различных апих. У интерфейса должен быть метод Api.GetMappings()

Далее есть метод New(), который возвращает инициализированный

func New(apiProvider string, dbConf string) (
WebApi, error){
...

provider = new(SomeApi) // SomeApi это тоже стракт с методами под конкретную апиху

...
return &WebApi{provider, dbase}, nil
}

Затем где-то в коде идёт вызов
...

mapp, err := web.Api.GetMappings(target)

...

который моментально вызывает панику следующего содержания

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x98a819]

Чё я не так сделал то?
ПАМАХИТЕ 80 1487243
Гоанон, памахи!
Короче есть один веб скраппер и у него есть следующий стракт

type WebApi struct {
Api IApi
Database db.Database
}

У стракта есть поле Api, которое интерфейс для различных апих. У интерфейса должен быть метод Api.GetMappings()

Далее есть метод New(), который возвращает инициализированный

func New(apiProvider string, dbConf string) (
WebApi, error){
...

provider = new(SomeApi) // SomeApi это тоже стракт с методами под конкретную апиху

...
return &WebApi{provider, dbase}, nil
}

Затем где-то в коде идёт вызов
...

mapp, err := web.Api.GetMappings(target)

...

который моментально вызывает панику следующего содержания

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x98a819]

Чё я не так сделал то?
81 1487259

>Чё я не так сделал то?


Выбрал го.
82 1487268
>>487259
АХХАХАХААХАХАХААХАХАХАХАХАХААХАХАХААХАХАХААХАХАХАХААХАХАХАХАХАХАХАХАХАХАХАХАХАХАХААХАХАХААХАХАХАХАХАХАХпошел нахуй чмо ебаное
83 1487290
>>487259
Не ну серьзно. Я чета не могу самостоятельно понять в чём проблема.
Единственное чё нагуглил это вот
https://yourbasic.org/golang/gotcha-nil-pointer-dereference/
Но у меня всё так и есть вроде. Или мне надо как-то

(*WebApi).Api по новой определять или почему на него ссылка проёбывается?

Типа вот в методе New, я возвращаю готовый поинтер на WebApi

&WebApi{provider, dbase}

Вот provider тут как раз и есть это .Api, которое крашится при вызове.
Провайдер это provider = &SomeApi{}

Надеюсь в этот раз понятней объяснил.
84 1487389
>>487290

Нихуя не понятнее.
Почем нам знать, чо за хуйня под капотом?
Ошибка ясна? Ясна.
Садись за дебаггер и исследуй поток исполнения, пока не найдешь. где объебался.
85 1487473
>>487243
Скинь нормальный кусок кода с помощью https://play.golang.org
86 1487533
>>486355
Очевидно, что за один проход найти произведение product, а потом за второй заполнить out = product/in
87 1487538
>>487533
Решение не сработает, если попадется 0
88 1487539
>>487243
WebApi - конкретный тип struct, func New возвращает WebApi, но return ты делаешь &WebApi, т.е. указатель. При этом ты утверждаешь, что сумел это скомпилировать, раз словил ошибку в рантайме. Какая-то черепашка пиздит
89 1487540
>>487538
ты прав, обработать этот случай, но всё ещё не повод для сложности выше линейной.
90 1487663
>>487539
Да не, это вакаба съела звёздочку просто.
А проблемой я вчера разобрался частично.
На самом деле прав был этот анон >>487389.
web.Api у меня было тупо nil'ом, тк инициализация происходила в init(), и умпешной не являлось. Только у меня там было почемуто написано fmt.Sprintf() вместо Println, поэтому ошибку я тупо не видел.
Короче я сам тупик ещё тот.
91 1490142
>>487243
Аноны, сам уже во всем разобрался, можете не помогать.
92 1492212
Тред мертв?

>>487663

>к инициализация происходила в init(), и умпешной не являлось.


Я в таких случаях паникую, и мне похуй, что это вне main(). Ну, типо, если приложение ожидает инициализированные инстансы всякой хуйни, а там тупо nil'ы, то оно уподет все равно, но ты больше времени потратишь на поиски причины. Только с точки зрения суппортинга всего этого говна.
93 1493224

>Если ваши байт-слайсы содержат секретные данные (криптографические хеши, токены и т. д.), которые нужно сравнивать с предоставленной пользователями информацией, обойдитесь без reflect.DeepEqual(), bytes.Equal() или bytes.Compare(). Эти функции сделают приложение уязвимым к атакам по времени. Чтобы избежать утечки информации о времени, используйте функции из пакета crypto/subtle (например, subtle.ConstantTimeCompare()).



Нихуя не понял, объясните, пожалуйста, для медленных.
источник: https://habr.com/ru/company/mailru/blog/314804/#39
94 1493476
>>493224
Очевидно, что bytes.Equal для массива в 10 символов выполняется быстрее, чем для массива в 1000 символов. А значит, зная скорость выполнения функции можно оценить длину данных ( и иногда состав данных, типа есть ли там большое количество нулевых байтов и тд).
Чтобы этого избежать, есть специальные функции сравнения, которые работают одинаковое время для данных разной длины.
95 1493857
>>493476

>Чтобы этого избежать, есть специальные функции сравнения, которые работают одинаковое время для данных разной длины.


Это основано на хитровыебанных хешах? Или как?
96 1493871
>>493476
А при чем тут секретные данные?
97 1493873
>>493871
Например, это пароль.
98 1493890
>>493857
Самое простое (скорее всего реально сделано умнее) - всегда возвращать ответ через 0.1 секунды, неважно, сколько времени реально ушло.
Ну типа:
t := timer.start()
h := calculateHash()
t2 := t.stop()
if t2 < 0.1 { time.Sleep(0.1-t2)}
return h
99 1493893
>>493890

>всегда возвращать ответ через 0.1 секунды


Я то думал там какие-то хитровыебанные О(1) алгоритмы.
100 1493919
>>493873
Ну да, например. От них хеши нельзя брать, или что?
101 1494047
>>493893
Я хз, если интересно - посмотри и разберись. Пример с таймером я сам придумал.
102 1494050
>>493919
Тебе же сказали уже, взять можешь. Но хэш от AAA и хэш от AAAAAAAAAAAA будет браться разное время, как и от AAA и ABC. В итоге, человек, замеряющий время, которое выполняются запросы на (к примеру) POST /password с разными паролями сможет довольно точно предсказывать, сколько и чего лежит в пароле. В итоге можно перебирать не все радужные таблицы а только часть.
Никто не будет заниматься таким мозгоёбством ради твоего занюханного самописного бложека, это правда. Но ради банка или гуглоаккаунта крупной компании - запросто.
103 1495601
А кто сейчас в России является самыми авторитетными программистами на Go? Дайте ссылки на их блоги, где они делятся лучшими практиками.
104 1495852
>>495601
Авторитетные программисты из России? Лол.
Мне всегда казалось, что русскоязычные разработчики хорошо разрабатывают, но плохо пиарятся, а европейцы пишут чаще пишут говнокод, но зато коллективно дрочат пиарятся на конфах, в блогах и прочих твиттерах. В итоге авторитет у них, так как о них больше слышно.
Оффтопик, но меня всегда бесило, что девяносто девять процентов контента какого-нибудь медиума или конфы - это вольный пересказ мануалов из официальных источников. И под каждым найдётся несколько англоязычных комментариев вида "очень круто, так держать!". Какой смысл хвалить халтуру, там нет ничего интересного. Лучше уж токсично заунижать чем засорять свои интернеты копроконтентом.
105 1495855
>>495852
Но вообще, по-моему гошный рейс-детектор, сборщик мусора и golangcimetalint (вроде) написаны разработчиками из России, можешь погуглить, как их зовут.
106 1496062
>>495855
Scheduler в го тоже написан русским проггером
107 1496082
Эй, говнюки, как с использованием os/exec вызвать длинную bash-строку с пайпами? а то видите ли name string, arg ...string и он их как-то экранирует или хз что делает, короче, не работают с пробелами команды.
108 1496646
При установке флагов через flag.String() в справке потом показывается после названия флага принимаемый тип string.
Вопрос: как убрать из справки эту инфу о типе string, чтобы осталось только название флага и заданное мной его описание? Мне нужен вид как для flag.Bool().
109 1496647
>>496062
Автодополнялка gocode - тоже.
110 1496719
>>482493 (OP)
Бляха-муха, посмотрел на картинку франкенштейна-гофера, и так расстроился, что чуть не заплакал. Ну вот нахуя они это делают?
111 1496760
>>496719
Всмысле? Был максимальной примитивный недопаскаль с корутинами, стало - все ещё жутко примитивный, но хотя бы соотвествующий современному вчерашнему мейнстриму говноязык, который теперь сможет по возможностям соревноваться аж с пехепе и тайпскриптом.
112 1496856
>>496760

> теперь сможет по возможностям соревноваться аж с пехепе и


В пехепе есть встроенные функции для того, что в говне пишется в тридать строк кода.
113 1497019
>>496719
Очень просто, большинство людей (в том числе и разработчиков) довольно глупы и не способны сравнивать вещи объективно.
Соответственно, если в одном языке есть (к примеру) миксины, а в другом - нет, то это значит, что первый язык лучше. Ну и мейнстрим, все дела.
Не говоря уже о том, что если ты долго разрабатывал на языке А, то ты привыкаешь мыслить в его логике и концептуально другой язык Б кажется тебе необычно неестественно мерзким.
Ну и ещё разработчики - очень токсичный народец, который любит поунижать разработчиков на других технологиях, по любому поводу.
115 1497131
>>497045
Спасибо. Я понял, Go нужен чтобы писать простые вещи в больше строк кода. Только не надо сравнивать с сишкой, сами же понимаете, что не та сфера применения.
116 1497141
>>497131
С этим всё понятно. Уносите.
117 1497176
>>497141

Ну давай разберём по частям, мною написанное по схеме с StoutPipe.

c1 := exec.Command("hostnamectl")
c2 := exec.Command("grep", "Operating System")
c2.Stdin, _ = c1.StdoutPipe()
c2.Stdout = os.Stdout
_ = c2.Start()
_ = c1.Run()
_ = c2.Wait()

Именно так оно работает. Я конечно понимаю, что могло быть хуже, но почему сначала c2.Start(), а потом c1.Run()?
118 1497274
>>497176
Очевидно потому что сначала надо включить ту часть пайпа, которая принимает данные (с2) а потом уже сами данные начать отправлять (с1)
119 1497437
>>497019
Да уж, вот тут не могу поспорить. Подумаешь, пишу if err != nil, но зато не пишу на Java. А что теперь, сделают клон Java? :(
120 1497530
Java, Go или C#? Где вкатиться перспективнее?
121 1497558
122 1497682
Как монетизировать знания Го? Вакансий нет, он нахуй никому ненужОн. Ну да, написали на нем докер, дальше что... Все равно все вакансии с богомерзкими джавой и макакаскриптом
123 1497745
>>497530
На Java и C# больше вакансий, Go лучше брать вторым языком.
124 1497746
>>497682
Хз, я довольно легко нашёл работу, даже в моём мухосранске.
Плюс, в линкедине меня периодически пытаются захантить с релокацией в Москву или ещё куда.
Но конечно на Java и говноскрипте будет больше работы, в ближайшие лет десять, нет смысла этого отрицать.
125 1498631
>>482493 (OP)
Товарищи суслики. Очень нужна ваша помощь. Пишу небольшую прослойку между двумя протоколами. Один из них gRPC. Дело в том, что сервер grpc не наш, а партнёров. Они дегенераты редкие и их документацией подтереться можно, разве что.
Собственно, к проблеме. Мне выдали сертификаты и прото-файл. Дело в том, что у меня не получается даже подключиться к их апи.
rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: authentication handshake failed: remote error: tls: handshake failure"
Подкидываю сертификаты к подключению и их токен кастомным заголовком. Ни в какую. ЧЯНТД?
126 1498736
>>498631
Всё, отбой. Разобрался. Если кому интересно будет, расскажу в чём проблема была.
127 1498764
Goвно
128 1498860
1
129 1498961
>>484255

>


бампаю вопросу. этот языкастый спрашиавет то что надо
130 1499091
>>498736
Ну и зачем так делать? Сразу рассказывай тогда.
привет коллегам-денегератам
photo2019-03-0613-59-48.jpg77 Кб, 1177x965
131 1499119
image.png61 Кб, 1130x364
132 1499121
>>499091
>>499119
Проблема была в сертификатах, я их скинул в одну кучу, и думал, что как и с https проканает ключ к апи сначала получается на сервере аутентификации. Но нет. Пик 1. Делаем CertPool с одним единственным са-сертификатом и делаем отдельный сертификат из непосредственно сертификата и подписи. Потом создаём креды TLS и указываем полученные сертификаты в своих полях.
Так и завелось.
Ну не стукайте, всеж мы люди
image.png48 Кб, 1020x279
133 1499122
>>499121
Второй пик отклеился
photo2019-10-1812-41-08.jpg52 Кб, 1280x498
134 1499252
135 1499330
>>499252
Ну и причём здесь го? Картинка смешная, но это про кубернетес.
Если ты запостил это в тему того, что кубернетес "такой плохой", потому что написан на го, то:
- Он написан на го джавистами, которые написали джавоговно на го, отсюда и самопальные дженерики и неадекватная структура в коде кубов;
- Столько мемов про кубы не потому, что они плохо написаны, а потому, что это очень сложная (в смысле complex, а не hard) технология, которую нужно понимать и уметь правильно готовить.
136 1499377
>>499330

>Если ты запостил это в тему того, что кубернетес "такой плохой", потому что написан на го


Нет, просто я только в этом треде на бордах сижу. Никакой агрессии я не нес.

>- Он написан на го джавистами, которые написали джавоговно на го, отсюда и самопальные дженерики и неадекватная структура в коде кубов;


Про это вообще не знал, я из всего кода только мейкфайлы листал. И то только ради праздного интереса.

>- Столько мемов про кубы не потому, что они плохо написаны, а потому, что это очень сложная (в смысле complex, а не hard) технология, которую нужно понимать и уметь правильно готовить.


Именно об этом и картинка
137 1499897
16 лет,собираюсь выучить голанг чтобы устроится на работу(хотя б какую-нибудь)
Идет как почти первый язык.до этого изучал немного изучал си,ну так,пару книг(собственно поэтому к голангу и присмотрелся,синтаксис похож сильно и приятен глазу
Можете отговорить/одобрить это дело?Пока прошел только готур и вроде норм
138 1499903
>>499897
Посмотри на количество и качество вакансий в своем городе. Достаточно ли их? Есть ли вакансии для новичка без опыта в принципе?
139 1499912
>>499903
Сам из москвы,думаю с вакансиями тут проблем особо не будет надеюсь.Просто на днях наткнулся на мысль что сишка это конечно очень здорово,быстро там,можно много чего веселого писать,но работу я хуй найду на нее(если смотреть на вакансии то там нужны люди с опытом 10+ лет и знаниям системы на уровне руссиновича).Собственно из-за этого и встал выбор что теперь учить
140 1499955
>>499912
Го - вполне хороший язык для новичка, но у него действительно не так много вакансий по сравнению с джавой, и вряд ли среди них много новичковых.
Но в Москве скорее всего проблем не будет.
Единственное, я бы тебе не рекомендовал останавливаться только на го, в свободное время обязательно возьми изучи хотя бы базовый курс фронтенда и что-то более классическое вроде тех же С++ или там Java, чтобы разбираться в ООП и классических реализациях паттернов (я советую это новичка в независимости от того, какой язык они хотят учить, хоть питон, хоть го, хоть пхп).
141 1499986
у го легко поднять вебсокеты ?
142 1500020
>>499986
Сами вебсокеты - на изичах, пакет gorilla/websocket, если не путаю. Но обычно проблема в протоколах поверх сокетов, там целая пачка задач вида подтверждения получения запросов, подписок, избавления от дубликатов и так далее. Так что вариант "написания самому" лучше приберечь под конец (если это не пет-проект, конечно же).
На ноде я бы взял socket.io, но он, к сожалению, на го имеет крайне посредственные реализации.
Вроде бы, сейчас наиболее приличный пакет для этого - это centrifuge или centrifugo (не помню, кто из этих двоих), сам я его не юзал.
Ну и в го хорошо работает grpc, который вполне себе замена вебсокетам.
143 1500056
>>500020
еще вопрос,я ведь нуб
на го можно запилить еще регистрацию,доступ к БД,или ну его нах,и реализовать это на пхпа го оставить сокеты и немного логики для работы с юзерами?
144 1500060
>>500056
короче,нужен легкий фреймворк,к которому можно подключить пакеты(наверно это у вас так называется)
145 1500264
>>500060
На го нет единого фреймворка-комбайна, как в php. На го принято собирать свой проект по частям из мини-библиотек.
Всё, что ты хочешь, на го сделать можно, и довольно легко - ищи подходящие библиотеки (ищи в awesome-go) и используй.

Выбор между "сделать только на го" и "сделать часть на го, часть на пыхе" однозначно сделать сложно. Лично я бы сделал вообще всё на го. Но если у тебя больше скиллов в php - то можешь оставить го в качестве эдакого "сокет гейтвея", почему бы и нет.
146 1500270
>>500264
а что,сайт можно на го собрать по кускам,от роутинга,БД до сокетов?
147 1500278
Вот вы говорите, что у вас многопоток реализован на синтаксисе, а чем он не реализован в джаве и шарпе с их Thread ?
148 1500281
>>500278
Говорят что в гошечке 500 долларовая макака может с потоками работать
149 1500282
150 1500285
>>500270
Я именно это и написал. Сайт - это набор механизмов: веб-сервер, роутинг, работа с бд и т.п. Иногда эти механизмы дают тебе сразу в комплекте, как какой-нибудь Laravel. В го подход другой.

>>500278
Многопоточность в го реализована не "на синтаксисе", а является частью самого го, так что да, с ней легче работать. И да, это хорошо.
151 1500286
>>500285
а есть к-л тутор,как это собрать?
152 1500292
>>500285

>а является частью самого го


А на тех языках это отдельная либа чтоли? Тоже часть базового пакета.
Или ты про то, что любая прога Го будет дефолтно многопоточна, а уж пользоваться им или нет решать тебе ?
153 1500296
>>500286
Нет, потому что на "подключение библиотек" нет стандартов, ни в одном из языков, что я видел. Это довольно тривиально, на самом деле, обычная работа с кодом. Как правило, в любом нормальном пакете есть примеры, как с ним работать.
Вся соль в том, чтобы правильно выстроить приложение из этих библиотек - и тут каждый действует на свой вкус и знания (большинство пишут говно, конечно).
Если ты новичок - то тебе определённо будет легче максимум работы выполнять в рамках фреймворка, гугля любой вопрос в стиле "how to do ... in Laravel". Где-то года через 2-3 при определённой удаче начнёшь разбираться, как в принципе стоит выстраивать архитектуру приложений.
154 1500297
>>500278
Потому что тупо треды - это низкоуровневая хуита без какой либо модели, и ты гарантировано с ними насосёшься если их будет больше трёх.То что Thread это типа класс - это вообще отдельная хохма, ведь тред != объект, как минимум потому что у них разное время жизни.
Короче именно из-за джявы с Thread возник миф что concurrency is hard. Это при том что есть языки типа Erlang и Go, где concurrency is easy.
К счастью, сегодня уже все чуть лучше, ведь есть Akka, которую даже в сисярп портировали. С другой стороны, любая привнесённая извне надстройка всегда хуже, чем если язык изначально задизайнен с этой фичей и она напрямую поддерживается платформой.
155 1500301
>>500296
вот го многопоточный язык,нода однопоточная асинхроннная.
го лучше ?
156 1500303
>>500292
Да, если сравнивать го с php или тем же node.js, то ключевая разница будет в том, что php по умолчанию однопоточен, сам твой код запускается уже в рамках одного потока обработки запроса. По сути, веб-сервер создаёт поток, в котором уже запускается твой код. Пхп иногда надстраивают до ассинхронной работы (это не равно многопоточности, ты можешь погуглить разницу между этими двумя вещами) внешними расширениями, но я это воспринимаю скорее как извращения, потому что пхп изначально задизайнен так, чтобы выполнять всё в одном потоке, синхронно.

Го в отличие от пхп многопоточен по умолчанию, веб-сервер уже заранее встроен в сам го и на каждый запрос го запустит легковесный виртуальный поток, в котором вызовет твою функцию.
157 1500305
>>500296
а как обстоят дела с богатством этих библиотек на все случаи?
158 1500308
>>500301
Го эффективнее утилизирует ресурсы системы, да. А ещё он компилируемый и более низкоуровневый. Поэтому с точки зрения производительности он бесспорно эффективнее.
Но с точки зрения поиска работы нода скорее всего популярнее.
Смотри сам, что для тебя является "лучше",
159 1500309
>>500308
для меня лучше то,что я могу эффективно и быстро реализовать.
160 1500310
>>500305
Го достаточно взрослый для того, чтобы библиотеки закрывали всё или почти всё, что нужно. Я за три года, что пишу на го, практически ни разу не сталкивался с тем, что чего-то нет.
Бывает, что написано не так, как мне бы хотелось, это да - но это не гошный эксклюзив.
161 1500313
>>500309
Если я понял, то с php ты уже на каком-то уровне знаком. Это достаточно хороший язык с достаточно качественной экосистемой, чтобы иметь возможность сделать на нём что угодно за малым исключением. Поэтому я тебе рекомендую максимально делать на нём. То, что он не может (по сути, только вебсокеты) вынеси в го или ноду, только не усложняй. В ноду тебе скорее всего будет даже проще, кстати, потому что ты можешь взять socket.io (библиотека такая) и на сервере, и на клиенте и минимизировать свои усилия.
162 1500315
>>500313
ну я тоже думаю насчет ноды,как вката хуяк-хуяк и в продакшен,если надо,переписать на го
163 1500317
>>500315
те для прототипирования
164 1500322
>>500297

>из-за джявы с Thread возник миф что concurrency is hard.


Ну как бы треады там в 95 году появились, вот и хард. А гошке сколько лет.
165 1500325
>>500303
А как обстоят дела с синхронизацией потоков? Когда два метода например обращаются к одному и тому же объекту?
ну getBalance() и makeDeposit() одновременно
167 1500356
>>500325
В двух словах, память общая, так что может быть конфуз. Решается правильным структурированием программы и примитивами из пакета sync.
Проходи tour of go, там всё есть.
168 1501045
Теперь честно: вам нравится этот язык?
169 1501047
>>501045
Английский > rust > python > говяжий в маринаде
170 1501071
>>501047
Ruby > scala > татарский > С > арабский > говяжий
171 1501099
>>501045
Мне нравится.
172 1501193
173 1501198
>>501045
Без фанатизма
174 1501305
>>501045
Я хотлел бы на нем работать. После ноды - как глоток свежего воздуха
175 1501402
>>501045
Синтаксис местами достаточно уродлив, но в целом ок.
176 1501440
>>501305
чем тебе сука нода не угодила?
177 1501450
>>501402
Синтаксис тут уебищен. Гугл не мог сделать что-то по-лучше?
178 1501454
>>482998
этот бенч хуйня полная, ты исходники бы хоть посмотрел перед тем как сюда это говно тащить. его проекты не имеют ни какого отношения к реальным, это просто сборище костылей и хаков, вплоть до отчати статичного буфера с хэллоу вордом. реальность такова - что жаба тормозное говно, а на расте писать очень дорого.
179 1501455
>>483182
аутист, бенч реал приложух это бенч, внезапно, реальных приложух. возьми аналогичные приложухи и сравнивай, например жабовский zk против гошного etcd, жабовский zuul против гошного traefik итд. только никакой интриги не будет - жаба это отсос и увеличенное потребление памяти.
180 1501469
>>501450
тогда велком ту эликсир
181 1501474
>>501469

>тогда велком ту эликсир


Работа есть? Мать жива будет?
182 1501481
>>501474
хватит,щас многие проэкты переписывают с руби на элик или пишут сразу с нуля
183 1501487
>>501469
увы, но он не ровня го. т.к. сосёт на cpu задачах, там годный ио и конкаренси, но эликсир сам по себе как и эрланг довольно тормозной язык.
184 1501488
>>501487
относительно го-да,но в отношении большинства-даст просраться
1555338493157395451.png401 Кб, 650x616
185 1501516
>>501440
Пидорасы надоели, которые привыкли на своём фронте говнокодить и тащат свои уёбищные синглетоны в мой чистый бекенд. И блять типизации никакой не поддерживают. На один проект на node.js с тайпскриптом приходится десять написанных на чистой магии, когда хуй поймёшь что и куда приходит, в разных ситуациях - разные наборы полей.
186 1501538
>>501516
джавист порвался,несите следуещего
187 1501546
>>501538
Мамку свою неси, азаза
188 1501548
>>501440
Всего 2:

>Cannot read property of undefined In JavaScript


>TypeError: "foo" is not a function


Рефакторинг в большом проекте на динамикоговне - та еще боль.
TS не помогает, когда колеги и тимлид игнорит его
189 1501550
>>501538
Словно кроме б-г мерзкой жабы нигде нет статичной проверки типов
190 1501563
>>501548
ну значит они дебилы,что не используют такую простую,но важную фичу
191 1501574
>>501071

Эльфийский > Английский > Python > JS > Go > PHP > C# > Java > ...
192 1501579
>>501045

Хз. Минималистичное ООП, функциональные замыкания как в ЖС, но из-за строгой типизации приходится городить код не только для реализации бизнес-логики, но и для проверки и каста типов.
193 1502072
>>501045
Нет, но выбора увы тоже нет, после го и эрланга/эликсира, понимаешь, что языки без грин тредов (не считая системных, там своя атмосфера) - это говно и нинужно. Это как сраниват ькрасивую карету и топорный автомобиль невразчный, но автомобиль один хер удобнее, даже если он страшный.
194 1502091
>>502072
Как бы корутины из того же котлина вполне себе те же задачи решают. В джаву грин-треды вроде тоже или внедряют, или собираются. Нода, хоть и говно, но async-await позволяет писать примерно такой же синхронный код, а в ограничения по утилизации ресурсов системы (когда го начнёт выигрывать ноду) надо ещё умудриться упереться.
В-общем, грин-треды - это прикольно, но не панацея.

Лично мне го нравится сочетанием неусложнённости и производительности. Язык не идеальный, конечно, но идеальных я ещё не видел.
195 1502138
>>502091
В жабу грин-треды завозят уже примерно 9 лет, и всё никак не довезут - project loom.
Грин треды и корутины - это свойство рантайма, а не просто либа, как большинство костылей на жвм. Вот есть у тебя котлин-корутины, и никакого толку от этого нет, так как их никто не использует кроме небольшего числа новых проектов. Условно гворя беря либу на го - ты её просто пользуешь и всё, она будет использовать те же каналы, те же корутины, тот же шедулер что и весь остальной код. Беря либу на жвм - ты берёшь или блокирующее легаси или очередной велосипед на тему асинка, который нужно будет дружить с основным велосипедом твоего проекта - kotlin.crorutines / vertx / zio / quasar / monix итд, тысячи их. Карочи, я к тому, что в плане удоства разработки конкаренси, JVM-based решения - хуйня и даже близко не стоят рядом с го.
196 1502194
>>502072
После свифта и раста понимаешь, что языки без нормальных сам тайпов и опшионалов - это говно и нинужно.
197 1502291
>>502138

>В жабу грин-треды завозят уже примерно 9 лет


Забавно, что изначально они там были, но потом их заменили на нейтив.
198 1502739
Как вы думаете, на чем бэк запилить проще: на C++ с либами или на Go с либами?
199 1502757
>>502739
На том, что лучше знаешь. Но при равенстве имхо на го писать проще, потому что многие вещи за тебя решат GC и планировщик.
200 1503141
>>502194

>> После свифта


А почему рот в говне? Как с тобой общаться то теперь?
201 1503146
>>502291
долбоёбы значит, феерически ебласнкое решение, хз как так можно. но думаю их там таки не было, есть ифна где почитать?
202 1503149
>>503141
Да одноклеточным гошникам ясен хуй трудно общаться, слава богу хоть дышать хватает способностей.
203 1503163
>>503149
школоту порвало, дрочающую на красивые сигнатуры функций, найс.
смотри, уёба, го - простой язык, для решения сложных задач, там где важна архитектура, убогая сфивтомакака (как ты) даже не слышала о таком. всю свою блевотную ссанину, ты будешь запускать на сервисах реализованных на го, они будет деплоится в кубере, выполнять сервис дискваери через etcd или координироваться через consul, объединятся в сложные service mesh топологии через istio и собираться в докер контейнеры. го - по сути вершина промышленной разработки, нам трудно общаться потому-что ты не инженер, а просто напёрдыш, горстка чиркашей на теле IT, иди к аким-нибудь скалистам мерятся type safety для задача уровня сложности "идиот".
204 1503168
>>503163

> школоту порвало


> мелкобуквенная бугуртная простыня следом

205 1503368
Учу ваш чудо-юдо-язык около недели. Писал сегодня 2 часа один проект, ни разу не компилируя, только что запустил, а все работает! Ни одного бага! Екарный бабай, как так.
sage 206 1503478
>>503163

>Ряяяя я на своей процедурной дрисне ришаю сложные задачи ни то что вы на красоту кода дрочите!



Мде, где-то я это уже слышал. Риальне, goвноеды- новая, деградировавшая версия сидаунов.
207 1503480
>>503478
Ты потралить пришёл?
208 1503593
>>503478
Этот совсем деградировал, уносите
209 1503790
>>503368
В GoLand'е писал?
210 1503868
>>503790
Да, люблю эти гипертрофированные (но не настолько как студия) ИДЕшки.
211 1503935
>>503868
Они прикольные, и когда научишься ими пользоваться (и если стек подходящий, т.е. не js и не php), то действительно практически ничего не делаешь руками. Абсолютное каждое действие вроде "объявить метод", "добавить метод в интерфейс и все классы, что его реализуют", "вынести выделение в переменную или отдельный метод", "добавить инъекцию черех конструктор" и т.п. делается одним привычным сочетанием клавиш.
В итоге становится очень больно смотреть на неудачников особо упорных личностей, которые так мееедленно тыкают мышкой в файлики и вручную копипастят код.
мимо-анон
212 1504013
>>503935
Я раньше страдал долбоебизмом, писал в vim'е и обдрачивался. Потом симптомы постепенно пропали.
213 1505596
>>483167
Не надо тут, даже сишка повыразительнее будет при необходимости.
214 1505605
>>483153
Лол, а теперь посмотри на языки вроде хацкеля/окамла/раста/свифта и пойми, что переупрощенный синтаксис хорошо подходит для написания хелловорлдов и хуево подходит для всего чуть более сложного. По-настоящему интутитивный способ написания многопоточных программ -- в BEAM VM (эрланг, эликсир и еще какое-то лиспоподобие было). Не хочешь ебанутых проблем с мьютексами? Не используй, если проблему возможно переформулировать. Это ваше CSP подходит далеко не для всего.
Самый легкий синтаксис -- у лиспа, очевидно. И в го нихера не строгая типизация -- одна только конструкция interface {} с последующим приведениям к типам чего стоит. Говно, а не язык.
215 1505612
>>503163
Лол блядь, щас бы называть язык, пославший нахуй результат эволюции ЯП на протяжении лет 30-40, а затем спешно меняя штаны после обсера, вершиной промышленной разработки. Тебе там без нормальной системы типов и дженериков нормально живется, ребенок?
216 1505631
>>483153
Уже можно найти элемент в массиве или все ещё никак?
217 1505727
>>505605

>По-настоящему интутитивный способ написания многопоточных программ -- в BEAM VM (эрланг, эликсир и еще какое-то лиспоподобие было)


бизнесу похуй. В гробу он видал твою БИМ. К сожалению, это реалии, за языком больше не может стоять дух авантюризма, присущий в 90-х. Пишем на том, что скажут.
218 1505743
Почему в этом треде, значительно чаще, чем в других язычок-тредах, упоминается некий «бизнес».
Тут сидят владельцы айти-компаний?
219 1505759
>>505743
Просто goвноеды осознают на каком говне пишут и поэтому постоянно пытаются себя загипнотизировать, типа на самом деле язык хороший, разве может Бизнестм выбрать плохой язык, он же раньше никогда такого не делал.
220 1505766
>>505727
Лол, то-то воцап и дискорд на beam vm работают.
221 1505966
>>505759
>>505612

Почему вас так бомбит от go? Вас заставляют на нем писать? От зависти? Чтобы потешить ЧСВ?
222 1505975
>>505966
В каком-то смысле.
Бывает заходишь на проект на нормальном языке и вроде все норм, а потом выясняется что “А у нас тут Толян для этой задачи вьебал сервис на Go”, причём мотивация Толяна была только в том чтоб пописать на новом хайповом языке. И ты такой с fuuu-фейсом думаешь, мда теперь ещё поддерживать хуиту на недоязыке из восьмидесятых.
223 1505977
>>505975
А что ж это за компания, которая позволяет Толянам писать на чем они хотят?
224 1505986
>>505977
Да вот бывают такие, с плоской моделью и большой степенью автономности. Ну или если контора маленькая и CTO сам хипстерок еще тот.
225 1505987
>>505986
Тогда почему ты там?
226 1505991
>>505987
Я сьебал, но осадок остался.
227 1505995
сервер для простой онлайн игры на го можно запилить?
228 1506017
>>505995
Можно, но не нужно. Поверь, для этих целей больше подойдут жабка, кресты, вот это все.
Можешь попробовать на эликсире с растом, но это на твой страх и риск и скорее всего не взлетит, лол.
229 1506059
>>506017
мне максимум на 100-200 игроков
230 1506079
>>506059
Для таких целей даже го оверкилл, на питоне запили, лол.
231 1506101
>>506017
По каким причинам го не подходит для данной задачи также, как кресты или жаба?
232 1506230
>>506101
Потому что
1. В крестах ты вручную управляешь памятью, что ценно при гонке за производительностью.
2. Что джава, что кресты банально предоставляют нужный уровень абстракции, ты не будешь передавать в качестве аргумента объект типа interface {}.
3. Контроль за многопоточностью в таких приложениях нужен филигранный.

Тут даже хаскель лучше подходит, потому что, при схожей производительности, обеспечивает намного большую степень гибкости и надежности.
233 1506237
>>506101
Не слушай его, это местный шизик.
Бери тот язык, в котором разбираешься лучше. И го нормально подойдет для задачи.
234 1506259
>>506237
На самом деле я плюсовик, лол. Просто не хейчу другие языки и было интересно мнение по этому поводу. У меня приятель микросервисы на Го ебашит, вроде для своей ниши ЯП вполне нормальный, хз чего его хейтят.
235 1506978
>>506259
Люди любят хейтить тех, кто от них отличается. Гошники отличаются от джавистов, можно хейтить значит.
236 1507094
>>496719
В комунити пришли рубисты, и им стало неприятно без своих привычных фич, вот и впилили.
237 1507118
>>507094
Да мимо уже, го не в тренде. Сейчас бы еще какой-нибудь лисп или кобол вспоминать.
238 1507135
>>507118
А что в тренде?
239 1507162
>>507135
SAS, Goviaji, APL - зависит от задачи.
240 1507175
Вкатываюсь в эту движуху. Есть русскоязычная литература?
241 1507193
>>507175
Дофига, гугли. Плюс, есть активное сообщество в слаке golang-ru.slack.com (хотя там не всем можно верить, есть наркоманы, дающие странные советы)
242 1507347
>>505612
Уёба, хороший конкаренси куда важшее чем твои "нормальные" системы типов и гейнерики. На уровне архитектуры сложной системы вообще насрать на завитушки в типах, ты можешь оброчится хоть всякими HKT, но это тебе не поможет толком с оздании сложной системы типа кубера. На продвинутые типы дрочат как раз школьники и дети, которые красят кнопки либо академические аутисты, которые пишут наколеночные залепухи. Тебя, долбоёба, не смущает, что все самые сложные системы вообще на си написаны? а? (По типу ядра линукса). Перфоманс и конркаенси вот что важно, а не твоя хуебарга.
243 1507366
>>506230
Ты идиот? Ни в крестах, ни в жабе нет грин тредов, крестам это проститетльно - они системный язык. Жабе - нет. Разрабатывать на го приложухи где много работы с ИО в десятки раз удобнее, чем на твоей обосанной жабе, блядь, у них на го уже будет протип продукта, пока ты будешь ебаться с netty или котлин-корутинами, в и в итоге отсосешь по производительности и потреблнию памяти у гошного решения.
244 1507439
Хули раскукарекались? Нужна как и платформа (производительность, конкарренси, всё такое), так и экосистема (синтаксический сахар, библиотеки).
Го только недавно стартовал, платформа хорошая, экосистема только развивается. Пройдёт время - разрабатывать будет также комфортно, как и на джаве, но производительнее.
А джава к тому времени, возможно, вырастет в противоположную сторону, таки выкатив грин-треды и прочее. Хотя ей сложнее, у неё легаси больше.
245 1507444
>>507347

> но это тебе не поможет толком с оздании сложной системы типа кубера


Иронично, что в пример ты приводишь куб, в котором соорудили свою систему типов и суррогат дженериков, лолблядь.
246 1507445
>>507366

> описываешь свои аргументы


> получаешь оскорбление в ебало


ох уж эти го-фанатики.
Вот скажи мне, что важнее всего в высоконагруженном игровом сервере? Ответ -- скорость отклика. Если у тебя пинг скачет как хохол, то игроки на твой сервак забьют и уйдут в более стабильную игру.
Игровые серверы хранят очень много информации в оперативной памяти именно по этой причине. Надеюсь, у тебя хватило бы мозгов не хранить состояние чего-то вроде раунда в кс на жестком диске.
Твои грин-треды не являются решением для всего, маня.
Если я правильно помню, в го многозадачность кооперативная, а это не есть гут, если тебе нужно детально контролировать каждый чих каждого игрока, разделяя состояние между потоками.
Да, у го будет выше производительность, чем у джавы, но ты проигнорировал аргумент о системе типов. Допустим, ребята на го накидают какой-то сервер быстрее, чем ребята на джаве/скале/еще чем-то. А насколько такой прототип будет расширяемый? Ты понимаешь, что если прототип не расширяемый и не поддерживает большую нагрузку, то про игру забудут через несколько дней?

Чувак, не пихай го в нишу, в которой его применение является заведомо проигрышным вариантом. А лучше вообще его никуда не пихай, пока нормальные абстракции не завезут.
247 1507498
>>507444
Я, кстати, писал выше:

> Он написан на го джавистами, которые написали джавоговно на го, отсюда и самопальные дженерики и неадекватная структура в коде кубов;


Там вообще забавная история произошла. Гуглы сначала написали альфу кубернетеса на джаве, а потом поняли, что нужно пиарить свой новый язык и менеджеры приняли решение заставить программистов переписать всё на го. Так как гугловых джавистов никто даже не собирался обучать гошечке, а им просто сказали "переделывайте", так что они просто пожали плечами, прочитали мануал по синтаксису го и написали кубер на го на джаве.
Соответственно, кубернетес написан отвратительно, но не из-за проблем с языком, а из-за менеджерских проблем (как и всегда, лол).

Но при этом чувак из >>507444 какой-то странный. Любую систему можно написать на любом языке программирования, если он тьюринг-полный.

спорят два идиота-фанатика и засирают мой тред, достали уже
мимо-анон
248 1507555
>>507498
Ну так и зачем везде приводить его в пример, если он написан как говно-то? С тем же успехом можно посылать нюфагов изучающих си в исходники какого нибудь уёбищного gcc или линукса (где нестандартных расширений языка ещё на 2 стандарта си хватит) вместо няшных исходников бсд и хвастаться — сортите, как можим!
249 1507587
>>507555
Хз, вопрос к даунам, которые приводят его в пример.
250 1508147
>>507498
пруфани, что он написан на го ради пиара. он написан го потому-что го лучше подходит для таких задач, потому-что куб на джвае будет жрать в несколько раз больше памяти и тормозить. жаба жирная и тормозная - это факт, для рядового проекта, если ты пользуешь обычные либы и экосистему (которая является всратым легаси по большей части, с блокирующим ио). чтобы нормально что-то написать на жабе придётся изобредать велосипеды и потратить хуеву тучу времени.
пруфани, кстати, что он изначально был на жабе.
251 1508150
>>507445
ты какую-то хуйню несёшь.
1. ничего не мешает тебе сделать низкую скорость отклика. Да, в го кооперативная многозадачность, но горутину можно убить, если там нет долгой блокирующей операции (через канал например). Опять же если тебе нужна вытесняющая многозадачность - велком ту эрланг, нахуй ты опять свой жвм велосипед катишь? не проще ли забивать гвозди молотком, а не отвёрткой?
2. у тебя самого хватило мозгов понять, что off-heap храннение доступно почти на всех мейн-стрим платформах?
3. схуяли не расширяемый? может твоя команда не умеет в проектирование? есть куча сложных и масштабных проектов, и ничего расширяются допиливаются.
252 1508168
>>508147
К примеру, вот прототип кубера (т.г. "Омега"), он на скале https://github.com/google/cluster-scheduler-simulator
Вот тут про это рассказывали, вроде https://archive.fosdem.org/2019/schedule/event/kubernetesclusterfuck/
253 1508179
Go Standard Packages https://golang.org/pkg/
Где можно прочитать русский перевод документации к стандартным пакетам?
Кстати, почему в Китае Go так популярен? Китайцы уже перевели документацию:
https://go-zh.org/pkg/
https://github.com/Go-zh/go
254 1508277
>>508150
Чем больше вижу сообщений в этом треде, тем больше убеждаюсь, что go-кодеры самые отбитые и недалекие, лол.
Ты когда-нибудь писал по-настоящему сложный игровой сервер?
Или вообще что-нибудь, что одновременно должно терпеть высокие нагрузки и быть сложнее калькулятора? Про адекватную систему типов слышал? Нет? Оно и видно, лол. этот тезис ты, кстати, почему-то постоянно игнорируешь. Видимо, все же понимаешь, что тут даже заикаться бесполезно.
Про тот же кубер уже выше написали, что там эмуляция дженериков сделана, потому что го сам по себе ущербное поделие из 80-ых в худшем смысле.

И да, дай, пожалуйста, примеры высоконагруженных серьезных игровых серваков на го. Отмаза в стиле "никто не понимает величия го, вот жеж еретики" не принимается.

какие же большинство go-шников агрессивные дегенераты, пиздец просто
255 1508318
>>508277
Просто не спорь с этим поехавшим. У любого стека есть неадекватные фанатики.
256 1508436
>>508277
ты кроме своей "адекватная система типов" нихуя по делу сказать не можешь. игровые сервера... блядь, маня, мир не сходится в игровых серврах, какая-нибудь сложная распределённая реляционка типа cockorach или tidb куда сложнее твеого обосанного игрового сервера и предъявляет такие же требования по работе с ио и верменем отклика.
257 1508736
>>508318
Не могу не согласиться, но последние 5 копеек все же вставлю.

>>508436
Мальчик, ну это слишком жирно. Сначала мы рассматриваем именно игровые сервера, а затем ты обсираешься и пытаешься сменить тему. Постирай штаны, а то так и будешь в говне ходить.
Распределенные субд -- из примеров могу сходу привести Cassandra (Java, есть клон ScyllaDB на крестах, сам догадайся почему), CouchDB, Mnesia (erlang), PostgreSQL (c), MongoDB (c++). И да, задачи все же разные, будь добр не смешивать.

А про систему типов я тебе как человек с еще тем образованием и опытом не зря говорю, поверь. Чем лучше система типов -- тем меньше нужно писать для по на базирующемся на ней языке тестов. Как пример: js который ближе к лиспу, чем к джаве, кстати против idris с его зависимыми типами.

В этих твоих гринтредах нет ничего магического и нового, я их для одной задачи еще в 2006 на си пилил. Ты и сам повторить сможешь, если религия даст написать немного кода на сях и подрубить ucontext.

Как же жаль тебя, адепт го, ты ведь так себя ограничиваешь, принципиально отказываясь рассматривать другие подходы и технологии. Хотя, так ты никогда не узнаешь, что на само деле твой язык -- просто говно, которое гугл который, блджад, не всегда прав решил по какому-то странному стечению обстоятельств хоть как-то отбить инвестиции зафорсить. Впрочем, вряд ли у тебя хватит интеллекта для того, чтобы пересмотреть свое мнение.
258 1508824
Аноны, напомните или скиньте статью, почему так?
https://play.golang.com/p/HmwQ5e7-eke

>res: 3 3 3

259 1508827
>>508824
По факту это тоже самое, что и
https://play.golang.com/p/QNJ1MA5uddr
260 1508828
>>508827
Спасибо, вкурил вроде.
261 1509590
Подскажите студенту, желающему вкатиться в бекенд. Чем похожи и чем отлияабтся эрланг/эликсир и го, какие преимущества и недостатки у них относительно друг друга и относительно других языков для бекенда? Меня больше всего интересует разработка тех кусков бекенда, где максимальная нагрузка, много параллельных соединений, возможность широкого масштабирования системы. На чем пишут такие вещи для продуктов типа скайпа, твитча, и телеграма, и самое интересное бекенд ммо игр типа world of warcraft, lol, dota?
262 1509598
>>509590
ОЖИДАНИЕ
Пишешь высоконагруженные сервисы для всемирно известных продуктов, типа твитча или доты
РЕАЛЬНОСТЬ
Пишешь очередной аналог убера для говностартапа
263 1509601
>>509590
У Го есть неоспоримое преимущество перед эликсиром/эрлангом : вакансий гораздо больше

Бэкенд твитча писался на го
264 1509602
>>509590
А ты будешь то вкатыватсья в принципе? Список у тебя подозрительный, похоже на малолетнего школьника-иградауна, такие обычно кричат "хочу игори писать!", а потом забивают и дальше идут гамать и аутировать в твиче. В больших конторах зоопарки там обычно нет какого-то одного языка или плафтмормы, можно сказать только в общих чертах.

Так-то тут дело не в конкрентном языке или платформе, язык это просто инструмент, а в общем понимание подходов, архитектур и прочего кругозора, понимания что ты вообще делаешь. Конкаренси, сетевой стек, протоколы, обеспечение масштабирования и отказоусточивости, общее проектирование систем - модульность, декомпозиция, итд.

скайп - мало, что известно, в основном C++
твич - C, C++, Go
телега - вообще хз, если кто расскажет будет интересно
вов - в основном плюсы
265 1509639
>>509590
>>509602

>Телега


Бекенд я код не нашел, но слышал что он на C++
Кор клиента (протокол, работа с локальной базой, вообще вся логика) написана тоже на C++
Клиенты (по факту только UI часть):
IOS: C 53.2% Swift 20.3% Objective-C 13.1%
Андроид: Java 42.8% C 36.9% C++ 14.6%
Десктопы - QT, почти 100% С++
266 1509640
>>509602
Скайп давно уже является оболочкой для msm, всё оригинально-скайповое из него давно вырезали.
267 1509644
Да, геймдев - что бек, что фронт - это плюсы, и пока альтернатив особо нет. Есть еще java и до-диез, но это не так популярно.
Но выбор языка - это вообще очень сложная вещь и там много факторов, кроме популярности.
В eve online, например, бекенд вооще на питоне написан
268 1509703
>>509644

>Но выбор языка - это вообще очень сложная вещь и там много факторов, кроме популярности.


Сроки+кадры, всё, ничего сложного нет тут.
Другое дело, если ты сам пишешь себе манясервер на 1,5 человек. Но тут уж хоть на хаскелле пиши, хуйлоада всё равно не будет нужно выбирать тупо самый знакомый инструмент.
269 1509776
>>509703

>Сроки+кадры, всё, ничего сложного нет тут.


Не знаю как со сроками в EVE было (наверно как везде - нужно на вчера)
Но вопрос - много ли ты знаешь python game dev'ов?
270 1509800
>>509776

>Но вопрос - много ли ты знаешь python game dev'ов?


А в чём проблема, по-твоему нужно специализироваться на питоне чтобы что-то на нём написать? Прямо куча байтойобов-плюсовиков не освоят за пару вечеров какой нибудь aio и не сварганят сервер?

Алсо, возможно там уже были бэкэндеры на питоне.
271 1509935
>>509800
Ты меня, на самом деле, убедил. Но в любом языке много своих подводных камней, и питон - не исключение, а у него еще и магии очень много
272 1509995
>>509935

>а у него еще и магии очень много


Которая хоть и всегда медленно, но работает. И именно из-за этого это язык №1 для вкатывальщиков (и просто №1 по всем количественным статистикам).
273 1510290
>>509602
Я уже вкатился, но не в настоящий бекенд. Пишу на ноде всякую муть под aws lambda.
Ты ошибаешься, я не хочу писать игры и геймдев мне не интересен, мне интересно делать хайлоад бекенд для массовых продуктов, в том числе для игр, как один из примеров. Интересны конкретно распределенные системы с реальной многопоточностью, параллелизмом, когда одновременно обрабатываются десятки тысяч двусторонних соединений, например. А не как кастрированный асинк авейт в JS с одним потоком.
274 1510479
>>510290

> кастрированный асинк авейт в JS с одним потоком.


У меня для тебя плохие новости, ты не вкатился бекенд. Даже текущий инструмент не освоил, нода многопточна за счёт воркеров, в которых потом используется модель обмена сообщениями, да, у тебя нет аналога util.concurrent из жабы, но данная модель тоже популряна и очень живуча.
нодовская реализация промисов вообще топовая, там самый стабильный и оптимизированный event loop на рынке. Так-то если умень готовить и не увлекатсья абстракиямию можно на NIO задачах получать впечатляющие результаты и махаться с гошкой и netty по перфомансу.
275 1510493
>>510479
Таки ты не совсем прав. Во вполне определённом классе задач (собственно, параллельные действия на уровне логики) нет смысла сравнивать ноду и го, потому что это эвент луп против множества потоков. Например, если мне захочется пробежать массив из триллиона элементов и почему-то он будет у меня в памяти - в го я могу делать это, к примеру, в два потока (с середины и с начала), а в ноде только в цельный проход от начала и до конца, и ничего ты тут не сделаешь.
Другое дело, что по моему опыту это не особенно часто нужно, большая часть бизнес-логики вполне синхронна и её вполне быстро обрабатывает хоть нода, хоть го, хоть прости-господи пыха.
Но это опять же смотря что писать, потому что большая часть той самой бизнес-логики это перекладывание данных из интернетов в базу и наоборот.
Соответственно, если речь идёт о сервере для обсчёта каких-то сложных игровых механик (те же бои в еве), то го или та же джава тебе подойдут лучше, чем нода, за счёт лучшей утилизации ресурсов.
Тут нужно чётко понимать грань, где и какой инструмент использовать, потому что для 95% проектов подойдёт что угодно, там и близко нет таких нагрузок. В таких случаях лучше брать то, где ты быстрее выкатишь фичи и получишь $$$, джаву, пыху, ноду или ещё что.
мимо-анон из стартапа по обработке данных, пишем движок на го, а админку и прочий биллинг на пыхе
276 1510566
>>483153
Это у вас аутотренинг такой?
image.png72 Кб, 689x536
277 1510591
>>509639
Пиздабол!
278 1510752
>>510591
А в чём он спиздел-то?
У тебя списочек устаревший кстати, новая версия телеги для яблочных девайсов уже на свифте
https://github.com/overtake/TelegramSwift
А джавы даже на андроиде меньше половины
https://github.com/DrKLO/Telegram
кекус.

Ещё они недавно опубликовали исходники TON
https://github.com/ton-blockchain/ton
которая написана на плюсах, как и всё её окружение
https://github.com/desktop-app
что как бы намекает на чём написан бэк телеги.
279 1510815
>>510479
Но на ноде же не напишешь бекенды уровня дискорда или твитча, и тем более вотсаппа.
280 1510826
>>510752

>на чём написан бэк телеги


на скале?
281 1510855
>>510815
А ноду-то ты каким хуем сюда приплёл?

>дискорда


Судя по их гитхабу у них вообще бэк на элексире (+немного питона), и ботлнеки на расте/плюсах, хипсторы 80 lvl.
282 1511412
>>510826
на крестах, алло
283 1511423
Вам правда нравится паскалевский синтаксис?
image.png88 Кб, 271x331
284 1511672
285 1511696
>>511423

>паскалевский


го сиподобный
286 1511768
287 1511780
>>483040
на гоу пишут обычно небольшой вэб без бизнес логики. например, kubernetes. если задача хоть немного будет меняться, ты затрахаешься использовать го
288 1511781
>>483171
ну раз ноунейм написал, что менее выразительный код go принемет больше clarity - то да, сложно не согласиться
289 1511820
>>511696
Вохвращаемый тип после названия функции
290 1511960
>>511780
Удивлю, но бизнес-логика есть всегда и везде, это по сути именно та полезная работа, которую делает продукт либо сервис. В случае кубернетес, полезная работа - это оркестрация, встроенный планировщик, вот это всё. А вот хранение состояния, кластеризация и там протоколы всякие - это уже инфраструктурный уровень.

>>483053
Проиграл с местных даунов. Лучше иди и отнаследуй абстрактную виртуальную фабрику фабрик, а то чо у тебя код недостаточно оопшный и магический..
291 1512167
>>483171
Пиздец, это чё рофл? С такой логикой на паскале или няшной вообще всё кристально ясно, а на говне как раз нет ясности, потому что GC затуманивает предсказуемость работы.
292 1512424
>>511820
это не мешает ему быть сиподобным, свифт и пхп тоже имеют возвращаемый тип после функции, например
293 1512783
>>512424
Но это говноязыки.
294 1512808
здорово, мужичье. что посоветуете для работы с БД в голанге. интересует мнение матёрых разработчиков, которые работали с го в продакшню
295 1513047
>>512783
Что предъявишь свифту как языку? Ты ведь не просто так вскукарекнул без знаний о нем, так ведь?
296 1513128
>>513047
Он ото всех понемногу взял и в итоге вода.
297 1513162
>>513128
Что конкретно в свифте ты считаешь водой?
298 1513163
>>513047
для педиков язык просто и все
299 1513228
>>512808
С какой именно бд?
300 1513255
>>513163
Эпплогеи, ха-ха))0
301 1513344
>>513255
Да,педики прикинь))реально на макоси(хуй саси) сидят и на своем свифте пидорском пишут хахаха)))
302 1513345
>>482493 (OP)

>смеемся над джавистами, которые не могут жить без ексепшенов


Но в 2.х ведь завезли. Кстати нахуя? Ручная обработка ошибок ведь надёжнее
303 1513363
>>513228
с дефолтной (постгре)
304 1513368
>>513363
Есть официальный драйвер. Дальше можешь или Gorm навернуть или прямые запросы в базу писать
305 1513429
>>513345
Не завезли. Читай новости.
306 1513466
>>512808
Использую github.com/jinzhu/gorm
Я не матерый разработчик, а июнь, но вполне работаю в продакшене.
307 1513609
>>510815
напишешь, нода довольно крутая штука, просто нужно уметь готовить. paypal на ноде, netflix начинает её всё больше внедрять.
308 1513651
>>513466
Горм - на редкость херовая штука. Самый главный его минус в том, что он магический, ты не сможешь предсказать, что он сделает. К примеру, угадаешь, что будет, если я вызову db.Delere(user{})? Не угадаешь, он дропнет тебе всю таблицу.
И вместо джоинов он селекты использует и мерджит данные на своей стороне (и довольно медленно).
Его можно использовать для прототипирования, чтобы быстренько круд навернуть и всё такое, но не более.

>>512808
Sqlboiler пока что выглядит наиболее идиоматичным для го.

мимо
309 1514000
>>513651
Вот тоже много чего плохого про gorm слышал, поэтому и спросил. спасибо за ответ
310 1514206
>>513609
Я не понимаю. Там же нету настоящей многопоточности.
311 1514359
>>513651
Спасибо, посмотрю.
Вообще, не люблю ORM, но заставляют. мимо июнь
312 1514392
>>514206
а что есть настоящая? шареные между тредами структутры? тогда в эрланге её тоже нет, лол.
313 1514402
>>514392
Как бы очевидно, что анон говорил о том, что в ноде процесс по сути всё равно один, не считая воркеров и ассинхронного io.
Но он неправ в том, что "многопоточность" является киллер-фичей. Нодовой псевдо-многопоточности достаточно для написания достаточно нагруженных апи, так что вполне себе нормально писать на нём хоть дискорд, хоть вотсапп, просто демонов побольше назапускаешь и всё.
Понятно, что это будет несколько менее производительно, чем гошечка, за счёт утилизации ресурсов, но вполне себе будет работать.
314 1514418
>>514402
вот утилизация тонкий момент, нода может быть в плане ио, и более производительна чем гошечка или эрланг, чисто за счёт того, что колбек/промис - это существенно более легковесная сущность, чем грин тред. а на ио нагрузке, многопоточность как такова не сильно влияет в мастшабе всей системы. т.к. можно комфортно маштабироватсья через кубер или иную оркестрацию, мелкими контейнерами, сидя за балансировщиками.
315 1514428
>>514418
Нодоперделка это сраный FSM, каждый раз добавляя новый колбек в этот FSM, ты замедляешь общую скорость работы. Т.е. оно может работать быстро пока у тебя там 3.5 ивента, но потом треды тупо быстрее. IO может быть параллельным, но так как нода работает с одним потоком, она в него не может. И, очевидно, решения сделанные на уровне балансировщиков будут медленней встроенной многопоточности.
Да и нахуй эта наркомания, считай тебе надо запустить по инстансу на каждое ядро, все это сбалансировать сначала в рамках одной машины, настроить между ними пабсаб с каким нибудь рэбитом, потом обеспечить общий сторейдж добавив какой нибудь рэдис, потом нужен фронт сервер для балансировки типа нджинкса и ещё хуй пойми что, в то время как в go/эрланге это все сразу встроено и ничего делать не надо.
316 1514447
>>514428
Не скажи, балансировщик к примеру нужен внешний, потому что между инстансами или кластерами тоже нужно балансировать запросы. Тем более, l7. Тем более, балансировка сокетов, grpc и им подобных постоянных соединений.
317 1514547
>>514428
Лол, оно может работать когда у тебя и миллионы эвентов. Паттерн эвент-лупа, как раз на это и расчитан. поэтому принципу работают очень высокопроизводительные сетевые штуки типа nginx, envoy, и многие другие. Луп эфективнее грин тредов для сырого ио.
318 1514558
>>514547
Чего? А где пруфы?
Как бы по умолчанию несколько воркеров эффективнее одного, при отсутствии блокировок.
мимо
319 1514580
>>514558
ну так никто тебе не мешает запустить несколько воркеров, хоть процессами, хот ьв пределах одного процесса.

нжинкс это пул воркеров с лупами
https://www.nginx.com/blog/thread-pools-boost-performance-9x/

https://habr.com/ru/post/123154/
320 1514607
>>514580
Я спрашиваю, где пруфы на "Луп эфективнее грин тредов для сырого ио".
Про nginx:
Во-первых, nginx - это пул воркеров, а не единый воркер с лупом. Соответственно, чтобы утилизировать все процессоры, ты просто запускаешь сам nginx и он поднимает воркеров по числу процессоров. С нодой тебе придётся поднять инстансов ноды по числу процессоров. Понимаешь разницу между воркерами одного процесса (тем более, написанного на плюсах и не имеющего значимого рантайма) и несколькими процессами v8?
Далее, для nginx эта архитектура оптимальна, поскольку его задача - это проксировать запросы из очереди апстрима в куда-то и проксировать ответы обратно, оно всё строго синхронно, соответственно нечего распараллеливать.
Для бизнес-логики всё можеть быть не совсем так.

Я к чему виду, нода при прочих равных будет дороже goшечки (интерпретация, оверхед на динамическую типизацию, оверхед на рантайм, оверхед на сборку мусора, оверхед на прочие инстансы), которая будет дороже c++ (за счёт рантайма, планировщика и сборки мусора).
Вот когда в v8 наконец-то добавят нормальный шаринг ресурсов между инстансами, чтобы получился эдакие application server - вот тогда мы вернёмся к разговору о сравнении потребления ресурсов между гошечкой и нодой. И то, я сразу предскажу, что будет: на синхронных тестах всё будет +-сравнимо за счёт оптимизаций на уровне v8, а на паралелящихся алгоритмах типа map-reduce гошечка затащит.
321 1515864
>>514607

> С нодой тебе придётся поднять инстансов ноды по числу процессоров.


А как же кластеры? https://nodejs.org/api/cluster.html
Или это оно и есть?
322 1516113
>>515864
там по разному можно
кластеры - это процессы. воркеры - это треды в пределах одного процесса.
323 1516124
Хз, лучший язык в мире это кобол, все же.
324 1516302
>>516124
Java - это кобол 21 века.
325 1516916
>>482493 (OP)
Какую библиотеку для обвязки ncurses под Go нужно брать? Нашёл эту: https://github.com/rthornton128/goncurses
Но в ней ни документации, ни активности.
326 1516923
>>516916
Посмотри гошные тулзовины, которые графики всякие красивые в консоли выводят. Полюбому они что-то используют.
327 1516938
>>516923
Видел статью на хабре про красивую консольную утилиту, которая как раз на go. Но сейчас не могу найти ни названия той утилиты, ни статьи. Есть идеи, где искать?
328 1516955
>>516938
Всё, нашёл. Sampler называется
329 1518407
Почему это говно работает, если в метод передаётся копия объекта, а не ссылка?

Зачем b присваивается новый срез такой же вместимости (без этого не работает)?
330 1518411
>>518407
Второй вопрос снимаю, это какой-то даун написал, тут важно просто возвращать правильную длину
331 1518413
>>518411
Первый тоже снимаю. Передаётся копия объекта, но ссылается на оригинальный массив.
332 1518974
Что бы вы выбрали для однорыльного (на первое время) веб говна коего десятки тысяч проекта с получением с него прибыли в перспективе: модный молодежный голанг или плейн олд джаву со всей ее устоявшейся экосистемой?
333 1518979
>>518974
То, что ты лучше знаешь.
334 1518983
>>518979
А если опустить этот момент?
335 1518986
>>518974
Для однорыльного я бы брал голанг. Мне кажется, джаву надо брать, если проект на человек 10 и тд.
Плюс, насколько я понимаю, в голанге проще накидать прототип, чем в джаве
336 1518997
>>518983
Тогда гопарашу, потому что на нее любого васяна можно за пару дней обучить. С джавапарашей будет сложнее.
337 1519099
Я в осадке.
https://play.golang.org/p/smcH6eZeEOH

Чё не так то?
339 1519113
>>519109
Спасибо огромное, друг! Только я всё равно не понял почему выдавало стек оверфлоу.
340 1519158
>>519113
Я думаю, что дело в том, что когда ты вызываешь fmt.Println() для ошибки, оно в первую очередь проверяет, есть ли у структуры метод Error(), и если есть, то вызывает его. По факту, ты создал бесконечную рекурсию вызовов метода Error()
341 1519181
>>519113
У тебя при выводе ошибки была ошибка, которая вызывала функцию ошибки, в которой ошибка, которая при ошибке вызывала функцию ошибки. А вообще я только два дня вкатываюсь, так что не ебу, как такие вещи ловить.
342 1519208
Давеча на собесе начали спрашивать про солид, я ретировался, ибо реально ничего из этого не помню или не знаю. Паттерны ещё худо-бедно использую, но солид это же реально какое-то мозгодрочево, архитектура ради архитектуры, тяжёлое наследие ООП и жавы головного мозга или я не прав?
Screenshot20191112113455.png34 Кб, 841x358
343 1519215
Это жирный рантайм?
344 1519217
Есть ли в golang конструция по типу сишной
(void) argv
чтоб компилятор не ругался о том, что переменная не используется?
345 1519218
>>519217
После объявления foo на следующей строке пиши _ = foo
Для аргументов функций/методов это делать не нужно
346 1519270
>>519217
Или сразу func Test(_ argv) {//...}
347 1519294
Кек, гугл уже 10 лет как форсит goвно, а в http/2 оно так и не научилось: https://github.com/golang/go/issues/32441
Слушаю ваши оправдания, goвноеды.
sage 348 1519327
У вас нет дженериков ахахахахах Shit<Go> poop;
349 1519335
>>519294
>>519327
а че так много школоты к этому треду липнет?
350 1519337
>>519294
Так же, как и браузеры, что уж тут. Зато поддерживаемый хромом https://en.wikipedia.org/wiki/QUIC мало где кроме GO заимплеменчен
351 1519437
>>519337

> Так же, как и браузеры, что уж тут.


Дядя, проснись, ты обосрался: https://caniuse.com/#search=http2
352 1519450
>>519335
А кто на дваче ещё сидит, кроме школьников и странных личностей? задумайся про себя, кстати
Я как в /pr не зайду, так охуеваю от местных знатоков. Где тебе ещё расскажут, что архитектура нинужна, менджеры зависимостей нинужны, типизация нинужна, а чёткие пацаны херачат невероятный JS-код на кончиках пальцев через vim прямо в продакшен.
353 1519493
Добрый вечер, аноны.
Такой вопрос, хочу написать фильтрующий прокси-сервер чтобы вкатиться в goршок. Оно то и понятно, чтобы нафигачить полурабочий пет проект можно любые технологии заюзать. Но вот я задумался, если по уму все делать, что лучше будет. Пилить все на го, или лучше запилить плагины для nginxa(что на го в целом тоже возможно)? Что по-вашему будет лучше, чтобы держать большой трафик с возможностью снифать его по https.
sage 354 1519497
ГОвно обосратое из проприетарной помойки гугла
сажи
355 1519518
>>519215
Смотря что понимать под жиром рантайма. Если сравнивать с жвм/дотнетом — целой вм и всего обвеса к ней очевидно, нет. Если же сравнивать с нативными языками без рантайма вообще вроде сей/растов/итд — то да, ебать жирный (и мусор собирает, и каждое обращение по поинтеру менеджерит, и потоки полностью контроллирует и тд).
356 1519541
>>519493
Зависит от задачи. Но вообще сейчас для всяких микросервисов и сервис мешей го берут: envoy, traefik, krakend.
Но nginx тоже очень даже норм и скорее всего даже будет производительнее (в простых случаях).
357 1519776
>>519541
Ок, спс за ответ.

Назрел такой вопрос, мб кто знает. Если я хочу сделать так, чтобы многие сайты могли подключиться к моей проксе (тип как incapsula), то как в этом случае поступать с https трафиком. У каждого сайта свой сертификат, мне требуется "изымать" оригинальные? или хватит свой подписанный собой. Так же интересует вопрос, вот я обработал запрос по https, проксировать его на другой сайт надо тоже по https? или забить и по http отправлять?
358 1519786
>>519776
Зависит от задач твоего прокси. Если рассматривается возможность удаленной авторизации пользователей, то сертификация соответственна должна быть от конечного сайта, https идет в приоритете. Если же нет, то смело клади и на https и на сертификаты
359 1519789
>>519776
Если брать обобщенно, то я бы добавил включение ssl и cертификатов опционально
360 1520051
Ананасы, помогите советом. Хочу глубоко вкатиться в exploit development, есть неплохвя база для этого (Си, кресты, асм х86, знания основ ОС, базовый уровень реверсинга и эксплуатации простых уязвимостей). Сразу говорю, отговаривать меня от этого не надо, в моей стране это более востребовано, чем в странах СНГ, и в этом работают здесь далеко не невыездные тарищи майоры за 40к рублей в месяц.
Суть: как сделать так, чтобы хотя бы пригласили на собес, а не выкинули резюме в мусорку при подаче оного? Подрочить pwnы на HackTheBox? Или сходить на CTFы пару раз? Ведь на реальных примерах это не показать, ибо, ясень-пень, незаконно.
361 1520063
Блять, я случайно не в тот тред написал, земля мне сегфолтом
362 1520091
>>520051
Насколько я знаю, конторы сканят участников всяких хакер-фестов на предмет найма.
363 1520501
>>520051
Вкатись c Linux Kernel Development
364 1520729
>>520051
Израиль?
Отец 365 1521353
я правильно понял, что interface{} - это не что иное как void ptr, только не ptr?
Отец 366 1521356
>>521353
не не не, я имел interface как раз void*, только с метаданными
Отец 367 1521357
>>521356
или не поинтер, а хуй его знает, посмотрю в спецификации короче
sage 368 1521359
>>521353
Интырфейс это говно!
image.png7 Кб, 244x148
Отец 369 1521362
>>521359
Ты походу прав, это говно внезапно может менять свой тип:
Вывод кода с закоментированной `sn = "pizda"`:
hui hui
pizda pizda

Вывод с раскоментированной строчкой:
370 1521364
>>521362

>Вывод с раскоментированной строчкой:


panic: interface conversion: interface {} is string, not *string
371 1521368
>>521362
Хотя мы тут явно создаем новый interface{} через присвоение sn нового значения, так что все норм
372 1521369
>>521368
Хотя с херали
373 1521519
>>519437
Хуя себе! Т.е. gRPC можно уже и в браузерах использовать?
374 1521520
>>519450

>Прямо на проде под нагрузкой

375 1521531
>>521353
Любое интерфейсное значение - это структура из двух поинтеров - один к реальному значению, другой - к всякой метаинформации (рантайм тип)
Именно по этому к переменной с типом слайс интерфейсов нельзя присвоить слайс значений, которые имплементят этот интерфейс
376 1521535
>>521364
Интерфейсное значение - это всегда поинтер к оригинальному значению. Если оригинальное значение уже поинтер - используем его, иначе - берем поинтер от оригинального значения.
377 1521569
378 1521661
Анон, почему выведется 3, а не 1? int тоже не измненяемый тип данных и скопируется, если ему присваивать?
https://play.golang.org/p/j2aTxgb-Epz
379 1521669
>>521661
Могу тебе напиздеть, но как я это понимаю:
- В го переменные выглядят, как <имя>-<тип>-<адрес памяти, где лежат данные>;
- Соответственно, когда ты что-то передаёшь "по указателю", ты создаёшь новую перменную, указывающую на тот же адрес памяти, что и "старая";
- Таким образом, когда ты говоришь "i = &x" ты перетираешь значение "адреса" у локальной переменной и потом пишешь в новый адрес; Старый адрес остаётся нетронут.
380 1521820
>>521669
Вот этот хуй писал ещё https://dave.cheney.net/2017/04/29/there-is-no-pass-by-reference-in-go , т.е. передачи по указателю, как в си на самом деле нет, а передаётся копия адреса, я понял. спасибо.
381 1521838
>>521820
Бля, в Си тоже такого нет, вот я фуфел.
382 1521948
>>521661
>>521838
В си тоже самое получится, хули не так то, ты же &x присваиваешь указателю (который сам по себе локальный, а адрес имеет в качестве значения), а не памяти на
который он указывает.
383 1523848
>>516916
Не рекомендую использовать эти биндинги - они глючат, когда начинаешь что-то более-менее сложное писать. Лучше бери нативные либы типа tcell.
384 1524447
Профессор компьютерных наук поясняет, почему он выбрал Go вместо питона и жабы:
https://yourbasic.org/golang/advantages-over-java-python/
385 1524455
>>524447

>профессор


@

>разрабатывал на жабе 20 лет


@

>рандомный долбоёб в треде говна


@

>АРЯ ПРОФЕСАР))ЖАБАПИТОНАГАВНО А ВОТ ГОШЕЧКА НЯШНАЯ)))

sage 386 1524472

> статическая типизация


> нет дженериков


> res, err := doSomeShit()


> if err != nil ...


> нет лямбда выражений


> для итерации по массиву используем цикл (привет из 1962 года)


> нет классов и ооп


> нет нормальных фреймворков


> указатели

387 1524502
>>524472
Съеби отсюда, школьник. Все эти вопросы обсасывались уже не раз.
Вернёшься, когда тебе хоть раз действительно понадобятся дженерики в продакшен-коде. И когда выучишь, что такое лямбды.
Остальное даже комментировать не буду.
388 1524516
Ёбаным голангиндусам, напоминаю разницу. Зоопарк вопросов:
- где вывод типов?
- где шаблоны?
- где оптимизация хвостовой рекурсии?
- где fold, map и хотя бы фильтры? Даже в ебаном шарпе есть LINQ
- где расширения методов класса?
- где перегрузка параметров функций?
- где нормальное потребление памяти приложением?
- где перегрузка операторов?
- где оптимизиции хвостовой рекурсии?
- где ленивость?
- где нормальная реализация модели акторов? Каждый разработчик вынужден с нуля лепить свою реализацию обмена сообщениями между горутинами
- где человеческая типизация с возможностью объявить канал сообщений нескольких типов?
- где человеческая инкапсуляция? Единая область видимости на весь пакет, охуенная идея
- где нормальная обработка ошибок?

Всего, чего нет в го, автоматически объявляется хуитой, как только это появляется в го, это автоматически становится нехуитой. При этом, требуется сделать вид, что хуитой это называл кто-то другой.
389 1524544
>>524516
Ещё раз, съеби нахуй отсюда.

> где нормальная реализация модели акторов? Каждый разработчик вынужден с нуля лепить свою реализацию обмена сообщениями между горутинами


Никогда не перестану рофлить с долбоёбов
390 1524645
Анон, у меня вопрос скорее по архитектуре. Есть веб круд, есть числовое значение X, берущееся из конфига, надо перед созранением модели валидировать её поле больше/меньше оно этого X. Пока просто есть хелпер, который вызывается из модели, куда каждый раз передаётся X и проверяемое поле. Выглядит как-то не по-говнокодерски. Как бы сделать получше?
391 1524650
>>524645

>созранением


>как-то по-говнокодерски


Го сделал меня дауном, извиняйте.
392 1524654
>>524645
Если вкратце, то если эта модель - часть твоей предментной области, то и правила валидации - это тоже её часть. Опиши механизм валидации этой модели и вызывай его перед сохранением. Если хранишь оригиналы модели до изменения - то можешь смотреть дифф и валидировать только изменённые поля.
В качестве валидатора можешь присмотреться к go-validate или делать всё кастомно.
Если чуть посложнее, то по-хорошему нужно валидировать не модель перед сохранением, а данные до попадания в модель. Для этих данных можно описать отдельный механизм валидации и валидировать их перед (в начале) вызовом какого-то сценария.

>>524650
Съеби нахуй.
chrome-capture.jpg54 Кб, 872x524
393 1524668
Прохожу курс на coursera и не понял этого тестового задания, разве можно заимплементить интерфейс анонимной встроенной структурой? Она же блин анонимная, как я к ней методы привяжу...
394 1524687
>>524668

type Doer interface {
Do()
}

type Foo struct {
Doer
}
395 1524698
>>524654
У меня скорее еботня получается с передачей каких-то лишних контекстов во все возможные функции пакетов, попробую сделать как-то через service options что ли.
Это я же был >>524650, если что.
396 1524746
>>524698

> Это я же был


Тогда сорян, принял тебя за местного дауна

Насчёт контекстов, то тут тебе нужно поизучать архитектуру. Прочитай про clean architecture, hexagonal architecture, domain driven design и попробуй разнести логику по соответствующим ей слоям. Сущности типа валидаторов не вызывай явно, а инжекть через конструктор и вызывай как метод поля у application сервисов или доменных сервисов.

Но это если ты хочешь красиво и правильно сделать. Если надо быстро нахуярить говнокод - то ты и сам всё знаешь, делай, как рука размахнётся, да пальцы настучат.
397 1524808
>>482493 (OP)
Потсоны, такое дело, я вообще не погромизд, но вынужден был писать некоторые сервисы для конторы на джанге. Успешно писал, в общем то.
Сейчас встала задача сделать еще один, который будет куда глобальнее прежних. И тут мой начальник, начитавшись интернетов, заявляет джанга мол твоя, легаси говно. Давай на го пиши. Говорю, не умею я в го, и учиться долго буду потому что я немного тугой. Он говорит ну тип похуй, отправим тебя на какие нибудь курсы хуе-мое.
Так вот, насколько я знаю го это кровавый энтерпрайс уровня жавы, нет?
Реально ли в одиночку там что то более менее внятное высирать? Или лучше на джанге продолжать говнячить?
398 1524819
>>524687
Ты показал встроенный интерфейс, а там встроенная анонимная структура, ну я погуглил, походу они обосрались просто в тесте
399 1524851
>>524808
Как раз го крайне прост, чтобы его изучить в одиночку, будучи не особенно скиллованным. И да, он будет производительнее дженги.
Единственно что, у дженги полюбому есть уже готовый генератор админок, формочек и тому подобного говна. Го же чисто бекендерская тема для производительной многопоточной обработки данных по сути. Так что делать апишки на го - заебись, а вот легконастраиваемой пользовательской визуальной обвязки и прочего нет, потому как и спроса на это нету.
Дальше сам решай.
Ну и спрашивай, если что, мы тебе тут ответим.
400 1524919
>>482493 (OP)
Для чего этот язык используют?
401 1524922
>>524919
Для тролинга джава макак
402 1524924
>>524922
То есть для веба в бекенде?
403 1524931
>>524924
Да + демоны и консольные утилиты
404 1524934
>>513609

>netflix



99% софта на джаве
405 1525043
>>524919
Для всего. Даже на микроконтроллерах есть
https://github.com/ziutek/emgo
https://github.com/tinygo-org/tinygo/
406 1525093
>>524934
Было 100, стало 99. Норм.
407 1525128
>>525043

>Для всего


Прям как javascript
408 1525189
>>524808
Везет же тебе
409 1525416
Интересно гуголь свою игровую стриминговую платформу stadia на крестах пилят или на го
410 1526405
Что скажете про Akka? Go уделывает её в типичных задачах?
411 1526645
Анон, пишу микросервисы-демоны так: есть структура, которая инициализируется в main(), там лежит абсолютно всё: подключения к БД, логгер, конфиги и т.д. Далее прокидывается везде через декоратор или пишутся, к ней методы, которые делают абсолютно любую хуйню, где нужен контекст этой структуры. Не покидает ощущение, что я пишу хуйню. Есть "правильный" бойлерплейт для подобных сервисов? Или книга какая-то, только не абстрактная хуета на собачках и котиках.
412 1526669
>>526645
Ты идешь в правильном направлении, но не дошёл до конца.

Во-первых, непонятно, нахера тебе декоратор.
Во-вторых, этом не место в мейне.
В-третьих, сервисы не передаются через контекст, он не для этого.

У тебя должен быть отдельный пакет-консольное приложение (условно "cli"), в котором ты описываешь то, как ты берешь аргументы из конфига, переменных окружения и команды типа serve, migrate и прочего.
Внутри этих команд ты действительно вручную инициализируешь сервисы. Зависимости между ними решаешь с помощью инъекций через конструктор, граф инициализируешь либо руками, либо через wire от гугла, как удобнее.
Потом в определённом порядке бустртапишь сервисы и в обратном порядке регистрируешь для остановки (чтобы graceful shutdown сделать), потом слушаешь сигналы от ОС, как получаешь нужный - вызываешь последовательность shutdowner'ов.

Сами сервисы правильно делить на три слоя, инфраструктурный, юз-кейзов (или application) и предметной области (domain или core), про это можешь прочитать в книгах по DDD.

Ну и да, в го проблема с архитектурой из-за засилья сишников, которые привыкли кодить, как видят (буквально в одном файле всё держать), так что ты всегда услышишь, что "архитектура нинужна, пиши проще", таких людей можешь слать нахуй.
413 1526729
>>526669

>Во-первых, непонятно, нахера тебе декоратор.


Это к примеру, когда у демона торчит наружу rpc/rest api мне нужно прокинуть, туда соединение к БД, чтобы что-то запросить и отдать.
func List(d *Daemon) http.HandlerFunc {
return func(...) {
// здесь обращаемся к базе и логируем ошибки и т.д.
}
}

>Во-вторых, этом не место в мейне.


Выглядит примерно так всё:
func main() {
app := app.New(config) // там открываются соединения с базам и разными api
if err := app.Run() { // бесконечный цикл
log.Error(err)
return
}
}

>В-третьих, сервисы не передаются через контекст, он не для этого.


Не понял. я имел в виду не пакет context, а контекст выполнения ф-ии/метода. Ну т.е. имеется моя огромная структура type App struct {}, где вообще всё и где мне что-то нужно сделать, и где нужен логгер и БД из неё, я просто делаю это как её метод, т.е. о Single Responsibility речи вообще нет. Как это всё делать правильно?
414 1526812
>>526729

> Это к примеру, когда у демона торчит наружу rpc/rest api мне нужно прокинут


Нет, это не так работает.
У тебя должен быть сервис (условно) handler.UserHandler, который через конструктор получает HttpServer и (к примеру) usecase.SaveUser, и регистрирует свои методы в качестве роутов, всего такого.
Внутри роутов он достаёт из http.Request (или как он там называется, я не помню сходу) нужные аргументы, проверяет их тип и всё такое. Если всё валидно, он прокидывает это в условный usecase.SaveUser, в котором уже написана реальная логика, что тебе там нужно с ним сделать.

То есть, у тебя отдельно есть httpServer, отдельное есть хендлеры(контроллеры), методы которых 1 к 1 биндятся к роутам и занимаются тем, что достают данные из http, вызывают логику из слоя юз-кейзов, получают ответ, и пишут его обратно в http, и отдельно есть слой юз-кейзов, который просто принимает данные и делает то, что нужно (логику).

> Выглядит примерно так всё:


В мейн-функции это делать не стоит, потому что у тебя может быть туева хуча различных вариантов работы с приложением. Main-это точка входа + роутинг для консольного приложения, в которое скомпилируется твой код. Граф зависимостей собирается под конкретную задачу. Представь, у тебя есть две консольные команды, serve и migrate. Нахера тебе в migrate какой-нибудь http?

> имеется моя огромная структура type App


То есть, у тебя есть какой-то огромный божественный сервис-локатор. Это неправильно и не нужно. Просто инъекти зависимости через конструкторы и собирай набор сервисов под текущую команду (или тест, к примеру).
415 1527130
Я правильно понимаю, что если вкатиться в go, то можно будет навсегда забыть о фронте, вёрстке и прочем ui? Потому что из-за этого не хочу в другие бэкенд лезть: python, ruby, php, java - в вакансиях везде пишут html, css и тд Хочу просто писать api, сервисы, то есть заниматься данными и не думать о ui от слова совсем, а аналогов go получается и нет в этом плане, только кресты, но их редко юзают, как я понял в бэкенде
416 1527663
>>526729

>имеется моя огромная структура type App struct {}, где вообще всё и где мне что-то нужно сделать


Это называется God object. Не надо так делать почти никогда (но иногда можно).
417 1527671
>>527130
Да, фулстек с го сейчас редкость
418 1527693
>>527663
Нет, God object про действия, а не данные. Это что-то про ближе к redux.
419 1527713
>>527693

> God object is an object that knows too much or does too much

420 1527972
421 1528088
Pony убьёт golang?
422 1528118
>>528088
То что мертво умереть не может.
А Pony попросту не взлетит.
15727330908680.jpg39 Кб, 368x604
423 1528130
>>528118

>golang мертв

424 1528271
>>528118
Ну эт толсто, даже в рахе уже мыло, авито, озон, тинькоф на го, а это довольно крупные компании
425 1528323
>>528271
Тиобе говорит что govno почти вылетело из топ20 и продолжает падать.
Язык был рассчитан на нюбасов, которым тяжело вкатится даже на сверхпопулярных джаве и питоне.
Все что было за этим языком это хайп и куча маркетингового буллшита от гугла, но хайп ушёл, хайп на микросервис-парашу ушёл, нюбы поняли что вкатываться некуда. Некоторые крупные конторы, которые могут позволить экспериментировать немного вляпались в эту парашу, но это временно.
426 1528334
>>528323
То, что тиобе - хреновый рейтинг, можно понять по тому, как резко там языки теряют и набирают популярность за месяц.

Вот, можно взять https://insights.stackoverflow.com/survey/2019#technology
Чтобы понять, что Go - 13ый по популярности, 9ый в списке самых любимых, 19ый в списке нелюбимых ,3ый в списке желаемых и 3ый по зарплате
427 1528335
>>528323
Так тиобе же показывает популярные технологии с точки зрения вкатывальщиков, а не использования
428 1528350
>>528323

>немного вляпались в эту парашу, но это временно.


На что переписывать будут?
429 1528355
>>528323
Как объяснишь, что в основновных ру онлайн образовательных площадках за последний год появились курсы по go: нетология, отус, гикбрэйнс, на курсере mail два онлайн курса запустил, то есть интерес к языку только растёт
430 1528451
Вопрос:

Буду разрабатывать бекенд веб-сервиса на go, другой разработчик будет пилить фронт. Можно ли сделать так, чтобы фронтендеру не приходилось устанавливать к себе на комп go, и при этом он мог запускать локально сервер, чтобы пилить и тестровать фронт? (и очень желательно с отлеживаением измененных файлов, для перезагрузки сервера) Я новичок в разработке и буду рад за наводку на те инструменты которые мне помогут
431 1528474
>>528451
Фронт тоже новичек?
d9cfae806280fe3e7944b5c8f0213d89.jpg68 Кб, 794x798
432 1528476
>>528451

>как запустить программу на яп, не устанавливая яп

433 1528509
>>528451
Юзайте докер. Опишешь всё в docker-compose - файле и фронтендщик сможет сделать docker-compose up и получить себе полносью рабочий сервис без установки всего дерьма себе в систему.
434 1528515
>>528509

>Я новичок в разработке


>Юзайте докер. Опишешь всё в docker-compose



kek
435 1528531

>>15>>528476


Мне казалось сокмплированному мной файлу, уже не нужен установленный go на пк, чтобы его запустить
436 1528532
>>528531
*скомпилированному
437 1528537
>>528509
Я и думал об этом уже, но судя по всему тогда легче заставить человека golang установить, чем тот же docker

>>528474
чисто фронтендер который всегда только на js пишет (нода установлена), и не очень лоялен чтобы использовать что-то не знакомое (придется ведь голанг ставить, да ещё возможно и переменные окружения настраивать на винде!)
438 1528548
>>528537
А разве на голанге пишут что-то отличное от рест сервиса и тому подобноого? Нафейхоа ему устанавливать голанг? или у вас публик сервера нет?
439 1528553
>>528531
Ну да, но тогда тебе придётся каждый раз присылать фронту новую версию
440 1528586
>>528537

> Я и думал об этом уже, но судя по всему тогда легче заставить человека golang установить, чем тот же docker


Лолчто? Докер - это уже де-факто стандарт. И фронтендеру он нужен как раз для того, чтобы не ставить себе стороннее говно в систему, нуль лишних зависимостей - кроме самого докера.

>>528515
Пусть учится, го в докер засовывается очень просто и мануалы по этому делу тоже изи ищутся.

>>528548
Это нормальная тема, иметь у себя локально полностью поднятое приложение или сервис, намного удобнее разрабатывать - и фронту в том числе.

>>528531
А ещё база, миграции и прочая херня. Лучше сразу подумать о доставке, найти мануал и сделать всё нормально.
image.png22 Кб, 305x448
441 1528605
>>528323
Чтобы увидеть как го "умирает" достаточно посмотреть количество го-репозиториев на github больше чем с 5к звезд.
442 1528610
>>528605
А если ещё рассматривать репозитории не старше 1 года, то го вообще в топ-3 вместе с Python и JavaScript
443 1528647
>>482493 (OP)
Оправдывайтесь, говноеды:
https://habr.com/ru/post/469441/
Без-имени-1.jpg434 Кб, 960x720
444 1528654
445 1528658
>>528647
я щя блевану
446 1528692
>>528647
знатно аффтар обоссал говно. найс
447 1528699
>>528692
И зачем же он тебя обоссал?
448 1528706
>>528647
Автор чсвшный мудак, которому лично мне захотелось ебало начистить, при том, что мне и haskell также нравится, но насколько же это тупое сравнение, go простой язык, но у него есть свои концепции и идиомы, а сишарпоблядок пытался сделать так, как привые и ожидаемо сел в лужу, начав говнить на язык, ну и очевидно, что работа с рекурсивными стуктурами на haskell будет удобнее делать. Тупо короче сравнивать языки на примере маленькой задачи.
449 1528725
>>528706
Все сишарперы как то криво по земле ходят
450 1529112
>>503146
В Java 1.1 green threads являлись единственной потоковой моделью (моделью распараллеливания потоков), используемой в JVM[7], по крайней мере, в Solaris. Ввиду того, что green threads обладают ограничениями в сравнении с native threads, в последующих версиях Java основной упор сделан на native threads.

С вики.
451 1529160
>>529112
Вероятно, тогда их время ещё не пришло.
452 1529311
>>527130
Работаю на ноде, пишу только апишки. Все зависит от компании
453 1529405
>>502138

>Карочи, я к тому, что в плане удоства разработки конкаренси, JVM-based решения - хуйня и даже близко не стоят рядом с го


Scala
454 1530993
11
455 1531004
Бля, в Украине вообще есть работа на GO для не помидоров в 12-литним опытом на го?
456 1531166
>>531004
Нет, придётся шлёпать формочки на жяваскрипте. Зато плотют хорошо!
457 1531406
>>531166
FUUUUUUU
459 1532516
java or go for casual online game?
460 1532546
>>532516
haskell ofc
461 1532603
Сап, go-феры.
Я NodeJS/PHP макака, больше 5 лет на этом всем пишу.
Есть месяц, чтобы выучить GoLang + все, что нужно для среднего бэка на нем. Киньте списком того, что надо знать, пожалуйста
462 1534051
>>532603
1) Работа с основными типами данных, в частности slice и map
2) Работа с указателями и nil
3) Горутины и каналы, мютексы
3) Как структурировать проект
4) Что умеют основные стандартные пакеты
5) Как писать тесты в го
6) Основные внешние библиотеки для работы с сетью, роутингом, базами данных

Вроде этого хватит
463 1534052
>>534051
И в дополнение, необязательные, но полезные штуки
1) Внутреннее устройство слайсов, map, каналов
2) работа garbage collector
3) Работа с профилировщиком
4) context
464 1534070
>>534052
Благодарю, анон, пометил себе
465 1534152
>>532485
Обнаружена абстрактная фабрика ЖЖ Артемия Лебедева!
>>532516
Java если игра сложнее 3 + 3. Иначе на говне охуеешь пилить всю логику, а профит от нормального конкарренси не почувствуешь, потому что у тебя нет конкарренси, а нет конкарренси потому что проект так и не написан.
466 1534229
>>534152

>сложнее 3 + 3


планирую логическую игры,наподобие крестики нолики
467 1534519
>>534229
Берешь язык, который знаешь лучше.
Если не знаешь оба, то бери го, он проще, и там нет всех этих абстрактных фабрик синглтонов
468 1534786
>>534229
Пфф, тогда на чем угодно, хоть на JS. Я думал ты задаешь вопрос на чем писать онлайн игорь, которую надо поддерживать и развивать, а ты про петпроект. Вообще на чем угодно.
469 1534861
>>534786

>Вообще на чем угодно


на руби было бы странно
470 1535042
>>534070
Только вот:

> 3) Как структурировать проект


Сами гоферы часто структурируют его, как полные мудаки. По DDD вообще единицы.

> 2) работа garbage collector


> Планировщик


Очень мало практической информации.
471 1535412
>>535042
Тут скорее знания для собеса
472 1543265
473 1543327
>>528451
1. Голанш элементарно ставится. В разы проще, чем тулчейн у типичного фронтера
2. Как сказал этот анон >>528509 юзайте докеры, если еще не начали. Хотя установить голанг проще, чем осваивать докер
3. Публикуй бинари на сетевой ресурс, а фронтер пусть тянет бинарь

> очень желательно с отлеживаением измененных файлов, для перезагрузки сервера


Ребилд сорсов с watch-ем - можно настроить, так же как и с любыми другими платформами
Но вы же вдвоем работаете? Ты хочешь, чтобы по изменениям сорса у тебя ребилдилось у него? Странная идея
474 1543330
>>532603
В дополнение:
А. Прочти это http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/
Б. Изучай сорс стандартных либ, смотри как тесты к ним написаны. Это лучший учебный материал.
475 1543342
>>543327

> Хотя установить голанг проще, чем осваивать докер


Типичный сервис - это база, файлуха, кеш, какая-нибудь дополнительная херня, планировщик и только потом код.
Без докера всё это поднимать будет печально.
476 1543374
>>543342
Все так
Но если хочется максимально light-weight dev cycle, то:
- git pull
- go run
ничего "легче" не придумывается.
Тем более что ОП хотел по изменениям файлов рестарты делать
477 1543394
>>543374
Я думал, мы обсуждаем поднятие сервиса на рабочей машине фронтендщика. Ему точно не нужно переподнимать го по изменениям файлов, он гошные исходники и не трогает.
А если мы говорим про го-девелопера, то да, проще всё прямо в рабочей системе поднять.
478 1544017
>>505605

> Лол, а теперь посмотри на языки вроде хацкеля/окамла/раста/свифта



>Хацкель


Для фп-шизиков и математикошизиков, изредка для реально редких и крутых академиков

>Окамл


Никому не нужный ноунейм, в котором модель CSP неудобна

>Свифт


Для гейос шлёпателей.

>Раст


Вот наконец хоть один увожаемый язык назвал.

>Erlang


Вырвиглазгый, почти никому не нужен. Но всё же не ноунейм. И на нем базируется Эликсир, который в свою очередь крайне увожаемый.
479 1544029
>>524808
Учи и не еби мозги.
Радуйся, что начальник тебя в голанг пинает.
Голанг - не кровавый энтерпрайз, читай исходники стандартных либ и это поймешь.
Джанга - не умрет.
480 1544346
Ребят, пишу на PHP + Laravel. Апишки для фронтендеров и мобильщиков, фронтендирую сам иногда (Vue.js, React).

Часто встречаю вкусные вакансии на PHP + Go, часть на PHP, микросервисы на Go. Вскоре предстоит интервью в забугорную компанию на Senior PHP/Golang developer. Я и в PHP не сеньор, в Golang даже не Junior. Сказали, что Go желательно, но не обязательно. У них там Kubernetes и вся такая дичь, а я кроме Docker'a (для локальной разработки) не щупал ничего.

На GO могу писать простые Rest API'шки. Горутины и каналы не трогал.
Поясните почему PHPшные проекты частично переводят на Go?
Чтобы тратить меньше бабла на железо?
Какую логику отдают Golang'у?

Можете привести пример проекта с микросервисами на Go, где основным языком является некомпилируемый язык типа PHP и Python. Что конкретно из логики выносится в микросервисы?

В общем не уверен что дальше развивать, реакты ангуляры для fullstack. Или Golang для бородатого сеньора-бекендера. Цель - 300к в сек, конечно же. Да и PHP + Laravel заебал, писать на нем удобно, легко и скучно.

Зарплата 135к, работаю удаленно. Но я жадный и хочу больше золота.
481 1544353
>>544346
Кстати, реквестирую курс OTUS по Golang'у. Вроде годнота, судя по программе курса. Там про микросервисы, про то как это всё состряпать в единую работающую хуету.
Есть у кого?
482 1544361
>>544346
Если цель стать синиор бэкендером в крупной компании, то конечно пхп+го, если востребованность в мелкосреднем сегменте, на удаленках и т.д., то фулстечить. Первое дает стабильность и деньги, но компаний выбор не так и велик, особенно если не в многомиллионнике вроде ДС или Лондона, а второе для мобильности удобнее, по деньгам можно примерно и так же выйти
483 1547873
думаю над темой диплома, что такого я могу написать на пщ? сайт уж слишком стыдно
484 1547890
>>547873
Простой блокчейн. Для бакалавра потянет.
485 1547891
>>547890

>Простой блокчейн. Для бакалавра потянет


Куда копать?
Какие либы есть?
486 1548054
>>547890
збазиба, анон
>>547891
ну я немного уже себе нашел в интернетах, вкатись в предметную область
487 1548073
>>548054
Есть же опенсорсные реализации уже + статьи на медиуме вида "простой блокчейн в два шага".
Да даже больше скажу, этот ваш блокчейн это по сути эвент соурсинг с подписью изменений, Линус Торвальдс ещё в 2005 году то же самое сделал, когда гит написал.
488 1548380
>>544353
Тоже хотелось бы увидеть этот курс
489 1548470
Когда там Go 2 выйдет? Или неизвестно?
490 1548592
>>548470
В будущем
maxresdefault.jpg50 Кб, 1280x720
491 1552140
Добрый день. Как в этом языке грамотно работать с математическими действиями? Вот делю я 25 на 7 (25/7) а выводится 3. Что читать?
492 1552160
>>552140
Результат целый, потому что оба аргумента целые. Нужно, чтобы хотя бы один был вещественным. Делай либо 25.0/7, либо float64(25)/7
15747757370670.jpg54 Кб, 640x640
493 1552240
>>552140

>Добрый день. Как в этом языке грамотно работать с математическими действиями? Вот делю я 25 на 7 (25/7) а выводится 3. Что читать?



25.0 / 7.0
494 1552416
>>552140
Иди сразу по хардкору и используй https://golang.org/pkg/math/big/
495 1554369
Антон подскажи как быть. Сижу QA в команде, бек пилят на Go. Не хочу оставаться селениум-дауном и гонять регрессы. Какие есть шансы начать брать небольшие задачи на Go и перекатываться в dev? Олсо думаю параллельно проходить курс https://otus.ru/lessons/razrabotchik-golang/ Изучил пока только синтаксис, знаю python на уровне писания автотестов
496 1554374
>>554369
Шансы есть, конечно. Почему бы и нет?
497 1554728
>>554369
Не жалко 50к инфоцыганам заносить?
498 1554867
>>554369
- проходишь тур го на оф сайте
- конец
499 1554876
>>554369
Вот насчёт OTUSа сомнительно. Курсы у них, может, и нормальные (я хз) - но блог на хабре просто отвратительный. Какая-то абсолютно бесполезная вода, текст ради текста.
Иногда не замечаю, какой блог читаю, и догадываюсь на второй-третьей странице - когда я понимаю, что текст уже пролистал и всё ещё обладаю той же информацией, как во время чтения заголовка.
500 1555372
>>554374

>Почему


слышал что в основном на Go перекатываются уже разработчики с опытом backend- разработки. И компании рассматривают разрабов, которые пишут на Го или готовы переучиваться.
501 1557108
надеюсь ваш го не здохнет в течении пары лет, потому что я только получил оффер и буду его учить
502 1557158
>>557108
Готовься к баттхёрту. Если ты учишь го потому что дядя так сказал надо, то пиздарики тебе. А вот если потому что самому интересно — то это божья благодать. Хотя это зависит от того, с каких языков ты пришёл. Если с жявы, то точно пиздарики.
503 1557490
Рейт ми /пр
https://github.com/beneG/mad_test
Это тестовое задание в одну говноконтору, надо было сделать фриланс аукцион с корректным обращением с деньгами.

Это моя первая программа на го, и хз почему меня не взяли в эту говноконтору.
504 1557519
>>557490
Архитектура так себе (про DDD ты явно не слышал), слои логики перемешаны между собой, файловая структура самописная и так себе, гошная специфика тоже так себе. О доставке тоже не подумал, апи задекларировано так себе.
Максимум, взял бы тебя на джуна без обид, ты попросил - я оценил.
505 1557763
>>557519
Вооот. А на деле я оказался супер продвинутым программером, и сейчас работаю в одной известной конторе и делаю ИИ в авиасимуляторе на крестах.
Всё с вами goферами понятно, чисто формалистский подход и оценка.
506 1557764
>>557763

> на деле я оказался супер продвинутым программером


Что-то по коду не видно, говнокод, как он есть. Если ты считаешь себя супер-продвинутым, мне стоит тебя огорчить.

> одной известной конторе


Я видел говнокод от множества известных контор, включая Яндекс и Гугл. Ничего эти ярлыки не значат.
507 1557774
>>557764

>Что-то по коду не видно, говнокод, как он есть. Если ты считаешь себя супер-продвинутым, мне стоит тебя огорчить.


Это первая программа на голанге, после которой я руки мыл с мылом. Ладно ковыряйтесь в свойём goвне сами, а я пожалуй останусь на божественных крестах.

А ты, пидор, покажи свой конфетка-код прежде чем свой носик задирать.
508 1557802
>>557774
Сначала ты просишь оценить тебя, а потом строишь обиженку? Ну ок.
Свой лепет про первую программу можешь больше не писать, потому что если бы ты хотя бы слышал про азы разработки на бекенде, то попытался бы что-то такое изобразить. Твой код не не-идиоматичен, он просто плохой, потому что ты путаешь тёплое с мягким.
Да и в принципе опытные разработчики как правило сразу гуглят примеры кода и какие-нибудь example-проджекты на стеке X, чтобы понять, как вообще тут принято делать. Ты поленился сделать даже это.

Свой божественный код я бы с радостью тебе показал (ты бы ослеп от его красоты и проработанности), но у меня нет привычки программировать что-то серьёзное дома, рабочий код (понятно) принадлежит не мне, а садиться и лепить примеры чтобы что-то доказать очередному маня-долбоёбу, считающему себя "супер-продвинутым программером" лол я тем более не считаю нужным.
Аргументы я тебе привёл вот тут >>557519 и они достаточно объективные, можешь каждый из них гуглить и разбираться, как делать правильно и как нет.
509 1557806
>>557490

>Всё с вами goферами понятно, чисто формалистский подход и оценка


>А ты, пидор, покажи свой конфетка-код прежде чем свой носик задирать.


>Это первая программа на голанге, после которой я руки мыл с мылом. Ладно ковыряйтесь в свойём goвне сами


>Aug 24, 2018


спустя полтора года чувстсовать себя солёным и обсирать виноград, которые тебе не достался, это сильно. правильно не взяли.
510 1557835
>>557806
Ну, тогда было обидно что не взяли. Сейчас дела сложились намного лучше и я думаю было бы херово если б взяли.
Я пришёл обсирать не виноград а яп который ебанут и имеет ебанутое коммунити.

>>557802
Покажи. С радостью.
И смогу скопипастить формальные и максимально размытые доёбки которые подходят всем как гороскопы.

И то что ты не отрицаешь что ты пидор говорит о том что пидоры - говно, так как множество пидоров содержит такого уебана как ты.
511 1557976
>>557763
Уж ли не для Ил2: Штурмовик ИИ пишешь? Судя по твоему гиту тебя туда взяли пару месяцев назад на джуна или трейни
512 1558018
>>557976
Посмотрел я его код, выше джуна не тянет. знал бы он плюсы так как выёбывается - был бы совсем другой разговор. в который раз убеждаюсь, что ЯПы бывают разные, а долбоёбы на них пишут одни и те же.
513 1558444
>>557835

> Я пришёл обсирать не виноград а яп который ебанут и имеет ебанутое коммунити.


То есть наговнокодил ты, а виноват язык и комьюнити? Гениально.
514 1558508
>>558444
Ему гоферы в штаны насрали
515 1558596
Спасибо, ребят что охладили моё чсв.
go ахуенный язык, вот тот чел который так и не показал свой конфека-код вообще красавчик. А то пол ./pr ослепло бы.
Да и ваще все вы молодцы. Отсасывайте друг у друга.
516 1558884
>>558596

Странный ты чувак. Выше уважаемый ананас тебе все объяснил. Чего у тебя подгорает - не понятно.
517 1560453
>>511423
Ты не писал на паскалевском синтаксисе. PL/SQL - паскаль. Го - си с корутинами и гц.
518 1563448
519 1572485
>>544346
Бамп
520 1575141
>>509601
У Elixir/Erlang тоже есть неоспоримые преимущества:
это разработанные не через жопу языки, в которых есть инструменты более продвинутые, чем палки-копалки из го.
Ну и рантайм получше, в основном за счет идеи каждому процессу свою память давать. Вот в BEAM VM асинхронность, да. А в этих ваших Golang / Python asyncio и прочем -- ебучее CSP, которое стало ебучим из-за того, что его пихают везде, даже туда, где оно, блджад, не работает.
521 1589983
>>484255
бамп годному вопросу
Тред утонул или удален.
Это копия, сохраненная 10 февраля 2020 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски