1024px-GoLogoBlue.svg.png23 Кб, 1024x385
Go тред №28 /go/ 3121242 В конец треда | Веб
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.

С чего начать:
- В обязательном порядке проходим Go Tour:
https://go.dev/tour/welcome/1
- Читаем документацию прямо по порядку (пункт "Learning Go"): https://go.dev/doc/
- Ознакамливаемся с общим roadmap по изучению языка и сопутствующих инструментов: https://github.com/Alikhll/golang-developer-roadmap (постоянно обновляется сообществом)

Литература:
- Донован, Керниган "Язык программирования Go"
- Также хорошие книги для начала: https://www.golang-book.com/ и https://www.practical-go-lessons.com/ (веб-версия - бесплатная и хорошо подходит для новичков в программировании)
- Книги из списка https://github.com/dariubs/GoBooks

Полезные ресурсы:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/
- Обновляемый список с пакетами: https://github.com/avelino/awesome-go

Прошлый тред:
>>3052664 (OP)
2 3121272
есть ли аналог спрингбута для го
3 3121276
>>121272
это риторический вопрос
4 3121289
и все же

просто хочу разобраться
6 3121467
image.png262 Кб, 460x595
7 3121642
>>3120213 →

>Почему ровно такие же программы стали жрать в десятки раз больше ОЗУ?


Во всём виноваты индусы. Нация, которая не может научиться надевать презервативы, тем более не может научиться писать хороший код. Предлагаю зафорсить понятия pajeet-driven development и kumar-written code. Хорошо же звучат.
>>3120090 →

>у тебя там хард


А чем это плохо? Надо нормально писать софт, чтобы работало даже без твердотельника.
8 3121650
>>121642
Да вы заебали со своими паджитами. Если Кумар -- это хотя бы настоящее имя, то паджит -- это набор букв.

Индусы могут писать нормальный код, проблема в том, что в Индии все родители шлют детей быть юристами, врачами или программистами.
Чтобы называться юристом или врачом, надо лицензию, и для этого надо сдавать экзамен. Чтобы называться программистом не надо нихуя. Поэтому в программисты идут два типа индусов: те, кто к этому предрасположен, и самые тупые, даже тупее назаровских волков. И вторых просто дохуя, потому что самих индусов целый миллиард.
К счастью, подавляющее большинство этих тупых индусов недопрограммистов сидят в Индии и пишут что-то для своих индусских компаний.
9 3121658
>>121650

>Индусы могут писать нормальный код,


Двачую. Поддержиаал код за индусом. В целом - норм.
10 3121708
>>121272
1) Это не go way.
2) Если появится аналог спрингбута то зарплаты обвалятся как в джаве.
11 3121734
>>121708

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


Представление об экономике у пограммистов...
Чел, зарплаты обвалятся совсем по пругим приинам - вкатунов в голенг станет слишком много. Обфуксация кода не спасет. Вкатуны не имеют представления что хорошо, а что плохо в коде. Можешь у спросить пыхарей.
А раз зарплаты обвалятся, рано или поздно, в будущем ты будешь за еду пыхтеть над тоннами уникальной для каждого проекта легаси лапши.
12 3121736
>>121734
обфускация*
13 3121829
>>121650

>паджит -- это набор букв.


Я знаю. Но у них все имена примерно так выглядят. Недавно git blame показал, что автор очередной строки говнокода в проекте — Sandeep. Да и слово pajeet хорошо употребимо, когда нельзя сказать streetshitter или curry nigger.

>индусов целый миллиард


Почему их целый миллиард? Надеть презерватив не судьба? Это элементарное действие. Если они это не могут, то писать хороший код тем более.
>>121658
So soy.
14 3122168
>>121829

>>паджит -- это набор букв.


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


Это обзывательство уровня чурок, чухонцев, хохлов, бульбашей. Впрочем, тебе, видимо, нормально:

>streetshitter или curry nigger


Потому что ты наци говно.

>>индусов целый миллиард


>Почему их целый миллиард? Надеть презерватив не судьба?


Ты тупой? Почему славян целых 300 млн? Надеть презерватив не судьба?
Это элементарное действие. Если они это не могут, то писать хороший код тем более.
15 3122220
>>121708
Появился уже, время вылезать из манямирка. Изобрели урезанную дажву - самое время изобретать урезанный спринг бут к ней. Гоферы переизобретают шаг за шагом джаву и гордятся что это "не джава".
16 3122943
>>122168

>наци говно


Осторожнее, так можно соевым молоком поперхнуться.

>Почему славян целых 300 млн


Русских миллионов 150, для такой территории ни о чём. И они вымирают. А индусов всё прибавляется и прибавляется, только в качество не переходит никак.

>чухонцев


С чухонью приятнее работать, они хотя бы белые.
17 3122957
>>122220
Перекатился из джавы в го потому что прикольнее задачи, мне больше по кайфу переизобретать велосипеды чем круды клепать
18 3122967
>>122957
Так а велосипеды-то твои в конечном счете что делают? Create Read Update Delete?
19 3123060
>>122967
Мои велосипеды помогают джунам пилить круды
20 3123654
>>123060
Автор utils.go ты?
21 3125758
>>123654
Типо того но в масштабах побольше
22 3130839
фанаты goвноlangа у вас даже в туре абсер

https://go.dev/tour/methods/9
23 3130943
>>130839

лол это ж мемный abser

это ты еще до протобафа не дошел
24 3131561
Научился рисовать в fyne, но не могу найти как получать события нажатия кнопок и мыши.
25 3132891
Скомпилировал на fyne простой графический хелло ворлд и получилось 27Мбайт в бинарнике. Для примера, на С и GTK такая программа весит 17 Кбайт.
26 3132916
>>132891
держи в курсе
27 3132943
>>132891

>Для примера, на С и GTK такая программа весит 17 Кбайт.


А если всё статически слинковать?
28 3133054
>>132943
Зачем?
29 3133407
>>133054
Ты сам начал письками меряться. Ну так меряй в одинаковых условиях. Иначе на джава можно хеловорлд в килобайт уложить.
30 3133454
>>121650

> паджит -- это набор букв


https://www.urbandictionary.com/define.php?term=Pajeet
31 3133509
>>132891
>>133054
Почему в каждый гошный тред приходят залётные и начинают жёстко троллить тупостью?
32 3133522
>>121272
Если залетел в энтерпрайз, то го тебе нахуй не нужен.
Он для системной разработки, где ебля с памятью как в си/плюсах нинужна + нужны современные удобства: кромплатформенный билд, пакетный менеджер, не геморойное паралельное программирование.

Нуден энтерпрайз - шарпы/джава/тайпскрипт с нодой
33 3133523
>>133522

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


/0
Что это за системная разработка такая, где ебля с памятью не нужна и бинарники по 100 мегабайт норма? Линукс ядро может?
34 3133526
>>133523
Более чем уверен, что ьы чуть ли не каждый день таким го софтом пользуешься.
Настолько шаришь в теме, что считаешь что без работы с памятью в системном никуда?
35 3133532
>>133454
Ну, по твоей ссылке это и написано.
36 3133560
Всем доброго времени суток, подскажите, во что проще вкатиться для первой работы, PHP или Go?

Полгода изучал мобилки, отпугнуло малое количество ваканмий, + 1 друг и подруга никак там работу не могут найти с гораздо большим опытом в обучении чем я. Их даже в стажёры на собесы не зовут. Вот я и решил не тратить время и с более менее знаниями Котлина пойти в бэк (правда на Котлине вакансий на джуна в бэк совсем мало)
37 3133597
>>133560
РНР конечно же. Там и учить легче и вакансий больше, а требования ниже. В го ожидают, что ты уже знаешь какой-то стек и решил выучить его как второй язык. Потом из РНР можно будет перейти на го.
38 3133636
>>133597
пыха это почти всегда каловый фуллстак
39 3133651
>>133407
Это не одинаковые условия, а попытка нивелировать преимущества других языков по причине того, что го так не может.
40 3133747
>>133636
Это в чем минусы?
На Go один хуй нужны минимум мидлы которые в прошлом так же хуярили либо на Java, либо на любой другой хуете
41 3133769
>>133651
Это и называется одинаковые условия, малой
42 3133791
>>133769
Объясняю. Если у тебя в системе работает Gnome, то значит уже установлены библиотеки GTK. Зачем тогда в каждый бинарь их зашивать и раздувать объём программ? Динамические библиотеки не просто так придумали.
43 3133824
>>133791
Раз у тебя в системе стоит JVM, то значит уже установлены нужные библиотеки.
Поэтому Java побеждает с результатом 545 байт.
44 3133861
>>133791
PЗачем вообше го использовтаь для десктопа? ты сначала почитай для каких целец язык создавался
45 3133868
>>133824
А ведь и правда. Но там минус, что графические программы выглядят не нативно в системе.
46 3133871
>>133861
Гуглу нужен был язык для синих воротничков, потому что они не могли осилить С++. Но получается, что го - это не полноценная замена С++, а только для веба и консолек, при том ещё и не эффективная, с большими накладными расходами на размер.
47 3133879
>>133871
Для веба это лучший язык, особенно под микросервисы, + отличная многопоточка и удобное взаимодействие между горутинами
48 3134260
>>133871

> не эффективная, с большими накладными расходами на размер.


У тебя странные понятия о эффективности
49 3134276
>>134260
Разница в размере в 2000 раз - это странные понятия об эффективности? Видимо шутку про 128гигов про джаву пора переделывать под голанг.
50 3134455
>>134276
Странно что в твоём понимании размер соотносится с эффективностью
51 3134615
>>134455
Я ищу язык, на котором можно было бы писать эффективные программы под линукс. Бинари под сотню мбайт мне не подходят, так как занимают слишком много места. Я ориентируюсь на С, который генерирует бинарники в несколько кбайт для небольших утилит.
52 3134663
>>134615
Ну так пиши на С, кто тебе не дает? Иди в тред Сишный и там жалуйся кек
53 3134696
>>134663
А есть кросс-компилятор, который преобразует код на го в код на си?
main.go -> go-c -> main.c -> gcc -> main.exe
54 3135001
>>134696
Ты дурак? У тебя в Го сборщик мусора, а в С ручное управление памятью. Как ты будешь кросс компилировать? А ещё легковесные треды управляемые рантаймом.
55 3135094
>>134696
Нет такого.
56 3135095
>>134615

>на котором можно было бы писать эффективные программы под линукс


С/C++/Rust
57 3135174
>>135095
В раст тоже бинари жирные от 500 Кб до 6 Мбайт на хеллоуворлд.
58 3135180
>>135174
А тебе не похуй?
Какая разница какой размер у бинаря?
59 3135244
>>135180
В линуксах сотни утилит. Представь сколько бы весила ОС, если бы их писали на голанге?
60 3135249
>>134615

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


Под твой конкретный или под любой из дистрибутивов distrowatch?
Ящитаю что статическая сборка тут скорее плюч, чем минус.
61 3135263
>>135244
Сейчас мода переписывать стандартные утилиты на голенг и раст. Я например пользуюсь fd и fzf
62 3135274
>>134615

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


Если сетевые - go. Если низкоуровневые системные - с, с++, zig, rust в зависимости от знания языка и опыта который есть или который ты хочешь получить.

> Я ориентируюсь на С, который генерирует бинарники в несколько кбайт для небольших утилит


Размер бинарника - это самое маленькое что тебя будет беспокоить. Лучше подумай как ты будешь инструментировать свой код для поиска узких мест, например.

Писать новые проекты на C не рекомендую, получится ворох говна. Попробуй для начала разобраться в структуре и подходах какого-нибудь большого проекта, например в systemd. Но если твоя цель научиться писать на C большие проекты, ничего не имею против. Но ты должен принять, что на любую фичу ты будешь тратить существенно больше времени чем Ероха потратит на клон твоей утили на высокоуровневом языке с большими бинарниками, и пользоваться Ерохиным клоном будет проще.
мимо
63 3135297
>>134276
Все шутки про джаву подходят по голенг, потому что это и есть урезанная джава
64 3135303
>>134696
Зачем тебе кросс компилятор? Пиши сразу на си. Если тебе нужен кросс платформенный код - то тебе в джаву. А так очень сложно понять требования к программе.
65 3135429
>>134696
Да.
gccgo -> exe - hexrays/ghidra.
Поможет ли тебе это хз.
Тепер нужен не кросс-компилятор, а транспилятор. Хочешь язык с таким - бери nim.
66 3135430
>>135429

> Тепер


Тебе
67 3135588
>>134615
Эффективность не от языка во многом зависит, а от подхода к программированию. Можно убить С программу постоянными аллокациями в хип. Можно с умом написать так что джава летать будет.
68 3138591
Чем отличаются горутины от Pthreads?
В Pthreads можно задать размер стека (хоть 2КБ, как в горутинах).
Разве что у горутин собственный планировщик. Вроде ещё у Pthreads нет динамического изменения размера стека.
69 3138620
>>138591

>Разве что у горутин собственный планировщик.


Так в этом то и весь смысл. Этот планировщик позволяет писать обычный последовательный код, без калбеков и прочей реактивщины. Но при этом он эффективно обрабатывает ситуацию с блокировками на IO и мьютексах.
70 3138744
>>138620

>Этот планировщик позволяет писать обычный последовательный код, без калбеков и прочей реактивщины.


Чего? в Го вроде нет async/await, просто вызовы асихронных функций, и ты не можешь писать асинхронный код как синхронный. Или что ты имеешь в виду?
71 3138745
>>138591
По-моему тем что pthreads - это реальные потоки, а горутины - это "зеленые" потоки, управляемые рантаймом го
72 3138813
>>138744

>Чего? в Го вроде нет async/await, просто вызовы асихронных функций, и ты не можешь писать асинхронный код как синхронный. Или что ты имеешь в виду?


Я имею ввиду, что ты пишешь обычный, последовательный код: вызываешь, по сети другие сервисы, читаешь из базы, ждёшь пока освободится лок. А при этом планировщик Го делает так, чтобы тысячи горутин эффективно работали поверх десятка поатвюформенных тредов. Снимая с платформенного треда горутины которые сейчас заблокированы.
73 3138825
Зачем нужен го, если в джаве добавили виртуальные треды? К тому же конкарренси библиотека в джаве - самая лучшая среди всех языков. А конкарренси - это типа киллер фича го.
74 3139058
>>138813
Всё равно не понимаю. Планировщик ОС тоже может эффективно управлять pthread'ами. И те pthread'ы, которые чего-то ждут, не будут выполняться. Даже если во время работы pthread начинает чего-то ждать, планировщик ОС немедленно его переключает на другой, не дожидаясь истечения отведённого кванта времени.
У pthread'ов можно настроить приоритет и стратегию планирования на любой вкус.
И чем горутины лучше всего этого?
75 3139087
>>139058
Просто лучше и всё, понятно?! Сказали лучше, значит лучше, нужно за трендами следить
76 3139092
>>138813

>чтобы тысячи горутин


А сколько у вас клиентов-то?
77 3139166
>>139058
переключение тредов дороже, если коротко. про context switch почитай
78 3139167
>>138825
затем что ни надо поднимать JVM, если в облаках то это кошельку бьет(если у тя кучу дев окружений)
79 3139170
>>139058
Судя по этим статьям https://www.baeldung.com/java-virtual-thread-vs-thread
https://amansingh3110.medium.com/what-is-the-main-difference-between-native-threads-and-green-threads-66c448696cf1
основных преимуществ 2
- зеленые треды не требуют сискола (syscall) для переключения между ними и поэтому дешевле
- у зеленых тредов нет отдельной памяти под стэк, они используют память родительского настоящего треда, и соответственно ОС не надо под каждый зеленый тред аллоцировать полноценный объем памяти, что быстрее и экономнее
80 3139174
>>138825

>Зачем нужен го, если в джаве добавили виртуальные треды?


Ну теперь уже - чтобы поддерживать легаси на Го
81 3139207
>>139092
У нас миллиарды. Тут вопрос в том, насколько долгие у тебя запросы, Если у тебя запрос работает 10 секунд, и 1000 звпросов в секунду, то у тебя уже 10к тредов нужно при синхронной работе.

>>139058

>Планировщик ОС тоже может эффективно управлять pthread'ами. И те pthread'ы, которые чего-то ждут, не будут выполняться. Даже если во время работы pthread начинает чего-то ждать, планировщик ОС немедленно его переключает на другой, не дожидаясь истечения отведённого кванта времени.


Планировщик может эффективно управлять только CPU time, но он не может эффективно управлять памятью стека. И на самом деле это главная проблема.
Большинство горутин имеют стек в пару килобайт, и им не нужны мегабайтные стеки. Но есть несколько горутин которым нужны большие стеки. И менеджить это все на уровне pthread, очень сложно. Плюс есть системное ограничение на количество потоков, у тебя тупо ядро начнет захлебываться, да и создание нового потока процесс дорогой.

>>139170

>- зеленые треды не требуют сискола (syscall) для переключения между ними и поэтому дешевле


Иногда - требуют.

> Preemption at asynchronous safe-points is implemented by suspending the thread using an OS mechanism (e.g., signals) and inspecting its state to determine if the goroutine was at an asynchronous safe-point.


https://go.dev/src/runtime/preempt.go

>- у зеленых тредов нет отдельной памяти под стэк, они используют память родительского настоящего треда, и соответственно ОС не надо под каждый зеленый тред аллоцировать полноценный объем памяти, что быстрее и экономнее


То что называется - implementation specific. Проблема испольхования стека хост треда, в том, что при переключении надо копировать текущий стек. В других реализациях аллоцируют в куче.
82 3139265
>>139207

>Если у тебя запрос работает 10 секунд


то мне кажется что-то явно пошло не так
83 3139520
>>139265

>то мне кажется что-то явно пошло не так


с кругозором у современных разработчиков. Которые ничего кроме крудов не делали.

У нас например система в том числе и линейные уравнения решает, и там расчеты могут и десятки минут идти.
84 3139527
>>139520
В джаве на числодробилки выделяют тредпул платформенных тредов. А для сетевых запросов юзают виртуальные треды. В голованге не так?
85 3139544
>>139520
Вы делаете это неправильно. Долгие запросы ставятся в очередь, а пользователю возвращается токен, по которому можно проверить статус задачи через апишку. Никто не держит сокет 10 минут.
86 3139665
>>139520
Хм, это интересно, а можешь привести пример такого линейного уравнения, решение которого вполне оправдано занимает например 30 минут на современных процессорах?
87 3139670
>>139544

>Никто не держит сокет 10 минут.


Это просто тупые крудошлёпы не понимают ничего в программировании

Серьезные дяди с опытом солидно и прочно занимают сокет и неспеша, качественно выполняют свою работу
88 3139673
>>139670
Еще сходят неспеша чай попьют, а сокет - он не волк, в лес не убежит
89 3139687
>>139665
Лол, любая задача на оптимизацию. Там система уравнений с ограничениями может считаться весьма долго.
https://habr.com/ru/companies/ruvds/articles/704326/
90 3139690
>>139687
То есть ты не смог привести пример такого линейного уравнения? Ок
91 3139700
>>139690
Ты тупой что ли? Системы линейных уравнений решаются методом гаусса, там сложность кубическая. Большинство методов оптимизации тоже имеют кубическую сложность. Для тупых это цикл в цикле в цикле for() { for () { for() {}}}
92 3139758
>>139700
найс бахнул
93 3139804
>>139700

>. Для тупых это цикл в цикле в цикле for() { for () { for() {}}}


Это мало что значит и при должной оптимизации доступа к памяти из кэша процессора будет летать, и это не учитывая параллелизм.
94 3140139
Как уменьшить размер скомпилированных файлов?
95 3140204
>>139804
Да чо ты ему объясняешь, это же тот шиз обсирающий гоху.
96 3140426
Почему го тур есть на польском и даже на украинском, а на русском нет?
97 3140474
>>140426
Потому что ру локализация устаревшая. Сделай мр с актуализацией, и будет тебе русский язык
98 3140480
>>140426
ЛГБТ в России запрещено
99 3140629
>>135001
Chicken Scheme
100 3140687
>>139527
В Го нет не виртуальных тредов, но в Го вытесняющая многозадачность для горутин, так что и вычислительные треды нет смысла куда-то выносить даже если бы было можно.

>>139544
>>139670
Этот поц ещё будет нас учить, как делать коммерцию!
У нас между сервисами gRPC стримы, которые шлют результат по мере готовности. Плюс сам gRPC держит соединение и по одному сокету шлет все запросы и ответы. Так что ваши рестональные бест практисиз не очень релевантны.

>>139665
Планирование ресурсов. У тебя есть некий набор локаций, в каждой из который есть набор ресурсов, и набор потребителей этих ресурсов. Тебе надо их наиболее оптимально их распихать по этим локациям с учетом разных ограничений: доступность специфичного ресурса, необходимость чтобы какие-то потребители были в одной локации и т.п.
101 3140703
>>140687

>У нас между сервисами gRPC стримы, которые шлют результат по мере готовности



А это как возможно? Или в gRPC не нужно каждый раз открывать/закрывать соединение?
Типо прицепился к grpc соединению и можешь хавать от потребителя данные, которыми он пукает раз в минуту?
102 3140708
>>140703
Да gRPC устанавливает одно сокетное соединение, а дальше через него шлет все запросы и получает ответы.
https://grpc.io/docs/what-is-grpc/core-concepts/#channels
103 3141086
>>140687

>Планирование ресурсов. У тебя есть некий набор локаций, в каждой из который есть набор ресурсов, и набор потребителей этих ресурсов. Тебе надо их наиболее оптимально их распихать по этим локациям с учетом разных ограничений: доступность специфичного ресурса, необходимость чтобы какие-то потребители были в одной локации и т.п.


И ты хочешь сказать что это занимает 30 минут? Такие задачи за секунду максимум решаются. Поэтому я и просил собственно линейное уравнение, которое никто не может дать, а не примерно-размытое описание задачи.
104 3141179
>>141086

>реши np задачу за секунду, гы


Какие же кодомакаки без диплома дегенераты, ей богу. Раньше такое бы писать постеснялись, а сейчас анальник гордится своей необразованностью. Иди жсоны грузи и не пытайся умничать.
105 3141266
>>141179
молодец, быстро слился
106 3141621
>>141179
не понял, а причем здесь полиномиальное время? полином может быть просто маленьким
107 3141870
>>141086
Несколько десятков ресурсов, сотня-другая локаций и сотня тысяч потребителей вполне себе могут дать 30 минут расчёта.

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


Разумеется там не одно уравнение, а система уравнений, потому что для потребителя должны быть соблюдены все требования по ресурсам которых больше одного и требования по колокации.
108 3142713
А были ли какие-либо серьезные изменения в балансе за пол года? Сигрид все также топ?
изображение.png5 Кб, 333x62
109 3143098
>>142713
Ахах, не туда и только заметил.
110 3144463
Пробовал GOвно это, кринжатина та ещё. Для любителей под копилот писать говно-функции, которые написаны были в других языках лет 20 назад.

Мой лид что-то там пол-года уже пишет хуету-апи какую-то на говне и никак допилить не может, которую я бы написал на своём языке за неделю, лол.
111 3144808
>>144463
мб проблема в лиде?
Смотрел курс по go от авито так там уровень абстракций не хуже чем на шарпах/явах и спрашивается нахуя тогда го нужен? если пишут так же по сути, только еще свои правила вставляют а наследования нет и дженериков нет
112 3144822
>>144808

>нахуя тогда го нужен


А нахуя нужен шарп/ява?
113 3144835
>>144822
Для крупных прил + весь инструментал из под капота, не? а ваще мне пох кто че юзает главное чтобы кабан платил
114 3144850
>>144822
Исторически чтобы зааутсорсить всю разработку в Индию.
115 3145093
>>144822
чтобы не ебаться с разными длинами int под каждую комбинацию ос + архитектуры, 5ю конструкторами, сегфолтами и даблфришками.
116 3145118
>>144835
>>144850
>>145093
Перепись джавапетухов завершена, пройдите в свой скуфозагон.
16559179461022.webm2,5 Мб, webm,
318x240, 1:25
117 3145214
Чем лучше генерить код в го? Если скажем у меня есть структуры и надо им логику прописать?
Мне удобнее с помощью рефлектов собрать мета информацию и подсунуть её в шаблон. Но почему-то во всех примерах кодогенерации используют аст, хотя, как по мне, им пользоваться сложнее.
118 3145533
>>144463

>я бы написал на своём языке за неделю


Да ты бы, весь гугл переписал за месяц а потом бы проснулся
119 3145537
сделал диплом на джанго, вакансим с ним нет, вкатываюсь в го....
пожелайте удачи
120 3145557
>>145537
Three month's later...

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

121 3145577
>>145557
а что делать?
с джавой на стажировку/место джуна вообще хуй попадёшь же? миллион человек на одно место
ололо вкатывайтесь в 1с
122 3145584
>>145577

>с джавой на стажировку/место джуна вообще хуй попадёшь же? миллион человек на одно место


Блять да зачем вам стажировка? Ну типа... разве ты не получаешь опыт просто работая? Почему бы просто на обычную не-джуниорскую/не-стажёрскую вакансию не подать заявку?
123 3145603
>>145577
Да это решай сам конечно, но гошка по большей части для перекатунов. Джунские вакухи видел только в говноCRM в ДС в офис.
124 3145673
>>145577
А ты искал вакансии на хх или просто так, от фонаря сказанул?
125 3145780
>>145603

>но гошка по большей части для перекатунов


Лол, нет. Гошка как раз для упругих зумеров. Всяких джаваскуфов и прочих шарпомух не берут в команды, т.к. у них мозги засраны и они слишком старые
126 3145814
>>145533
Там простой микросервис для маленькой апи с парой эндпоинтов :)
Видимо для GOлангеров это такая серьёзная проблема и работы на пол-года. Тогда нахер этот язык нужен?)
127 3145927
>>145584

>Блять да зачем вам стажировка? Ну типа... разве ты не получаешь опыт просто работая? Почему бы просто на обычную не-джуниорскую/не-стажёрскую вакансию не подать заявку?


Да вкатуны придумывают себе проблемы какие-то, ПРОСТО берешь и устраиваешься синьор разрабом в Гугл.
128 3145961
>>145814

>Тогда нахер этот язык нужен?)


это хороший вопрос
image.png2 Кб, 311x82
129 3146005
Как focus terminal показывать на панели как на скрине?
Я его убрал и теперь галочку найти не могу
130 3146019
Всем привет!

Хочу перекатиться из бэкенд-раба на плюсах и питоне в голанг-господина. Подскажите, пожалуйста, что нужно заботать, чтобы успешно пройти собеседования на 500к-синьора?

До этого 3+ реальных лет работал в самых крупных ойти-конторах, закончил баку-магу престижных вузов и все такое. Хочу лишь понять, какие тулзы/фреймворки/уровень гохи необходимо овладать, чтобы стать заветным наносеком.

Спасибо!
131 3146028
>>146019

>что нужно заботать, чтобы успешно пройти собеседования на 500к-синьора?


Приди на собеседование и сам узнаешь. Мы не знаем твоих способностей и гадать не будем. Знаешь как это работает? Ты приходишь, тебя спрашивают допустим какие способы обработки ошибок в go ты знаешь? Ты такой э-э-э пук среньк. Интервью заканчивается, мы вам перезвоним. В блокноте отмечаешь моменты где ты обосрался. Повторяешь. Идёшь на новое интервью. Снова отмечаешь моменты где ты обосрался. Снова повторяешь. Вопросы на 80% интервью типичные. И так до тех пока не устроишься на 500к синьора.
132 3146030
>>145814

> Тогда нахер этот язык нужен?)


Лутать зп выше чем на схожих вакансиях на другом стеке. Гоферов пока все ещё мало, кабан готов доплачивать
17011574677092.mp4939 Кб, mp4,
272x480, 0:15
133 3146033
>>146019

>До этого 3+ реальных лет работал



Если бы это утверждение было правдой ты бы тут не сидел.
Потому что чтобы быть мидлом/сеньором на го, если ты до этого был мидлом/сеньором на другом языке, нужно пройти готур.

Другое дело что понятие мидла и сеньора очень субъективное. И часто такие грейды дают просто минимально компетентным работникам за выслугу лет.

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



кафа, постгре.
Если сможешь рассказать несколько изощрённых кейсов оптимизации при работе с бд или самой бд. Считай ты почти сеньор.
134 3146039
Голаны, какая щас вилка у мидла - 3 года на го?
Планирую просить летом повысить ЗП. Думаю на какую цифру ориентироваться.
Сейчас 200к.
135 3146045
>>146028

>Вопросы на 80% интервью типичные


>успешно пройти собеседования на 500к-синьора


>В блокноте отмечаешь моменты где ты обосрался. Повторяешь


У тебя с таким подходом будет максимум 3-5 попыток. Затем у тебя закончатся компании, которые могут платить 500к сеньке и ты уйдешь в кулдаун минимум на год. А остальные компании платят примерно 200-250к
136 3146046
>>146033

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


Лол, нет. Видал таких джавистов, которых взяли потому что "ну они же сеньоры на джаве". Писали при этом неидиматичный помойный код "как на джаве". Выгнали на хуй)))
137 3146047
>>146039

>Голаны, какая щас вилка у мидла - 3 года на го?


Ну открой гетмутч и посмотри сколько компании предлагают...
138 3146108
>>146030
>>146039
Вот человек написал, 200к и 3 года на го. Это называется лутать выше?) У меня и без го 250к и я даже не старался искать более денежные проекты.

Чтоб лутать выше других - самому кабанычем надо становиться. И лучше в своём стеке всегда расти, чем менять на новый и начинать с нуля.
Я понимаю когда новичок идёт в го. Но это оче смешно выглядит, когда 10летний лид пытается вкатиться в другой стек.
139 3146183
>>145927

>Да вкатуны придумывают себе проблемы какие-то, ПРОСТО берешь и устраиваешься синьор разрабом в Гугл.


При этом даже не обязательно знать Го! Достаточно знать любой современный язык.
140 3146189
>>146183
На хакерньюс писали, что все новые сервисы в гугле пишутся на go/python.
141 3146232
>>146108
Ну так это проблемы человека который работает за такие суммы. Я сам в Латвии, получаю ~90к в год при тех же 3 годах опыта. Хз насколько это коррелирует с рынком в РФ, но у нас реально кабаны платят среднему го разрабу больше чем джавистам, шарперам и прочим. С другой стороны, внутренней кухни других стеков я не знаю, вкатился сразу на го
142 3146270
>>146189
Не совсем. Для написания новых сервисов выбор по умолчанию: С++/Раст, Джава/Котлин и Го. Для SRE рекомендуется Го, Питон рекомендуется для МЛ. Но это рекомендации, а не требования. Команда может выбрать и другой язык, если есть веские причины.
143 3146326
>>146232
Как в принципе научиться писать идиоматичный Go код? Ну, чтобы прямо по красоте было
144 3146339
Где вообще можно посмотреть примеры как надо использовать кафку/кролика, как управлять транзакциями и так далее? Про project-layer не надо, там кал.

Я смотрел репо курса от авито там в целом понятно, но неужели в го все пишут свой tx manager, closer?
145 3146347
>>146232
Ну так откуда ты знаешь сколько платят джавистам, если никогда в джаве не был? Никто этого не знает, кроме компаний с этой секретной информацией.
По твоему примеру как раз надо не в го вкатываться, а в английский/немецкий и работать напрямую на западные денежные проекты. До фонаря вообще какой стек, кабанам насрать на чём ты пишешь - всё зависит сколько денег это приносит.
146 3146362
>>146339

>как надо использовать кафку/кролика


Никак не надо. Ты не второй гугл или фейсбук. Просто складывай все в базюльку, а потом шедуль функцию, чтобы та грепала данные из базюльки. Короче - мути очередь поверх базюльки
147 3146386
>>146347
Ну я же не слепой, плюс минус представляю какие вилки.

> По твоему примеру как раз надо не в го вкатываться, а в английский/немецкий и работать напрямую на западные денежные проекты. До фонаря вообще какой стек, кабанам насрать на чём ты пишешь - всё зависит сколько денег это приносит.


Ты как бы прав, но я же не про это говорил. Я тебе говорю что сегодня го разраб кабану стоит больше (генерирует ли он больше прибыли, это уже вопрос) чем схожий по компенсациям но не на го.
>>146326
Прочитай стайл гайд от убер. В моей карьере ещё не встречал людей которые пытались бы его оспорить
148 3146556
>>146386
Потом такой приходишь к лидеру рынка, а там только ловят паники наверху, томучо ифэрризнотнил тяжело читать.
149 3146577
>>146556

>там только ловят паники наверх


Как будто, что-то плохое.
150 3146666
Попробовал gotk3 (типа gtk3) и результат бинарников получше, чем у fyne - около 5 Мб на простое приложение. Но компилируется почему-то гораздо дольше. Видимо, автор библиотеки gotk3 больший криворучка, чем автор fyne. И по зависимостям видно, что он тянет всякое бесполезное дерьмо типа цветных буков в консоли или логгеров. И это для GUI-библиотеки!
151 3146780
Многие прочат го на замену си, но я не вижу, чтобы это было возможно.
1) Го тянет с собой рантайм, засовывает все возможные библиотеки в бинарник, а создание библиотек в принципе не возможно.
2) Авторы жаловались, что си долго компилируется, но это го долго компилируется, потому компилирует каждый раз всё целиком. В си я всегда могу выделить библиотеки или компилировать отдельными файлами, а если их не изменять, то сбощик типа make никогда не будет создавать новый о-файл. Таким образом работать будет только компилятор на измененных файлах и компоновщик.
3) На си можно написать любую программу. Даже если не брать системное программирование, а только прикладное, то даже здесь го не покрывает все направления.

В итоге го получается узкоспециализированным языком для написания сетевых сервисов. Не более.
152 3146789
>>146045

>остальные компании платят примерно 200-250к


Ну значит такова твоя рыночная цена. Если барбершоп ставит 10к за стрижку и никто не приходит, значит ли это что рынок плохой? Значит твои услуги не стоят 500к и на рынке есть более дешевые исполнители которые делают как минимум не хуже.

>У тебя с таким подходом будет максимум 3-5 попыток


Ну да, это ведь последние компании в мире... других стран нету, нет Германии, Швеции, Дании, Японии, ОАЭ и прочих.
153 3146801
>>146780
Мне ПРИЯТНЕЕ писать на go. Я КОМФОРТНЕЕ себя чувствую. Зачем мне твой си, где я буду как бичара ковырять makefile'ы, в консольке в gdb трясущимися руками набирать команды чтобы сделать пошаговый дебаг.

Да я знаю, что это не самый производительный язык в мире. И чё? А я разве участвую в конкурсе "самая скоростная программа года"? Для моих задач он вполне подходит, от того что бандл на Х мегабайт больше - переживу как-нибудь. Больше и больше, не конец света. Глобальной катастрофы не случится, да и похуй.
154 3146813
>>146780

>но я не вижу, чтобы это было возможно


Пока ты не видишь, го уже захватил нишу. Ты со своей критикой опоздал на 7 лет. Тезисы твои даже не читал, пиздуй обратно в свой vala-тред.
155 3146829
>>146780
Всё так.
Только Zig замена Си
156 3146832
>>146801
Литерали тут можно любой другой язык подставить, даже джаву)
А потом рассказывают как go про перформанс)
157 3146909
>>146780

>2) Авторы жаловались, что си долго компилируется, но это го долго компилируется, потому компилирует каждый раз всё целиком. В си я всегда могу выделить библиотеки или компилировать отдельными файлами, а если их не изменять, то сбощик типа make никогда не будет создавать новый о-файл. Таким образом работать будет только компилятор на измененных файлах и компоновщик.


Это ты локально можешь собирать инкрементально, а билд сервер собирает с нуля всегда.

>3) На си можно написать любую программу. Даже если не брать системное программирование, а только прикладное, то даже здесь го не покрывает все направления.


И какие же направления прикладного программирования не покрывает Го, но покрывает Си?
158 3146928
>>146909

>И какие же направления прикладного программирования не покрывает Го, но покрывает Си?


микроконтроллеры? всякие умные кассы/устройства с ограниченными ресурсами?
фото-путин-политика-6466918.jpeg71 Кб, 1080x1080
159 3146971
>>146046

>Писали при этом неидиматичный помойный код "как на джаве"


>Выгнали на хуй


мань за такое не выгоняют. Если человек не хочет придерживаться практик предприятия, то это проблема софтов, а не хардов.
160 3146979
>>146780

>Многие прочат го на замену си


ссылки на этих многих можно? Опять поди какие-то твои протыки хайпожуры.
Го никогда не позиционировался как замена си. Это замена в первую очередь джаве, во вторую питону и мусорным языкам типа пхп и лишь в некоторых кейсах плюсам.
161 3146988
>>146971

>Если человек не хочет придерживаться практик предприятия, то


то его выгоняют
162 3147007
>>146971
Не корми его. Это местный дурачок, он в каждом треде постит охуительные истории, как джависты не смогли перейти с null на nil и их всех уволили.
163 3147042
>>147007
Нет, это не охуительные истории, это необучаемость. Я ему вполне верю.
мимо бывший джавист, видел как скуфы не осиливали новые концепции котлина и устраивали истерики.
164 3147045
>>146928

>микроконтроллеры? всякие умные кассы/устройства с ограниченными ресурсами?


Это не прикладное, это системное.
golang the best.png810 Кб, 1487x905
165 3147046
>>146813
Я не опоздал. 7 лет назад я тоже самое писал. Но ты тут не сидел видимо.
166 3147049
>>146909

>не покрывает Го, но покрывает Си


Консольные утилиты и GUI-приложения

>>146979
Сами разработчики го постоянно пишут о том, что го - это якобы замена си. Что си видите ли долго компилируется у них, что на си писать сложно, а на го просто. Это подхватили и другие сподвижники, даже в ру-коммьюнити примерно тоже самое говорят.
Если буду вновь сталкиваться, то накидаю вам ссылок, если так не верите.
167 3147130
Почему rune является псевдонимом int32, а не uint32? Какой смысл в знаке для символа?
168 3147161
>>147045
пишут то приложения, а не операционные системы
169 3147191
>>147049

>Сами разработчики го постоянно пишут о том, что го - это якобы замена си.



Си уже умер и живёт только в ядрах.
И то, только потому, что множество плюсовиков и множество Kernel хакерс почти не пересекаются. Ну и потому что Торвальдс глуповидный.
170 3147211
>>146979

>во вторую питону


Ну в гугле питон гошкой не заменяют, а дополняют.
171 3147220
>>147049

>Консольные утилиты и GUI-приложения


Консольные утилиты можно прекрасно писать на го. А GUI-приложения одинаково херово пишутся, что на го, что на си.
172 3147227
>>147220
Покажи ГУЙ на Го.
Не видел. Не слышал даже пока.
173 3147265
>>147220
Ага, по 2 Мб хеллоу ворлд в противовес 16 Кб на си.
174 3147272
>>147191

>Торвальдс глуповидный


Альтернатив си нет. Торвальдсу придётся самому написать новый язык на замену си, как в своё время он написал гит. Го, как выше было показано, не может стать заменой си.
175 3147278
>>147265
Ок, ты прав, хелловорлд действительно лучше писать на си.
176 3147302
>>147278
Ты не напишешь столько логики, чтобы она перевесила эти 2 Мб. Посмотри в /bin размеры консольных утилит. Они там все в пределах 100-200 Кб.
177 3147330
>>147049

>Сами разработчики го постоянно пишут о том, что го - это якобы замена си


ты давай не виляй кидай ссылки на этих гигантов мысли
>>147191
вот этот не считается, если что. Даже как-то комментировать лень. Чел поди даже про cgo не знает.
178 3147398
>>146577
Дядя основатель и убер твердят, что надо везде ифэрризнотнил шлёпать. Тот же итератор из-за этого бойлерпринта превращается из нескольких десятков строк в колбасу с ифами. А паниковать типо плохая практика.
179 3147549
>>147265
Нищебляди с 128Gb HDD должны страдать!

>>147227

>Не видел. Не слышал даже пока.


Докер десктоп. Там "фронт" на реакте, а бэк на го.
180 3147584
>>147302

> Ты не напишешь столько логики, чтобы она перевесила эти 2 Мб. Посмотри в /bin размеры консольных утилит. Они там все в пределах 100-200 Кб.


И что мне эта экономия ЦЕЛЫХ 2 мб даст?
181 3147612
>>147584
Консольная утилита же не одна. Умножай на 100, 1000, 10000.
182 3147617
>>146829

>Zig


У меня почему-то негативные ассоциации от такого названия языка
183 3147731
>>147398

>А паниковать типо плохая практика.


Потому что паника в сделана так, что это средство остановить программу, а не выбросить эксепшен. Например: у тебя есть метод который что-то запрашивает из другого сервиса и ты в нём паникуешь, а наверху у тебя рекавер. И всё хорошо пока в один день тебя не понадобится вызвать ещё один сервис и ты не засунешь оба вызова в горутины. И тут то паник закрешит всё приложение, потому что рекавер внутри го фанк() ты забыл.

Когда у тебя из основного потока стартует несколько горутин/виртуальных тредов/асинхронных вызовов, то обработка ошибок уже требует больше усилий. Авторы го решили, что явно возвращать ошибки это хорошо. И в принципе я с ними согласен, в этой части. ЕррорГруп простое и понятное решение, особенно по сравнению с обработкой ошибок в виртуальных тредах или асинках. Но простой, однопоточный код ерроры уродуют безбожно.
184 3147734
>>147731
Вас не ебут за отсутствие рекавера в каждой горутине? Лид строго настрого сказал, что у прода не должно быть возможности к падению, за исключением main, где отсутствие какого-то конекшона приводит к падению на старте.
16963544214783.png893 Кб, 1024x1024
185 3147764
>>147398
Есть еще один подход к паникам, который лично мне заходит: отделять потенциальные ошибки кодеров от всех остальных.
Приведу пример для метода репозитория:
func UpdateUserById(user *User) error {
if user.Id == uuid.Nil {
panic("user id is missing")
}
// UPDATE users SET ...
}
Здесь нет смысла возвращать что-то через return, поскольку это не ожидаемая кодом ошибка, а прямой обсер программиста (либо проебались в валидации уровнем выше, либо вообще вызвали не тот метод). И его не нужно обрабатывать выше по стеку, здесь надо срочно создавать баг в джире и фиксить, пока данные таблиц кривым кодом не успели похерить. Все паники при запуске сервиса подчиняются той же логике: если мы не запустили инстанс БД или написали неверный путь к секрету, то тоже не даем запуститься заведомо невалидному коду и сразу паникуем.
186 3147765
>>147764
Я тоже такие закладки делаю. По сути на потенциально невероятные условия, которые могут возникнуть только от коррекции кода.
187 3147799
>>147046
Я-то как раз сидел и троллил местного школьника. А потом я больше года писал на го и понимаю за что его можно любить и ненавидеть. И то что ты тут придумываешь, даже близко не проблемы go.
А настоящие проблемы за 7 лет почти не поменялись
188 3147996
>>147734

>Вас не ебут за отсутствие рекавера в каждой горутине?


На ебут за панику в коде.

>за исключением main, где отсутствие какого-то конекшона приводит к падению на старте.


У вас умстивенно отсталый работает лидом? Вот это инклюзивность!
Конешен такая штука, сейчас его нет, а через секунду он появился, а еще через 10 минут пропал снова. Падать надо если что-то unrecoverable типа не выставленный обязательный флаг, не найден ресурс и т.п.
189 3147997
>>147764

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


Точняк! Поэтому стоить закрешить приложение, которое в этот момент еще сотню других запросов обрабатывало.
190 3148065
>>147997
Почему сразу крашить? Рекаверим в 500 ошибку и вместе с трейсом отсылаем клиенту. Да и большинство таких ошибок до прода не доедут, отловят еще на E2E тестировании.
1715114379217.jpg538 Кб, 1080x1440
191 3148101
17089349719990.jpg813 Кб, 1920x1080
192 3148131
>>148101
У нас из таких волчар половина кандидатов на техсобесах попадается, лол. Обычно по теории у них все прилично, базовые вопросы выучивают на зубок, а палятся тупо на незнании синтаксиса при решении задач. Когда человек говорит, что make([]int, 6) инициализирует слайс шестерками реальный случай, причем теорию len/cap рассказал за 5 минут до этого, то обычно всё с ним становится понятно. Пишите больше кода, вкатуны, это реально палится.
193 3148346
>>148131
Они с накрученным опытом?
194 3148347
>>147799
Мне не комфортно писать на языке, если я понимаю, что результат будет далек от оптимального и что есть язык, на котором я могу написать более эффективные программы.
195 3148360
>>148131
Еще пару лет назад в /pr/ висел рекламный баннер ката академии. Они специализируются на обмане кабанычей, заставляют своих учеников переехать в Москву, заучить методички frontend/java/go разработки и устраивают их в компанию с помощью менторов. Взамен вкатун несколько лет платит дань. Таких пассажиров полно в сбере сейчас, которые с 2020 года сидят младшими разработчиками.
196 3148491
>>148065

>Рекаверим в 500 ошибку и вместе с трейсом отсылаем клиенту.


Нахуй паниковать, если метод и так возвращает ошибку? Рисковать проебать рековери, чтобы не писать один дополнительный if - это конечно неибаццо лайфхак.

>Да и большинство таких ошибок до прода не доедут, отловят еще на E2E тестировании.


Зато доедут самые сложные баги, которые вы не поймали на тесте.
16875943680160.jpg688 Кб, 1214x1280
197 3148513
>>148491
Надо различать ошибки (один из ожидаемых сценариев работы программы) и прямые нарушения контрактов, заложенных кодерами. Ты каждое разыменование указателя и хождение за элементом слайса/поля структуры будешь проверками обмазывать? Там ведь тоже паники вылезут при обсере кодера, и на них никаких проверок не напасешься, и мой пример выше превратится во что-то такое:

func (r UserRepo) UpdateUserById(user User) error {
if user == nil {
return errors.New("user is nil")
}
if user.Id == uuid.Nil {
return errors.New("user id is missing")
}
if r.db == nil {
return errors.New("db client is nil")
}
// UPDATE users SET ...
}

Спасибо, я уж лучше панику брошу.
198 3148669
>>148513
Это проверяется на уровне сервиса.
if user.Id == uuid.Nil {
return errors.New("user id is missing")
}
зачем ты это проверяешь? ты 100% передаешь инстанст на DB
if r.db == nil {
return errors.New("db client is nil")
}
17089685313010.png79 Кб, 284x339
199 3148694
>>148669

>Это проверяется на уровне сервиса.


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

>зачем ты это проверяешь? ты 100% передаешь инстанст на DB


А если не передам? Вот забыл я при старте инициализировать коннекшен и всё, приехали. Чем это отличается от передачи nil вместо айди в метод репы или разыменования указателя на User? Та же потенциальная паника добавил ее для абсурдности, если что.
Мне надоел этот спор, надеюсь за 3 поста с примерами кого-нибудь да сагитировал не бояться паниковать.
200 3148894
Почему го-сообщество такое токсичное?
201 3148925
>>148894
Потому что иди нахуй, вот почему.
202 3149088
>>148513
1. По кодстайлу видно, что ты стайл гайды ни асилил. Даже ошибки не можешь нормально создать.
2. Ты сам вначале привел говнокод >>147764 где ты if-ом паникуешь. А потом начинаешь разводить маняфантазии про то, что много if-ов ЭТА СЛОЖНА1111

>>148694

>А если не передам? Вот забыл я при старте инициализировать коннекшен и всё, приехали. Чем это отличается от передачи nil вместо айди в метод репы или разыменования указателя на User?


Ты реально тупой. Инициализация соединения с базой проверятеся ЛЮБЫМ тестом который так или ниче задействует DAL, а вот мест из который могут вызвать метод этого DAL вагон и всегда появляются новые.

Именно поэтому умные люди, на своем опыте работы над большими проектами, из практики, вывели правило - don't panic. Но нет, дебилы продолжают

>Да и большинство таких ошибок до прода не доедут, отловят еще на E2E тестировании.

16639629524260.png641 Кб, 576x512
203 3149161
>>149088
Чел, ты серьезно? Я же тебе долбоебу уже который раз говорю: не путай ошибку как нормальный сценарий работы и заведомо нерабочий код. Передать uuid.Nil в update-метод является косяком уровня передачи nil вместо &User{}, ну нахуя возвращать на это ошибку? Или ты реально каждый указатель в репе отдельно проверяешь на nil, чтобы не дай бог не паникнуть ненароком?

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


И поэтому умные люди для DAL-слоя пишут контракты через интерфейсы, где черным по белому в комментариях будет написано: можешь обновить юзера с такими полями, но если пришлешь nil вместо айдишника, то твой код говно и работать заведомо не будет. Не нравится — ебись с валидацией на сервисном слое, но юзера изволь обновить по правилам контракта. А тащить ошибки валидации с кучей проверок в метод, который просто дергает клиента БД то еще говноедство, учись разделять ответственность.
И чего порвался с коннекшена, я же специально дописал для особо одаренных: >добавил ее для абсурдности, если что
204 3149258
>>149088

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


Что за стайл гайды и чем тебе errors.New() не нравится?
Убер говорит, что всё норм https://github.com/uber-go/guide/blob/master/style.md#errors
205 3149598
>>149161

>Я же тебе долбоебу уже который раз говорю: не путай ошибку как нормальный сценарий работы и заведомо нерабочий код. Передать uuid.Nil в update-метод является косяком уровня передачи nil вместо &User{}, ну нахуя возвращать на это ошибку? Или ты реально каждый указатель в репе отдельно проверяешь на nil, чтобы не дай бог не паникнуть ненароком?


Заведомо нерабочие у тебя мозги.

Можно один раз проверить значение при создании, например создаешь структуру и проверяешь что конект к базе не nil, а дальше уже используешь без проверок на nil. Потому что поле приватное и есть только одно место где оно инициализируется, а там как раз есть проверка. И совершенно другое дело метод DAL который будет вызывать хер знает кто и откуда.

>И поэтому умные люди для DAL-слоя пишут контракты через интерфейсы, где черным по белому в комментариях будет написано: можешь обновить юзера с такими полями, но если пришлешь nil вместо айдишника, то твой код говно и работать заведомо не будет. Не нравится — ебись с валидацией на сервисном слое, но юзера изволь обновить по правилам контракта. А тащить ошибки валидации с кучей проверок в метод, который просто дергает клиента БД то еще говноедство, учись разделять ответственность.


Ты дебил зашоренный уперся в свою контракты, как будто если написать делайте хорошо, а плохо не делайте это сразу избавит от ошибок.

Вопрос в последствиях, если в Java/C# у тебя в худшем случае будет остановлен один поток. То в Go у тебя вообще весь процесс может быть закрешен.
inb4: решит кто-то паралельно вставлять пользователей и запустить 10 горутин и твой рековер наверху идет нахуй. Потому нормальные люди с опытом работы над большими проектами и вывели правило don't panic и пиздят говноедов которые пытаются мычать что-то про контракты функции.
206 3149616
>>149258

>Что за стайл гайды и чем тебе errors.New() не нравится?


Ты читать не умеешь?

>Does the caller need to match the error so that they can handle it? If yes, we must support the errors.Is or errors.As functions by declaring a top-level error variable or a custom type.

16467460033040.jpg106 Кб, 1280x1216
207 3149691
>>149598
Я тебе про Фому, а ты всё про Ерёму, да почему же ты такой баран. Офк я не буду коннект каждый раз проверять на nil, я же не долбоеб, и добавил про него чисто ради стеба. Давай про другое.
По твоей логике перед проверкой user.Id == uuid.Nil и возвратом ошибки нужно отдельно проверить user == nil и тоже вернуть на это ошибку. А то вдруг кто-то наплюет на контракт и случайно передаст nil вместо указателя на юзера и крашнет всё приложение? Давай уж лучше хоть в чем-то доверять прогерам.
Для меня это шиза и паранойя чистой воды, все паники мы в жизни не отловим. И этот пункт из уберовского гайд-стайла как раз и говорит

>A program must panic only when something irrecoverable happens such as a nil dereference.


Что user.Id = uuid.Nil для update-метода равносилен user = nil, оба сценария irrecoverable для DAL слоя и поэтому можно не обмазываться дополнительными проверками и просто паникнуть. Я не буду писать паники при валидации в сервисном слое, этот случай работает только в репозитории и только для айдишника как заведомо нерабочий. Усёк наконец?
17152498225360.png13 Кб, 553x360
208 3149935
Если гошка такой популярный язык, то почему даже перл с эрлангом популярнее него в качестве сервер сайда?
209 3149954
>>149935
Гошка никогда популярной не была. Это очень специфические веб микросервисы прикрученные к монолитам на указанных япах. Сейчас только некоторый бигтех в него упоролся из-за возможности балансировки нагрузок. Ну ещё блогеры хайпуют голенг.
210 3150027
>>149258
Перепись населения в Джабапету завершена, и теперь вам следует отправиться в Сукуфо Загон.
211 3150385
>>149935
Почему люди с двухзначным айкью носятся с этой бесполезной картинкой и даже не интересуются по какой методологии w3c ее составила?
212 3150399
>>149954
Смотрел этого го-евангелиста и что-то пригорело от подхода к найму гоферов. У вас тысячи пытаются устроится, но нет - мы будем искать через знакомых, левые чаты таких же джунов без опыта, а может и хуже.
https://www.youtube.com/watch?v=0axfYXyzHCE
213 3150404
>>150399
Чел писал на Перле, что ты от него хочешь?
214 3150405
>>150399
сисадмин -> девопс -> перлист -> гофер
идеальная прогрессия гофера
Screenshot20240510113818.png35 Кб, 825x219
215 3150414
>>150399
Соглы?
216 3150425
>>150414
Почему они просто не выпустили библиотеку, а сделали целый язык?
217 3150431
>>150425
Это хороший вопрос
218 3150460
>>150414
Ну тогда Python это просто сахар для C
photo2022-03-24 14.30.50.jpeg81 Кб, 686x676
219 3150463
>>150460
пик отклеился
220 3150480
ясн, гошку запомоили пидоры инфоцыгане
221 3150484
>>150480
Вот в моих реках вылезло после просмотра ролика со скуфом:
https://www.youtube.com/watch?v=Zh8W8_Agf5M
222 3150504
>>150484
Что-то мало 150к в месяц, в джаве можно 200к получать.
223 3150576
>>149935
Интересно, это в каком это мире серверов на руби больше чем на джаве?
224 3150644
>>150576
Джава - это энтерпрайз, а не веб-сайты
225 3151899
Че лучше, го или питон? Да, влетел как пидр с тупым вопросом. Но все же?
226 3151917
>>151899
для чего?
227 3151950
>>151917
Для того чтобы писать всяких ботов, сайты, игори простенькие типа Холлоу Найта, обвешаться тремя мониторами и представлять себя кул-хацкером, который Пентагон взламывает. Я прост гуманитарий, начинал учить и питон, и ПХП, и С++. Больше всего продвинулся в питоне, даже написал первый калькулятор с интерфейсом и начал писать приложуху с прогнозом погоды, но потом чет работа-хуёта, прошел уже год и я все забыл. Вот ща опять думаю че бы начать.
228 3151995
>>149691

>По твоей логике перед проверкой user.Id == uuid.Nil и возвратом ошибки нужно отдельно проверить user == nil и тоже вернуть на это ошибку. А то вдруг кто-то наплюет на контракт и случайно передаст nil вместо указателя на юзера и крашнет всё приложение? Давай уж лучше хоть в чем-то доверять прогерам.


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


Ты свои шизоидные высеры не выдавай за мои слова. Для начала вспомни что ты сам высрал:
>>147764

>Есть еще один подход к паникам, который лично мне заходит: отделять потенциальные ошибки кодеров от всех остальных.


>Приведу пример для метода репозитория:


>func UpdateUserById(user *User) error {


>if user.Id == uuid.Nil {


>panic("user id is missing")


>}


>// UPDATE users SET ...


>}


>Здесь нет смысла возвращать что-то через return, поскольку это не ожидаемая кодом ошибка, а прямой обсер программиста (либо проебались в валидации уровнем выше, либо вообще вызвали не тот метод). И его не нужно обрабатывать выше по стеку, здесь надо срочно создавать баг в джире и фиксить, пока данные таблиц кривым кодом не успели похерить. Все паники при запуске сервиса подчиняются той же логике: если мы не запустили инстанс БД или написали неверный путь к секрету, то тоже не даем запуститься заведомо невалидному коду и сразу паникуем.


Ты сам предложил делать проверку и паниковать, а теперь пиздишь, что все паники не отловишь.

Моя позиция совпадает с позицией Убера - код не должен паниковать сам кроме инициализации и по возможности должен избегать других паник. Т.е. если у тебя DAL который может вызвать кто угодно, то стоит проверить что аргументы не nil, а если nil то вернуть error который вызывающий сможет обработать.
229 3152192
>>151950

>Больше всего продвинулся в питоне


ну значит тебе лучше питон
230 3152751
Господа,есть вопросец. Везде пишут что по сравнению с платформенными потоками горутины управляются планировщиком го а не операционной системой. При этом максимальное количество горутин все равно завязано на максимальное количество потоков процессора. В чем смысол?
231 3152757
>>139167
Так в облаках зачастую одна shared jvm типо хазелькаста позволяет ещё и хип делить между несколькими репликами приложения,это же охуеть можно
232 3152787
>>152751
У каждого потока есть очередь горутин, где они выполняются. Если у тя куча iowait операций, то имеет смысл увеличить число самих потоков
233 3152797
>>152787

> У каждого потока есть очередь горутин


Я не понимаю,это утверждение противоречит тому что количество горутин ограничено максимальным количеством потоков процессора. Это я не прав или ты?
234 3152809
>>152797
Ты не прав, количество горутин не ограничено
235 3152830
>>152809
Фигасе,буду знать, почему-то чувак на ютубе показывал тип если в runtime.chtototam() задать единицу то новые горутины не будут даже запускаться
236 3152946
>>152751

>При этом максимальное количество горутин все равно завязано на максимальное количество потоков процессора.


Нет.

Максимальное количество одновременно выполняющихся горутин равно числу ядер процессора. А общее число горутин намного больше.
237 3153025
Есть ли вообще шансы, занимаясь вечером после работы 1-2 часа, выучиться на го-программиста? Речь не просто про сам язык, его-то уже выучил, а про углубленное программирование на нём. Всякие микросервисы, кафки, грпс и т.п. Мне вот просто кажется, что с такой скоростью изучения, го уже будет не актуален в будущем.
238 3153091
аноны, подскажите, как оно на деле делается.

вот у нас есть микросервисы, хуе-мое. а что в гошке как гейтвей юзается? т.е вот есть grpc сервисы или через любую шину которые общаются, но как это в гейтвей выводить? т.е если у меня клиентсайд аппка на реакте или еще какой хуйне, то обращаться я все равно должен в какой-то fiber, gin или чет еще, чтобы по рест апи все шлепало через гейтвей?

короче мой вопрос звучит так
как правильно архитектуру готовить?

если слишком тупо звучит извините я еблан но хочу стать лучше
239 3153283
Скорость голэнг почти как скорость в пхп. Объясните зачем голэнг, если пхп делает тоже самое, только ещё и предлагает миллиард проверенных решений, тонну всего из-под коробки, огромнейшее комьюнити, ООП, спизженные фичи и либы у джавы, простой вход, много работы?

Такое чувство, что голанг - это просто надутый пузырь с убогим языком без ничего, который маркетологи из гугла пытались втюхнуть.
240 3153299
241 3153326
>>153283
это ты типа хелловорлд написал и экстраполируешь его результаты на большие программы?

Этот способ ненадежный, юноша.
242 3153336
по-моему, я уже лет 10 назад читал всякие фантазии, что, мол, хорошо бы в php сделать какой-нибудь фреймворк для постоянных объектов и тогда скорость НАКАНЕЦТА будет сравнима со взрослыми языками.
И главная проблема PHP в том, что они 30 лет пишут код, который за собой не убирается. Расширения всякие и все что ты обзываешь "миллиард проверенных решений, тонну всего из-под коробки" - это все писалось с учетом одноразового запуска.

Короче - хуйня.
243 3153367
>>153326
О каких больших программах на го идёт речь? Это микросервисный язык без ничего.

Хелоуворлд юзают во всех бенчмарках. Можешь предложить что-нибудь на го посложнее, сравним.
244 3153411
>>153091
Ну ты же сам ответил на свой вопрос... У тебя есть api-gateway с котторым общается фронт через rest-api, а сам api-gateway с другими сервисами через grpc
245 3153433
>>153336

>пук


Вот в моих скринах голэнг обпукался при хелоуворлде. Либы в пхп скачивают и запускают столько, сколько в твоём голэнге за всё время его существования. А уж говорить о том дерьмо-лапше-коде, который понаписывали гошники...
Помню какой-то гошник даже пыхтел над либой для го, пытаясь повторить пхпшные функции из-под коробки типа работы с массивами. Это гошная обосрака хоть что-нибудь вообще умеет?
246 3153442
>>153367

>Хелоуворлд юзают во всех бенчмарках. Можешь предложить что-нибудь на го посложнее, сравним.


буквально ВСЕ

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

Ты вообще какой фреймворк для Go HTTP заюзал? Их же десятки и все широкоиспользуемые!
247 3153478
>>153442
Напиши комбайн, проверим. В мире разработки все сравнивают что-то простое в бенчмарках.
Тест хелоуворлда показывает главное - чистый RPS, что тоже важно для понимания нагрузок.
248 3153489
>>153478

>В мире разработки все сравнивают что-то простое в бенчмарках.


Если кратко - нет.
Наличие гигантского количества статей на Хабре, Phoronix, и что там еще, никак не показывает что эти люди правы и поступают умно.

Допустим, существуют тесты TPC. Тебя их наличие и старинная история не смущает?
249 3153522
>>153025

>Есть ли вообще шансы, занимаясь вечером после работы 1-2 часа, выучиться на го-программиста?


Смотря что под этим понимать. Контрибутить в OSS проекты или пилить свои - вполне. Соответсвовать ожиданиям херок о 5+ опыта в лидере рынка - нет.
250 3153540
>>153489

>Допустим, существуют тесты TPC. Тебя их наличие и старинная история не смущает?


Ну ты загнул, думаешь зуммеры слышали про TPC? Там чтобы грамотно реализовать каждый тест нужна целая команда перформанс инженеров. В своё время у Oracle, IBM, Microsoft были специальные команды которые писали реализации.

В общем это всё легаси говно, которое не стильно, не модно, не молодежно.
251 3153577
Когда использовать буферезированные каналы а когда обычные?
252 3153628
>>153489
Ну так показывай бенчмарки, которые ты считаешь правильными.
В научном подходе насрать что ты там думаешь, если на сегодняшний день есть только бенчмарки по хелоуворлд - значит это единственная истина и 100% показатель сравнения скорости языков.
И тут мы знаем, что пхп не уступает голэнгу по скорости.
253 3153642
>>153025
Есть конечно

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


Это возможно, но от этого никакой язык не застрахован. Ты хочешь просто вкатиться или именно в го?
254 3153711
>>153283

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


Возможно что-то в этом есть!
255 3153800
>>153642
Да, хочу в го. Язык мне в целом понравился, а главное, что тут нет фреймворков и орм. До этого пробовал джаву и выгорел на конфигурировании бинов в спринге.
256 3153804
>>153283

> Скорость голэнг почти как скорость в пхп. Объясните зачем голэнг, если пхп делает тоже самое, только ещё и предлагает миллиард проверенных решений, тонну всего из-под коробки, огромнейшее комьюнити, ООП, спизженные фичи и либы у джавы, простой вход, много работы?


Хуй знает, кабану нравится, кабан платит мне котлету. И задачи интересные

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


Кому и зачем маркетологи пытаются втюхать язык с полностью оперсорсной инфраструктурой? Без наезда, просто хочу мнение услышать
>>153628

> И тут мы знаем, что пхп не уступает голэнгу по скорости.


Ну вообще-то уступает, смотри свой же скриншот
257 3153826
>>153800

>а главное, что тут нет фреймворков и орм


>До этого пробовал джаву и выгорел


Типичный вкатун в го. Не смог вкатиться в нормальный язык с хорошей инфраструктурой - добро пожаловать в GOвно, писать велосипеды))
258 3153871
Решил сменить яп вката на голанг из-за высоких зарплат. Какие курсы лучше взять, чтобы быстрее и полегче?
259 3153886
>>153800

>Да, хочу в го.


Ну так а в чем вопрос? У тебя тогда и вариантов нет

>главное, что тут нет фреймворков и орм


есть и фреймворки (fx) и орм (Gorm)
260 3153892
>>153804

>И задачи интересные


Например?
261 3153906
>>153892
>>153826

> добро пожаловать в GOвно, писать велосипеды))


Пишу велосипеды, чувствую себя ахуенно, никакого выгорания. Работать надо так чтобы кайфовать, а не соответствать мнению чуханов из интернета
262 3153909
>>153628

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



Сознательно отбросить очевидную информацию и принять более удобную тебе гипотезу - это НЕ научный подход.
Обычно в науке оппонирование часть работы и возможно оплачивалось бы, но ты просто шиз неученый. Мне лень.

До свидания.
263 3154093
>>153826
Когда кофигурируешь готовый фреймворк, то говняное ощущение как после работы с Wordpress, вроде всё красиво и работает, но сделал это не ты.
А когда пишешь велосипед, то офигенное чувство, что это разработал сам своими руками.
264 3154096
>>153886

>фреймворки (fx) и орм (Gorm)


Фу-фу-фу! Надеюсь работать с ними не придётся
265 3154107
>>154093
Сычев, почему до сих пор не работает как надо? Когда будет работать КАК НАДО? Что значит тебе еще надо доделать? Ты уже второй месяц доделываешь.
266 3154162
>>154107
Я конечно разработчиком не работал, но по своему опыту могу сказать, что всегда умел донести до руководства что я сделал и сколько времени мне ещё понадобится, чтобы доделать остальные фичи. Сроки само собой брал с запасом, но выполнял раньше. Так что проблема здесь не в языках и технологиях, а умении общаться с начальством.
267 3154184
>>154162
Это если им не с кем тебя сравнить, а поскольку ты будешь джуном, то никто не оценит твоих стараний по написанию собственного велосипеда, если уже есть готовое решение позволяющее сделать это быстрее и более понятное другим разработчикам.
мимо
268 3154191
>>154184
Но это не же не го-вэй! Язык создан велосипедистами для велосипедистов
269 3154300
Что думаете насчёт авторского курса Thinknetica от Дмитрия Титова?
270 3154473
Аноны, тут есть хоть кто-то, кто устроился на работу джуном Go без опыта работы с другими языками и не крутил его?
271 3154500
>>154191
>>154184
Я никак не могу понять, почему такие же разработчики велосипедность считают минусом? Писать свой велосипед гораздо интереснее чем унылую бизнес логику, а кабан кабаныч готов платить за мой кайф, ещё и больше чем на других стеках при схожем опыте/обязанностях
272 3154520
>>154300
Немного оверпрайс и в целом никакой такой супер ценной информации нету. Тысяч за 20-30 такой курс был бы заебись.
273 3154609
>>154300
Как по мне автор пытается выдать много информации за маленький промежуток времени, но делает это сумбурно, постоянно путается, торопится и забывает сказать что-то важное. Плохо готовится к вебинарам, тратит кучу времени на технические проблемы, примеры кода не проработаны, часто он их пытается дописать во время лекции, а когда не получается, то говорит, что это наверно баг какой-то.
Не понятно на кого рассчитан курс. На первом занятии пишем хеллоуворлд, а на втором уже надо знать весь язык и писать сетевой сервис, хотя на следующих 10 вновь пытается рассказать какие-то основы, но дз уже совсем не соответствуют лекциям. Как в меме про кружочки и сову.
Длительность курса 3 месяца, что слишком мало, чтобы сделать выучиться даже на джуна.
Из отзывов видно, что ни один студент не поблагодарил его за успешное устройство на работу. Они там пишут, что узнали много нового, чтобы дальше изучать го.
274 3154637
>>154473
У меня вроде всё получается, но периодами бросаю, потому что мотивация заканчивается.
Сейчас вот очередной кризис из-за того, что го создаёт слишком жирные бинарники в то время как на си можно создавать на порядки меньшие.
Не знаю, смогу ли после этого удара оправится и снова начать писать на го.
275 3154643
>>154473
Ну я стажером на го устроился. Сам го не знал практически, до этого круды на спринге писал дома. Коммерческого опыта никакого не было.

Но в итоге я на стажировке 3 месяца посидел и меня уволили, так как помимо меня было еще два других стажера, которые гораздо лучше перфомили чем я.
276 3154649
>>154643
>>154637
Ребят, а у вас вышки есть? Вообще интересно ее наличие (особенно по ИТ теме) играет существенную роль при трудоустройстве или похуй? А то я сам студент, изучаю Go, коммерческого опыта понятное дело с другими языками нет, вот и интересуюсь у вас
277 3154658
>>154649
У меня вышка в области компьютерных наук. Но работодателям на неё сейчас пофиг, смотрят только на стаж.
278 3154662
>>154649
Я студентом был, когда на стажировку пришел, откуда меня через 3 месяца уволили.
Другие стажеры тоже студентами были. Вышка кажется у всех была, а тимлид и вовсе какое-то крутое место закончил и олимпиадником был в прошлом.
279 3154667
>>154662
>>154658
Я вас понял, спачибо за ответы. Буду дальше превозмогать
280 3154677
>>154667
Тут главное не просто на стажирову залезть, а еще сделать так, чтобы после нее тебя в штате оставили. Иначе обратно на рынок труда не попадешь. С 3 месяцами опыта работы будет казаться, что тебя просто с испыталки уволили. Ну и вообще вопросы будут, почему после стажки тебя не оставили в штате.
281 3154826
В реддите пишут что после го писать на джаве - все равно что говно жрать. Это гуглолахта? Или в этом есть какая то доля правды?
282 3154870
>>154826
Что ты хотел услышать от говноедов if err != Nil? Он говно уплетают за обе щеки, и нахваливают, главное что не джавовское.
283 3154881
>>154826
А то! На джаве все фреймворки давно написаны, ты сидишь и педалишь бузинес логику как сраный паджит. На го ты сперва пишешь utils.go, потом пишешь свой спрингбут, а только потом какой-то джун поверх твоего кода пытается что-то изобразить полезное. На го ты творец, еба!
284 3154905
>>154826
Счас бы божественную джаву сравнивать с ноунеймом-калекой.
GOвно будут жрать гошники, пытаясь вкатиться в этот недоязык на 3.5 проекта. А джавистов на руках носят и осыпают деньгами.
285 3155561
>>154609
Попробовал сейчас сделать домашку для 2 модуля и оказалось, что предложенный автором курса модуль не работает как должно, т.е. тупо не может найти ссылки на странице, что ограничивает поиск первой же страничкой.
В целом, стоит добавить, что он не только фиговый препод, но и фиговый программист.
286 3155578
>>154637

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


>Не знаю, смогу ли после этого удара оправится и снова начать писать на го.


Дристанул лавандовым рафом.
287 3155716
Есть ли тут аноны которые перекатывались из го в джаву? Что-то я поработал пол года и мне не понравилось
288 3155887
>>155716
Ты вначале попробуй гэпнуться, а то может тебя не го заебал, а работа.
289 3155890
>>155578
Потому что многие лезут в программирование ради денег и на качество программ им наплевать. Тяп-ляп и готово. А то, что программа занимает какие-то нереальные объёмы никого не волнует.
290 3155891
>>155887
С моим опытом геп это невозможно,даже если я смогу перейти на джаву это будет новая команда внутри компании а не новая компания
291 3155908
>>154500

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


Умный кабан не готов.
Да просто времени не останется.
292 3156147
>>155890

>Потому что многие лезут в программирование ради денег



Можно подумать, что те, кто по зову души, могут удовлетворить запросы рынка.
293 3156305
>>154500

>Я никак не могу понять, почему такие же разработчики велосипедность считают минусом? Писать свой велосипед гораздо интереснее чем унылую бизнес логику, а кабан кабаныч готов платить за мой кайф, ещё и больше чем на других стеках при схожем опыте/обязанностях


А потом тебе надо запилить новую, большую фичу в велосипед, который писал твой коллега с очень специфичным взглядом на разработку. И вот тут-то и настигает прозрение, в чем разница между библиотекой которой пользуются миллионы и говноподелием из Рога и Копыта.
294 3156308
>>155890

>А то, что программа занимает какие-то нереальные объёмы никого не волнует.


В первую очередь это не волнует клиента, который за это платит
image.png923 Кб, 1300x753
295 3156315
>>155890

>Потому что многие лезут в программирование ради денег и на качество программ им наплевать. Тяп-ляп и готово. А то, что программа занимает какие-то нереальные объёмы никого не волнует.


Тебя только что разморозили?

Это в 80-х под качеством программы понималось насколько хитровыебанный у неё код, чтобы она по минимуму место занимала. А сейчас хорошая программа, это программа с четким и понятным кодом, которую легко и просто поддерживать и развивать.

Если у тебя ОКР и хочется писать маленькие программы - пиздуй в демосцену, Хули ты приперся в промышленную разработку и бухтишь, что тут не так как на сцене?
296 3156381
>>156305
Лично я только пишу велосипеды и кайфую, а фичи пилят джуны и прочие чье мнение мне не интересно
>>154905

> GOвно будут жрать гошники, пытаясь вкатиться в этот недоязык на 3.5 проекта. А джавистов на руках носят и осыпают деньгами.


Это троллинг тупостью или ты ни дня не работал в индустрии?
297 3156635
>>156315
У меня на бобины встал!
298 3156759
>>156635
Да ты бы и перфокарту
299 3156764
>>156381

>Лично я и есть тот коллега мудак.


Я тебя понял.
300 3157432
>>156305

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


Да, второе ты можешь менять как угодно, а в первое ты хуй протащишь патч нужный именно тебе, и придётся держать внутренний форк библиотеки.
301 3157668
Какие типы можно использовать для ключей в мапе? На ум приходит только целые числа и строки.
302 3157673
>>157668
По идее любые неизменяемые
303 3157678
>>157673
Мне казалось, что главный критерий - сравниваемость.

И точно не любые, потому что тут нельзя как в джаве определить функции equals и hashCode.
image.png169 Кб, 660x800
304 3157725
>>157432

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


Внутренний форк ничем не уступает самописному велосипеду и даже местами лучше. Например в него можно портировать багфиксы и фичи из основной библиотеки.
305 3157727
>>157678

>И точно не любые, потому что тут нельзя как в джаве определить функции equals и hashCode


Структуры можно использовать как ключ, если все поля компарабо.
306 3157989
Можно ли создать свой тип коллекции и проходить по нему циклом for-range?
307 3158038
>>157989
Пока - нет, но обсуждение этой фичи идёт.
308 3158285
>>157989
>>158038
type Foo []*int
bar := Foo{1, 2, 3}

Не оно?
309 3158307
>>158285
У меня нехватает слов описать этот пиздец.
310 3158394
>>158285
Это просто алиас, а не свой тип
311 3158586
>>158394
В чем принципиальное отличие? Задачу коллекции то выполняет
>>158307
Что не так? Я не го разраб если что
312 3158600
>>158586

>Что не так? Я не го разраб если что


Как сказал >>158394 это не тип, это а алиас.

Разница в том, что новый тип коллекции может реализовать коллекции недоступные стандартным коллекциям. Например сортированную map, реализации sorted map есть, но итерации for-range для них нет.
313 3158648
>>158394
https://go.dev/play/p/W-DiXqwyqCC
Формально новый тип же. Кастомный итератор не написать, да.
314 3158980
>>157989
можно сделать что-то типа джавовского foreach с лямдой, или это не подходит?
315 3159444
Стоит ли в 27 лет идти на первый курс какого-нибудь МИРЭА чтобы вкатиться в го
316 3159463
>>159444
Если у тебя возникает вопрос в такой постановке - иди лучше в дурку, ебать.
Лучше спроси задание у антона, почитай спеку языка и awesome страничку и сделай задание.
317 3159483
>>159463
Но меня не возьмут на РАБоту без образования. У меня даже смежного нету, просто домосед.
318 3159523
>>159483

>Но меня не возьмут на РАБоту без образования


Это что, новая мантра? Ты пробовал? Или ты просто в голове себе предполагаешь что не возьмут?
319 3159564
>>159523
Ну ты просто представь на секунду, просто какой-то левый хуй, никаких пруфов что он хоть какие-то мозги имеет нет (кроме того что он зазубрил роадмапу и выучил как работают слайсы), просто прошел тур го, курсы на ютубе и степике, сваял по гайду какой-то всратый шаблонный сервис, реального опыта ноль, опыта командной работы ноль, трудовая девственно пустая, по возрасту уже дед. Ебало HRа представил?
320 3159623
>>159564
А ты представь что какой-то левый скуф за 30 только из универа без опыта работы вкатывается в стажёры.
Вкатывайся лучше сейчас, чем через 4 года.

> без образования


Ну ладно, поступи, но это чтобы военком отъебался, не более.
321 3159644
>>159623
В универе разве не научат БАЗЕ? Это сразу + уважение, не макака какая-то, а настоящий человек с техническим мышлением.
322 3159692
>>159564

>просто представь


Не надо ничего представлять. Это только у тебя в голове. Американцы называют это limiting beliefs. К примеру, я вижу на улице красивую девушку. Но представляю что она мне откажет. И начинаю накручивать себя, эх если бы у меня был автомобиль, если бы я был худым... И в итоге Васёк, который ничего в голове не воображает, а просто подходит без задней мысли, он уже встречается с красивой бабой а ты сосёшь хуй.
323 3159712
>>159692
Просто без задней мысли откликаться на 100к+ зепку с улицы потому что я поучил го полгода, получается?
324 3159746
>>159712
И чё? Чё может случится? Откажут и ты сольёшься? А ты ещё раз подай! Ещё раз откажут? Ещё раз подай! Не надо сливаться после первых 5-10 отказов. Это в твоём идеалистическом мире такое невозможно. В реальном мире куча фейковых веб-разработчиков берут предоплату и уходят в закат. До тех пор пока ты хотя бы собесов 50-100 не прошёл, это только твои бла-бла. Вот когда ты обойдёшь и там тебе скажут что да, действительно, нам нужно только с корочкой, тогда это будет уже реальность.

А представлять... Ты представь, что я бульдозер. Для меня слова "нет" не существует. Я настырный, мотивированный, умный и кого угодно заебу до смерти. Эти чмыри даже не представляют, какого ценного работника потеряют, если откажут. Они будут кусать локти и умолять вернуться на 300к, лишь бы пришёл к ним обратно...
325 3159882
>>159444

>Стоит ли в 27 лет идти на первый курс какого-нибудь МИРЭА чтобы вкатиться в го


Если будешь нормально учиться, а не ебланить - то учеба дисциплинирует, учит самому искать инфу и может дать базу по CS смотря какой факультет. Плюс херочки любят корочки, уже не текут, но плюс к резюме. Плюс поймешь, а ты вообще можешь учиться и усваивать новое или нет.

Так что если жизненная ситуация позволяет иди.
326 3159954
>>159644
База это хорошо. Но только не когда у тебя к 30 годам есть только база.
Так что в универе клювом не щёлкай, и вообще подумай о вечернем отделении.
328 3161586
>>159444
мирэа это параша из параш
в рф котируется только топ образование типа мгу вшэ мфти итмо и тп
если собрался ради диплома идти то иди на заочную парашу дистанционную типа мтуси и учи сам все, быстрее в разы выйдет и больше знать будешь
image.png113 Кб, 498x280
329 3162482
>>121242 (OP)
Не пора ли из шапки выпизднуть старую роадмап и заменить на реально обновляющуюся? Роадмап из шапки это какой-то форк от roadmap.sh трехлетней давности

Вот обновленная: https://roadmap.sh/golang

Дополнительно по CS: https://github.com/jwasham/coding-interview-university
330 3163615
На ентом вашем го можно agar.io запилить?

А
331 3163880
>>163615
Это язык для мешания жсонов. Больше он ни на что не годится.
332 3163991
>>163880
За перекат жсонов по трубам сотыги платят. Да ведь?
333 3164008
>>162482

>Не пора ли из шапки выпизднуть старую роадмап


Пора.

>заменить на реально обновляющуюся? Роадма


Нинужно
334 3164123
>>164008

>Нинужно


А что вместо нее тогда?
335 3164774
>>164123
Шапка не нужна.

Но если тебе так хочется, подготовь новую шапку. И запости ее ближе к 500 постам или вообще сам перекати.
15283907281660.jpg151 Кб, 956x960
336 3164778
>>121242 (OP)
Как пройти в go? позиций на джунов или стажеров буквально ноль, с php надо начинать чтоль?
337 3164782
>>164778
Накрути три года опыта, как советует Антоха Назаров.
338 3164809
>>164778

ВКАТЫВАЕШЬСЯ В ЛЮБОЙ ЯЗЫК
@
СТАНОВИШЬСЯ СЕНЬКОЙ
@
УСТРАИВАЕШЬСЯ SRE В ГУГЛ
@
ПРОФИТ!!!
339 3164839
Небуферизированные каналы используются вообще?
340 3164871
>>164809

15 ЛЕТ ОПЫТА, ИЗ НИХ 5 НА ЛИДЕ
@
ПОДАЕШЬСЯ В МИКРОСОФТ НА РАЗРАБОТЧИКА
@
ПОЛУЧАЕШЬ АВТОМАТИЧЕСКИЙ ОТКАЗ, ДАЖЕ ТЕСТОВУЮ ЗАДАЧКУ НЕ ПРИСЛАЛИ
@
ИНДУСОВ НАНИМАЮТ ПАЧКАМИ, ОНИ ПИШУТ ИНТЕРНЕТ ЭКСПЛОРЕР И БЕСПОЛЕЗНУЮ НЕЙРОСЕТЬ С КАРТИНКАМИ
@
СОРИ ТЫ СЛИШКОМ БЕЛЫЙ ДЛЯ НАШЕЙ КОРПОРАЦИИ
341 3164989
>>164778
Если видел вакансии, то они все выглядят так: основной бэкенд язык + го. Соответственно, надо вначале выучить основной язык и вкатиться в него.
342 3165188
>>164871

>15 ЛЕТ ОПЫТА, ИЗ НИХ 5 НА ЛИДЕ


>@


>ПОДАЕШЬСЯ В МИКРОСОФТ НА РАЗРАБОТЧИКА


>@



УЗНАЕШЬ ЧТО В МИКРОСОФТ НЕ ИСПОЛЬЗУЮТ ГО
@
БУГУРТИШЬ
343 3165206
>>164989
Пиздеж чо то.
Заходишь в хх, вбиваешь голанг и дохуя вакансий без других языков.

Го это ж сам по себе язык бэкенда, какой еще другой язык? Но я не специалист, может чо не понимаю.
344 3165208
Кстати, кто юзал ЕбитеЭнджайн для игр?

Думаю попробовать, пишут что типо перформанс хороший.
Даже интересно, можно ли хтмл игры собрать чтоб летали так же как на пикси.

Еще слышал что бандлы большие? Правда или ложь?
345 3165218
>>165206
Это шизоид гейткипер
Такие и про js говорят что сначала надо выучить сишарп, хуярп и еще много чего
346 3165407
>>165218

>про js говорят что сначала надо выучить сишарп


Всхрюкнул
347 3165485
>>165208
Не понял какой еще ебите энджин
348 3165505
>>165208
Вообще прикольно было бы собрать игру и выложить на яндекс например. Правда там надо ебаться чтобы СДК встроить, ещё какие-то свои костыли придумывать... но теоретически возможно?
349 3165841
Антон, привет, смотри что принес: есть некоторая функция func lolka(x any, y any) {}, нужно валидировать аргументы функции на сочетаемость типов. Например, x is type A and y is type B это ок, а если x is type A and y is type C, то выкидывать ошибку. Может есть бест практис как такое делать?
350 3165966
>>165841
Бест практис это не иметь такую функцию
351 3166004
>>165841
Две горутины этому >>165966 просвещенному.
352 3166124
>>165841
А если по-серьезному, то можно в тупую поставить два тайп-свича с установкой раздельных флагов на x/y и потом вычислять результат булевыми and/or.
353 3166200
>>165841
В джаве на такое любят пердолить паттерн визитор и еще парочку абстрактных фабрик просто на всякий случай но от него больше вреда, чем пользы. Просто напиши кучу ифов и в конце елсе, где делаешь панику. Если ни один из ифов не сработает, будет паника.
354 3166244
>>166200

>Просто напиши кучу ифов


Говей из палаты мер и весов.
355 3166245
>>166200

>напиши кучу ифов


разраб яндере симулятора залогинься
Screenshot 2024-05-23 114935.png93 Кб, 981x620
357 3166406
>>166200

>В джаве на такое любят пердолить паттерн визитор и еще парочку абстрактных фабрик

sage 358 3166658
>>166401
Я НЕ БУДУ ЕБАТЬ ДВИЖОК
Я НЕ БУДУ ЕБАТЬ ДВИЖОК
image.png510 Кб, 1920x1200
359 3166865
>>165208
>>166401
Я б лучше попробовал godot + go попердолить чем этот новый нескучный движок
360 3167028
>>166865
Все эти движки нескучные, для инди ничего лучше юнити нет
361 3167144
Вы используете что-то кроме gin для приема хттп запросов?
362 3167206
Чем вообще занимется бэкендер гошник? Есть какие-то примеры рабочих задач?
363 3167289
>>167206
смузихлебством
364 3167317
>>167028

>для инди ничего лучше юнити нет



Если хотите чтоб каждый первый в отзывах тебе написал что у тебя там майнер (т.к. даже в меню вентиляторы в макс. уходят) - то да, лучше юнити нет ничего
365 3167365
>>167144
Обычно используют стандартную библиотеку, а не фрейвёрки
image.png76 Кб, 298x169
366 3167558
>>167144

>Вы используете что-то кроме gin для приема хттп запросов?


Нам этот ваш HTTP не нужон
367 3167957
>>167317
А могу где угодно в отзыве про майнер написать
368 3168074
>>167206
Разобрать по байтам каштомный протокол ООО Хуй и Ко. Делать это от 150 тыщ раз в секунду.
369 3168075
>>168074
Алсо, юзеры эти данные будут получать через проверенный годами калопровод на спринге. Гошка только для очень специфических задач, которые делаются быстро и потом бэкендера отправляют красить кнопки. Буквально в каждой первой "голенговской" галере такой попуск происходят.
370 3168159
>>168075
Надо ли быть умным чтоб этим заниматься?
371 3168202
>>168159
С покраской кнопок любой дегенерат справится.
372 3168524
>>167365
Это же не удобно
373 3168735
>>168524
Не удобно учить 100500 фреймвёрков под каждый случай жизни, а стандартную библиотеку один раз выучил и можешь написать сам что угодно.
374 3168795
>>168735

>а стандартную библиотеку один раз выучил и будешь писать сам велосипеды на все случаи жизни


Поправил.
image.png55 Кб, 155x171
375 3170051
>>168795
Зачем писать если можно спиздить велосипед?
tempupload.jpg208 Кб, 960x812
376 3170590
Там новый язык от гугла появился недавно,го теперь легаси?
377 3170611
>>170590
У карбона почте не пересекающиеся с go области применения.
378 3170618
>>170611
Чел, на расте че только не пишут. Хипстеры свичнутся с го в карбон и пиши пропало. Сразу 100500 неподерживаемых библиотек образуется на гитхабе
379 3170625
>>170618
Почему ты так считаешь? На странице того же карбона явно сказано что он нацелен в первую очередь на C++-разрабов с существующей кодовой базой.
https://github.com/carbon-language/carbon-lang?tab=readme-ov-file#why-build-carbon
380 3170630
>>170625
Алсо, пока гугл не переведёт карбон в разрешённые внутри языки на него вообще не стоит смотреть.
381 3170748
>>170625
Выглядит не очень. Опять функции с большой буквы, двоеточия разделяют имя и тип, точки запятой в конце операторов. Ещё поди сборщика нет и надо makefile дрочить.
382 3170762
>>170625
Они написали что котлин это эволюция джавы,а мне не нравится котлин😭😭😭
383 3170770
>>170762
Как минимум котлин это лучшая альтернатива, чем пердолиться в топорную джаву. У тебя просто синдром утенка, на непривычный синтаксис, выключи в себе художника, включи инженера.
384 3170774
>>170770
Котлин выглядит всрато,вообще varы и в джаву тащить не нужно было имхо. А джава мне нравится,буквально ноль головной боли,сиди себе ковыряй калопроводики
385 3170787
>>170774
Нет там никакой боли, у тебя просто синдром, поверь, тоже раньше уперто смотрел на все это, а оказалось все везде говно и это норма. Как минимум после получал удовольствие от кодинга в котлин, с го же я просто смерился.
386 3170795
>>170787
У меня почти 3 года опыта,я не утенок. На самом деле с котлином я знаком довольно поверхностно,мб стоит ознакомиться поглубже когда-нибудь. Мне просто очень не нравится тенденция взять джаву,в которой из-за обратной совместимости с 1995 года нихуево так скопилось кода и поверх этого ещё нахуевертить своих аналоговнетовых фич. В моих влажных фантазиях оракл выпускают вальгалу в лтс и уходят на лет 5. За это время тупо выпускают какую-нибудь Java2 где остаётся тол же синтаксис,берется платформа и на имеющихся наработках тупо выпиливают половину хуйни которая была сделана для поддержания совместимости и реализуют все то же самое только не имея требований с обратке
387 3170811
>>170774

>всрато,вообще varы и в джаву тащить не нужно было имхо


Ты охуел пёс? Ты вообще то в Го треде!
1716806908041.webm138 Кб, webm,
360x360, 0:07
388 3170819
389 3170820
>>170795
Иди гугли что такое синдром утенка, 3 года опыт у него
390 3170827
>>170795
Котлин полностью совместим с экосистемой джавы, как, наверное, тайпскрипт с жопоскриптом. Были огрехи во фреймах, которые переигрывали в байткод или рефлексию, но уже давно все пофикшено.

В общем, ты делаешь выводы о том чем нечего не знаешь, это уже признак ламера. Так что да, у тебя не синдром утенка, ты просто тупой, это нормально.
391 3170836
>>170827
>>170820
Я просто пообщаться хотел,хули вы такие желчные
392 3170845
>>170836

>Хули вы все такие нищие...

13759446351850600308.png232 Кб, 559x604
393 3170848
>>170836
А что ты хотел от нас, мы пишем на го, у нас и так жизнь непростая.
394 3171285
Что за трешь с GOPATH? Гугл не знал что у людей бывают несколько проектов?
395 3171377
>>171285
Ты вообще идиот?
image.png55 Кб, 275x183
396 3171388
>>171285

>Гугл не знал что у людей бывают несколько проектов?


Я тебе один умный вещь скажу только ты не обижайся.

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

Ein Projekt, ein Compiler, ein Quellcode!
397 3171956
>>171388
А если к ним шпиен из яндекса устроится и скочает все что нажито непосильным трудом?
398 3171966
>>171377
Видимо очень умные люди придумали импортировать модули с гитхаба

мимо
image.png2,5 Мб, 1600x1339
399 3172231
Объясните магию шедулинга, вот я запускаю скрипт-приложение свое, я так понимаю, даже не запуская горутины, го сам создает системные потоки равные числу ядер/процессоров и шедулит мое приложение во время выполнение (ну на каждый вызов функции вроде или различные i/o).

Все так?
400 3172237
>>171956
Часть репозитория закрыта и доступ есть только у "кого надо". Плюс отслеживается массовое "скачивание" исходников.

Можно скачать один проект, но чисто ради посмотреть, даже собрать его не получится. Та же проблема есть и у Яндекса, там нельзя собрать проект вне Аркадии.
401 3172864
>>172231
Есть кто живой?
402 3172938
>>172231

>го сам создает системные потоки равные числу ядер/процессоров и шедулит мое приложение во время выполнение (ну на каждый вызов функции вроде или различные i/o).


Да системные потоки создаёт сам рантайм. И как минимум одна горутина создаётся рантаймом, в ней запускается main().
403 3172968
Я правильно понимаю, что если я забыл написать обработчик иф ерр не равно нил, то в случае ошибки у меня в результате получится мусор, а если этот мусор дальше используется как инпут для других функций, то и из них выйдет мусор, и вообще в результате работы программы получится мусор, и об этом никто не узнает?
404 3173101
>>172968
Да, причем данные могут по логике быть валидные, потому что го подставляет дефолтные значения примитивам.

Это плавающая ошибка. Я неделю трахался (давно очень), у меня метод возвращал одно значение - ошибку и я забыл присвоить и проверить значение. Тихо, молча, иногда ломалось и трэш данные ходили по сети.
Зато попробуй лишнюю переменную оставить, лол
405 3173207
Сложно ли быть бэкендером в 2024 или если умеешь использовать гугл и имеются зачатки мозга то с рабочими задачами можно справиться?
406 3173220
>>173101
Интересно, что сподвигло разработчиков го применить такой подход вместо проверенных кучей языков исключений?
407 3173241
>>173220
А разница то в чём? Если трай кетч не пишешь будешь кал жевать, так и тут
>>173101

> у меня метод возвращал одно значение - ошибку и я забыл присвоить и проверить значение


Чтобы такого не происходило придумали линтер
408 3173276
>>173220
У гугла практика - минимум вложиться и ожидать что выстрелит само как поиск или андроид, а если нет, то закрыть. Поэтому и высираются продукты без души, дизайны без души и вот тут просто на отвали сделали, почему нет? Проще компилятор, быстрее релизнуть, и пускай работает за счет программиста.
Там под сотню подводных камней. Мне кажется в плюсах меньше.
409 3173284
>>173241

>А разница то в чём?


Ты даун? Если проигноришь эксепшен он тебя лицо или логи обоссыт.
Вот если не вызовешь rows.Err() в го, ты тунца соснешь, в нормальном языках даже потребности в таком вызове нет.
images.jpg6 Кб, 293x172
410 3173445
>>121242 (OP)

>- В обязательном порядке проходим Go Tour:


>https://go.dev/tour/welcome/1



Там большинство упражнений имеет вид "дорисуйте сову", нахуя такое советовать
411 3173526
>>173445
для УЖЕ программистов на ДРУГИХ языках там ничего сложного.
5dbd5105-30b2-445e-9497-7bcc5aa2fe07.jpg62 Кб, 679x513
412 3173557
>>173526
Для уже программистов го вызывает только рвоту.
Я правда пытаюсь каждый раз его взять, из-за рантайма и каждый раз кактус колется.
image.png102 Кб, 904x828
413 3173655
Помогити, хочу попробовать пакеты дрочить, но чето не получается:
https://pastebin.com/036GZyQv
414 3173673
>>173526
В других языках понятно откуда ноги растут и что чего вызывает, а не через хито-закрученную неявную жопу как тут
415 3173694
>>173673
Тогда пиздуй азы учить, го вообще простой как мясорубка, тут как раз всё сделано максимально простым и очевидным
416 3173763
>>173557

>из-за рантайма


не понял, просто потому что у го рантайм есть?
sockets.PNG42 Кб, 923x513
417 3173777
>>173655
Мне кажется ты забыл сделать Accept
https://medium.com/@valentin.omnes/socket-programming-in-go-syscalls-de5cd43784ab
И судя по всему protocol 255 зарезервирован
https://stackoverflow.com/a/64238714/21253446

Попробуй вот этот пример
418 3173799
>>173655
https://www.geeksforgeeks.org/socket-programming-cc/
Еще надо в setockopt ставить флаги REUSEPORT REUSEADR, тогда можно повесить много слушателей на один порт и линукс сделает между ними лоад балансинг. Не надо ебаться с многопоточкой, с синхронизацией, можно просто нафоркать 1024 процесса и все будет ок.
419 3174111
>>173763
зеленые функции, кросскомпиляция, компиляция в бинарь без vm, при этом наличие ГЦ.
420 3174309
>>174111
зеленые потоки может быть? зеленые функции это больше к расту
421 3174415
Как же хочется быть гошником. Сидеть теплым майским вечером с открытым окном, на экране какие-то буквы, потоки, горутины. Сидишь и думаешь - а чё я делаю? Что-то магическое...
422 3174452
>>174309
Зеленые функции, это асинхронные и не асинхронные функции, которые совместимы между собой, аля как обычные (синие)

Красные асинк функции могут вызвать как красные так и синие

Синие - обычные, не могут вызвать красные.

В общем, асинк/авей красит все функции.

Раст еще и типы лайвтаймами красит, отдельное говнище
423 3174599
package main

import (
cyoa "ChooseYourAdventure"
"encoding/json"
"flag"
"fmt"
"os"
)

func main() {
filename := flag.String("file", "gopher.json", "choose your own adventure story")
flag.Parse()
fmt.Printf("Using the story in %s", filename)

f, err := os.Open(
filename)
if err != nil {
panic(err)
}

d := json.NewDecoder(f)
var story cyoa.Story
if err := d.Decode(&story); err != nil {
panic(err)
}


fmt.Printf("%+v\n", story)

Кто-нибудь может объяснить синтаксис который выделен жирным? Так часто пишут, разделяя через семиколон?

}
423 3174599
package main

import (
cyoa "ChooseYourAdventure"
"encoding/json"
"flag"
"fmt"
"os"
)

func main() {
filename := flag.String("file", "gopher.json", "choose your own adventure story")
flag.Parse()
fmt.Printf("Using the story in %s", filename)

f, err := os.Open(
filename)
if err != nil {
panic(err)
}

d := json.NewDecoder(f)
var story cyoa.Story
if err := d.Decode(&story); err != nil {
panic(err)
}


fmt.Printf("%+v\n", story)

Кто-нибудь может объяснить синтаксис который выделен жирным? Так часто пишут, разделяя через семиколон?

}
424 3174658
>>174599
Думаю нечасто. Видимо это изобретение бедных гонщиков, который на каждый вызов функции идёт +3 строки if err nil дрисни. Это своего рода "оптимальная форма записи"
Просто пиши код
0b160a51d72883c78df2594366b1fad3-g.jpg33 Кб, 300x424
425 3175345
Книга актуальна?
426 3175356
>>175345

>Год выпуска: 2016


А сейчас какой?
427 3175593
>>175356
2077й
428 3175601
>>175593
Сколько на марсе хата стоит?
429 3175612
>>175601
50к кредитов.
430 3175646
>>175356
Ну Влад Тен советовал....
431 3175673
>>175646

>Ну Влад Тен советовал....


Из 2016-го советовал?
432 3175719
>>175673
из 2077-го
433 3175760
>>175345
Для начального знакомства пойдёт. Нововведения потом дочитаешь где-нибудь.
434 3175808
>>175601
Смотря в какой шахте работаешь, в топ шахтах скидки до 10% + 1% за каждого родственника работающих в шахтах.
435 3175809
>>175760
Что там нового то, кроме огрызков дженериков?
436 3175840
>>174599

>Так часто пишут, разделяя через семиколон?



Почему там семиколон, а не && может кто объяснить?
437 3175893
>>175809
Модули, ошибки. Книжка больше ценна, что она от разработчиков и объясняет их идиоматический подход.
438 3175906
>>175840
Потому что там присвоение идёт в левой части
439 3175913
>>175906
Как-то всё равно странно, не?
440 3175914
>>175906
Идёт, но в других языках после присвоение в условии && ставят, а ; нельзя же, в чём тут сокральный смысл?
441 3175916
>>175913
Ну так присвоение ничего не возвращает, как ты собирался && использовать?
442 3175919
>>175916
Мне кажется я всё равно не догоняю зачем тут нужно :. Можешь переписать эту строку по-другому, чтобы я понял, чему это эквивалентно?
image.png16 Кб, 579x136
443 3175921
>>175916
Присвоенное значение возвращает
444 3175929
>>174599
Меньше строк, когда возвращается только ошибка. При множественном возврате будь добр полный бойлерпринт ебануть.
445 3175930
>>175893

>ошибки


что с ними?
446 3175931
>>175929

>Меньше строк


Видимость переменной тоже, и присваевается она не всегда, а только когда условие наступает, можно её 3м условием поставить например
447 3175938
Спрошу тоже тогда. Вот 🌶рим мы по массиву через индекс++. Выходим за пределы массива и случается паника. В этом случае кошерно словить её через рекавери или такая паника гойская и надо индекс сравнивать с леной перед извлечением элемента?
448 3175941
>>175938
Нужны ли лишние паники если можно не паниковать и продумывать условия заранее?
449 3175949
>>175941
Тогда весь код превращается в лапшу
if err := 🌶; err != nil {
return err
}
и распухает в 3 раза.
450 3175950
>>175949
Но это же база
451 3175956
>>175949
На такое уже давно пора макросы с препроцессором вводить, или язык менять
452 3175957
>>175950
Сейчас это няшная писечка на 180 строк ровного кода без скобочек и кроходной defer func с рекавери. А с этой содомией происходит раздолбанная пиздень на овер 500 строк с необходимостью протаскивать этот эррор через 4 уровня вложенности.
453 3175963
>>175957
Бля, какой же подарок миру этот го xD
454 3175988
>>175930
Добавили возможность их оборачивать как в серьёзных языках
455 3176025
>>175949
Так что с ошибками сделали? Я просто видимо пропустил (заново вкатываюсь спустя 5 лет)
456 3176026
>>175988
Покажи пример
457 3176029
>>175957
сам сервис большой?
458 3176034
>>176029
20к строк.
459 3176036
>>176034
Ну подумай, может имеет смысл переписать на язык, который выглядит точно так же, но там есть исключения
460 3176041
>>175957
Почему нельзя на месте залогировать, а не играть в исключения?
461 3176042
>>176041
Чего логгировать?
462 3176210
Хочу стать гошником но я 36-летний гуманитарий.
463 3176255
>>176210

>Хочу стать гошником


похвально

>но я 36-летний гуманитарий.


жаль
464 3177305
поясните как работают мапы под капотом, не могу понять концепцию бакетов и как там разрешается коллизия
466 3177623
>>176042
Ошибку
467 3178161
Имеет смысл вкатываться в Golang сейчас или рынок переполнен джунами?

Живу в ДС, может офлайн есть какие-то варианты для начала.
468 3178177
>>178161

> Имеет смысл вкатываться в Golang сейчас или рынок переполнен джунами?


Тя как ебёт, как и кем рынок наполнен? У нас что, вся работа в России сделана? Уже всё автоматизировано, по улицам ходят роботы, такси на автопилоте ездят? Те ещё импортозамещать до🌶 всего - сапу, сноуфлейк и всё остальное. Язык появился всего-то 14 лет назад, а у него уже всё, перегрев видишь ли.
469 3178270
>>178161
Ты реально думаешь что на двачах сидят аналитики хх.ру. Тут 90% вкатунов, которые думают что если дадут инфу - ты у них работу заберешь.

Мониторь рынок своего города, смотри на чем стартуют новые проекты, точнее на чем не стартуют (это вклад в будущее, чтобы легаси с проглотом не жрать).
470 3178745
А что за проблема с go way? Это какая-то мания писать все самому, что уже готово? Везде это норма, только тут это какая мания самописанием заниматься
471 3178936
>>178745
Не пиши
472 3178937
>>178936
Хорошо
473 3178976
>>178937
Серьезно, там уже столько либ
image.png46 Кб, 200x240
474 3179008
>>178177

>У нас что, вся работа в России сделана? Уже всё автоматизировано, по улицам ходят роботы, такси на автопилоте ездят? Те ещё импортозамещать до🌶 всего - сапу, сноуфлейк и всё остальное.

475 3179034
>>178976
Я боюсь делать импорты с гитхаба
476 3179047
Зачем нужен программист если можно посадить обезьяну за гугл и стак оверфлоу и чат гпт?
477 3179079
>>179047
Обезьяна станет тимлидом и коды писать будет некому
478 3179158
>>179034
Скачивай, изучай, импортируй. Пока два раза не прочитаешь все, не импортируй.
479 3179471
>>179158
Нет
480 3180849
>>147617
Пацаны хочу укатиться из пыхи к вам в gовно. На пыхе почти восимь лет батрачу ну и периодически с другими языками сталкиваться приходится. Че нужно знать, чтобы 🍑овать го батраком за 250к?
481 3180949
>>180849
експиред
482 3180954
>>179034
В годах.
483 3181118
image.png807 Кб, 769x550
484 3181205
485 3182202
>>181205
Пошёл нахуй, хуесос
486 3182208
>>180849
Итак. Я привык к шаблонам проектирования, фреймворкам и монорепам. Как я понял у вас всё это не котируется.

Поясните про депенденси инжекшн. Это тоже зашквар? Я видел, что существуют какие-то реализации wir вроде,от гугла, но сразу же читал, что это неуважаемо. Как тут обстоит вопрос?

Что с тестированием? Зашквар? Или как мокать без di?

Ещё слышал, что разного рода ОРМ это не го вэй. Вы че голый sql пишете?

Сука, нужен гайд по перекату из классических языков
487 3182260

>вявявя


Я хотел как-то раз поучаствовать в эстафете, но по-классике обосрался. Потому что проигрывать, сука, не хотелось.
488 3182281
>>182208
орм делает лишнии аллокации и имеет не оптимальные скл запросы
489 3182409
>>182208
Если ты не веб студия клепающие по сайту в час - орм зло. Это тебе скажу на любом ЯП

Монорепа не зло, гугл потвердит.
490 3182461
>>176026
errors.As(Is) , реализуй Error() интерфейс и все....
491 3182722
Ищу программиста на GO для разработки альтернативной харкачу имиджборды. Желательно заинтересованного в создании новой имиджборды.

Предыдущий программист доделал её на 90%, его наработки сохранились. Оставалось работы примерно на неделю перед тем как захостить. У нас имеется группа в тг с аудиторией будущей борды, договоренность о пиаре со множеством ютуб-блоггеров, дискорд-групп и тг-каналов. Собираемся скоро брать движок и хостинг.

Писать в tg - @skyrimforever
492 3182730
>>182722

>на 90%


На 35% и не рекомендую связываться с этими пидорами. Наебали на предоплату и назойливо требовали встроить зонды от российского бигтеха.
493 3182732
>>182730
Это троллинг. Мы на энтузиазме всё делали, и что за зонды ты выдумал хз.
494 3182764
>>182730
Лол

>Мы на энтузиазме всё делали


Зачем? Вам мало полудохлых досок? Сам двач на бототемах.
Тупо лист сообщений с медиа вставками - на портфолио не потянет.

>Это троллинг.


Ты видишь насколько "анонимное" общение ущербно.
495 3182912
>>182764
У нас были определенные идеи. Можешь обратиться в телеграм чтобы узнать подробнее.
496 3183056
>>167206

>Чем вообще занимется бэкендер гошник?


Проверкой на nil
497 3183059
>>182208

>Поясните про депенденси инжекшн. Это тоже зашквар?


Вообще все зашквар, кроме ручного проброса ошибки по стеку и кодогенерации.
images (1).jpeg10 Кб, 216x233
498 3183119
>>146028

>способы обработки ошибок в go

499 3183590
>>182912
Нахер мне твой телеграмм, ты реально думаешь что взрослый кодер будет лазать по клону вк и расспрашивать чсвшных малолеток об очередном гибриде двача с какой-то херней (раньше это было соцсети, сейчас хз куда зумерская фантазия увела)

Сначала заинтересуй или лесом иди, потом уже вкграмм зови.

PS я тебе даже бесплатно объясню почему тебе го ненужен.
500 3183599
>>182722
https://github.com/bakape/shamichan
Вот вам 100% и идите нахуй
501 3183609
>>182461
При этом запретили возвращать ErrZalupa, и требуют только error. Потому что Пайк и его дебильные идеи.
Каждый раз как надо что-то сложнее чем
return nil, fmt.Errorf("Ah Shit, Here We Go Again: %w", err)
Хочется убить того, кто это придумал.
502 3183620
>>183599

>Build dependencies


>Go


>Node.js


>Rust


>C11


>ffmpeg


>libvpx


>libvorbis


>libopus


>libtheora


>libx264


>libmp3lame


>OpenCV 2-3


>libgeoip


Чо блять за цирк ебаный?! Они решили собрать все модные технологии? А потом ещё видео декодировать, распознавать экстремистские материалы, вычислять по IP и стучать товарищу майору?
git
503 3183692
>>183620
Превьюхи для webm ты чем собрался генерировать, жопой своей? А баны раздавать хуем?
Вообще в бытность этого движка под названием meguca, там не было раста
504 3183776
Перекочуйте
505 3183812
>>183609
Сразу видно еблана который где-то что-то слышал, и спешит высрать свое очень важное мнение. error это интерфейс, пока твоя ErrZalupa имеет метод Error() ее можно вернуть как error
506 3183838
>>183812
Ты просто тупой и вообще не отдупляешь в чем проблема.

Речь идёт о том, что в сигнатуре метода нельзя писать что он возвращает ErrZalupa, а надо обязательно писать что возвращается error, а потом делать все эти приседания с errors.Is() errors.As().

И помимо Error() надо ещё реализовать Unwrap() если хочешь передавать стандартные статусы.
507 3183959
>>183776
Что ещё скажешь, писик?
508 3184276
В языке, в котором нет фреймворков, появился очередной фреймворк
https://gofr.dev/
509 3184436
>>184276
Заманчиво. Ну, это такое, чисто на доверии движение)
510 3184464
>>184276

>в авторах 2 индуса


>в коде враппер над тем самым http роутером


>мидлвари нихуя


Достойный "фреймворк". Такой хуйни на жидхабе не счесть. Пока только джин пытается повторить успех спринга, собирая в себя труды мимокроков.
511 3184477
>>184464

> Такой хуйни на жидхабе не счесть


Вот именно. Вместо того, чтобы "просто писать на го", люди тысячами придумывают веб-фреймворки, ормы, контейнеры зависимостей и так далее, пародии на исключения и так далее. Удивительное дело!
512 3184502
>>184477
Нет. Так тоже нельзя. Считаю, что гигам надо собраться и запилить спринг на голанге. Вот это будет революция. Такой проект на гитхабе получит не менее ляма звёзд и впишет мейнтейнеров в зал славы анальничества.
513 3184508
>>184502
Как только в голанге сделают 2+1=3, так сразу.
514 3184646
>>183838

> а надо обязательно писать что возвращается error, а потом делать все эти приседания с errors.Is() errors.As().



И что в этом плохого?
Пройтись ифом/свичкейсом по вариантам ошибок и в зависимости от конкретной ошибки заретернить определенный вывод? Это для тебя реально проблема какая-то?
515 3184726
>>184464

>в авторах 2 индуса


это отзывы, контрибьютеров 22
516 3184728
>>184508
А чему в голанге 2+1 равно?
517 3184768
518 3184771
>>184728
А 1+2=111
519 3185150
>>184646
Плохо, что этого не было изначально. Unwrap(), Is(), As() добавили в 2019, а до этого почти весь код был fmt.Errorf(). Если бы с первой версии сделали бы нормальный интерфейс error и в гайдлайнах писали бы, что создавайте свой ErrZalupa для ошибок, и делали бы так в стандартной библиотеке. Тогда бы это было бы многословно, но вполне нормальный подход в говей стиле.
520 3185311
>>185150

> а до этого почти весь код был fmt.Errorf().



Так какая разница то как было до этого? Я 3й год пишу на говне и везде наблюдаю стандартные if errors.Is()/errors.As(), а в каком нибудь файле errors.go нахуяриваешь варианты своих кастомных ошибок.

Технически в говне можно и func jopa(x int) CustomError сделать, чтоб конкретный тип ошибки ретернить, но имхо все юзают пресловутые errors.Is/As и кайфуют.
521 3185440
>>184646

> Пройтись ифом/свичкейсом по вариантам ошибок и в зависимости от конкретной ошибки заретернить определенный вывод


Пиздец технологии 23 века. Я ебу. Все нормальные люди стараются избавиться от ветвлений, переборов, вложенных блоков - одни гоферы до сих пор пишут как в детстве на Паскале.
522 3185716
523 3185723
>>185440
И ладно бы писали, каждый дрочит как он хочет, свобода есть осознанная необходимость. Так они убеждают себя и остальных, что это хорошо и удобно! Короткие стрелочные лямбды - это плохо, а пять раз подряд копировать спецификацию функции - это удобно, правильно, истинно и хорошо есть, и хорошо весьма.
524 3185870
>>185311

>Я 3й год пишу на говне и везде наблюдаю стандартные if errors.Is()/errors.As(), а в каком нибудь файле errors.go нахуяриваешь варианты своих кастомных ошибок.


Да у тебя в стандартной библиотеке полный разброд и шатания, что-то успели переписать на нормальные ошибки, что-то по прежнему fmt.Eroorf(). В сторонних библиотеках ситуация еще хуже.
525 3185883
>>185870
Консистентная стандартная бибилиотека ненужна же. Писали как-то на 1.4, и не стыдились!
526 3186143
>>185883
Вот это да.
527 3186195
>>185883
Деды вообще в машинных кодах писали! И нечего, на луну человека запустили.
528 3186706
>>185440

>Все нормальные люди стараются избавиться от ветвлений, переборов


Зачем?
529 3186913
>>186706
Чтобы сделать тебя нормальным?
530 3186919
>>186913
>>186706
Почему кстати просто не сделать defer recover() от паники вместо проверки всех ошибок?
531 3186943
>>186919
Да кто ж его знает - мне тоже непонятно, кто её придумал, проверку эту, всех ошибок. Простым defer-recover'ом на любую ситуацию можно упустить что-то важное.
532 3186950
>>186943

>на любую ситуацию


А если на каждую функцию её писать? И уточнять что сломалась именно эта f

Всёж лучше бесконечных if err != nil на каждой строке
533 3186958
>>186950

>А если на каждую функцию её писать?


Стрёмно, кривой код получится, тяжкий на восприятие.

Вместо if'ов можно switch-кейсы юзнуть, если вдруг так красивее. Да ладно, программирование вообще не сходится на golang.
534 3187296
>>186958

>тяжкий на восприятие.


буквально один блок в начале функции же
535 3187341
>>185870
Все еще не понимаю проблему. Ты же не стд пишешь, а бизнесовые сервисы, и там тебе ничто не мешает юзать все прелести пакета errors.

>В сторонних библиотеках ситуация еще хуже.


>Законтрибьють и исправь.


>Кто, я?



>>186950
Это буквально лучше, чем try...catch с кучей обдристанных исключений в самой жопе файла, где уже фокус сбивается пока долистал до него. Сделал сетевой вызов - сразу проверил на ошибку - выплюнул ошибочный ответ или двинулся дальше по сценарию, я хз что еще проще может быть.
536 3187345
>>187341

> Сделал сетевой вызов - сразу проверил на ошибку - выплюнул ошибочный ответ или двинулся дальше по сценарию


try...catch именно это и делает. Только сам, а не заставляет программиста писать это вручную, как в бейсике 40 лет назад.

> фокус сбивается пока долистал до него



А вот бесконечных if err!=nil, фокус, значит, не сбивается. Мы вот именно что не std пишем, а бизнес-сервис, и фокус у нас на бизнес-логике, а не на особенностях компилятора, которому сложно самому поймать ошибку.
537 3187365
>>187345
У тебя 2 стула:

Первый стул:

try {
res = await govnoService.call(...);
// здесь куча говна на 500-1000 строк
} catch(SomeException ex) {
//handle exception
} catch(SomeException2 ex) {
// handle exception
} // еще 50 исключений

Второй стул:

resp, err := govnoService.call(...)
if err != nil {
//handle err
}

resp2, err := govnoService2.call(...)
if err != nil {
//handle err
}
// здесь куча говна на 500-1000 строк

Сидя на втором стуле ты локально видишь участок кода с вызовом конкретного сервиса и с обработкой ошибки конкретно этого сервиса. И тебе будет легко найти проблемный участок если у тебя сломалась обработка, например, govnoService2. А в первом варианте ты будешь листать тысячу строк вниз, вдуплять какие типы исключений из всех высирает именно этот сервис.

Впрочем тут даже обсуждать нечего, гошка поэтому по ттм и выигрывает, и если бы if err != nil(99% языка) была настолько больной темой то люди бы выбросили ее нахуй, не переучиваясь с привычных исключений.

Алсо, я не дефатель ГОвна, но если уж за что то говно и ругать то явно не за обработку ошибок, лол
537 3187365
>>187345
У тебя 2 стула:

Первый стул:

try {
res = await govnoService.call(...);
// здесь куча говна на 500-1000 строк
} catch(SomeException ex) {
//handle exception
} catch(SomeException2 ex) {
// handle exception
} // еще 50 исключений

Второй стул:

resp, err := govnoService.call(...)
if err != nil {
//handle err
}

resp2, err := govnoService2.call(...)
if err != nil {
//handle err
}
// здесь куча говна на 500-1000 строк

Сидя на втором стуле ты локально видишь участок кода с вызовом конкретного сервиса и с обработкой ошибки конкретно этого сервиса. И тебе будет легко найти проблемный участок если у тебя сломалась обработка, например, govnoService2. А в первом варианте ты будешь листать тысячу строк вниз, вдуплять какие типы исключений из всех высирает именно этот сервис.

Впрочем тут даже обсуждать нечего, гошка поэтому по ттм и выигрывает, и если бы if err != nil(99% языка) была настолько больной темой то люди бы выбросили ее нахуй, не переучиваясь с привычных исключений.

Алсо, я не дефатель ГОвна, но если уж за что то говно и ругать то явно не за обработку ошибок, лол
538 3187367
>>187365

>А в первом варианте ты будешь листать тысячу строк вниз


Вам там норм писать тысячи строк ОДНОЙ функцией? Не бо-бо?
539 3187372
>>187367
Бо-бо, но это жизнь.
Во времена когда я шпарил на джаве в сбере то стандартный хендлер хттп запроса в среднем столько и занимал. К говну быстро привыкаешь и не замечаешь этого. Но иногда по другому сложно написать, когда у тебя бизнес логика ручки 15 листов а4 в конфлюенсе занимает
540 3187373
>>187365

> try {


> res = await govnoService.call(...);


> // здесь собственно тело функции, программа, бизнес-логика: вычисления, обработка данных, и прочее


> } catch(SomeException ex) {


> //handle exception


> } catch(SomeException2 ex) {


> // handle exception


> } // еще 50 обработок ошибок, каждая из которых уже типизирована и по каждой можно принять разумное решение, или она будет брошена наверх как есть со всем стеком



> Второй стул:


- Запросили репозиторий, или db-хендлер, или ещё что-то
- Читаем из базы? ХУЙ ТАМ! Мы проверяем if err!=nil
- Теперь читаем из базы
- Запихиваем в json? ХУЙ ТАМ! Мы проверяем if err!=nil
- Фух, можно собрать json. Но нам нужны не все поля, а только часть, и их ещё надо преобразовать. После каждого преобразования не забыть if err!=nil
- Собрали json. Дежурный if err!=nil
- Так, а нахуя он нам нужен-то был? А хуй его знает. Вообще go, как известно, не предназначен для такой сложной логики, лн предназначен для микросервисов.

Итак, третий стул!
- Достали поле из базы^W микросервиса. Проверили на nil. Бросили в другой микросервис. На всякий случай ещё раз проверили на nil, это не страшно, всего две проверки на nil по сути на одну операцию.
- Другой микросервис определил, нужно ли нам это поле. Проверил на nil после проверки на нужность (кстати, удивительно, что на надо проверять на nil результат проверки на nil, недоработочка)
- Третий микросервис собрал json, попутно два-три раза проверил на nil.

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

>Запросили репозиторий, или db-хендлер, или ещё что-то



Что?
Ты в ручку инжектишь зависимости(репозитории/юзкейсы/стораджи) еще на этапе инстанцирования хендлера и внутри используешь что то типа h.repo.DoSome()/ h.uc.DoSome()/ h.strg.DoSome()

>Читаем из базы? ХУЙ ТАМ! Мы проверяем if err!=nil


Это ок

>Запихиваем в json? ХУЙ ТАМ! Мы проверяем if err!=nil


Делаешь это внутри метода стораджа, хендлер уже работает со структурой

>После каждого преобразования не забыть if err!=nil


Если ты про маршалинг, то да. Если просто через dot-нотацию маппишь то не актуально.

Да и большинство этого говна за тебя уже решает кодогенерация смаппингом и конвертацией.
542 3187391
>>187341

>Ты же не стд пишешь, а бизнесовые сервисы, и там тебе ничто не мешает юзать все прелести пакета errors.


Если у тебя кодовой базе пару лет и у вас нормальные синьоры, которые сами нормально пишут и джунов пиздят. То действительно проблемы нет.
А если у вас кодовая база 10+ лет и куча паджитов, за которыми никто не присматривает - то повсеместно будут fmt.Errorf(). И срали они на гайдлайны.
543 3187396
>>187391
Ну тут согласен, но у тебя за 10 лет в хуевой команде будет говнокод на любом ЯПе.

В защиту ГОвна, 10 летнее легаси на нем массово еще особо не успели написать(кроме самого языка, гы)

У нас да, по 3 ревьюера на ПР, и ядерный тимлид который за этим смотрит. На говне еще хорошо пишется когда внутри компании пиздатая техплатформа, куча настроенных линтеров и тд есть, так что может я не совсем объективен, тк условия у нас реально неплохие.
544 3187398
>>187365
Ох ты-ж блядь! Ты посмотри на этого ловкого, смелого, умелого пидораса!

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

> //handle err.


Если тебе насрать на ошибку и ты её обрабатываешь одинаково срешь в логи, ты и в джвве можешь делать

> catch(Exception ex)


и всё. А если тебе нужно нормально обрабатывать ошибки, то ты и в говноланге будешь

> errors.As()


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

Только в языке с эксепшенами, ты можешь в функции не париться на тему обработки ошибки если её надо обрабатывать выше. А в говноланге, ты ОБЯЗАН ебаться с

> if err != nil {


> return nil, err


> }

545 3187404
>>187398

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



Ебать ты поймал меня, ахуеть.
Да, я не написал errors.Is/As, только это все равно удобнее чем упоротые исключения, ты все еще работаешь локальным куском кода на 10 строк, видишь все позитивные/негативные сценарии обрабротки i-го сервиса.

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



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

Пидорас твой папа кстати, который второй.
546 3187549
>>187398
Это бесполезно. Говно вызывает необратимые повреждения головного мозга. Это религия, сродни яблокофильству. Говнарь до последнего будет защищать "удобство" писать руками то, что у нормальных людей делает машина.
547 3187688
Вот это вы проинформировались, пипец, даже читать не охота.
548 3187899
>>187549

>у нормальных людей делает машина.



Ну не на расте с tokio же писать бэкэнды то блеать
549 3188065
Кто работал в Вайлдберриз? Дайте ссыль на тот магаз внутренний, в котором скидка 50% сотрудникам
550 3188451
>>188065
А номер, по которому мегафон деньги возвращает, тебе не дать?
551 3188470
>>187899
нет, на джаве конечно же
552 3188638
>>187404

>Да, я не написал errors.Is/As, только это все равно удобнее чем упоротые исключения, ты все еще работаешь локальным куском кода на 10 строк, видишь все позитивные/негативные сценарии обрабротки i-го сервиса.


В джаве и языках с эксепшенами, ты сам решаешь хочу я писать код для обработки, или пусть вызывающий ебется. А в говноланге ты в любом случае ебешься, обрабатывая или пробрасывая наверх. Бываютс случаи когда у тебя функция не возвращала error, но теперь ей надо вызвать другую функцию которая возвращает error и теперь ты ебешься прокидывая его наверх меняя все сигнатуры.

>>187404

>О да, знаем, когда на самом верхнем уровне ты отлавливаешь какую то стектрейс апача или хибернейтовскую хуету которая хз как попала на уровень ручки и которая хуй пойми где возникла. А стоп, оно как раз и попало из за "похуй, наверху обработаем"


Ваще похую, дорогуша! Фреймовор поймает и залогирует, потом отсмотрим логи, поправим баг и все будет чики-пуки!

>>187404

>Пидорас твой папа кстати, который второй.


Кисо, ты обиделось?
553 3188685
>>188638
И начался бесконечный срач про обработку ошибок...

Так чем тот анон с предложением просто ловить и recovery"ть панику был не прав?

мимо-джуниор
554 3188687
>>188685
Некошерно. Хотя для этого один хороший человек написал даже lo.Must()
555 3188688
>>188687

> Некошерно


То есть суть токова. Go - в сущности лаконичный язык. И такие вещи, как обработка ошибок, или спецификация функций, объективно должны писаться подробно и пространно, что диалектически выражает лаконичность языка.
556 3188706
>>188638

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



Можешь вернуть nil вместо структуры или default value для примитива + логируешь в стдаут ошибку. Правда тебе за такое пизды дадут на первом же ревью.

> Фреймовор поймает и залогирует, потом отсмотрим логи, поправим баг и все будет чики-пуки!


> java.net.SocketTimeoutException:Receive timed out


at j.n.PlainDatagramSocketImpl.receive0(Native Method)[na:1.8.0_151]
at j.n.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143)[^]
at j.n.DatagramSocket.receive(DatagramSocket.java:812)[^]

Имаджинировал твое ебало когда будешь наверху вот такое говнище дебажить, которое стрельнуло на 228 уровне абстракции
Зато с ошибками не ебался, наверху обработал, и сэкономил на 10 строчках err != nil.
557 3189040
>>188685

>Так чем тот анон с предложением просто ловить и recovery"ть панику был не прав?


https://go.dev/play/p/Lqrpsfyn3vj
Потому что рековери сломается, как только ты решишь что-то распаралелить. Фактически тебе надо в каждой запускаемой горутине делать рековери или проверять весь вызыааемый код. Это очень хрупкая конструкция, которая может завалить весь сервис. Поэтому, в приличных местах за такое пиздят.
558 3189045
>>188706

>Можешь вернуть nil вместо структуры или default value для примитива + логируешь в стдаут ошибку.


А потом наверху гадать user == nil потому, что мы его не нашли или потому что траблы с базой? А count == 0 потому что нет событий или потому что удалённый сервис не ответил?

>>188706

>Имаджинировал твое ебало когда будешь наверху вот такое говнище дебажить, которое стрельнуло на 228 уровне абстракции


>Зато с ошибками не ебался, наверху обработал, и сэкономил на 10 строчках err != nil.


Кисо, у тебя девичья память. Речь шла об неожиданных ошибках, например NPE. А ошибка сети это ожидаемая ошибка и её надо обрабатывать внизу.
559 3189069
Я чичас сижу пержу мидлом в тиньке на жаба. Зп 240 в месяц + премии. Сбер клауд дал офер на жуниор+ голанг девелопер, зп 170 тыс. Стоит ли откликаться? Меня очень вкатывает писать на голанге и нравится перспектива языка и работы. Но и на жаве мне не противно писать, а тут ещё и зп выше, но как будто моя перспектива тут будет в в поддержке легаси говна. Мой внутренний ребёнок, который любит прогу и технологии, хочет на голанж, а мой осмысленный взрослый говорит "похуй, оставайся, главное деньги".
560 3189142
>>189069
Так и опиши новому работодателю, лол. Мол сейчас получаю 240 на джаве, но хочу, у вас, на го писать, как я могу апнуться к той же зп в перспективе? Могу ли пройти пересобес, например, через пол года?
561 3189189
>>189045

>, что мы его не нашли или потому что траблы с базой?



Зависит от сложности логики очевидно, в основном так не делают. Но возможность есть.

>А ошибка сети


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



Не знал что джава тебя травмировала до уровня умственного импотента
562 3189302
>>189142
Офк говорил на всех собесах, что в данный момент работаю мидлом на жабе, думаешь я умолчу про такое? Про зп я говорил округляя, типа "больше 200 тысяч". А по поводу пересобеса и повышения, даже если взять полгода на повышение до мидла, я потеряю в разнице от 420к, притом я не ебу дают ли в клауде премии. И даже если повысят, вдруг будет меньше, чем 240? Я вот про это спрашиваю, стоят ли перспективы молодого языка и самого большого облачного сервиса в России такого риска? Может я вообще себе всё напридумывал в голове.
563 3189380
>>189069
Звучит как кал. Перекатился с почти такой же зп(230к) на 360к на goвно мидлом+. Ищи более пиздатый оффер.
564 3189556
>>189189

>Не знал что джава тебя травмировала до уровня умственного импотента


Киса, ты слишком много туши на глаза накладвваешь. Ты же вообще нихуя не видишь, что тебе пишут!
Там был пример с реальной ошибкой: NPE. И как раз NPE никто не обрабатывает, просто ловят наверху и пишут в лог. И дебажить там если, что-то и надо, то это почему значение null, а где произошла ошибка прекрасно видно по стектрейсу.
565 3189841
Говнари, как вы определяете, когда нужно поставить & или *? Каждый раз читаете сорцы?
566 3189843
>>189841

>Говнари, как вы определяете, когда нужно поставить & или ?


Пробую. Вначале ставлю &. Не компилится? Меняю на
.
567 3189849
>>189843
А зачем вообще ставить &? Разве принимающая функция автоматически не получит указать, если для параметра указан его тип со звёздочкой?
568 3189864
>>189849
Нет, такая фигня не соберётся.
image.png204 Кб, 423x793
569 3189973
image.png1,1 Мб, 800x948
570 3190809
Допустим, есть выбор между бэком на GO и Java. Какие подводные, pros/cons будут у обоих?
571 3190855
>>190809
Вкатуны уже вообще разучились гугелом пользоваться?
572 3190949
>>190809
Не вижу смысла в джаве вообще, го занял ее нишу (бэк, инфра). Да и тут уже пол треда бывшие джависты .
573 3191172
>>190809
Java:
pros: очень удобный язык с крутым тулингом и очень развитой инфраструктурой, огромным сообществом, настоящей кроссплатформенностью, огромным спросом на рынке (3е место в топе)
cons: большие размеры артефактов относительно С++, С, Rust, Zig (но не Go, с ним разница не такая большая), достаточно большое потребление памяти, относительно тех же языков

Go:
pros: простая и быстрая компиляция, относительно вышеупомянутых языков
cons:
очень неудобный язык, где нужно постояннно писать велосипеды и только выигрывать, очень маленький рынок труда (в 6 раз меньше) и маленькое сообщество, по языковым фичам едва дотягивает до джавы 20-летней давностей, но тут опять нужно только выигрывать, потому что это не джава, хотя фактически отличий никаких
распространяется исключительно на безумном самоподдуве оголтелых сектантов, которые абсолюнто уверены что на джаве никак кроме абстрактных фабрик писать нельзя, и это и выдается на основную selling feature языка

Популярность по вакансиям здесь https://www.devjobsscanner.com/blog/top-8-most-demanded-programming-languages/
574 3191214
>>191172
Джава же для дидов совковых не? Помню когда брался её изучать не выдержал и дропнул уж не помню что стало финальной каплей, но воняло старым дедом на протяжении всего изучения, даже пыха в разы современней смотрится
575 3191260
Сап
Можете, пж, помочь осознать эту вашу "параллельность" в Го? Я уже несколько дней почти безвылазно ищу разную инфу, выхожу за пределы языка, но чего-то все равно не хватает.

В рамках языка я встречал два термина "параллельность" и "конкурентность". Первое как я понял - аппаратный уровень. Много ядер(процессоров) - много параллельно работающих программ(процессов). Второе - когда в один "поток" максимально плотно запихиваются наши процессы (чтобы процессор не простаивал).
Оба термина работают как вместе так и независимо. Соответственно вопрос. А что по итогу то в Го используется? Из всей документации, презентации Пайка с его Concurrency is not Parallelism я так и не сделал вывод.

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

Можете подсказать, пожалуйста, или посоветовать хорошие источники, статьи, видео.

Сразу извиняюсь, его где-то звучит бредово, но старался по максимуму изложить суть
576 3191279
>>191214

>Джава же для дидов совковых не?


Ну все правильно, джава для дидовых совков, а го, в котором нельзя итерироваться по кастомным коллекциям, а дженерики ввели только пару лет назад - это супер прогрессивно и молодежно, тут главное не перепутать

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


с этим согласен, какой современный язык автоматически резолвит this? Да никакой, это технологии 70х, современные языки без подсказки программиста этого понять не могут
577 3191318
>>191279
К нам в айти отдел пришёл новый сотрудник. Нужно сказать, что у нас в отделе работают почтенные крестогоспода. Новичка посадили за компьютер, но не успели даже дать задание, как он начал кодить. Начальник из любопытства подошёл посмотреть, что он там написал. В течении секунд тридцати он побледнел, затем посинел, затем покраснел, а потом трясущимся от нескрываемого гнева голосом сказал:

- Это же Абстрактная фабрика! На чём ты кодил до этого?

- На Джаве.

- Жабапидор! - в один голос заорали все 20 человек.

- Жабапидор! Жабапидор! Жабапидор!

Кто-то включил сирену. Над дверьми замигали красные лампочки тревоги. На окнах мгновенно сомкнулись плотные жалюзи. В офисе одновременно бывает два отдела человек по сорок. На обеде вся эта толпа собирается на первом этаже, где яблоку негде упасть. А поэтому, как охранники ни пытались вырвать джавапидора из рук разъяренной толпы, им это не удалось. По всему офису стоял сплошной рев:

- Жабапидор!

В коридоре его сразу же сбили с ног. Используя галстук как поводок, его тащили через весь коридор, передавая из рук в руки. Поэтому получалось так, что никакого движения в коридоре не происходит, но и джавапидора тоже нет. Его заволокли в каптерку под лестницей, где хранятся ведра и швабры с тряпками, и там закрыли. Под конец рабочего дня он всё же появился. За получасовой обед его изнасиловали несколько человек. Сопротивляться было бы бесполезно. Через день на нем чистым оставалось одно лицо, а на теле не было живого места. Он превращался в мразь, в животное. Его били все, даже дизайнеры и уборщицы. Его заставляли есть говно и опарышей. В очко ему совали битые лампочки, живых птиц и змей. Он стал «дельфином» – в нужнике пятнадцать дырок, он ныряет в первую, выныривает, ныряет во вторую... И так – до конца. От него постоянно воняло. С ним невозможно было рядом находиться. Был такой случай: к нам устроился работать Степаныч. Степаныч сидит на толчке, а кто-то снизу через очко хватает его за яйца. Степаныч с воплем вылетает в коридор без штанов. Напротив - айти отдел. Смех не стихал долго... Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох джавапидор даже дело заводить не стали.
577 3191318
>>191279
К нам в айти отдел пришёл новый сотрудник. Нужно сказать, что у нас в отделе работают почтенные крестогоспода. Новичка посадили за компьютер, но не успели даже дать задание, как он начал кодить. Начальник из любопытства подошёл посмотреть, что он там написал. В течении секунд тридцати он побледнел, затем посинел, затем покраснел, а потом трясущимся от нескрываемого гнева голосом сказал:

- Это же Абстрактная фабрика! На чём ты кодил до этого?

- На Джаве.

- Жабапидор! - в один голос заорали все 20 человек.

- Жабапидор! Жабапидор! Жабапидор!

Кто-то включил сирену. Над дверьми замигали красные лампочки тревоги. На окнах мгновенно сомкнулись плотные жалюзи. В офисе одновременно бывает два отдела человек по сорок. На обеде вся эта толпа собирается на первом этаже, где яблоку негде упасть. А поэтому, как охранники ни пытались вырвать джавапидора из рук разъяренной толпы, им это не удалось. По всему офису стоял сплошной рев:

- Жабапидор!

В коридоре его сразу же сбили с ног. Используя галстук как поводок, его тащили через весь коридор, передавая из рук в руки. Поэтому получалось так, что никакого движения в коридоре не происходит, но и джавапидора тоже нет. Его заволокли в каптерку под лестницей, где хранятся ведра и швабры с тряпками, и там закрыли. Под конец рабочего дня он всё же появился. За получасовой обед его изнасиловали несколько человек. Сопротивляться было бы бесполезно. Через день на нем чистым оставалось одно лицо, а на теле не было живого места. Он превращался в мразь, в животное. Его били все, даже дизайнеры и уборщицы. Его заставляли есть говно и опарышей. В очко ему совали битые лампочки, живых птиц и змей. Он стал «дельфином» – в нужнике пятнадцать дырок, он ныряет в первую, выныривает, ныряет во вторую... И так – до конца. От него постоянно воняло. С ним невозможно было рядом находиться. Был такой случай: к нам устроился работать Степаныч. Степаныч сидит на толчке, а кто-то снизу через очко хватает его за яйца. Степаныч с воплем вылетает в коридор без штанов. Напротив - айти отдел. Смех не стихал долго... Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох джавапидор даже дело заводить не стали.
578 3191363
На говне замучаешься писать бизнес-логику, получится нечитаемая лапша. Говно норм для сетевых утилиток, инфраструктурных задач, микропенисов. Для веба тоже его смысла нет брать, тот же node js или питухон с fastapi или джангой по скорости разработки дают говну за щеку.
579 3191420
>>191363
Кому нужны твои интернет магазины вонючие в 2024
580 3191555
>>191363

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


Для этого и жаба с граалем сойдёт, у нее даже больше возможностей будет с zgc
581 3191573
>>191363

> Говно норм для сетевых утилиток, инфраструктурных задач,



Что из такого можно придумать в качестве личного/пет проекта?
582 3191581
>>191573
Какой-нибудь клон логстэша например, только быстрее и экономнее
583 3191619
>>191318
Текст, который вы привели, является примером крайне жестокого и абсурдного насилия в корпоративной среде. Психологический портрет человека, написавшего такой текст, можно охарактеризовать следующими чертами:

Чувство юмора и сарказма: Автор явно пытается использовать черный юмор и сарказм, чтобы подчеркнуть абсурдность и гиперболизировать ситуацию в IT-отделе. Это может свидетельствовать о склонности к цинизму и мизантропии.

Агрессия и насилие: Текст наполнен деталями жестокого насилия, что может указывать на внутреннюю агрессию или, по крайней мере, на желание шокировать читателя. Это может свидетельствовать о высоком уровне внутренней напряженности или подавленной агрессии.

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

Критическое отношение к корпоративной культуре: Упоминание «почтенных крестогоспод» и других абсурдных элементов корпоративной жизни показывает критическое отношение к корпоративной культуре и её стереотипам. Автор может испытывать фрустрацию или разочарование в своей профессиональной среде.

Мизантропия и цинизм: Использование термина «жабапидор» и его распространение на всех сотрудников отдела демонстрирует общее негативное отношение к людям и желание унизить или оскорбить.

Потребность в выражении: Автор стремится выразить свои мысли и чувства, возможно, экстремальными способами, что может быть попыткой привлечь внимание к проблемам или эмоциям, которые он испытывает.

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

>Если человек с таким психологическим портретом обратился бы к врачу, какие таблетки бы посоветовал бы ему врач?



Если речь идет о медикаментозном лечении, возможные препараты могут включать:

Антидепрессанты: Если у пациента присутствуют признаки депрессии, антидепрессанты, такие как селективные ингибиторы обратного захвата серотонина (СИОЗС) или селективные ингибиторы обратного захвата серотонина и норадреналина (СИОЗСН), могут быть назначены. Примеры включают флуоксетин, сертралин или венлафаксин.

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

Стабилизаторы настроения: Если у пациента наблюдаются значительные перепады настроения или импульсивность, стабилизаторы настроения, такие как ламотриджин или литий, могут быть полезны.

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

Психотерапия: Помимо медикаментозного лечения, врач, скорее всего, порекомендует психотерапию. Когнитивно-поведенческая терапия (КПТ) может быть особенно эффективной для работы с агрессивным поведением и развитием эмпатии. Диалектическая поведенческая терапия (ДПТ) может быть полезна при наличии черт пограничного расстройства личности.

Поведенческие интервенции: Работа с навыками управления гневом, улучшение социальных навыков и развитие эмоциональной регуляции.
583 3191619
>>191318
Текст, который вы привели, является примером крайне жестокого и абсурдного насилия в корпоративной среде. Психологический портрет человека, написавшего такой текст, можно охарактеризовать следующими чертами:

Чувство юмора и сарказма: Автор явно пытается использовать черный юмор и сарказм, чтобы подчеркнуть абсурдность и гиперболизировать ситуацию в IT-отделе. Это может свидетельствовать о склонности к цинизму и мизантропии.

Агрессия и насилие: Текст наполнен деталями жестокого насилия, что может указывать на внутреннюю агрессию или, по крайней мере, на желание шокировать читателя. Это может свидетельствовать о высоком уровне внутренней напряженности или подавленной агрессии.

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

Критическое отношение к корпоративной культуре: Упоминание «почтенных крестогоспод» и других абсурдных элементов корпоративной жизни показывает критическое отношение к корпоративной культуре и её стереотипам. Автор может испытывать фрустрацию или разочарование в своей профессиональной среде.

Мизантропия и цинизм: Использование термина «жабапидор» и его распространение на всех сотрудников отдела демонстрирует общее негативное отношение к людям и желание унизить или оскорбить.

Потребность в выражении: Автор стремится выразить свои мысли и чувства, возможно, экстремальными способами, что может быть попыткой привлечь внимание к проблемам или эмоциям, которые он испытывает.

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

>Если человек с таким психологическим портретом обратился бы к врачу, какие таблетки бы посоветовал бы ему врач?



Если речь идет о медикаментозном лечении, возможные препараты могут включать:

Антидепрессанты: Если у пациента присутствуют признаки депрессии, антидепрессанты, такие как селективные ингибиторы обратного захвата серотонина (СИОЗС) или селективные ингибиторы обратного захвата серотонина и норадреналина (СИОЗСН), могут быть назначены. Примеры включают флуоксетин, сертралин или венлафаксин.

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

Стабилизаторы настроения: Если у пациента наблюдаются значительные перепады настроения или импульсивность, стабилизаторы настроения, такие как ламотриджин или литий, могут быть полезны.

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

Психотерапия: Помимо медикаментозного лечения, врач, скорее всего, порекомендует психотерапию. Когнитивно-поведенческая терапия (КПТ) может быть особенно эффективной для работы с агрессивным поведением и развитием эмпатии. Диалектическая поведенческая терапия (ДПТ) может быть полезна при наличии черт пограничного расстройства личности.

Поведенческие интервенции: Работа с навыками управления гневом, улучшение социальных навыков и развитие эмоциональной регуляции.
584 3191732
>>189556

> а где произошла ошибка прекрасно видно по стектрейсу.


> java.lang.RuntimeException.<init>()4,156


java.lang.NullPointerException.<init>()4,156
io.vertx.core.http.impl.ConnectionManager$ConnQueue.lambda$connectionFailed$2(Channel, Handler, Throwable)4,156
io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(boolean, PoolMetrics, Object, ContextTask, Handler)4,156
io.vertx.core.impl.ContextImpl.executeFromIO(ContextTask)4,156
io.vertx.core.http.impl.ConnectionManager$ConnQueue.connectionFailed(ContextImpl, Channel, Handler, Throwable)4,156
io.vertx.core.http.impl.ConnectionManager$ConnQueue.access$1500(ConnectionManager$ConnQueue, ContextImpl, Channel, Handler, Throwable)4,156
io.vertx.core.http.impl.ConnectionManager$ChannelConnector.lambda$connect$2(boolean, HttpVersion, ConnectionManager$ConnQueue, ContextImpl, Waiter, int, String, AsyncResult)4,156
io.vertx.core.net.impl.ChannelProvider.lambda$connect$0(Handler, ChannelFuture, Future)4,156
io.netty.util.concurrent.DefaultPromise.notifyListener0(Future, GenericFutureListener)4,156
io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultFutureListeners)4,156
io.netty.util.concurrent.DefaultPromise.notifyListenersNow()4,156
io.netty.util.concurrent.DefaultPromise.notifyListeners()4,156
io.netty.util.concurrent.DefaultPromise.tryFailure(Throwable)4,156
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run()611
io.netty.util.concurrent.PromiseTask$RunnableAdapter.call()611
io.netty.util.concurrent.ScheduledFutureTask.run()611
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(Runnable)611
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(long)611
io.netty.channel.nio.NioEventLoop.run()611
io.netty.util.concurrent.SingleThreadEventExecutor$5.run()611
java.lang.Thread.run()611
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(ChannelPromise, Throwable)3,545
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect()3,545
io.netty.channel.nio.NioEventLoop.processSelectedKey(SelectionKey, AbstractNioChannel)3,545
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized()3,545
io.netty.channel.nio.NioEventLoop.processSelectedKeys()3,545
io.netty.channel.nio.NioEventLoop.run()3,545
io.netty.util.concurrent.SingleThreadEventExecutor$5.run()3,545
java.lang.Thread.run()3,545

На, ищи. Пока найдешь, я на ГОвне микросервис успею написать.
Но зато покайфуешь что не надо err != nil писать, ведь исключения проще
584 3191732
>>189556

> а где произошла ошибка прекрасно видно по стектрейсу.


> java.lang.RuntimeException.<init>()4,156


java.lang.NullPointerException.<init>()4,156
io.vertx.core.http.impl.ConnectionManager$ConnQueue.lambda$connectionFailed$2(Channel, Handler, Throwable)4,156
io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(boolean, PoolMetrics, Object, ContextTask, Handler)4,156
io.vertx.core.impl.ContextImpl.executeFromIO(ContextTask)4,156
io.vertx.core.http.impl.ConnectionManager$ConnQueue.connectionFailed(ContextImpl, Channel, Handler, Throwable)4,156
io.vertx.core.http.impl.ConnectionManager$ConnQueue.access$1500(ConnectionManager$ConnQueue, ContextImpl, Channel, Handler, Throwable)4,156
io.vertx.core.http.impl.ConnectionManager$ChannelConnector.lambda$connect$2(boolean, HttpVersion, ConnectionManager$ConnQueue, ContextImpl, Waiter, int, String, AsyncResult)4,156
io.vertx.core.net.impl.ChannelProvider.lambda$connect$0(Handler, ChannelFuture, Future)4,156
io.netty.util.concurrent.DefaultPromise.notifyListener0(Future, GenericFutureListener)4,156
io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultFutureListeners)4,156
io.netty.util.concurrent.DefaultPromise.notifyListenersNow()4,156
io.netty.util.concurrent.DefaultPromise.notifyListeners()4,156
io.netty.util.concurrent.DefaultPromise.tryFailure(Throwable)4,156
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run()611
io.netty.util.concurrent.PromiseTask$RunnableAdapter.call()611
io.netty.util.concurrent.ScheduledFutureTask.run()611
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(Runnable)611
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(long)611
io.netty.channel.nio.NioEventLoop.run()611
io.netty.util.concurrent.SingleThreadEventExecutor$5.run()611
java.lang.Thread.run()611
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(ChannelPromise, Throwable)3,545
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect()3,545
io.netty.channel.nio.NioEventLoop.processSelectedKey(SelectionKey, AbstractNioChannel)3,545
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized()3,545
io.netty.channel.nio.NioEventLoop.processSelectedKeys()3,545
io.netty.channel.nio.NioEventLoop.run()3,545
io.netty.util.concurrent.SingleThreadEventExecutor$5.run()3,545
java.lang.Thread.run()3,545

На, ищи. Пока найдешь, я на ГОвне микросервис успею написать.
Но зато покайфуешь что не надо err != nil писать, ведь исключения проще
585 3191960
>>191732
Чего? Тебе вон указали файл, строку и столбец
io.vertx.core.http.impl.ConnectionManager$ConnQueue.lambda$connectionFailed$2(Channel, Handler, Throwable)4,156

>На, ищи. Пока найдешь, я на ГОвне микросервис успею написать.


Какой, хеллоу ворлд чтоли?
Да тут времени максимум на пару-тройку if err != nil
586 3191962
>>191420
А что нужно в 2к2ч?
587 3192006
>>191962
Боты, микросервисы, апи для моб приложений
588 3192032
>>192006
А мобильные приложения-то какие? Микросервисы на ботах? Или боты на микросервисах? И микросервисы-то в итоге для чего? Ботам общаться с мобильными приложениями? Бизнес-то в чём? Продавать ботам микросервисы?
589 3192144
>>191960
Так это строка в либе, маня
Ты как будешь искать место где она вызывалась и дала ошибку, если эта либа у тебя в десятках мест по всему проекту используется?
590 3192168
>>192032
Тудым-сюдым
image.png225 Кб, 536x470
591 3192267
Посоны, хочу самоучитель по Go, но на реальном примере. То есть чтобы с нуля делали какую-нибудь не самую примитивную штуку и на протяжении всего повествования. И по ходу дела объяснялись бы лучшие практики, идиоматика, типичные подходы.
Просто сам-то язык я знаю. Хочу именно бест-практису научиться. Было бы здорово это делать по методичке, а не методом тыка.

Можете что-нибудь посоветовать такого?
592 3192641
>>192144
Ну ты его нагнул конечно. Жёстко
593 3192754
Почему го ругается когда я делаю функцию которая возвращает приватную переменную из функции? Я например хочу считать файл конфигурации один раз на старте приложения и потом отдавать один и тот же заполненный объект
594 3192757
>>192754
Скорее пепеменную приватного типа
595 3193134
Насколько сильно дрочат литкодами на собесах на мидла? Допустим базовые какие-то задачи на палиндром или реверс линкед листа я могу но что-то большее уже тяжко. Стоит эту секцию задрачивать? Я вроде не в фаанги мечу, а всего на две-две с половиной сотыги в рф контору
596 3193506
>>192754
Ты даже ошибку не процитировал, как аноны должны понять в чем там проблема?

>>192757
Это не проблема, значение можно использовать как any.
597 3193591
>>193506
Exported function with the unexported return type
598 3194928
>>193591
Варнинг значит что у тебя публичная функция пакета возвращает приватный тип, который недоступен вне пакета. Обычно приватные типы являются вспомогательными и не предполагается их использовать вне пакета в котором они объявляются.

Вне пакета ты переменную этого типа не можешь сохранить в никакое типизированное хранилище (кроме хранилищ созданным этим же пакетом), да и кастить в any тоже мало смысла - дальше для работы с этим any у тебя останется только рефлексия.
599 3195058
>>194928
Ну у меня есть структура в которую я маршалю настройки из ямл файла,я не хочу вызывать метод на парсинг ямла каждый раз когда кому-то понадобятся настройки, вместо этого я завожу внутри приватное поле этой структуры,один раз туда считываю значения и через публичный метод гетконфиг отдаю это
600 3195299
Говнари зачем вам гемор с указателями в 2024? Тамушта так диды песали? Даже опытные говнари путаются в программке из 10 строк с однобуквенными переменными, * и &.
601 3195338
>>195299
миша угомонись
602 3195484
Почитал тредик и у меня сложилось впечатление что тут ни один человек на голанге не работает и здесь все его только учат. Признавайтесь,вы идиотские?
603 3195486
>>195484
Го - простой, очень простой язык. Обсуждать в нём совершенно нечего. Он прост и идеален. Вопросы только у новичков, которые тупее среднего программиста из гугла.
604 3195613
>>195486
Мне непонятно зачем нужен контекст и зачем его прокидывать в методы чтения из бд
605 3195718
>>195613
Просто ты тупой, иди на джаве пиши
606 3195767
>>195718
На джаве сложно,хочется на го вола ебать
607 3195773
>>195767
Тогда не еби мозги и пиши на го. Тут тебе не высшая математика, тут не плюсы, тут всё просто и понятно - сказано - сделано.
608 3196322
>>195773
Где ставить & и * нихрена понятно
609 3196327
610 3197302
>>191732

>На, ищи. Пока найдешь, я на ГОвне микросервис успею написать.


Ты реально дебил. Просто вбиваешь в поиск и находишь багу https://github.com/vert-x3/issues/issues/323
Можешь пойти попросить воркараунды.
611 3197369
>>197302
Ахаха
612 3197559
>>197369
Ну реально дебил.
613 3197622
Посоветуйте достойную книгу по mongodb с примерами на go. гуглить лень
614 3197704
>>197302
Молодец, почти неделю искал.
Только ты снова упускаешь факт что эта либа в твоей джава-лапше может вызываться в десятках мест, а эксепшен выбрасывается только в одном, и как ты будешь искать это место ты тактично умалчиваешь.

>попросить воркэраунд



Ну то есть подождать пока вендор или мейнтейнер твоей либы соизволит решить ТВОЮ проблему, а пока сервис так и будет пятисотить в продакшене. Зато сэкономил на err != nil 10 строчек, чтоб быстро локализовать где конкретно в сервисе проблема и наваять хотфикс временный.

Если бы создателю джавы платили за каждого умственного импотента, который пишет на его языке, то Сорос бы давно у него газон подстригал.
615 3197741
>>197704

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


Яж говорю дебил. Если библиотека ВЫЗЫВАЕТСЯ в моём коде, то место вызова БУДЕТ в стектрейсе.

>Ну то есть подождать пока вендор или мейнтейнер твоей либы соизволит решить ТВОЮ проблему, а пока сервис так и будет пятисотить в продакшене. Зато сэкономил на err != nil 10 строчек, чтоб быстро локализовать где конкретно в сервисе проблема и наваять хотфикс временный.


У тебя говно какое-то в голове. Тебе и в джава коде никто не мешает поймать эксепшн и обработать его. У тебя есть стектрейс, ты знаешь кто вызывает библиотеку, добавляй catch и обрабатывай. Никакой if err != nil не нужен.
616 3197747
>>197622
Да хуй они чего посоветуют.
Я тоже просил книгу - ноль ответов.
Тут два кодера сидят и бектрейсы жабы с говном сравнивают.
617 3197749
>>197741
Назови мне строчку в коде, где возникла ошибка из этого стектрейса >>191732, ебанат

Напомню твой прошлый бестолковый ответ:

>io.vertx.core.http.impl.ConnectionManager$ConnQueue.lambda$connectionFailed$2(Channel, Handler, Throwable)4,156



>Тебе и в джава коде никто не мешает поймать эксепшн и обработать его



Напоминаю твой прошлый говноматрасный ответ:

>И как раз NPE никто не обрабатывает, просто ловят наверху и пишут в лог



Что делает джавист в гошном треде когда открывает пасть? Правильно - пиздит.
618 3197753
>>197749
У них хотя бы бектрейсы есть. А ты по своему нил != нил { принт ""самсинг вент вронг"} как поймешь откуда ошибка?
619 3197762
>>197753
Это кровавый навет. И говнюков тоже есть стектрейсы. Но есть нюанс - они их создают вручную.
620 3197767
>>197747

> книгу


Как оно, там, в 2002?
У тебя есть гитхаб. Смотри примеры реального кода, а то и пиши пул-реквесты.
621 3197768
>>197753
Так принт "самсинг вронг" пишут такие же контуженные джависты.
В говне люди пишут log.Error(log.WithError(ctx, err), "some error"), в контексте у тебя допом идет все что угодно вплоть до названия метода в котором возникла ошибка + в выводе будет видна строчка твоего кода.
622 3197775
>>197762
А, ну хорошо. Можно наконструировать err-врапов и на выходе иметь стек вызовов, да?
Тогда покажите, пожалуйста, готовый рецепт (а лучше готовый инструмент), как это делать. А то обычно только максимум что туда дописывают это название текущего модуля "МайМодуле: самсинг вент вронг".
623 3197778
>>191732

> java.lang.NullPointerException.<init>()4,156


> io.vertx.core.http.impl.ConnectionManager$ConnQueue.lambda$connectionFailed$2(Channel, Handler, Throwable)4,156


Это конечно оффтоп, но мы всё равно в глубинном треде. Почему в данном случае стек не вылез в код приложения?
624 3197781
>>197775

> лучше готовый инструмент


Нахуй отсюда пошёл. Это тебе не жаба.
625 3197786
>>197775
А если серьёзно, то что-то подобное делает lo.must(). Но его надо использовать до самого верха, и это не конструкция языка, и язык никак не помогает в этом.
626 3197904
Посоветуйте снасти на жереха
627 3198665
>>197559
Не гони. Хуита же, гуглить чето, лол
628 3199269
Слушайте, что это за волшебные микросервисы на 10 строк (из которых пять это проверка на nil) все пишут? На хабре очередная статья с вайном сложнаа, говно не для этого, говно надо жрать по кусочкам и наслаждаться, если вы хотите прямо нажраться от пуза, то говно не для этого... Сахар неочевиден, генерация кода очевидна, дженерики непонятные, всё непонятное...
И ведь только, только говнари так ноют. И ноют постоянно. Все языки развиваются, идут в ногу со временем, стараются упросить работу программиста, но главное, что ни один программист на другом языке не вайнит "сложнааа". Даже перловики. Даже хаскеллитсы. Даже VBA, вечная им память.
629 3199343
Говно итак нечитаемое, с этими однобуквенными переменными, * и &, пук, среньк, тык, мык, вот и ноют.
630 3199694
>>197749

>Назови мне строчку в коде, где возникла ошибка из этого стектрейса >>191732, ебанат


>


>Напомню твой прошлый бестолковый ответ:


>>io.vertx.core.http.impl.ConnectionManager$ConnQueue.lambda$connectionFailed$2(Channel, Handler, Throwable)4,156


Мудило тупое, ты специально нагуглило ошибку которая происходит в коде фреймворка, не затрагивая пользовательский код, а теперь доебываешься как баран до новый ворот. Просто иди в пизду своей тупой мамаши.

>>Тебе и в джава коде никто не мешает поймать эксепшн и обработать его


>


>Напоминаю твой прошлый говноматрасный ответ:


>


>>И как раз NPE никто не обрабатывает, просто ловят наверху и пишут в лог


Ты мало того, что тупой, так еще и склеротик который не помнит свой собственный высер буквально пост назад:
>>197704

>Ну то есть подождать пока вендор или мейнтейнер твоей либы соизволит решить ТВОЮ проблему, а пока сервис так и будет пятисотить в продакшене. Зато сэкономил на err != nil 10 строчек, чтоб быстро локализовать где конкретно в сервисе проблема и наваять хотфикс временный.


Поскольку ты совсем тупой разжую: в нормальной ситуации никто NPE не ловит, но если есть баг и его можно замитигейтить перехватом NPE - нет никаких проблем его перехватить.
631 3199756
>>199694

> ты специально нагуглило ошибку



О пошел коупинг и отрицалово бестолкового проперженного джаводауна.
5 ссылка в гугле по "java nullpointerexception stack trace", сынище.

Дура, ты сначала топила что NPE в джаве не обрабатывают. Я привел пример всплывшего NPE наверху где неочевидно где в клиентском коде оно стрельнуло. Ты начал маняврировать что в джаве можно обрабатывать NPE. Ты же совсем запизделась, маня.
632 3199844
Джава смотрится как старое не стильное совковое говно с xml'ем. Не хочется на ней писать. Сразу ощущаешься себя скуфом 1 ass'ником.

А го - молодежно, модно, инфоцигане уроки пилят, шумиху создают. Язык в тренде. Приятно писать. Пишешь и ощущаешь себя современным человеком, идущим в ногу со временем.

Зачем мне писать на джаве? Ведь у меня нет проблем с лишним весом, я не пью, у меня не гнилые зубы, я мою голову, посещаю спортзал. Мне больше подойдёт го
633 3199928
>>199844
Паша ты и есть скуф 1Сник
634 3200206
>>199756

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


Мудило, тупое! Протри твои пиздоглазки! Буквально в том посте на который ты отвечаешь:

>>197704

>Ну то есть подождать пока вендор или мейнтейнер твоей либы соизволит решить ТВОЮ проблему, а пока сервис так и будет пятисотить в продакшене. Зато сэкономил на err != nil 10 строчек, чтоб быстро локализовать где конкретно в сервисе проблема и наваять хотфикс временный.


Поскольку ты совсем тупой разжую: в нормальной ситуации никто NPE не ловит, но если есть баг и его можно замитигейтить перехватом NPE - нет никаких проблем его перехватить.
635 3200408
>>200206

> но если есть баг



Дура запиздевшася, ОТКУДА ты заранее знаешь, будет баг или нет?
Ты написал код без обработки NPE, оно хуй пойми где стрельнуло. Да, ты потом пофиксишь и напишешь перехватку но в моменте ты обосрешься. Додик блядь.
636 3200972
Я уважаю голанг
637 3201354
>>200408

>Дура запиздевшася, ОТКУДА ты заранее знаешь, будет баг или нет?


>Ты написал код без обработки NPE, оно хуй пойми где стрельнуло. Да, ты потом пофиксишь и напишешь перехватку но в моменте ты обосрешься. Додик блядь.


Минутка очевидных истин, в рамках помоги тупому:
- никто заранее не знает где будет баг и когда проявится
- просто делаешь на самом верхнем уровне логгирование всех необработанных ошибок и все
- когда возникнет, мониторинг выдает алерт что куча ошибок, проверяешь логи и фиксаешь

И еще одна неочевидная для тупых мысль: и эксепшены и ерроры позволяют реализовывать одинаковые стратегии обработки ошибок, но в случае эксепшенов писать надо чуть меньше.
638 3201528
>>201354
Дебилоид, в случае ГОвна ты залогируешь ошибку в месте где она возникла сразу, и через withcontext пробросишь все метаданные чтоб максимально быстро ее найти.
В случае твоего даунского подхода у тебя на самом верху всплывет npe без строки клиентского кода в стектрейсе и ты будешь искать руткоз неделю, вот и вся разница. Но контуженным не понять, я уже смирился
639 3202346
>>201528

>Дебилоид, в случае ГОвна ты залогируешь ошибку в месте где она возникла сразу, и через withcontext пробросишь все метаданные чтоб максимально быстро ее найти.


>В случае твоего даунского подхода у тебя на самом верху всплывет npe без строки клиентского кода в стектрейсе и ты будешь искать руткоз неделю, вот и вся разница. Но контуженным не понять, я уже смирился


Прими таблеточки, ты что-то разнервничался.

Я так понимаю, ты тупой и не понимаешь как работает стектрейс. У тебя не будет клиентского кода в стектрейсе, только если у тебя ошибка происходит внутри фреймворка, ещё до вызова клиентского кода. Ну так и в говноланге ты такую ошибку никак не обработаешь. Теперь понятно, тупенький?
640 3203634
Почему нет встроенного метода для такой базовой операции как удаление элемента из среза?
641 3204806
>>203634
Потому что го это язык, в котором всё итак есть из коробки даже проверка наличия значения в срезе/массиве и ему не нужны фреймворки
642 3205029
>>204806
У метода delete для среза почему нет?
643 3208212
Гайз, тупой вопрос
Хочу освоить го для веба, рест апи, микро в писать
Есть небольшой опыт во фронте на реакте
Какие фреймворки надо дрочить?
644 3208242
>>208212
Спринг Бут
645 3209083
Нужен совет Go-Гуру

Пытаюсь портировать код с Javascript На Go.

Облом вышел на сравнении функций с друг другом.

У меня есть callback коллектор на JS

class MyClass {
private callbacks: (event) => void = [];
//возвращает удаление эвента
OnEvent(cb: (event) => void): () => void {
callbacks.push(cb)
return () => {
callbacks.splice(callbacks.indexOf(cb), 1)
}
}
}

То есть простая эвент система с удалением эвента с помощью анонимной функции возвращаемой при регистрации.

Но в Go нельзя найти нужную функцию в массиве, ведь они не сравниваемые. И удалить тоже нельзя. Подскажите как портировать код в Go? Эвент может просматриваться от 0 до N слушателей, необходима отписка по требованию.
646 3209170
>>209083
Положи в мапу функции с осознанными ключами и удаляй по ключу
647 3209205
>>209170
Если бы в Go был бы символ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol
я бы так легко сделал

Осознанный ключ? Это придуманная строка к примеру? Есть ли пример без использования придуманных строк как ключей, чтобы случайно на совпали ключи друг на друга.
648 3209603
>>209205

>чтобы случайно на совпали ключи друг на друга.


uuid не может совпадать
649 3210329
Нахуя языку указатели если в нем GC? Объясните тупой макаке
650 3210842
>>209083

>Но в Go нельзя найти нужную функцию в массиве, ведь они не сравниваемые.


Указатели на функцию вполне себе сравнимы https://go.dev/play/p/xhHOLyJxKNk

Но такой код гавно и я бы на ревью завернул.
651 3210938
>>210842

>код гавно


Предложи лучше
652 3211184
>>210938
Тебе уже предложили >>209170

Делаешь
type MyFuncType int
Задаёшь константы для всех возможных типов и складываешь всё в map. Так код получается намного читабельней
proccessor := functions[SomeType]
ты сразу видишь c какой функцией ты будешь работать.
653 3211214
>>211184

>SomeType


И чем лучше ебаться с типами и вручную (!!!) хуячить им номера uuid чем ссылки просто заюзать?
654 3211675
>>211214
Ты не умеешь задавать вопросы, поэтому тебе никто нормальный ответ не даст.

Вместо того, чтобы описать что тебе надо сдлать, ты рассказываешь как в жопоскрипте ты пихал два дилдака в анус и все работало, а в го так нельзя.
655 3211928
Сап, программач

Как работает эвакуация в мапе? Вот у нас по дефолту есть 8 бакетов на мапу каждый на 8 элементов. При достижении заполненности всех в среднем на 6.5 начинается эвакуация. То что старые храним и переносим постепенно это я знаю, а по какому принципу мы переносим данные? Нужно же по идее разгрузить старые бакеты. Как мы распределяем данные? Так же через младшие биты хеша, но уже для нового массива бакетов? А что делать с переполненными бакетами, у которых есть overflow бакет?

Подскажите пожалуйста
657 3211971
>>211947
С этого видоса и появился вопрос. Он как-то вскользь это проговорил. Сказал, что равномерно распределяем данные. А как не уточнил, это меня и интересует. По его картинке вообще нихуя непонятно, как будто эвакуация происходит если один бакет переполнен. И про overflow бакеты ничего не сказал
658 3211972
>>211928
И в догонку вопрос

На пик1 один иходный код бакета. На пик2, то как оно на самом деле. Тоже самое прописано и в комментариях к коду. А где мы храним собственно ключи со значениями и ссылку на допбакет? Написано, что после. Типо просто в добавок к tophash резервируем память под все перечисленное?
Снимок экрана 2024-07-05 в 21.28.37.png429 Кб, 2222x1798
659 3212983
>>211971

>Сказал, что равномерно распределяем данные. А как не уточнил, это меня и интересует.


Равномерно распределяем - значит, что создаем массив большего размера и надеемся, что уж в нем они распределятся как надо. Коллизии можно разделить на 2 типа - когда у ключей разный хэш, но они попали в один бакет. И когда у них одинаковый хэш, но они все равно разные. С первым увеличение массива и перекладывание туда - помогает, со вторым нет.

>По его картинке вообще нихуя непонятно, как будто эвакуация происходит если один бакет переполнен.


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

>>211972

>На пик1 один иходный код бакета. На пик2, то как оно на самом деле. Тоже самое прописано и в комментариях к коду. А где мы храним собственно ключи со значениями и ссылку на допбакет? Написано, что после. Типо просто в добавок к tophash резервируем память под все перечисленное?


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

>insertk = add(unsafe.Pointer(b), dataOffset+i*uintptr(t.KeySize))


b это указатель на bmap, он преобразуется в сырой поинтер, дальше по некому оффсету читается данные. Т.е. в самой структуре нет ни ключей ни значений, потому что они имеют неизвестный размер. Поэтому их присобачили после и дальше через еблю с указателями и KeySize + ValueSize ебутся с данными.

Даже на Си этот код выглядел бы на порядок лучше.
660 3213430
>>212983

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


Это понятно. Создаем массив х2 и радуемся жизни. Мне интересно как распределяются данные из старых бакетов в новые. Мы также берем их LOB, но уже для нового кол-ва бакетов? Или там другое что-то используется?

>insertk = add(unsafe.Pointer(b), dataOffset+i*uintptr(t.KeySize))


Я уже вчера успел порыться в коде. Интересное конечно у них решение, но вопрос все равно остался. У нас же это никак не зарезервированная память. Что мешает переписать ее случайно?

>Голанг очень убогий язык


Думаешь в данном случае это костыль, а не какая-то оптимизация? Нам же буквально все равно должно быть как оно работает, если работает стабильно.
661 3213819
>>213430

>Мне интересно как распределяются данные из старых бакетов в новые. Мы также берем их LOB, но уже для нового кол-ва бакетов? Или там другое что-то используется?


Просто берешь и вставляешь каждую пару key-value, как при обычном insert.

>Я уже вчера успел порыться в коде. Интересное конечно у них решение, но вопрос все равно остался. У нас же это никак не зарезервированная память. Что мешает переписать ее случайно?


Он хитро создается

>ovf = (bmap)(newobject(t.Bucket))


newobject это внутреняя функция для создания объектов, а Bucket это

>Bucket Type // internal type representing a hash bucket


я не нашел где он инициализируется, но подозреваю что там создается Type в котором зарезервировано место под все ключи, значения и оверфлоу.

>Думаешь в данном случае это костыль, а не какая-то оптимизация?


Мапа реализует джененрики начиная с самой первой версии говноланга. Половина строится на магии компилятора, другая на указателях и поинтерной арифметике. Это просто тупо не реализовать иначе - у тебя bmap имееет переменный размер в зависимости от типа ключа и значения. Ты либо все сводишь к указателями и тогда можно фиксироовать размер, но будет ебля с разыменованием и потеря перформанса или дрочишь указатели. Ну т.е. да, это оптимизация перформанса в смысле чтобы

>map[int]int


не вырождался в

>map[int]int


но реализация через поинтерную арифметику идет от убогости языка.
662 3213821
>>213819
не вырождался в

>map[⚹int]⚹int

663 3253220
>>189142
Можно объяснить новому работодателю, что сейчас ты получаешь 240 на Java, но хочешь писать на Go и рассчитываешь на такую же зарплату в перспективе. Спроси, возможно ли пройти пересобеседование через полгода, чтобы оценить твой прогресс и возможность повышения зарплаты.
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

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