Этого треда уже нет.
Это копия, сохраненная 5 августа 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Go тред №19 /go/ 2286748 В конец треда | Веб
Cамого МУЖЕСТВЕННОГО в мире языка Go тред №19 /go/

ВЕЛИЧЕСТВЕННОЕ БЕЗХОМЯЧЬЕ ЛОГО ЭДИШН

Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, богатую и универсальную стандартную библиотеку функций и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.

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

Растобляди завидуют, сектантская запарта не переваривает.

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

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

Полезные ресурсы:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/
- Смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw

Обновляемый список с пакетами: https://github.com/avelino/awesome-go

Небольшой канал треда: t.me/golang2ch и даже живой

Предыдущий тред умирает здесь: >>2165418 (OP)
2 2286762
Шарп лучше чем Go.
3 2286819
>>286748 (OP)
Elixir же лучше го, нет?
4 2286824
>>286819
Шарп лучше эликсира.
5 2287054
>>286819

>Elixir


Полурак-полухуй полуруби-полуэрланг, всратый пиздец
6 2287159
>>286748 (OP)

>Cамого МУЖЕСТВЕННОГО в мире языка


А при чем тут Си?
7 2287211
>>2285821 →

>Что для вас хуже, или от чего больше воняет: копипаста в соурс коде, или ебанутое нагромождение абстракций?


они идут рука в руку, когда люди делают абстракцию и копипастят 15 "независимых" пакетов для своей абсракции, меняя там по одной константе, но в одном пакете неиронично добавляют две новые строчки. в то же время как это всё говно можно было сделать. просто. менее. абстрактным.
но, откровенно говоря, напрашивается вывод, что это не дихотомия, а ортогональные проблемы.
8 2287247
Чем вы парсите аргументы командной строки? Стандартный flag урезанная хуета, с тем же успехом можно через os.Args парсить. Нашел вот такой пакет, выглядит пока неплохо.
https://pkg.go.dev/github.com/alexflint/go-arg
9 2287315
>>287247
Кобра
10 2287390
>>287054

>полуруби-полуэрланг


Это же идеально.
11 2287935
>>286748 (OP)
Как заставить себя пилить пет-проект?
12 2287945
>>287935
Вместо го взять язык, который нравится.
13 2287967
>>287935
Зачем.
14 2288021
>>287945
А что делать, если мне никакой не нравится, потому что сорта говна?
15 2288043
>>287247
flag. мне много не надо. обилие флагов это хуевый дизайн.
16 2288238
>>287935
Никак, хороший пэт-проект можно запилить только на собственном интересе и энтузиазме. Найди интересную для себя тему и пили.
17 2288242
>>286748 (OP)
хочу вкатиться в go, как вообще идея, если нету коммерческого опыта в беке?
18 2288244
>>288242

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


Очень хуёвая идея.
19 2288245
>>288244
и что делать тогда?
как правильно вкатываться в го?
20 2288246
>>288245
Начать с какого-нибудь другого языка для бэка, дорасти там до миддла и перекатываться.
21 2288252
>>288242
на стажера опыта в беке вообще не надо. я вкатился, пробуй. один хуй у тебя всего штук 5 компаний куда надо пробовать - авито, озон и т.п. так что дохуя времени это не займет, плюс, если попросишь, то они тебе фидбек дадут. учить шарт/жаву должно быть твоим вторым вариантом, тебе на них все равно с таким же нулевым коммерческим опытом собеседоваться, разве что вакух в говноконторах больше.
22 2288270
>>288246
>>288245
Ну можно учить параллельно го и CS, VCS, DB, но с этого, мне кажется, охуеешь, и смысла большого в выборе именно Го не будет.
Если есть прям чёткая цель, я бы нашёл толкового препода, который начинает с базы и Си/Паскаля, тогда бы быстрее пошло.
23 2288274
>>288252
Тогда уж для безопасности учить пхп цмс, а параллельно го как основной варик
24 2288275
Ну и где блять дженерики? Где 1.18?
image.png383 Кб, 624x450
25 2288301
>>288274

> учить пхп цмс


А через 5 лет обнаружить себя ковыряющим магазины на битриксе. Отличный план.
26 2288618
>>288242
Вкатывайся, работу на самом деле всегда можно будет найти, а с опытом, уже сможешь во всякие озоны и вайлдберсы вкатится. Есть у меня знакомый, который действительно хотел работать и искал на протяжении месяца, ну его и взяли, стажером (trainee) на Rust в маленькую (< 20 сотрудников) контору.
27 2288650
>>288301

>А через 5 лет обнаружить себя ковыряющим магазины на битриксе. Отличный план.


Это значит 5 лет опыта программирования. Битриксом зарабатываешь, остальное для себя делаешь. Один из основных разработчиков Битрикса, Александр Сербул, пишет на Хаскеле и многих других языках, хорошо знает математику. Очень крутой инженер, умный человек. Не плюется и не кидается говном как вы школьники.

Тебе таким никогда не стать. Даже если ты не будешь использовать PHP и Битрикс. Проблема не в них, проблема в вас. Вы ни на что не годитесь. PHP можно использовать как ступень вверх. Вам же гордыня не позволяет. Для вас лучше быть нищим бездельником чем писать на PHP.
28 2288901
>>288242
а вот они не спрашивают, а идут к цели
29 2288969
>>288650
Пчел, я уже лет 10 на пхп....
30 2289017
>>288901
>>288618
>>288252
Спасибо.

>>288270
Все это почти есть.
31 2289027

> - Емкий пошаговый гайд с азов до джуна (go tour на максималках): https://www.practical-go-lessons.com/


зря убрали из шапки, тоже годнота
32 2289162
>>289027
Вернёшь, когда будешь перекатывать.
33 2289201
Какие есть пакеты для создания кроссплатформенного гуи на го? ГТК\Кьюти\Вебуи идут нахуй, мне интересны альтернативы.
34 2289202
>>289201

> Вебуи идут нахуй


Ты выбрал не тот язык.
35 2289212
>>289201
ждешь каких-то ответов кроме https://github.com/avelino/awesome-go#gui который в ОП-посте? ну можешь свой на 2д либе вроде ебитеня https://github.com/hajimehoshi/ebiten накидать, вполне посильная и познавательная задача. ну и другие движки чекни.
36 2289520
>>289201
На го нормальный гуи не напишешь.
Если нужен кроссплатформенный гуи, то бери электрон/js или qt/C++. Все остальное вымерло.
37 2289584
>>289520
А джава?
38 2289610
>>289584
Гуй на жабе никогда не был популярен, а сейчас просто мёртв.
39 2290182
>>288275
Уже 2 версии беты залили, релиз вроде в марте планируют
40 2290189
>>289201
>>289520

берите дарт и флаттер, то что нужно для гуя
остальное - говно
41 2290194
>>290189
Они ж сдохли давно, не?
42 2290195
>>290189

> имплаинг дарт не говно

43 2290197
>>290194
136k
https://github.com/flutter/flutter
Твоя мать здохнет раньше, брат)
44 2290201
>>290194

топ язык для кроссплатформ (а другого не надл) гуя под любую платформу
45 2290439
>>290197
Как число STARS коррелирует с использованием технологии?
Я например ставлю звёздочку для добавления в закладки, чтобы потом посмотреть. Обычно на этом знакомство и заканчивается.
46 2290440
>>290439
И да, добавленные проекты публично видны у тебя в профиле ?tab=stars, значит всякие вкатотуси добавляют себе проекты, чтобы выглядеть шарящими.
47 2290740
>>290440

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


Так это же шиза уровня ревнующих тянок, которые следят кому их парни ставят лайки в инсте.
Я провел пол сотни собеседований ждунов, гитхаб публиковала половина, и самое интересное что там было это именно их код, а не то что они лайкали или форкали.
48 2291150
49 2291188
>>286748 (OP)
syntax error: function type must have no type parameters
syntax error: function literal must have no type parameters
syntax error: method must have no type parameters

Ну и нахуй они тогда нужны, если ничего сложного с их помощью нельзя сделать?
50 2291222
>>291150
Спасибо, посмотрю!
51 2291244
>>291188
Да в говне на всё Особое Видение, делают как угодно, лишь бы не как в других языках. Когда завезут эксепшены, тоже сделают какую-нибудь хуйню так, что никто не захочет пользоваться.
52 2291335
>>291244
Исключениями и так никто не хочет пользоваться.
53 2291394
>>286748 (OP)
Вот, подумываю зайти в каждый тред, кроме Си и Паскаля, и обосрать ваши языки. Насчёт С++ не уверен. Он был хорош, пока туда не начали тащить лямбду.

А, так за что я же не люблю golang? Ну синтаксис вроде ничо так, но размер исполняемых файлов это полный пиздец. Понимимаю зачем и почему, но принять это не могу.
54 2291446
>>291394
А какой в среднем размер бинарника у го приложения?

мимо
55 2291610
>>291394

>2022


>размер исполняемых файлов


Ты ебанутый?
56 2291618
>>291394
ПЕРЕПИСАЛ GNU COREUTILS НА GO
@
ТЕПЕРЬ КАЖДЫЙ ДОКЕР-ОБРАЗ ЗАНИМАЕТ 15 ГИГОВ
57 2291622
>>291446
А что такое "в среднем"?

В целом есть опции как везде, например, обрезать символы (которые тащатся по умолчанию с бинарником) и узерать размер бинаря в среднем на ~треть и иже с ним. Правда никто не юзает, ибо нахуя.
58 2291639
>>291610
Двачую, кого это вообще ебать должно, если ты не малварь для микрочипов пишешь. А если ты пишешь такое, то будешь писать на асме.
59 2291661
>>291622
Анон написал, что размер бинарника - пиздец. Мне стало интересно, насколько жирный бинарники у го
image.png44 Кб, 640x640
60 2291753
>>291610
Нет ты. Швейцарский нож для JSON, написанный на Си (jq называется) весит 300 КБ. А теперь посмотри на тупой нож для JSON, написанный на Го.
61 2291757
>>291610
>>291753
Бляяя, я обосрался с примером. Это dynamically linked jq весит 300 КБ. Statically linked почти 4 МБ. Но ты всё равно не прав. Размер имеет значение.
62 2291965
>>291757
Имеет значение для чего? На го пишут энтерпрайза системы, где каждый микросервис - это обернутый в докер контейнер.
В среднем гошный сервис весит 10-50 мб.
Еще раз для чего и кого это имеет значение? Конкретный пример пожалуйста.
16311997734440.png651 Кб, 700x655
63 2291983
>>291965

>Имеет значение для чего?


Для индусского энтерпрайза крутящегося на raspberry pi, очевидно.

>>291757

>1.5 мб это пиздец


>Statically linked почти 4 МБ


Это другое?
64 2292127
>>291394
>>291661
У меня на проектах бинари по 60-120 мегабайт.
С одной стороны дохуя, с другой - контейнеры с системными зависимостями и без этих бинарей весят мегабайт по 200-300
>>291610
Программисты-анальники же
65 2292156
>>291965

> На го пишут энтерпрайза системы,


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

>>292127

>бинари по 60-120 мегабайт


Очевидно что это бинарный говнокод сгенерированный говнокомпилятором.

Наверное нужен мировой кризис, охуеный такой с общемировой депрессией, банккротством и разрушением производств, чтобы всю шелупонь смыло.
66 2292165
>>292127

> 60-120 мегабайт


> для сервера


Лол. Я думал там за гиг-два оно вываливается, а тут всего лишь 100 метров
67 2292171
>>292156

> Очевидно что это бинарный говнокод сгенерированный говнокомпилятором.


У нас много зависимостей и кодогенерации, так что не сказать что это прямо поток инструкций говна. Но да, го компилятор оптимизирован под другие вещи, размер бинаря оптимизируют по остаточному принципу.
>>292165
Ты учти, что при исполнении весть бинарь вычитывается в память, т.е. я еще ничего не сделал полезного, а 100 метров памяти уже занял.
68 2292209
>>292156

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


Ыыы бля а лучшы ядирная вайна штоп была!
Школотрон, спок, мы тебе не запрещаем лабы на асме и сишке писать.
69 2292247
>>292156

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


Никто тебе не запрещает написать компилятор для Go с динамической линковкой.
70 2292248
Пробовал strip натравить?
71 2292312
>>291753
ну можешь тот же швейцарский нож написать и он у тебя целых три-четыре МБ будет вместо 1.5. функционал с размером слабо коррелирует.
>>292156

>Очевидно что это бинарный говнокод сгенерированный говнокомпилятором.


с такими размерами нихуя очевидного нет, они могут говна себе наэмбедить вроде свагера, у которого веб интерфейс 20 мб сразу отжирает. мне блядь вообще интересно сколько логики на 80 мб в сервис нужно засунуть
>>292127

>С одной стороны дохуя, с другой - контейнеры с системными зависимостями и без этих бинарей весят мегабайт по 200-300


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

>Ты учти, что при исполнении весть бинарь вычитывается в память, т.е. я еще ничего не сделал полезного, а 100 метров памяти уже занял.


а ты оправдывайся https://stackoverflow.com/questions/31722881/is-an-entire-static-program-loaded-into-memory-when-launched
72 2292422
>>292312

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


зато можно потом потом на продакшне пошурудить как будто в обычном линуксе. И vim нормальный.
73 2292426
>>292312

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



И могут ли миллионы мух ошибаться?

$ curl -s https://hub.docker.com/v2/repositories/library/ubuntu/ | jq -r ".pull_count"
6507617222
$ curl -s https://hub.docker.com/v2/repositories/library/alpine/ | jq -r ".pull_count"
8695923962
$ curl -s https://hub.docker.com/v2/repositories/library/centos/ | jq -r ".pull_count"
1032061194
74 2292431
>>292312

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


Где-то видел статью, что в случае джанго-приложения вообще не важно альпайн это или убунта, т.к. если установить все необходимые зависимости размер образа будет в обоих случаях больше 400 мегабайт
75 2292452
>>291188
Потом всё это запилят. Скажи спасибо, что Пайк вообще снизошёл и стал пилить дженерики
200c779b5340e288c06bc4cb912ba0bc.jpg8 Кб, 160x160
76 2292461
>>292247
Чтобы те, кто будет администрировать это говно складывали все эти динамические либы в один контейнер с каждым сервисом и конечный результат был ещё больше.
16414546622790.jpg10 Кб, 512x382
77 2292470
>>292312

>а ты оправдывайся https://stackoverflow.com/questions/31722881/is-an-entire-static-program-loaded-into-memory-when-launched


Проиграл.
Ох уж эти зумеры-байтоёбы.
78 2292484
>>292312
Ох бля как вспомню статические бинари в яшке на 900метров...
79 2292626
>>292422

>vim нормальный


Да, ради этого стоит тянуть 300 МБ говна.
80 2292707
>>292209

>мы


Такой смешной. Потешеый прям. Отучайся говорить за всех. Отучил себя - отучи товарища.
81 2292841
>>292156
Куда тянуть? Как это вообще влияет на что-то? У тебя адсл на проде или что? Бред какой-то
82 2293000
>>287390

Идеально был бы просто компилируемый руби. Только многомерные массивы менее ебануто сделать и идеальный ЯП.
83 2293003
>>2285821 →

Просто вымораживает крестовое ООП ради ООП, поэтому копипаста лучше.
84 2293006
>>289201

Кроссплатформенный гуй это только кутя, ну или электрон для говноедов.
85 2293184
Гоферы, а почему у вас в языке нет неизменямых переменных?
86 2293193
>>293184
не очень понял, а это что ? https://go.dev/tour/basics/15
87 2293211
>>293193
Это константы со значениями, определяемыми во время, компиляции. А мне хотелось бы объявить неизменяемым, допустим, значение, полученное из функции, чтобы случайно его потом не поменять
88 2293216
>>293000
Crystal?
89 2293221

> .const initializer f() is not a constant


Просто пиздец.
Оправдывайтесь, говноеды.
90 2293237
>>293211
Ну делать можно например структуру с приватными полями и паблик конструктором. Один раз засетил поля, дальше менять не можешь.
91 2293263
>>292841
Я свой первый комп с кассеты магнитофонной загружал.
А первый IBM PC/XT компьютер, до которого мог дотянуться, был в студенческой лабе и это был Искра-1030 с 640 Кб ОЗУ и HDD на 10 Мб, на котором умещалась MS-DOS, Turbo-C, студенческие лабы и одна игрушка. Вроде Digger. И всё это было снабжено чёрно-белым CGA-монитором. И игрушки там были не всегда, зачастую студенческие лабы занимали слишком много места.

>адсл


MNP5 9600 baud
92 2293268
Какие пет проекты можно делать на го? Это должно быть что-то более низкоуровневое, чем какой-то блог? Или тоже без задней мысли грузить джейсоны?
93 2293279
>>293216

Ебааааать, что я пропустил. Добра.
94 2293294
>>293268
Го это в первую очередь про еблю в джейсоны gRPC в гугле. Не хочешь такое пилить - попробуй поиграться в горутины и каналы, например в вебсокет-чате, веб-крулере или внезапно гуёвом приложении, например игре.
95 2293334
>>293268
сделай какой-нибудь простой интерфейс для terraform.

ах ты не знаешь что это? ну так тебя предупреждали
96 2293345
>>293334

>terraform


Ох и хуета ебучая. Нахуя вам кластеры разворачивать автоматически? Руками что, не судьба? Подъебать бы вас, подсунуть конфиг на пару тысяч мощных инстансов, что хостинг провайдер загнал вас в нищету и долги.
маркс.jpg177 Кб, 634x800
97 2293350
>>293345
Да нам то не надо, но проклятые капиталисты хотят отнять у нас средства производства и для этого требуют, чтобы он тоже был в виде кода!

К сожалению, быть луддитом я не могу. Очень кушать хочется.
98 2293395
>>293350
Ох лол, это мне напомнило как я взяв на проекте задачу по Цефу пошел в русскоязычное комьюнити с вопросом по нему, так меня там куча людей обложила хуями за то что я какой-то хуйней занимаюсь, которая им показалась бесполезной (я делал оператор по нему с определенной продуктовой логикой). После этого туда не заходил, стыдно
99 2293398
>>293395
Таково любое русскоязычное комьюнити.
100 2293410
>>293395
Ничего не понятно.
Понятно, только что твои рабочие таски незнакомые люди отказались помогать делать и обложили хуями.
Так по-моему любое коммунити делает. Просто не все выкупают тонкий стеб на английском
101 2293423
>>286748 (OP)
Незнаю по теме пришел или нет, подскажите анонасы, куда копать. Вообщем нужен бот на андроид, для автоматизации, грубо говоря создание кликера с интеллектом, куда идти, что изучать? Какой язык, какая ide нужна? Для игр на android планирую делать программы, которые будут выполнять рутинные действия.
102 2293424
Что-то я эксепшенов у вас в языке не вижу.
Они у вас вообще есть?
103 2293508
>>293424
Нет.
104 2293509
>>293423
Спросить в андроид треде не догадался?
105 2293579
>>293424
Есть, называются panic (try), recover (catch) и defer (finally), используй смело.
106 2294060
>>286748 (OP)
https://rocketnine.itch.io/citylimits
Там нагофили очередную игр на ебитени
107 2294475
Какая разница между jaeger, opentelemetry, opencensus, zipkin, etc? И что все таки юзать?
108 2294486
>>294475
то, что у тебя в конпании юзают. от трейсинга смысла почти нихуя когда у вас 5 сервисов и три человека в команде.
109 2294907
>>293211

> случайно не поменять


Просто научись сосредотачиваться. Я серьёзно: у вас в языке даже нет макросов, которые могут что-то неочевидно менять.
110 2294914
>>286748 (OP)

>Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других.


Это ещё что за пиздёжь?
111 2294926
>>294914

Кен Томпсон стоял в истоках всего перечисленного. Пайк там тоже оядом был.
Bell Labs подарили миру дохера важных весчей.
112 2294934
>>294926
Даже Го? Я думал языку лет 5 отроду.
113 2294938
>>294934
Ты прикинь, создатели сишки и юникса создали сишку и юникс, 100500 лет ничего не делали и решили сделать Go.
114 2294950
>>294938

>создатели сишки и юникса создали сишку и юникс, 100500 лет ничего не делали и решили сделать Go.


Пиздец они потешные.
115 2295247
Почему создали iota, как это вообще читается, а не type ... enum?
116 2295298
>>294914
Go - это слегка улучшенный Limbo, который в Bell Labs разрабатывался.

>>294934
С момента первого релиза прошло больше 10 лет...
117 2295350
>>295298

>улучшенный Limbo



прикольно, такие же каналы, как в го

но зато в нем есть туплы, а в гошке нет =(
118 2295566
у меня закончилась подписка на идею личном маке от предыдущего работодателя
текущий дает только на рабочем(
кто в чем кодит?

не знаю, хочется купить all-product-pack от jetbrains, но жаба душит
можно купить только goland или только idea
или лучше привыкать к vscode?
119 2295577
>>295566
Пиратство.
120 2295617
>>295566
надо было просто юзать вскод с самого начала
t. не пользуюсь голандом хотя лид сказал лицуху выпросить
121 2295693
>>295577

не катит же
раньше же работали публичные license-сервера, вроде xidea.online
вбил - все работает
а сейчас джетбрейнсы гайки затянули
122 2295815
>>295566
#!/bin/bash
#https://github.com/PythonicNinja/jetbrains-reset-trial-mac-osx/blob/master/runme.sh

for product in IntelliJIdea WebStorm DataGrip PhpStorm CLion PyCharm GoLand RubyMine Rider; do
echo "Closing $product"
ps aux | grep -i MacOs/$product | cut -d " " -f 5 | xargs kill -9

echo "Resetting trial period for $product"

echo "removing evaluation key..."
rm -rf ~/Library/Preferences/$product/eval

# Above path not working on latest version. Fixed below
rm -rf ~/Library/Application\ Support/JetBrains/$product
/eval

echo "removing all evlsprt properties in options.xml..."
sed -i '' '/evlsprt/d' ~/Library/Preferences/$product/options/other.xml

# Above path not working on latest version. Fixed below
sed -i '' '/evlsprt/d' ~/Library/Application\ Support/JetBrains/$product
/options/other.xml

echo
done

echo "removing additional plist files..."
rm -f ~/Library/Preferences/com.apple.java.util.prefs.plist
rm -f ~/Library/Preferences/com.jetbrains..plist
rm -f ~/Library/Preferences/jetbrains.
.*.plist

echo "restarting cfprefsd"
killall cfprefsd

echo
echo "That's it, enjoy ;)"

Выполняешь после окончания триала, не благодари
122 2295815
>>295566
#!/bin/bash
#https://github.com/PythonicNinja/jetbrains-reset-trial-mac-osx/blob/master/runme.sh

for product in IntelliJIdea WebStorm DataGrip PhpStorm CLion PyCharm GoLand RubyMine Rider; do
echo "Closing $product"
ps aux | grep -i MacOs/$product | cut -d " " -f 5 | xargs kill -9

echo "Resetting trial period for $product"

echo "removing evaluation key..."
rm -rf ~/Library/Preferences/$product/eval

# Above path not working on latest version. Fixed below
rm -rf ~/Library/Application\ Support/JetBrains/$product
/eval

echo "removing all evlsprt properties in options.xml..."
sed -i '' '/evlsprt/d' ~/Library/Preferences/$product/options/other.xml

# Above path not working on latest version. Fixed below
sed -i '' '/evlsprt/d' ~/Library/Application\ Support/JetBrains/$product
/options/other.xml

echo
done

echo "removing additional plist files..."
rm -f ~/Library/Preferences/com.apple.java.util.prefs.plist
rm -f ~/Library/Preferences/com.jetbrains..plist
rm -f ~/Library/Preferences/jetbrains.
.*.plist

echo "restarting cfprefsd"
killall cfprefsd

echo
echo "That's it, enjoy ;)"

Выполняешь после окончания триала, не благодари
Снимок экрана 2022-02-13 в 13.30.50.png224 Кб, 1350x984
123 2295817
>>295815
Звездочки сожрала пидорская макаба.
Поправь сам
124 2295894
>>295817
Шоб Кабаныч твой триал так сбрасывал, собака!
125 2295923
>>286748 (OP)

> https://tour.golang.org/welcome/1 (есть на Русском)



ГДЕ на русском? На японском, бразильском, польском вижу, а на русском - нет(
126 2295927
>>295817

а оно точно так работает?
я недавно брал триалку, оно требовало, чтобы я залогинился в jetbrains аккаунт и оно хранит инфу о триалах там.
или это надо какую-то старую версию ставить?
127 2295937
>>295927
Хз, я идеевскими продуктами в основном не пользуюсь. История по коммитам у них очень приятно сделана, только ради этого стоит. Обновил до последней версии, запустил, да, учетку потребовало. Авторизовался, запустил сброс триалки - готово, предлагает триалку на месяц. Полагаю, они инфу о лицензии хранят, но не о триалке
128 2295959
на этой вашей Го можно мобильной приложение/веб приложение написать?
Или только бэк?
129 2295962
>>295959

в теории можно
мобилка - fyne
веб - vugu

они выглядят более менее зрелыми и юзабельными
но опять же, нафига нормальному бэку скатываться до уровня клиенто-макак?
130 2295963
>>295959
Только бэк, да и то не всегда.
131 2295967
>>295937

не прокатило

>Error fetching licenses for GO / anton : Existing trial license for GoLand 2021.3 is expired

132 2295970
>>295967
Ну хз, трудно сказать. Я на пайчарме так уже месяца 4 сбрасываю лицензии. Попробуй удалить лицензию, потом накатить скрипт и попробовать триалку.
133 2295971
>>295963
Что значит не всегда?
Какие еще есть сферы для Го?
Нашел какой-то gobot, типо для роботов и дронов.
134 2295978
>>295971
Еба, челик, если ты работу ищешь - пиши бек, про остальное пока забудь. Если спрашиваешь про то, можно ли написать Х на нем? Можно. Даже перл можно засунуть куда угодно, надо ли только.
135 2296042
>>295978

>челик


Зарепортил малолетку
Борда 18+, уёбывай
136 2296097
>>296042
Хуя грузчик из ашана пригорел.
137 2296102
>>295693
Пидорасы они, со своей сраной авторизацией.
138 2296114
>>296102
пидорасами они стали еще лет десять назад стали, когда ввели подписочную модель
вот тогда они основательно в говно окунулись
но нет, выплыли как-то
139 2296118
>>296102
Деньги не хочешь платить ты, а пидорасы они.
140 2296212
Шо за хуйня эти ваши микросервисы?
141 2296217
>>296212
Это когда ты сам создаешь себе проблемы и героически их решаешь. Например shared database vs per service database, eventual consistency
142 2296219
>>296217

>Это когда ты сам создаешь себе проблемы и героически их решаешь.


В этом же вся суть айти...
143 2296225
>>296219
Только тс-с-с-с! Тихо! Чтобы Кабаныч не услышал...
144 2296341
Пишу свой первый яп, никогда таким не занимался. Но уже на этапе получения токенов из вещественных чисел чет проблемы. Полагаю их также надо, как и двузначные операторы числа парсить?
145 2296368
>>296341
При чём тут Go?
146 2296568
>>296118
Я не хочу нарушать свою приватность. Как будто им моих денег мало, предлагают ещё надеть ошейник в виде емейла, чтобы жрать их рекламу.
147 2296571
Есть варики устроиться стажером\джуном, если на го вкатиться? А то чет я очкую, кого не спроси - говорят забей, тут только перекатыши с опытом нужны, но я думаю они пиздаболы.
148 2296576
>>296571
wildberries (может и ozon тоже) на hh набирает стажеров на go. Попробуй отправить резюме, лучше с каким-нибудь своим кодом. Вдруг фортанет.
А так да, в основном все ищут уже с опытом go или другого языка. Джунов по факту нигде не берут.
149 2296612
>>296368
Иди гуляй, залетный.
150 2296614
>>296612
Отвечай на вопрос, сука.
151 2296636
>>296614
Ехай нахуй, ответил
152 2296647
>>296636
Слит.
153 2296652
>>296571
варики еще два года назад были. я понимаю, что за два года всё может поменяться, но я недавно хх чекал и стажеров всё ещё набирали, не вижу причин почему это может поменяться. просто хх чекай епта. алсо в контору пидарасов (вб) не иди если другие варики есть.
154 2296654
>>296647
Иди пиши круды, когда подрастешь, приходи и можешь тролить
155 2296679
>>296652
С авитой что? Вроде там жёстко попускают на собесах, даже если ты на энтри-левел самый заявляешься.
Стоит туда пробиваться? Или искать нормального Джона Бора?
156 2296733
>>296679
по экспириенсу в авите норм на собесах было и вполне интересно/познавательно. я бы сказал что стоит попробовать. они фидбек дают и даже книжки могут порекомендовать. если не дали, то попроси словами прост, херочка с человечками переговорит и с чем-то вернется. лично я практически обосрался на собесе с задачками легче, чем литкод лизи, но прошел на мидла, что и было моей целью. майлейдж мей вери оф корс. алсо старайся несколько оферов одновременно получить, это вообще изи 20-40% прибавка (хотя если бы я на стажера собесился ради опыта, то мне было бы на это похуй)
ждём на хайринг дей короч https://hiringday.avito.ru/go
157 2296741
>>296733
Что за софтскилы? Я пчёл залетный и не понимаю что вы там проверяете, но вообще умею немного в риторику(черную, белую) это про это? Типа чтоб углы сглаживать в общении с коллегами?
158 2296755
>>296733
Как это ты обосрался, но прошел в мидлы?
159 2296781
>>296755
хз честно говоря. лично я себя бы откровенно не пробил, но видимо интервьюеры добрые попались. я чисто зафакапил из-за волнения (там штук 9 на прогаммировании было наблюдателей) на вопросах, которые я знаю, как решить. на фидбек части сказали, что большинство и двух задачек не решили и на самом деле еще хуже можно было обосраться. как я понимаю, у гохи не только нехваток вакух, но и нехваток кандидатов при этом.
>>296741ё
ага, углы при общении сглаживать, но при этом высказываться, если тебя что-то беспокоит. "результат начинается с меня", "решай быстро и аргументированно" и всякое такое из ценностей. в финальном интервью была довольно долгая часть с двумя лидами, но ответы, которые они хотят, вполне очевидные на самом деле и просто не будь дохуя конфликтным и т.п.
160 2296807
>>296781

>решай быстро и аргументированно


Всегда проигрывал с этого. Когда условия противоречащие, когда причина ошибки даже близко неизвестна, когда взаимодействие идет с третьей стороной, у которой нет версионности апи и оно меняется со как ебыри у шлюхи
161 2296820
>>296741
>>296781
>>296807
"Софтскиллы" это такое оправдание, что у хэрочки красный день календаря а тимлида попустил кабаныч, так что ты им сразу по фотографии не нравишься и хочется доебаться - желательно без необходимости что-либо доказывать и пруфать.
162 2296899
>>296341
Я думаю 99.9% обычных не борщехлебов как ты кодеров тебе не скажут ничего лучше "а ты посмотри как в компиляторах других языков устроено", но ты, наверное, и сам до этого дошел.
163 2296944
>>296341
что такое ЯП? Язык программирования?
164 2296946
>>296944
Нет блять, ЯПлакаль.
165 2296950
>>296946
А при чем здесь GO тогда?
Ты на Go пишешь?
166 2296954
>>296733
Я даже скрининг не прошёл туда, лол. Ну да, мотивирует хоть что-то начать делать. Я вот думаю, вкачать гитхаб и нетворкинг и пройти какие-то экзамены с сертификатами, чтоб вот этой хуйни с душными собесами вообще избежать.
167 2296957
>>296781
Ну и сколько там платят-то мидлам в итоге, чтоб терпеть эту псевдофаанговскую хуету вместо собесов? Тыщ 200-то есть хоть?
168 2296972
169 2297016
>>296733
ну и почему в вашем гадюшнике одновременно с этим цирком, сняли все вакансии на Go? Я даже оценить не могу стоит или не стоит мне участвовать.
Сколько раньше платили мидлам?
170 2297162
>>296820

не прошел по софтскиллам - это когда полчаса на собесе не можешь держать себя в руках, не выдавая двачерскую натуру
и тимлид такой думает, что у него и так уже слишком много долбоебов в команде и нах нужен еще один такой
171 2297200
>>296972
кинь пример синтаксиса
172 2297202
Го как первый язык норм?
173 2297230
>>296571

>Есть варики устроиться стажером\джуном, если на го вкатиться?



Сбер начал понемного гошников набирать на джунские и стажерские позиции. Яндекс тоже.
Из традиционного - озон, авито, wildberries. Больше никто особо не берет.

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

>Полагаю их также надо, как и двузначные операторы числа парсить



Нет, это костыль.
К тому же это не простая задача. Парсинг вещественных чисел довольно заебистая задача, лучше открой талмуды по компиляторам и посмотри там
175 2297240
/-?\d+\.\d+/
176 2297244
>>297202
Нет.
Как первый язык лучше брать питон или джаву/шарп. Питон просто чтобы научиться программировать. Джаву и шарп чтобы научиться ООП, чистому коду, чистой архитектуре, паттернам, техникам рефакторинга и прочим помойным легасным техникам, которые почему-то в Го очень не любят, но они все равно пригождаются постоянно.
177 2297250
>>297244
А джаваскрипт?много смех
178 2297255
>>297244

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


Мог бы проще - абстрактные фабрики синглтонов

> которые почему-то в Го очень не любят


Зависит от места, где-то всем рулят деды, которые пишут как на сишечке, а где-то перекатившиеся из Джаббы пишут по своим канонам
Я как вкатыш из питона и жс даже не знаю что хуже
179 2297257
>>297200
Обычный C-подобный синтаксис. Я хочу написать сам, понять как они делаются, а не создать прорывной и удобный язык.

var x = 1;
const y = 4;
fn plus(x, y) {
__return x + y;
};
var z = plus(x, y);
if (z == 5) {
__return true;
} else {
__return false;
}
180 2297277
>>297240
Да вы, батенька, гений! Вот тупые макаки, сидят токены посимвольно читают, ебалу какую-то с определением следующего символа придумывают. Хуйнул регулярку - дело сделано.
181 2297316
>>297255

> Я как вкатыш из питона и жс даже не знаю что хуже


Думаю, что всё-таки пистон
182 2297490
>>297316
Ну, разве что в плане производительности говнокожу, да. Но зато код более читаемый
183 2297533
>>297257
Почитай про грамматики, есть много разных генераторов кода токенизаторов текстов на основании описания правил грамматики.
184 2297536
>>296957
200-250 на руки вполне реально
185 2297563
>>297533
Двачу, как раз доклад хороший есть на тему
https://youtu.be/Rwa66EpAzbk?t=4606
186 2297569
>>297277
Я, конечно, вайтишник, и много не понимаю, но какой смысл так экономить память? Хорошо, пусть у тебя в теории могут быть десятки мегабайт исходников и ты хочешь потоковую обработку, но посимвольно-то зачем её делать? Неужели у кого-то задница отвалиться, если ты килобайт текста прочитаешь и будешь с ним работать?
187 2297572
>>297569
Регулярные выражения очень часто избыточны, так же как и printf функции, потому что тянут за собой кучу проверок, преобразований, их стоит использовать, как временное решение. Не только ради экономии памяти, но так же экономии процессорного времени, что гораздо важнее.
188 2297591
>>297572
Вообще, регулярки сделанны именно так, чтобы было легко преобразовывать их в машины состояний. Если делать это на этапе компиляции, то оверхед от них не так велик. Но почему-то нормальных реализаций подобного нигде, кроме common lisp и, с недавних времён, С++ нет. Нужен язык с нормальным метапрограммированием или много кодогенерации.
189 2297602
>>294907
Состредотачиваться на протяжении многих часов сложно: обязательно что-нибудь да упустишь. Пусть уж лцчше компилятор по рукам бьёт, где можно. Кстати, const могли не добавить из-за возможных неудобностей с выражениями типа const chtoto, err := f()

А макросы не так неочевидны, так как в нормальных IDE можно посмотреть, во что они разворачиваются. А ещё иногда очень сокращают исходных код и избавляют от ненужного копипаста
190 2297625
>>297602

> Кстати, const могли не добавить из-за возможных неудобностей с выражениями типа const chtoto, err := f()


В го константы это не то же самое что константы в js
191 2297630
>>297625
Я заметил. И сразу же задался вопросом, почему такой полезной абстракции нет и в го
192 2297680
>>297630
Где го и где абстракции
193 2297787
>>297680
Где
194 2297812
>>297787
го и где абстракции
195 2297821
>>297812
Так где
196 2297940
>>286748 (OP)

>Cамого МУЖЕСТВЕННОГО в мире языка Go


Мужики, у меня VS Code, и он почему-то на некоторых проектах начинает ругаться на импорты изнутри проекта, типа, "project/entity/server не найдено в GOPATH". Почему так, я не понял, package везде корректный стоит. Если в настройках переопределить GOPATH на папку с проектом, то ничего не меняется. Где я обкакался?
197 2297947
>>297940
Здесь:

> VS Code

198 2297960
>>297947
А чем там в 2022 году пользуются го-мункулы? goland? У меня денег на него нет
199 2297965
>>297960
На пиратство деньги не нужны.
200 2297998
>>297940
вот тут с ним воевал >>2283843 →
и не завоевал.
Просто перестал странные импорты использовать в go.mod.

Ты уверен что у тебя в go.mod все правильно?
201 2298024
>>297998
Да, вроде как и в других проектах. Импорты-то не странные, просто модули из себя подключаю
photo2022-02-1519-21-58.jpg64 Кб, 1280x750
202 2298372
Я так понимаю теперь все кто дрочит на аллокации будет дженерики использовать вместо интерфейсов чтобы оно чуть-чуть быстрее работало за счет еще сильнее опухших бинарей, даже не смотря на то что разработчики языка везде пишут что не надо этого делать, это не правильно
203 2298439
Почему Го такой популярный?
204 2298451
>>298439
Потому что его продвигает гугл.
По той же причине популярен петухон.
205 2298454
>>298439
1. Простой.
2. Понятный.
3. Горутины.

Хватит?
206 2298549
>>296733

>ждём на хайринг дей короч https://hiringday.avito.ru/go


Ох, ебал я такой хайринг дей.

Нельзя было тесты нормальные написать?

Задачка на sql - это просто издевательство.Один join, серьезно? Даже не левый ? Нормального ничего придумать нельзя было?

Верчение деревьев еще более-менее. Но проблема в тестах.
Я случайно понял, что полуготовый алгоритм проходит все тесты и отправил задание как сделанное. И так два раза.

И это уж не говоря о том, что деревья нормальный программист вертел только в школке, а обычно он вертит их на хую и копирует рандому либу с гитхаба.
207 2298575
Не ироничный вопрос: для чего используется го, кроме написания микропенисов?
208 2298588
>>298549
Ты чоооо! У них же фааанг! Точнее МЯСКОТ! Ой, точнее... да хуй знает, сайт для барыг тарелками! Сижу также в авито-треде, что иронично
209 2298652
>>298575
Для написания соснольных утилит для кручения облаков и написания кубера@докера
image.png164 Кб, 808x352
210 2299220
Как подготовиться анончики? Стажировка по го, разумеется.
211 2299223
>>299220
за 3 часа? ну можешь только видосы смотреть чтобы лексику освоить.
212 2299225
>>299223
Ну там типа с нуля обучение, поэтому я не знаю что вообще спрашивать будут.
213 2299234
>>299225
описывай на чем ты УЖЕ программировал.
расскажи побольше о проектах с конкурентностью, sql, докером, линуксом
Ты ведь ими уже занимался на другом языке? Занимался, да ?

Ну, на худой конец, деревья повертишь.
214 2299249
>>299234
Только с sql работал, линухс в гробу видел.
Я даже не планировал в го вкатываться, если честно.
215 2299255
>>299249
Блять, я как сишарпо-даун, рофлил над линуксами, а теперь прийдётся самому в него вкатываться. Какая ирония...
216 2299257
>>299255
так не вкатывайся.
почему придется? тебя там на перспективный блохчейн взяли?
217 2299260
>>299255
Человеком хоть станешь.
218 2299262
>>299257
Мне срочно бабки нужны и статус айти-гребца. Потратил дохуя денег у бати без его ведома и он поставил ультиматум.
219 2299394
Я тут прочел что в ГО можно вкатиться быстрее чем в пайтон какой-нибудь.
Это правда?
220 2299399
>>299394
Ну вкатишься, и чо ты будешь делать с ним?
Это дополнительный язык для специфических задач.
221 2299401
>>299394
Нет.
222 2299448
>>299399
А другие языки не такие типо.
Фронт тупо не хочу.
И что остается? Джава/Котлин?
223 2299451
>>299448
Шарп ведь ещё
224 2299692
>>288021
А нахуя тебе программирование тогда?
Ради бабла?
Я вот вкатился недавно. Думал, что со временем втянусь. Но чет нихуя интереса не ощущаю. И думаю куда дальше катиться.
225 2299709
Кто из какого языка перекатился?
226 2299710
>>299709
Перекатился из Go в жабу.
227 2299715
>>299692
Как раз нравится, поэтому пригорает от зоопарка языков, в каждом из которых чего-то не хватает или какая-то часть всрато реализована. что не мешает мне на них писать, впрочем
Protobuf 228 2299761
Помогите пожалуйста, нет уже сил!!!
У prorobuf есть доп фитчи типа wrappers.proto или annotations.proto. Как я поняла, Они по дефолту спрятаны где-то не там где должны, в итоге импорт в прото-файл не происходит нормально. Я помню что я эту проблему уже решала руками копируя этот пакет в проект, но это, очевидно, не выход. Подскажите пожалуйста как вы это делаете, чтобы выглядело адекватно и красиво?
Огромное спасибо!
229 2299767

> поняла


> решала



сучка должна решать свои проблемы сама или признать превосходство перед мужиком.
230 2299770
>>299767
признаю, помогай)
image.png33 Кб, 287x176
231 2299779
Почему там, где любой другой язык подстилает соломки для рутинных действия - голэнг кладет залупу на воротник разработчику?

Где гибкость, где экспрессивность, где мета-очко все это, ебаный рот вашего суслика, ебал матерей голенг-разработчиков в анус.
232 2299793
>>299779
Какие ещё гибкость и экспрессивность? Язык специально проектировали максимально тупо, чтобы его могли осилить дебилы, которые будут писать максимально тупой код без удобств и синтаксических фишечек, чтобы любой другой дебил мог прочитать.
233 2299799
>>299779
Масштаб. Нет масштаба.

Никто просто еще не написал нужное.
234 2299805
>>299793
>>299799

Я просто охуеваю уже от ебаного говна под названием голэнг вн ашем проекте.
Если всю мою попоболь попробовать выразить одной фразой, то я бы сказал так - в других экосистемах ты тратишь время на изучение, но потом появляется возможность избегать РУТИНЫ, в голэнг же пошли другим путем - нахуй изучать, рутина не так уж страшна.

Очко ебаное, говно.
235 2299931
>>299220
Короче, анончики, я на изи прошёл рекрутёрское зно.
Дальше у меня собес с куратором через 3 дня скорее всего, а потом техническое собеседование.
Куратор будет проверять мои знания по

>пик1, пик2 и пик3


А сеньоры знание языка го.

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

Анончики, дорогие мои, подскажите пожалуйста, как мне за 3-4 дня повторить весь этот кал? Особенно касается алгоритмов и дискретной матеши. А также как мне за такое короткое время хоть как-то познакомиться с основами языка? В вакансии писалось, что знание самого го не обязательно в принципе, но блять, она мне на собесе сказала, чтоб с основами я сам ознакомился перед собесом. Лол. Я вообще даже вчера в первой половине дня не подозревал что мне прийдётся всю эту хуйню повторить/изучить, так что я без понятия откуда начать.
И кстати, с линуксом я тоже не работал, хотя ей напиздел, что ставил его на вм.

Чё делать бля??? Отсосу с пруфами тому кто подскажет.
236 2299932
>>299931

>зно


собеседование, я сейчас на нервах, путаю слова.
фикс
237 2300018
>>299932
Хули ты нервничаешь? Не прошел? Да и поебать, вас дохуя, я один.
238 2300034
>>299931

>Отсосу с пруфами


А говорили, го для натуралов.
С отсосами можно и на нормальные языки идти.
239 2300075
>>299931

>Математика


Учебники алгебры за 10-11 класс. Или найди свои старые конспекты

>Дискретная математика, базовые алгоритмы, структуры данных


http://neerc.ifmo.ru/wiki/

>Паттерны


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

>Основы го


Язык за несколько часов учится: скачала читаешь это http://golang-book.ru/, потом пользуешься https://gobyexample.com/, если непонятно, как что-то делать. Ещё можешь почитать это для общего развития https://habr.com/ru/company/vk/blog/314804/ - может помочь, если по языку будут спрашивать.

>Linux


За пару дней не освоишь; про команды пока почитай https://github.com/sudheerj/Linux-cheat-sheet, потом по ходу дела разберёшься
240 2300151
>>300075
Спасибо, добрый анон!
241 2300184
>>299931

>пик 1


лол это че за хуйня, это какой-то финтех или они просто навернули слов из оглавления учебника. на 99% уверен что затронут максимум пару тем которые затащить можно если когда-то в жизни видел
image.png76 Кб, 703x776
242 2300193
Почему capacity внезапно 6, а не 5???
244 2300205
>>300184
Меня тут математика смущает, она как будто только для работы с изображениями, аудио, видео подходит. Ну может еще часть от статистики.

Остальное в списке постоянно встречается. Нужно хотя бы помнить о том что такие вещи существуют, и их можно успешно применить для решения самых разнообразных проблем.
245 2300206
>>300193
потому амортизация или подкидывают до четного. это детали реализации которые в спеке не описаны поэтому сразу шли нахуй если тебе говорят что будет 5 без указания версии
246 2300210
>>300202
>>300206

Go is free to provide you more capacity than you request. This improves performance by reducing the number of allocations (and possibly copying) that are required. Capacity is just the amount of space reserved before another allocation would be required.

Спасибо, аноны!
247 2300212
>>300206

>потому амортизация или подкидывают до четного.


Ты лучше прочитай что >>300202 написал. Это не "амортизация", и не "подкидывание". Связано с затратами на реаллокацию.
1635358142024.jpg285 Кб, 1584x2048
248 2300281
>>300212
а я прочитал после того как пост написал. однохуйственно подкидывание только не до четного а по табличке

>Это не "амортизация", и не "подкидывание". Связано с затратами на реаллокацию.


такие противопоставления со "связано с" вместо приведения термина всегда интригуют. вообще в ссылке про алайн, а не реаллокацию говорится и мне кажется как с этим связан всем знакомый паддинг должно быть очевидно. но ты оставил меня в большом волнении почему амортизация апендов не может быть связана с затратами на реаллокацию
249 2300555
>>288242
а какой у тебя бэкграунд? (для себя интересно, тоже вкатываюсь) есть опыт не в бэке, а в чем-то другом?
250 2300669
Что делать, если интеллисенс не показывает подсказки, когда пишу на го? Проблема не гуглится почему-то. Помогите тупню :(
251 2300671
>>300669
че за интелисенс
gopls ставь епта
252 2300698
>>300671
Он не ставится почему-то...
Вот, я с пик 2 нажимаю но нихуя не устанавливается. Чзх?
image.png9 Кб, 839x99
253 2300699
>>300698
я поставил всё но оно не работает всё равно. Що за нахуй???
254 2300720
>>300699
Лёша, хуй соси, программирование – для линуксоидов.
255 2300729
>>300720
ррррряяяяя
256 2300854
>>300699
ну проверь што он в PATH/GOBIN у тебя есть
мб там в настройках тогл надо включить или окно релоднуть прост или ктрл щифт п го рестарт лэнгуедж сервер
257 2301164
>>300193
Это же база, блядь, знать надо
258 2301762
то есть это не одно и тоже, почему? https://go.dev/tour/moretypes/26
259 2301765
>>301762
В первом случае как swap в c++ работает
Во втором ты присваиваешь num1 num2, а потом к num2 прибавляешь num1 в значении num2, тоесть работает как умножение на 2.

Вывод - ты дегенерат.
260 2301773
Бля, походу аноны не врали, что го можно за пару дней освоить.
f3.png15 Кб, 412x857
261 2301775

>>230176


ага, спс
262 2301785
>>301773
Ну да, Go - это такой компилируемый петухон, из которого кучу всего выкинули и добавили горутины и типизацию. Не плюсы и даже не шарп.
263 2301812
Буквально на днях вентилировал этот же вопрос: что учить в 2022 году для разработки >бэкэнда<. Несколько дней гуглил, читал статьи и прочее. Краткие выводы к которым я пришёл для себя (на истину в последней инстанции не претендую):

1) Ванильная Java - уже фактически труп. Учить её сейчас с нуля нет смысла, новых проектов на ней никто уже не начинает. Большое кол-во вакансий и высокие ЗП в данный момент, обусловлены её славным прошлым, большому кол-ву кровавого энтерпрайза в финтехе, телекомах и тп который нужно поддерживать и дорабатывать, и тем, что молодые разрабы в большинстве своём проходят мимо неё в результате чего имеется серьезный дефицит разработчиков.

2) C# медленно, но верно загибается, МС судя по всему будет продолжать активно развивать его, в результате чего он имеет шансы обогнать Java со временем. Т.е. проще говоря он будет терять свою долю рынка медленнее чем Java. Тем не менее учить его с нуля в 2022 тоже нет смысла, главный аргумент тут: он не используется в core-сервисах крупнейших IT компаний мира (разумеется, сама МС не в счет). Пока гугл, амазон или мета не перепишет свою инфраструктуру на C#, смотреть в его сторону тоже не стоит.

3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.

Поскольку, последние 5 лет я пишу исключительно на node+ts (до этого, немного разрабатывал на c#), в этом году я решил изучить golang. Думаю, что спрос на golang разработчиков вырастет в разы в ближайшие годы.

Напоследок, хочу поделиться с вами прекрасным постом на реддит который я нашел пока вентилировал данную тему. Там не только про dotnet ui фреймворки, но и про политику МС к разработчикам в целом (в хроме можно использовать встроенный переводчик, смысл остается вполне понятен) https://www.reddit.com/r/csharp/comments/f9i9hc/comment/firr467/?utm_source=share&utm_medium=web2x&context=3
263 2301812
Буквально на днях вентилировал этот же вопрос: что учить в 2022 году для разработки >бэкэнда<. Несколько дней гуглил, читал статьи и прочее. Краткие выводы к которым я пришёл для себя (на истину в последней инстанции не претендую):

1) Ванильная Java - уже фактически труп. Учить её сейчас с нуля нет смысла, новых проектов на ней никто уже не начинает. Большое кол-во вакансий и высокие ЗП в данный момент, обусловлены её славным прошлым, большому кол-ву кровавого энтерпрайза в финтехе, телекомах и тп который нужно поддерживать и дорабатывать, и тем, что молодые разрабы в большинстве своём проходят мимо неё в результате чего имеется серьезный дефицит разработчиков.

2) C# медленно, но верно загибается, МС судя по всему будет продолжать активно развивать его, в результате чего он имеет шансы обогнать Java со временем. Т.е. проще говоря он будет терять свою долю рынка медленнее чем Java. Тем не менее учить его с нуля в 2022 тоже нет смысла, главный аргумент тут: он не используется в core-сервисах крупнейших IT компаний мира (разумеется, сама МС не в счет). Пока гугл, амазон или мета не перепишет свою инфраструктуру на C#, смотреть в его сторону тоже не стоит.

3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.

Поскольку, последние 5 лет я пишу исключительно на node+ts (до этого, немного разрабатывал на c#), в этом году я решил изучить golang. Думаю, что спрос на golang разработчиков вырастет в разы в ближайшие годы.

Напоследок, хочу поделиться с вами прекрасным постом на реддит который я нашел пока вентилировал данную тему. Там не только про dotnet ui фреймворки, но и про политику МС к разработчикам в целом (в хроме можно использовать встроенный переводчик, смысл остается вполне понятен) https://www.reddit.com/r/csharp/comments/f9i9hc/comment/firr467/?utm_source=share&utm_medium=web2x&context=3
264 2302003
>>301812

>3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.



Так а что зумеры сейчас изучают? Я вот си шарп дрочил, но го объективно лучше. А другие зумеры какие языки для бека учат? Пхп или питон какой-нибудь?
265 2302392
Аноны, что это за хуйня? Как поставить нормальный автокомпит?
Пик 2 - результат выбора ff на пик 1.
266 2302394
>>296733

>алсо старайся несколько офферов одновременно получить, это вообще изи 20-40% прибавка


Несколько оферов в твоем этом хайринг дее? Или от нескольких компаний? И как ты торгуешься? Мне чет обычно не предлагают поторговаться, когда я говорю что принял другой оффер, может потому что и так было около верхей границы вилок, хз хотя вроде один раз предлагали, в каспере
267 2302403
по каким темам в основном гоняют на собесах, и что стоит подтянуть за ~1.5-2 месяца до собесов?
268 2302472
>>302394
У меня так бывало:
- Я еще в Х собеседуюсь, офер должны дать Д числа
- Ок, держи в курсе, скажи сколько дадут
- Я тут офер от Х получил, дали М
После этого они как минимум дают столько же. Можно пойти в первую компанию и назвать им контроффер, ведь ты им тоже сказал что начал собеситься в Y и они тоже попросили держать в курсе.
269 2302499
>>302403
Если чисто по гошке, то
Устройство слайса, как работает аппенд, отличие стрингов от слайсов байтов
Устройство мапы, как работает вставка/итерация
Устройство канала, как работает отправка
Устройство интерфейса, тайп асёршны, рефлексия
Как работают горутины, что происходит при блокирующих/неблокирующих сисколах, что в пакетах sync/atomic и когда использовать
Как работает шедулер, что за M:N, воровство жоб, когда шедулер может переключить исполнение горутины
Как работает гц, маркинг, фазы гц
270 2302503
>>302392
Это вскодовские сниппеты, а не автокомплит. У тебя лсп совсем не работает или ты на приоритет снипетов жалуешься?
271 2302546
>>302503
Да, language server не работает вообще. Только эти ебучие сниппеты. И проблема не гуглиться нихуя, везде пишут мол включи ls и всё, но там стоит эта ебучая галочка. gopls установлен.
272 2302552
>>302546
попробуй поставить тупо все утилиты которые вскод в менюшке показывает
273 2302615
>>299692

>И думаю куда дальше катиться.



Катись к хуям

:3
274 2302818
>>302499
це на джуна?
275 2302826
>>302818
В Go нет джунов.
276 2302828
>>302826
Манямирок
277 2302831
>>302828
Джуны в Go - манямирок вкатуна-борщехлёба.
278 2302833
>>302818
не обязательно. на джуна простят, если ты не знаешь как в точности гц/шедулер/каналы работают. на стажера могут про слайсы спросить, но про мапу/каналы/гц/шедулер вряд ли.
однако тут вопросов буквально на одну-две лекции, это реально все знать могут и должны.
но это база, на мидла/сеньора в дополнение будут ебать по реальным задачам и архитектуре.
279 2302874
Правда ли, что на разработку Go забили?
Пайк ушел, Томпсон ушел, никакого развития. Топ контрибьюторов - ноунеймы, трансухи и телки.
Популярность падает, новой крови нет, либы не пишутся, на го2 все забили, а любое нормальное нововведение просто невозможно из-за уебищного фундамента.
280 2302909
>>302874
Да, правда
281 2302914
>>302874
Скатертью дорожка.
282 2302961
>>299931
Харьковский? Видел недавно эту вакансию. Выучишь очень быстро го, если ещё не завалил собес то советую внутриности подробнее разобрать, как работают вещи по типу GC, планировщика, особенности работы с слайсами и мапами.
283 2302963
>>300184
Обычная школьная программа + первый курс универа.
284 2303002
Можно хранить sqlite базу в бинарнике? Там будут конфиги юзера храниться и пара других конфигов, размером с гулькин хер. Не более 1 мб база будет
285 2303023
>>303002
Придётся распаковывать в папку temp при запуске, драйвер sqlite не умеет читать байтики из ресурсов, только файлы или :memory:
286 2303043
>>303002
ты хочешь чтобы бинарник себя модифицировал при изменении конфига? мне кажется ты лезешь в залупу
287 2303050
>>302961
Да, лол. Завтра собес с лидом, а потом ещё технический собес. Ну надеюсь время будет хотя-бы пару дней между ними, чтобы разобраться во всём.
288 2303075
Что такое проброс ошибок наверх, который приходится делать в го?
Это когда C вызывает B, которая вызывает A и если ошибка случилась в А, то я её отображаю как будто зафейлилось B? Зачем это?
289 2303087
>>303075
я так и вижу делаешь такой опенфаел, опенфаел делает сискол, сискол фейлится, а опенфаел тебе такой "проброс ошибок наверх? зачем это?"
290 2303088
>>303087
Получается всё так, как я описал?
Не понимаю почему нельзя вывести ошибку на уровне чтения файла (сискол же происходит не в моём коде, а в рантайме?)

То есть у нас допустим ошибка чтения из-за того что диск поцарапан или просто что-то не прокнуло, поэтому я вывожу на фронтенд не саму ошибку, а «что-то пошло не так, попробуйте снова»?
291 2303212
>>303002
Тебе может пригодиться embed, если база ридонли. Но вангую тебе не нужна база для конфигов, тебе и дампа мапы в json может хватить
292 2303216
>>303050
Ну отпиши тогда, чё как там, мб тоже завалюсь как диплом допилю.
293 2303226
>>303088
Привет, а это ты аварийное завершение внутри пакетов вызываешь, при ошибке?
294 2303230
>>303226
Привет! Я вкатуся и просто спрашиваю что имеется в виду под пробрасыванием ошибок наверх. Других языков не знаю и загуглить не получилось.
Я не пытаюсь спорить, просто хочу знать что это и как правильно это делать (на это отвечает вопрос «зачем»)
295 2303243
>>303075
Ну допустим у тебя есть такая вложенность функций: f -> g -> h. Любая ошибка должна обрабатываться в f, ошибки которые будут возникать в g и h, должны быть просто возвращены, либо дополнены и уже потом возвращены.
Вот пример: https://go.dev/play/p/DMy24KHvoRk
296 2303258
>>303243
Спасибо!
297 2303292
>>303230
читай отсюда:

>Язык_программирования_Go_2016Керниган.pdf


>5.4.1 Стратегии обработки ошибок

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

Спасибо вам за советы, без них я бы не вывез.
Теперь у меня ещё один собес но уже чисто по го, так что тут будет легче подготовиться.
299 2303359
>>303216
>>300184
Ну, вообщем, в требованиях было написано реально по существу.

Мы обсуждали алгоритмы, паттерны, потом когда я высчитавал какой алгоритм быстрее мне предел функции пригодился, логарифмы. Затронули теорию графов, принцип работы структур данных.
Потом мужик спрашивал как бы я охарактеризовал качественный код, моё личное мнение. Спрашивал с чем я работал, есть ли у меня реальный опыт. Ещё он задавал много тонких вопросов, таких, что сразу видно разбирается чел или нет.
300 2303994
>>303348
поздравляю!
ты с нуля вкатился или есть какой-то бэкграунд, знание других языков?
прошлая работа в ит была? вышка есть?
301 2304028
Какое же ебаное Govno. Почти все проекты либо от ноунейм контор, либо переписывание старого кода с пыхи или питона на го.
Уж лучше вкачуся в Kotlin/Java backend, там явно посолиднее компании и проекты.
302 2304031
>>304028
Ладно.
303 2304033
>>304031
Хуядно. Где работу искать на GO?
304 2304034
>>304033

>Уж лучше вкачуся в Kotlin/Java backend, там явно посолиднее компании и проекты.


Вкатывайся.
305 2304097
>>304033
Пиздуй на жаве своей писать.
306 2304114
>>304033
Вали давай
307 2304309
>>303348
Всё, прошёл ещё технический собес, где чел спрашивал буквально поверхностную инфу которую я в http://golang-book.ru/ узнал. Рекрутёрша сказала, что меня приняли, осталось только подписать документы и чё-то там обсудить ещё с кем-то.
>>303994
Ну я знаю c# c++ js и всё впринципе. Надо было только написать красивое резюме и повторить темы, указанные требованиях. А вообще мне реально повезло с интернатурой, и не могу сказать что надо, чтобы с нуля вкатиться на го жуниора, например.
308 2304310
>>304309
Вышки нет, опыта работы тоже, но я сказал что делал писал код на заказ студентам, и они такие мол неплохо, неплохо.
309 2304333
>>303348
>>304309
Скока платить-то будут?
310 2304357
>>304333
Ну сказали типа во время обучения платить будут 600-800 даларов во время обучения 2-3 месяца чтобы было что пожрать и мы могли сфокусироваться на обучении, а потом средняя зп джуниора и собственно работа на проекте.
Я не знаю нормальная ли это практика, или просто мне повезло.
311 2304363
>>304357
Просто я контактировал со знакомыми, которые устраивались на похожее обучение с трудоустройством на пхп и яве, и обычно, просто набирают группу студентоты на бесплатное обучение, а в некоторых компаниях берут в натуральное рабство, где ты должен отдавать 30-40% от зп какое-то время после обучения.
312 2304384
>>304309
а где вакансию нашел (сайт, телега)?

в родном городе? релокацию рассматривал?
313 2304385
>>304309
Как написать красивое резюме?
Какие петпроекты написать, чтобы включить в резюме? Правда, что без петпроектов нахуй посылают сразу?
314 2304417
>>304385
HAC РЕKОМЕНДУЮТ ДРУЗЬЯM!!Добpый день!!!
Mы обеcпечиваем:быcтpoту и кaчecтво предocтавляемых услуг! Рaботу выполняют квалифицированные, чeстныe, вежливые рaбoтники. Гpaждaнe РФ и PБ! Cтоимоcть предocтaвлeния уcлуг догoвoрная oт 1300 p/cмeна. Как нaличный,тaк и безналичный раcчeт.
Прeдлaгaем качественные услуги за разумные деньги.В сфере строительства работаем более 15 лет!
У нас несколько проверенных временем бригад , которые выполняют качественную работу.
К выполнению работы подходим с душой и полной самоотдачей!!!Работа по всему Екатеринбургу и пригороде!!!

Как-то так.
315 2305171
что не могу найти, зачем сейчас рекомендуется писать так
//go:build
//+tag

если раньше все отлично было и отлично работало и просто с
//+tag
316 2305207
Планируется ли расширние стандартных коллекций?
Потому что даже без Set жить крайне сложно.
317 2305255

>panic: runtime error: hash of unhashable type map[int]int



Почему так?
318 2305557
>>305171
Там вопрос был в том, что синтаксис or или and для тегов был очень неудобный + не очевидный. Можешь найти соответствующий issue на гитхабе, мне лень его искать.

>>305207
С дженерикам ждем покращщень, на сейчас есть только https://pkg.go.dev/container и внешние пакеты, всё на интерфейсах.

> Потому что даже без Set жить крайне сложно.


попробуй map[T]struct{}

>>305255
Покажи код, я такое не встречал раньше
319 2305765
>>305255

Потому что в качестве ключа можно использовать только сравнимые типы, и нельзя использовать слайсы, мапы, функции
320 2306685
конец февраля уже а 1.18 еще не релизнули...
321 2306696
Аноны, есть смысл пытаться вкатиться в Го без опыта разработки? Ну как без опыта, я на ларавеле несколько сайтов запилил, сейчас думаю начать работать в программировании. Читал сравнение зарплат, в Го они одни из самых высоких. Джуны без опыта работы нужны где-нибудь или не самый лучший язык для вката?
322 2306701
>>306696

>вкатиться



попробуй через стажировки, вроде https://fintech.tinkoff.ru/
323 2306712
>>306701
В тиньке нужно уметь решать олимпиадные задачи по программированию.
Не просто литкод и кодварс, а именно околоолимпиадные, на динамическое программирование.
Подавал 5 раз в тинек и каждый раз получал отказ. При этом сколько задач решено - никто не говорит. Просто говорят, что не прошел и все. И так каждый год.

>>306696
Была стажировка в wildberries и туда было не так сложно попасть. Сейчас не знаю. Яндекс, авито, озон, VK - будь готов к дрочеву на собесах, и скорее всего тебя не возьмут. Больше джунов и стажеров никто не нанимает, насколько мне известно.
324 2306747
>>306712

> околоолимпиадные


> на динамическое программирование.



что может быть проще динамического программирования? это уровень литкода.
325 2306764
>>306747
Пчел, ну если для тебя харды на литкоде кажутся простыми, то молодец, иди в тинек.
У меня решать харды не получается, как и у многих других, поэтому я заранее предупреждаю анонов, чтобы сильно не рассчитывали туда попасть, если они не олимпуси
326 2306849
>>306712

>Не просто литкод и кодварс, а именно околоолимпиадные, на динамическое программирование.


Это называется литкод медиум+.

>>306764

>У меня решать харды не получается


Ну ты попробуй не с хардов начинать, а с какой нибудь казуальной книжки в стиле "грокаем аглоритмы" и изи задач.
327 2306875
>>306849
Это подходит под уровень "литкод медиум"?
Я вот решал на литкоде медиумы на sliding window, деревья и списки, но имхо в тиньке задачи гораздо сложнее
328 2306892
>>306875
Нет, это уже хард ещё и с ограничениями.
Тащемта, ты написал про динамическое программирование как про что-то ебическое, я на это и стриггерился.
329 2307107
>>306892
Да понятно, что задачи уровня кузнечика решаются легко. Какая-нибудь двумерная динамика уровня хода коня тоже просто понимается.
Но этого не достаточно. Нужно уметь решать задачи уровня того, что я скинул. А это явно не 2-3 месяца и даже не полгода задроства на литкоде, а гораздо больше (для среднестатистического студента или вкатуна)
330 2307116
Как дела в мобилках у go+fyne? Есть ли какие-нибудь живые проекты, чтобы посмотреть, что вообще на этом можно сделать и, как все это будет выглядить? Желательно ОС, чтобы на код еще посмотреть.
331 2307129
>>307116
Любые попытки убить нейтив обречены на провал.
332 2307134
что лучше почитать или посмотреть чтобы понять что у го под капотом?
333 2307141
>>307134
сорцы
334 2307146
Блять, ебаный пыня, из-за него работать не могу.
335 2307157
>>307141
пиздато, пошел читать
336 2307159
>>307107
Интересный конечно порог входа, а что по вилкам там, хрюша светила?
Если готов к таким заёбам — можно и в гугол устроится, как-то же они набирают при этом штат.
337 2307161
>>307116

>Как дела в мобилках у go+fyne?


В мобилках — мёртворождённая хуйня без задач, там сплошной натив. Кроссплатформа — хорошо если 1 из 7 приложений по крайней мере на iOS, на ведре всем более похуй и её больше.

Тащемта, хочешь кроссплатформенные мобилки — велком ту флаттер. До первой задачи с камерой/датчиками/бохатыми пушами/итд — пойдёшь лобзать натив на обоих.
338 2307162
>>307161

>В мобилках — мёртворождённая хуйня без задач


На декстопе — в целом можно всякие утилитки хуярить.
339 2307170
>>307161
Мне не нужен кроссплатформенный код, я просто хочу вкатиться в мобильную разработку, только под андроид, без жабы, котлина, дарта (не нравятся эти языки просто).

Какой вообще долбоеб придумал сделать джаву нативной?
340 2307179
>>307159
Это задачи на стажера. То есть где-то 60-70к за 40 часовую неделю. Во всяком случае до войны так было. Как сейчас и потом - уже неизвестно.
В штат в тинькофф идут люди с олимпиадным бекграундом - студенты физтеха и ВШЭ, которые по каким-то причинам не попали на стажировки в FAANG или в яндекс.

К слову, на мидла и сеньку вроде тоже просят решать довольно тяжелые алго задачи, но уже полегче))
341 2307181
>>307170

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



Придется учить котлин либо дарт. Чем они тебе не нравятся?

>Какой вообще долбоеб придумал сделать джаву нативной?


Нативная она в том плане, что была основным ЯП для разработки вплоть до 2018 года. Так-то там все на особой виртуальной машине работает.
Почему так сделали - в нулевые языков особо-то и не было, жаба была одним из самых популярных и очевидных вариантов.
342 2307188
>>307181

>Чем они тебе не нравятся?


1) Структуры проекта, которые генерируют иде.
2) Иде, которые генерируют эти проекты.

Если бы была возможность использовать в вскоде котлин (с нормальной подсветкой синтаксиса), то возможно бы и стал его использовать.

Да, шиз.
343 2307191
>>307179

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


Тащемта, тогда понятно.

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


Я ахуел наверно от того и опешил. Вообще не представляю как на такое завести синек — там же воронка будет в стиле 1 из 1000.
344 2307216
>>307191

а зачем нормальной компании нужны тупые программисты?
таким место у параш... на битриксе лендинги клепать
345 2307232
>>307216
Люди не делятся на олимпиадников и тупых.
346 2307430
>>307232
Внезапно делятся. Человек, который в 11 классе взял всеросс по проге будет в разы более обучаемым, чем обычное хуйло из СОШ и говновуза)
347 2307442
>>307430
Внезапно нет.
348 2309665
>>307442

так утешают себя тупые, но не переживайте, вы тоже нужны и даже с определенным опытом на большие деньги. Но не во всех компаниях/проектах.
349 2310751
Если микрософт заблокирует гитхаб, программирование на Go в РФ прекратится? Ведь сейчас почти все его зависимости на гитхаб завязаны.
350 2310787
>>310751
Если его заблокируют, то будет проблема для программирования в РФ в целом, а не только с Go, но размещать пакеты можно не только на нем или их можно загружать через VPN.

Мне больше интересно, будет ли Go востребованным, если закроют поставки компонентов, а аренду серверов за границей сделают невозможной, опять же из-за тех же санкций.
Такую информацию я не слышал, но все равно было бы интересно узнать.
351 2310835
>>310787

>их можно загружать через VPN



Можно, но начинающие программисты на go вряд ли будут с этим заморачиваться.
352 2310841
>>310835
Кстати, вся документация по языку на гугловских сайтах будет тоже заблокирована.
353 2310856
>>310787
Там оракл с джавой ушел из России, получается го единственный востребованный язык будет (кроме него то только скриптопараша)
354 2310868
>>310856

>Там оракл с джавой ушел из России


Радикальное избавление от легаси?
355 2310958
>>310787

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


Думаю да, надо будет более экономно использовать ресурсы уже имеющихся серверов, то есть переписывать 95% массового пхп-говна на го. Битрикс просто удалять сразу.
356 2310971
>>310751
1. есть официальный кеш пакетов, так что если только гитхуб сдался, то должно еще скачиваться
2. у больших компаний наверняка свой кеш есть, у нас недавно отключение от гитхаба уже тестили
3. кто-нибудь накачает пакетов через впн и поднимет свой
4. в крайнем случае будем жить на то что мы навендорили
меня вообще уже года 4 удивляет, что в рашке какой-нибудь яндекс еще не поднял свой аналог гитхуба
357 2311145
>>310971

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


Щас поднимут, точнее распилят на этом денег, а по факту какой-нибудь гитлаб развернут, кек.
358 2311150
>>311145

>Щас поднимут


Зачем? Гитхаб не приносит деньги, а яндексу нужны только деньги, выделять для этой задачи сервера в момент дефицита компонентов и санкций, они скорее всего не будут.
359 2311154
>>311150
Приносит. Ты видел ценники на корпоративные лицензии? А битбакет с плагинами видел?
360 2311178
>>311154
Какая аудитория будет у этого "Я.Хаба", Россия, Беларусь и кто-то еще? Откуда в этих компаниях будут деньги, чтобы поддерживать подписку? Такое может быть, только если государство решит проспонсировать, но решит ли оно? Для кого вообще, российские компании будут писать код, чтобы им платили деньги?
361 2311182
362 2311186
Есть китайский аналог гитхаба https://gitee.com/
364 2311193
>>311178

> Какая аудитория будет у этого "Я.Хаба", Россия, Беларусь и кто-то еще?


Да, рашка и Беларусь. А что? Сам поисковик тоже только у нас юзают. Да и хостинги многие выбирают рашкинские. Всё полностью частное, без гос.спонсирования.

> Откуда в этих компаниях будут деньги, чтобы поддерживать подписку?


А откуда у них деньги на битбакет?

> Для кого вообще, российские компании будут писать код, чтобы им платили деньги?


То есть ты думаешь, что рроссийске айти - это исключительно аутсорс?
365 2311260
Скоро вместо интернета будет локалочка с нерабочими vpn https://theins.ru/politika/248511

Собственно вопрос, есть ли список пакетов отсортированных по популярности, чтоб заранее всё выкачать? У Rust есть
366 2311265
>>311260

>Собственно вопрос, есть ли список пакетов отсортированных по популярности, чтоб заранее всё выкачать


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

>>286748 (OP)

>Обновляемый список с пакетами: https://github.com/avelino/awesome-go



Насколько знаю в Go такого нет.
367 2311323
>>311260

>theins.ru



Иди нахуй с высерами иностранного агента.
368 2311343
>>310958
Если уж говорить про экономию ресурсов, то надо переписывать на Си. Он и к микрософту/гуглу не прибит гвоздями.
369 2311413
>>311343

>Если уж говорить про экономию ресурсов, то надо переписывать на Си


Нулевая скорость разработки и работы.
370 2311414
Дженерики в бете уже завезли. Чего ещё вам не хватает в Go?
371 2311416
>>311413
Как ты это замерял?
К тому же на сишке куча готовых и стабильных библиотек, аналоги которых на go ещё нужно написать.
372 2311418
>>311414
Эксепшенов.
373 2311427
>>311416

>Как ты это замерял?


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

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


Для чего эти библиотеки, нужны ли они на беке серверов, иначе зачем они в го?
374 2311428
>>311414
snake_case в именах переменных и именах функций.
375 2311429
>>311428
Что мешает?
376 2311444
>>311429
Религия не позволяет писать в отличном от большинства код стайле.
377 2311447
>>311444
Да_пиши_как_хочешь.
378 2311452
>>311447
У меня появляется отвращение, если проект не в едином стиле, даже импортированные пакеты с неподходящим под него стилем, вызывают такое чувство и желание писать код пропадает.
379 2311510
>>286748 (OP)
Какой проект сделать вкатышу в go чтобы в резюме написать "базовое знание"?
Мимопхп додик
380 2311516
>>311510
Напиши какой-нибудь микросервис, который принимает жсоны, обрабатывает их, сохраняет данные в БД и возвращает ответы.
381 2311522
>>311516

>Напиши какой-нибудь микросервис, который принимает жсоны, обрабатывает их, сохраняет данные в БД и возвращает ответы.


Описал всю работу горазработчика.
382 2311573
>>310868
Походу нет))
Оракл сейчас это в первую очередь их база данных и облака. Джаву пилят в openjdk люди из оракла и еще кучи других контор.
Думаю, если у вас нет анальной привязки к Oracle Java или их базе данных, то ничего не изменится
383 2311597
>>310787

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



Ну, в РФ сейчас выиграли те, у кого были свои сервера. Го брали обычно чтобы крутить на амазоновских серверах свои микросервисы.
384 2311700
>>311510
для базового знания ну мб физбаз
385 2312453
А откуда можно почитать с начала?
Т.е. не сам синтаксис, а вся эта ебала с gopath, goroot что там еще юзается, импользования go mod для разработки своего модуля/для обычного импорта готовых в свой сайтик и т.д.?
Алсо, на русском теперь тур недоступен?
386 2312455
>>312453
Ну и по желанию если есть, как конкретно реализованы каналы, как реализован хеш мап в го, в целом, начинку
388 2312461
>>312460
Нихуя ты умный. Вот же ж гениально.
А вот еще, если вдруг по твоей ссылке на найдено будет
https://google.com/
389 2312463
>>312453

>А откуда можно почитать с начала? Т.е. не сам синтаксис, а вся эта ебала с gopath, goroot что там еще юзается, импользования go mod для разработки своего модуля/для обычного импорта готовых в свой сайтик и т.д.?



>>312461

>Нихуя ты умный. Вот же ж гениально.



В документации все ответы на твои вопросы, что тебе еще надо?
390 2312465
>>312463
Ну так подскажи точну ссылку, в которой описывается как реализованы каналы? Ну вот глупый, не нашел
391 2312469
>>312465

>реализованы каналы


Зачем тебе знать реализацию каналов, когда язык "из коробки" кросс-компилируемый и их реализация плавает в зависимости от платформы?

Про то, как они работают написано тут
https://go.dev/doc/effective_go
392 2312511
вопрос к знатокам: если я отвечу на вопрос "В чем различие стрингов и []byte?" в духе "Стринг иммутабельный тип, т.е. я не могу изменить какой либо символ в строке, если же по каким-то причинам мне нужно изменить его, необходимо использовать []byte, скастовав string" --- интервьюеру понравится? или я лох
393 2312517
>>312511
Если ты будешь использовать массив байт для изменения символа, то ты изменишь только 1 байт, иначе тебе придется писать относительно огромную логику изменения символов из байт, а в го уже есть руны.
394 2312525
>>286748 (OP)
Как выучить Го? Я прошел весь оффициальный туториал.. А че дальше?!

хочу стать сеньором 10к баксов/месяц в ДС за 1.5 года!!! целую обнимаю!!!
395 2312529
>>312525
Как выучить Го? Я прошел весь оффициальный туториал.. А че дальше?!

хочу стать сеньором 10к баксов/месяц в ДС за 1.5 года!!! целую обнимаю!!!
396 2312666
>>312517
тогда какой правильный ответ?
397 2312793
>>286748 (OP)
gomobile рассчитан только на треугольники в опенжле? Как выделять текст? Как его вообще рендерить? Где формочки? Хуета без задач, а хайпа-то было уууу
398 2312803
теперь у нас нельзя вообще никак вкатится в го?
что вообще с айти будет после последних новостей?
вот даже на стажера игнорят. или я настолько плох..
399 2312810
>>312793

>Хуета без задач


Да.
400 2312864
>>312803
Озон, авита, вб.
Как были так и остались. Ну, пока что не закрылись, кто знает что в будущем будет?
А так го у нас не взлетел особо, увы.
401 2313129
Есть какой курс с заданиями чтоб в го вкатиться? Смотрел на степике, но там какая-та ссанина от школьников, их там в каждом модуле в коментах поправляют. Говно и моча.
402 2313135
>>313129
Нах тебе задания? Сам себе не можешь выдумать? Для совсем элементарных уровня черепахи - codewars, посложнее на алгоритмы - leetcode, но практические знания тебе дадут только реальные проекты. Ну напиши мультиплеерную игру с чатом, например.
403 2313161
>>313135
Да чтоб ты спросил блять, тебя ебет вообще? Отвечай на поставленный вопрос либо иди нахуй, сразу видно, что ты поридж до ненужных вещей дело есть.

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

> мультиплеерную игру с чатом, например.


Ссу тебе на ебало.
404 2313162
>>313161
Сходи на codeforces, манечка, там очень классные задачи
405 2313167
>>313162
Долбоеб пориджный, там задачи для отработки алгосов, а не по фичам языка. Ты вообще не понимаешь реквеста, увидел задачи и начал гнать очевидную хуйню про литкоды и прочее говно. Дебил.
406 2313222
>>313129
Зайди в стд либу, посмотри как парсятся пнг и гиф. Напиши для нескольких других типов файлов и сходи нахуй, токсик
407 2313313
>>312511
понравится, но если ты про изменение символа хочешь рассказать, то слайс рун упоминай. также про различия в итерации по строке/слайсу байт хорошо бы упомянуть
408 2313323
>>313161

> Но ты вообще залетный, раз такие


советы даешь
С хуя ли? Я дал практический совет, в данный момент сам это делаю для изучения языка и всей его обвязки. Хули ты тут слюной брызгаешь? И зачем го учишь? По твоему поведению понятно, что РАБотать тебя никуда не возьмут, причём именно по софт-скиллам, кек. А больше половины нужных знаний в реальной жизни - это не сам язык, а обвязка вокруг него. Логирование, профилирование, инфраструктура, докеры-хуёкеры.
409 2313362
>>313167
Ну мань
Какие блять фичи ты отрабатывать собрался, язык за 2 часа учится
410 2313397
>>313362

>язык за 2 часа учится


За 30 минут.
https://www.youtube.com/watch?v=pfmxPtLIW34
411 2313406
А гошка у буржуев вообще как? Рабочий инструмент али диковинка, нахуй не нужная? Коллега съебался пару лет назад в Лондон, потом в Дубаи. Все на гошечке, но тем не менее, вакансий как там вообще?
412 2313567
https://www.zhashkevych.com/golang-ninja

Есть слитый? Анончик, дай курсов на го, чтобы с проектами были
413 2313596
>>313567
Курсобляди, зачем вам курсы?
414 2313608
>>313596
Структурированная информация с разобранными проектами в портфолио, которые можно показать на собеседовании.

Тому, кто по дружбе залетел на работу и его всему обучили, не понять таких проблем.
415 2313673
>>313135

>напиши мультиплеерную игру с чатом, например


Есть гайды как писать такое и продумывать архитектуру?
Хочу написать клон агарио, но не знаю с чего подступиться
416 2313697
>>313673

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


HTML+JS+API, более подробно google: "js как рисовать на странице", "js отправка запроса на сервер", "golang http сервер", "golang json", "js отследить событие нажатия клавиши", "js получить координаты курсора на странице" и т. д..
Научись пользоваться поисковиком.
417 2313730
>>313697
В итоге получается фронтенд дрочево и немножко логики на бекенде. Так ведь?
Вообще стало казаться, что бекенд сейчас не более чем прослойка между фронтом и БД. Вся движуха на фронте сейчас.
418 2313736
>>313730
Да.
/thread
419 2313740
>>313730
Еблан хочет написать игру где внезапно нужна фронтэнд часть. "Ряяя, бекэнд сосет."
420 2313755
>>313740
Как ты игру без фронтенда представляшь? Визуальную новеллу в консоли?
Чисто бекенд проект написать имхо невозможно, так или иначе придется на фронте очень много работы проводить, иначе твое говноподелие, отдающее кривые джейсоны, никому не будет интересно в принципе.
421 2313818
>>313673
Не пиши никаких игр, ни мультиплеерных, ни каких бы то ни было ещё. Там всегда будет много клиента и мало сервера, потому что сервер в таких проектах в основном для синхронизации, и в итоге появляется ложное ощущение того, что

> бекенд сейчас не более чем прослойка между фронтом и БД


Например, в энтерпрайзе так никогда не бывает, там всегда дохуя разнообразной логики на бэке, а фронт - это сплошные однотипные формочки для вызова этой логики. Только такое сложно представить в качестве учебного проекта, так что да, ищи курс с заданиями, либо пиши какую-нибудь сетевую залупу типа P2P-мессенджера.
422 2313848
Шо там по 1.18? Из-за санкций отменили что-ли?
423 2313879
>>313673
Так прикол именно в том, чтоб писать всё с нуля самому, без подсказок. Конечно, если ты будешь гуглить, ты может и готовые варианты найдёшь. А так набиваются шишки, опыт. Не, ну можешь писать физзбазы и притворяться настоящим программистом.
424 2314116
>>313848
на сайте поменяли ожидаемый месяц релиза с февраля на март рофланЕбало
425 2314118
>>313313
т.е. ты иммешь ввиду, что если loop'ом иду по строке, то получаю только индексы, а если по слайсу, то тупл (индекс, значение)?
Тогда я видимо не понимаю смысла подъеба в вопросе "Чем отличается стринга от слайса байтов"...
426 2314434
Пытаюсь задокерить простенький го сервер с одной страницей

Вот докерфайл

FROM golang:1.16-alpine
WORKDIR /go/delivery
RUN go mod init ex123
COPY go.mod go.mod
COPY main.go /go/delivery/
RUN go build
CMD [./ex123]
EXPOSE 8080

ошибка следующая
/bin/sh: [./ex123]: not found

Я уэе весь на говно изошел, понимаю что где то в пути проеб, меня на все возможные варианты. Что не так ?
427 2314522
Попытался пощупать этот ваш го.
Вы че ебанутые? Что это за смесь паскаля си и еще какого-то говна? Вы че угараете каждый раз писать fmt.Println
почему нельзя просто Println

ебать ну и параша
428 2314524
>>314522

> смесь паскаля си и еще какого-то говна?


Ты угадал, вот тут про это рассказывают: https://youtu.be/0ReKdcpNyQg
429 2314536
>>314522
Имена в пакетах могут дублироваться, чтобы избежать коллизии существую пространства имен, если добавить возможность их отключений, как например, using в C++, то код станет говном, в котором будет не понятно, что и откуда.
Паскаль умер уже давно, но люди все еще его вспоминают.
430 2314657
>>314522

>смесь паскаля си и еще какого-то говна


Будто что-то плохое.
431 2314659
>>314522

>Вы че угараете каждый раз писать fmt.Println


почему нельзя просто Println
Поздравляем, вы доебались до столба!
432 2314671
>>314522
Можно.
433 2314717
>>314522
Попытался пощупать этот ваш джаваскрипт.
Вы че ебанутые? Что это за смесь си джавы пхп и еще какого-то говна? Вы че угараете каждый раз писать console.log
почему нельзя просто log

ебать ну и параша
434 2314718
>>314717

> console.log = math.log


> log(1)


0
435 2314719
>>314718
Проиграл.
436 2315101
>>314118
луп по строке идет по рунам, по слайсу байтов по байтам.
437 2315102
>>314536

>если добавить возможность их отключений


она есть, через импорт с точкой
438 2315271
>>314434
Собираешь в одном докер стейдже, запускаешь в другом
439 2315434
Как в вашем говне писать микросервисы?
440 2315435
>>315434
Берешь и пишешь.
441 2315441
>>315435
Вот на джаве, в спринге, я пишу хуяк @RestController, хуяк @GetMapping и все работает. А в говне как?
442 2315442
>>315441

>Вот на джаве


Пиши на джаве тогда.
443 2315454
>>315442
джава умерла, нужно все на го переписать
444 2315455
>>315454
На 1С переписывать. Го, жс и шарп тоже умерли.
445 2315479
>>315442
Обиженка порвалась, на вопрос челу ответить
446 2315482
>>315479
Он писал микропенисы на жабе, но не может написать их на языке, который, кроме микропенисов, ничего не умеет.
447 2315485
>>315482
Справедливо, не сердись если че
448 2315602
>>315434
копируеш существующий, декларируеш хендлеры, делаеш кодген, пишеш сервисный код и работу с БД. всё.
449 2315621
>>315602

> копируеш существующий


Философский вопрос: как написали самый первый в мире микросервис на говне?
450 2315622
>>315621

>как написали самый первый в мире микросервис на говне?


Взяли и написали.
451 2315660
>>315621
Так же, как первые люди догадались, куда нужно совать хуй.
452 2315697
>>315660
Экспериментальным путём.
453 2317487
Go 1.18 is released!
454 2317489
>>317487
Generics now present? May use?
455 2317490
>>317487
Какое же говно синтаксис у дженериков.
456 2317577
Подскажите нюфагу как лучше сделоть.
Допустим в main инициализирую подключение к бд, надо как то получить доступ к этой переменной из другого пакета, чтобы каждый раз не передавать её аргументом, потому что это выглядит тупо.
Может есть какой то лаконичное решение?
457 2317580
Шо там по фильтрации для rest api, когда надо параметры в SQL запрос передать? По-любому есть готовое что-то
458 2317617
>>317580
Есть. Но проблема в том, что неизвестно какое из 20 решений на гитхабе выбрать (
И так во всем.

вы мне лучше скажите что там с wildberries ? пока шизомод не пришел
459 2317620
>>317577
самое лаконичное - отсутствие передачи. То есть, глобальная переменная.
Боишься использовать глобальные переменные? Это у тебя после явы?
460 2317672
>>317617

>wildberries


а они набирают? а то что-то гугл 0 нормальных ссылок на их стажировки\джуновские позиции выдаёт
461 2317693
>>317620
В яве есть контекст DI, из которого можно взять коннекшен к базе, а в го вместо этого какие-то тупые костыли из девяностых.
462 2317757
>>317672
Он имеет в виду, что с самим сайтом. По слухам, их ломанули хохлятские диверсанты и зашифровали нахуй весь бэкенд с данными. Всё, нет больше вилдбирриса.
463 2317761
>>317672

>а они набирают


Раньше набирали.

>гугл 0 нормальных ссылок на их стажировки\джуновские позиции выдаёт


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

>>317617

>wildberries


Жидко дали в рейтузы и ушли в мир иной.
464 2317776
>>317577
type Component struct {
db sql.DB
}

func NewComponent(db
sql.DB) *Component {
return &Component{db: db}
}

Не благодари.
465 2318013
>>301775

> num1


> num2


> num3


> num4


Эх, как же хорошо что не однобуквенные переменные, а то иначе было бы непонятно нихуя
466 2318020
>>317693
В го тоже есть сторонние DI пакеты, но по факту они все это просто неявная обертка над тем что >>317776 написал.
467 2318038
Перекатываюсь с питона. Посмотрел на фреймворки и решил остановиться на файбере.
Так вот, сколько ему памяти надо? Он просто не запускается
468 2318044
>>315621
Написал в тестовом, требование - обмен картинками по grpc, ну дальше гугол и вот так и сделал. Но не взяли, т.к тогда в вебе не работал никогда, но зато взяли на питон.
Так и не понял, по каким критериям надо делить проект на микросервисы.
469 2318077
>>318044

> Так и не понял, по каким критериям надо делить проект на микросервисы.


Его не надо делить на микросевисы без весомых причин.
95% любителей микросервисов - каргокультисты, как, впрочем, и любители того же СКРАМА.
https://www.youtube.com/watch?v=gfh-VCTwMw8
470 2318078
>>318044

>Так и не понял, по каким критериям надо делить проект на микросервисы.


Любую высоконагруженную логику выносишь в отдельный сервис.
471 2318129
знакомые съебали в Грузию и сказали, что могут пролоббировать меня джуном. Посоветовали Go учить. Ну я и начал. Тут эти непонятные дженерики выходят. На каком этапе их надо начать изучать? Вот я теперь эту книгу штудирую.
Адам Фриман Pro Go
Полное руководство по программированию
надежного и эффективного программного
обеспечения с использованием Golang. 2022г.
Как раз для меня всё разжёвано. Но там про дженерики ничего нет.
Спасибо
472 2318131
>>318129

>Но там про дженерики ничего нет.


Дженерики вчера появились.

https://tip.golang.org/doc/go1.18
Потыкай по ссылкам, посмотри говносинтаксис, дальше должен понять.
473 2318134
Вышла новая версия go с дженериками https://go.dev/doc/go1.18
Из плохого:
1) углубили гуглозонд, который встраивает прямо в бинарник ещё больше инфы о вас.
2) исходники у зависимостей теперь не все скачиваются (будете тратить дополнительное время на поиск и скачивание исходников, когда микрософт внезапно заблокирует гитхаб).
474 2318137
>>318134
3) из-за дженериков время компиляции серьёзно замедлилось.
4) поломали совместимость со старыми ядрами линукса, теперь версия должна быть не меньше 2.6.32.
5) go get теперь не работает (куча прежних книг и документации с инструкциями по установке у новичков вызовет проблемы).
475 2318140
>>318137

>5)


go install
А вообще эта ебля с модулями от релиза к релизу вызывает СЕРЬЕЗНУЮ ОЗАБОЧЕННОСТЬ
476 2318150
>>318134

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


как откл-ить7
477 2318155
>>318129
Я бы лучше начал писать текущий проект без дженериков, а потом бы добавил по мере надобности.
478 2318220
>>318038
Бамп
479 2318224
>>318220
>>318038
Код и как ты понял, что он не работает?
480 2318324
Так, наконец-то появились вменяемые функции для работы с коллекциями. Когда можно будет ожидать появления set, treemap, treeset в стандартной либе?
Может потом через лет 5 аналог stream api завезут вменяемый и на го наконец станет возможно писать без постоянных унижений
481 2318328
>>318150
Проще написать альтернативный компилятор, чем каждый раз искать и выпиливать явные и скрытые гуглозонды.
А ещё лучше использовать тот язык программирования, который не прибит к корпорастам, имеет множество компиляторов.
image.png23 Кб, 671x289
482 2318343
Какая же всратая хуйня, этот ваш Говноленд...
Неужели нельзя было раздуплиться и за полгода (или сколько там уже дженерики в бете были) запилить их нормально?
Вот, жрите, пример из го тура подсвечивается красным.
483 2318355
>>318343

>Какая же всратая хуйня, этот ваш Говноленд...


Да.
484 2318371
>>318328
Это какой такой свободный язык? Плюсы с сишкой?
485 2318374
>>318371

>сишкой


Да.
486 2318421
Господа, а что по собесу на позицию го миддла в озон? Что спрашивают? Какие задачки дают решать?
487 2318529
>>318044

>Так и не понял, по каким критериям надо делить проект на микросервисы.


когда у тебя большая команда и нужен тайм ту маркет
774.PNG3 Кб, 909x21
488 2318557
489 2318572
>>318557
Все ясно. Нихуя не ясно.
490 2318584
бляяя сука. не могу запустить эту хуйню. снёс старую версию и поставил новую. после source $HOME/.profile показывает версию, а после перезапуска терминала нет. опять надо $HOME/.profile. сука забыл как первый раз ставил.
491 2318585
>>318584
Перезагрузи родителя, от которого твои терминалы рождаются, если не сработало, то перезагрузи родителя родителя или просто перезагрузи.
492 2318587
>>318585
я детдомовский
493 2318947
>>293424
Нет и не нужны.
494 2319022
>>295247
Иота.
Потому что enum — лишняя сущность.
496 2319032
>>319022
А не айота?
497 2319055
>>319032
Это греческое слово.
498 2319059
>>319055
А, ну да, как же я сразу не догадался, что язык греческий, все же и так понятно, ну да, точно! ЗАЧЕМ ИСПОЛЬЗОВАТЬ ОТЛИЧНЫЕ ОТ АНГЛИЙСКОГО ЯЗЫКА НАЗВАНИЯ В КЛЮЧЕВЫХ СЛОВАХ ЯЗЫКА?
499 2319181
>>319059
Потому что это математический термин. Тебя же греческая лямбда не смущает? Так чего ты из-за иоты бугуртишь?
500 2319185
>>318129
Пока что забей. Советовал бы их учить в последнюю очередь. Они в конце концов только на днях появились
501 2319188
Аноны, а кто-то может подсказать годную статью про устройство GC в го? Все статьи, которые я находил, были очень старые. И в комментариях там люди писали, что статья, конечно, хорошая, но многое уже устарело
502 2319451
Неиронично хочу катануться с плюсов в го. Какие подводные?
503 2319463
>>319451
Никаких.
504 2319467
>>319451

> Какие подводные?


Go
505 2319497
>>319451
Производительность ниже (из-за GC), размеры бинарников больше. Несколько дубовый синтаксис, например отсутствие тернарника чувствуется. Непривычная объектная модель. Гораздо меньше готовых решений.

В остальном Go действительно более прогрессивен и прост (в хорошем смысле).
506 2319698
>>318150
-buildvcs=false, походу
507 2319799
>>319451
платят больше, вакух меньше, код коллег более понятный, делаеш веб-хуйню весь день
508 2319849
>>319497
>>319799
Осуществить вкат реально? Или нужны 3-6 коммерческого опыта?
509 2319956
>>319849
До 24.02.2022 в целом можно было, если напрячь жопу и устроиться в какой-нибудь тинькофф или вайлбериз стажером.
Сейчас в тинькоффе гошную тему прикрыли, а валдбериз жидко пукнул и обмяк. Конторы поменьше просто закрылись или приостановили найм.
Поэтому лучше подожди пока военная спецоперация закончится, потом уже думай куда нужно вкатываться. Вполне вероятно, что придется вкатываться не в веб хуйню, а на завод.
510 2320387
Почему в условном цикле нельзя указывать условие с более чем двумя значениями if a == b == c ?
511 2320389
>>320387
Потому что вычисление происходит не так, как в математике.

a == b == c
true == c // если c - boolean, ошибки и не заметишь
512 2320518
>>319956

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


А что с озоном и сбердевайсис? слышал, что вроде им тоже нужны разрабы
513 2320715
>>320389
Почему в python так можно?
514 2320732
>>320387
Лишнее.
>>320715
Потому что.
515 2320750
Я правильно понимаю, что go язык чисто для корпоративного дроча и ничего интересного для себя на нем не попишешь?
516 2320751
517 2320752
>>320750
Думаешь, что в компиляторе такая проверка?
if (интересноеДляСебя) {
ошибкаКомпиляции()
}
518 2320755
>>320715
Откуда нам знать, что там петухонщики курили.
519 2320915
>>319956

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


чому? На Старт ГОшников набирают
520 2320941
>>319849
Реально. Перекатился на Го, имея 2 года сомнительного опыта плюсов.
521 2320943
>>319849
>>319849
Или ты не тот, кто про перекат с плюсов спрашивал?
522 2320960
>>320518
Про сбер не в курсе. Сегодня слышал, что они вообще найм остановили на многих направлениях.

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

>>320915
На старт набирают, но вот в финтех школе на полгода минимум приостановили гошные программы.
Да и то, ты знаешь сколько там на старт берут? Человек 15-20 от силы. А желающих около 5-10 тысяч. Раньше было проще выиграть грику и уехать чистить унитазы в штаты, один хуй получать будешь в десятки раз больше чем на стажировке в тиньке.
523 2321118
>>320752
Ну я имею ввиду, что на языке кроме всякой банковской параши ничего дельного не напишешь, как на джаве.
524 2321120
>>321118
Так что мешает-то?
525 2321132
>>321118
Идиот, ты бы хоть ознакомился с чем-то, прежде чем спрашивать.
Раз ты не умеешь искать и читать информацию в интернете, тебе и в программирование дорога закрыта.
526 2321143
>>321132
С чем ознакомиться?
Проекты, которые написаны на go: docker, kubernetes, yggdrasil. Всякие штуки написанные айтишниками для айтишников.
527 2321146
>>320960

>Сегодня слышал, что они вообще найм остановили на многих направлениях.


А откуда инфа? я че то не слышал...

>Озон вроде набирает стажеров


Видел у них вакансию и в ней описание, что они рассматривают людей с других стеков для перепрофилирования на го....
528 2321168
>>321143
Игр и геймдева на го дохера и более.
529 2321174
>>321168

>Игр и геймдева на го дохера и более.


Например.
530 2321330
Как узнать, в какой части кода type error происходит?
531 2321355
>>321174
Я тебе ещё раз повторяю: ты не умеешь искать и читать информацию в интернете, тебе и в программирование дорога закрыта.
Мне вот делать нехер больше, чем за тебя гуглить, если ты тот же ебитень не нашёл до сих пор, то ты хохол.
532 2321411
https://www.codepile.net/pile/zlA4nRG1
Помогите, пожалуйста, задачу со степика решить.
533 2321436
>>321411
Ладно, я смог. Но в предыдущих уроках не было информации о создании беззнакового массива.
534 2321443
>>321436
Я знаю, как решить без него.
535 2321489
А можно как-то организовать артефактори для модулей? Чтоб не качать их напрямую с гитхаба? А то этот подсер js макаки совсем пошатнул доверия скачивать напрямую с гитхаба. И подтер же сука историю коммитов, чтоб не доебывались кто в танке был
536 2321491
>>321489
Ну блядь, не качай сомнительные либы с одним автором.
Хотя да, что-то типа packagist не помешало бы.
537 2321494
>>321491
А кто мешает 10 мейнтейнерам в сговор вступить и подосрать?
А каждую зависимость, у которой зависимость заебешься просматривать на предмет обновлений
538 2321498
>>321491

> сомнительные либы


Либа с 1300 звёздами никак не тянула на сомнительную.

> с одним автором


Процентов 90 либ.
539 2321509
>>321118
А что ты собрался для себя писать? На джаве так-то и игры можно писать, да и вообще почти все что угодно, десктоп утилиты, фронтенд и т. д., но другое дело, что для этого есть куда более удобные инструменты.
Кто тебе запрещает на го писать хуитки для себя?
Правда я не знаю, что ты собрался писать для себя. У меня как-то все идеи проектов были либо слишком масштабные (написать аналог викимапии/народных карт яндекса, распределенное хранилище с поддержкой SQL запросов и т. д.), где нужно въебать охуилиард времени и в итоге забить от бессилия, либо банальщина уровня телеграм ботов, который 3 раза в сутки парсит какое-нибудь авито и выдает результат парсинга пользователю, которая пишется на любом языке за пару часов.
Вообще не знаю, как люди находят идеи пет-проектов для себя. Может быть ковыряться в опенсорс либах и фиксить баги интересно + полезно. Писать что-то свое, нужно быть охуенным спецом с огромным багажом опыта.
540 2321520
А можно сделать, чтоб при go get github.com/name1/name2
Можно было бы импортировать без префикса github.com?
541 2321530
что могут спрашивать интерна\джуна на позицию Go бекендера?
насколько нужно быть НЕ тупым в Go чтобы пройти собес
542 2321644
>>321509
Зачем ты перед этим дураком распинаешься простынями? Ничего он не напишет, потому что не может даже нормально погуглить.
543 2321719
У меня нубский вопрос, стоит ли для статики юзать nging?
Ну Т.е. насколько сам http модуль справляется? Речь не о хайлоаде, но на будущее. Все равно всё заканчивается на cdn, хоть с прокси хоть без
544 2321839
>>321355

>Я тебе ещё раз повторяю


Ты мне ничего не повторял.

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


Умею.

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


Вместо пруфов своих слов, ты высрал хуету.
545 2321864
>>321839

> Умею


Зачем тогда этот троллинг тупостью? Я же прямо в своём сообщении, которое ты цитируешь, назвал фреймворк для игр, на котором их уже запилили энное количество.
546 2321866
>>321864
Это же ты, местный ебанат, который в Си треде всех школьниками называл? Я тебя вспомнил, даже стиль текста такой же.

>которое ты цитируешь, назвал фреймворк для игр


Не назвал.
547 2321949
>>321866
На хуй иди, идиот со сломанным детектором.
548 2322157
Посоветуйте пакет для работы с MSSQL.
549 2322468
>>321719
Бамп
550 2322494
Почему бинарники так много весят?
551 2322497
>>322494
Потому что в них пихаются все зависимости и весь рантайм. Много dll-ек в Go видел? Вот то-то и оно.
552 2322576
>>322497
Бинарники скомпилированные под определенную систему можно запускать без дополнительных установок?
553 2322592
554 2322594
Состряпал такею хню. Почему не работает? Я хочу из любого места импортировать готовый конфиг

panic: runtime error: invalid memory address or nil pointer dereference
555 2322625
>>322594
Разобрался. Я, конечно, не сторонник глобальных переменных, но без них в го совсем трудно?
556 2322665
>>322625
Глобальные переменные лучше, чем бесконечные get/set в остальных языках.
557 2322667
>>322665
Как это связано? Никак.
558 2322668
>>322667

>Я, конечно, не сторонник глобальных переменных


>>322665

>Глобальные переменные лучше, чем бесконечные get/set в остальных языках.


>>322667
?
559 2322741
>>322594
А вообще как принято конфиги хранить в го?
В питоне, перле как правило обычный файл с расширением языка и там константами перечислено. Для куба, например, переобпределяется через yaml. А тут?
560 2322743
561 2322749
>>322741
А тут ты должен каждый раз, когда понадобится одно поле из конфига, открывать файл, читать его целиком, закрывать, а прочитанные байтики парсить как json, из результата взять одно поле, остальное выкинуть. Иначе не Go Way.
562 2322751
>>322741
В файлие .env
563 2323140
Как сделать скрытый ввод в консоль как при sudo?
564 2323141
>>323140
Отключить отображение stdin в терминале.
565 2323144
>>323141
Так причем здесь терминал? Это же как-то через сам судо делается, остальные программы же ввод показывают.
566 2323146
567 2325699
ну что, как работа ищется?
.jpg35 Кб, 513x432
568 2325726
Пытаюсь скомпилировать через openwrt. Сыпет ошибками:

1. Беру чистые исходники: https://github.com/Macronut/Pinocchio Ошибка:
main.go:19:2: local import "./dns" in non-local package
main.go:20:2: local import "./proxy" in non-local package
main.go:21:2: local import "./service" in non-local package


2. Поменял в main.go
"./dns"
"./proxy"
"./service"
На
"github.com/macronut/pinocchio/dns"
"github.com/macronut/pinocchio/proxy"
"github.com/macronut/pinocchio/service"
Ошибка:
main.go:19:2: no required module provides package github.com/macronut/pinocchio/dns; to add it:
go get github.com/macronut/pinocchio/dns
main.go:20:2: no required module provides package github.com/macronut/pinocchio/proxy; to add it:
go get github.com/macronut/pinocchio/proxy
main.go:21:2: no required module provides package github.com/macronut/pinocchio/service; to add it:
go get github.com/macronut/pinocchio/service


3. Закинул файл go.mod в корень исходников:
module github.com/macronut/pinocchio
go 1.18
require github.com/williamfhe/godivert v0.0.0-20181229124620-a48c5b872c73
Ошибка:
service/pinocchio.go:15:2: local import "../dns" in non-local package
proxy/mystify.go:17:2: local import "../net/ipv4" in non-local package
proxy/mystify6.go:13:2: local import "../net/ipv6" in non-local package
proxy/mystify.go:18:2: local import "../net/tcp" in non-local package
service/pinocchio.go:16:2: local import "../proxy" in non-local package


4. Меняю пути во всех файлах как во втором пункте. Ошибка:
proxy/proxy.go:52:2: array index 15 out of bounds [0:15]
proxy/ttl.go:20:6: TCPInfo redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:21:6: previous declaration
proxy/ttl.go:26:6: htons redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:29:22: previous declaration
note: module requires Go 1.18


5. Меняю go 1.18 на go 1.17 в файле go.mod. Ошибка:
proxy/proxy.go:52:2: array index 15 out of bounds [0:15]
proxy/ttl.go:20:6: TCPInfo redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:21:6: previous declaration
proxy/ttl.go:26:6: htons redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:29:22: previous declaration


Как чинить? На картинке файл proxy.go (ошибка proxy/proxy.go:52:2: array index 15 out of bounds [0:15])
.jpg35 Кб, 513x432
568 2325726
Пытаюсь скомпилировать через openwrt. Сыпет ошибками:

1. Беру чистые исходники: https://github.com/Macronut/Pinocchio Ошибка:
main.go:19:2: local import "./dns" in non-local package
main.go:20:2: local import "./proxy" in non-local package
main.go:21:2: local import "./service" in non-local package


2. Поменял в main.go
"./dns"
"./proxy"
"./service"
На
"github.com/macronut/pinocchio/dns"
"github.com/macronut/pinocchio/proxy"
"github.com/macronut/pinocchio/service"
Ошибка:
main.go:19:2: no required module provides package github.com/macronut/pinocchio/dns; to add it:
go get github.com/macronut/pinocchio/dns
main.go:20:2: no required module provides package github.com/macronut/pinocchio/proxy; to add it:
go get github.com/macronut/pinocchio/proxy
main.go:21:2: no required module provides package github.com/macronut/pinocchio/service; to add it:
go get github.com/macronut/pinocchio/service


3. Закинул файл go.mod в корень исходников:
module github.com/macronut/pinocchio
go 1.18
require github.com/williamfhe/godivert v0.0.0-20181229124620-a48c5b872c73
Ошибка:
service/pinocchio.go:15:2: local import "../dns" in non-local package
proxy/mystify.go:17:2: local import "../net/ipv4" in non-local package
proxy/mystify6.go:13:2: local import "../net/ipv6" in non-local package
proxy/mystify.go:18:2: local import "../net/tcp" in non-local package
service/pinocchio.go:16:2: local import "../proxy" in non-local package


4. Меняю пути во всех файлах как во втором пункте. Ошибка:
proxy/proxy.go:52:2: array index 15 out of bounds [0:15]
proxy/ttl.go:20:6: TCPInfo redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:21:6: previous declaration
proxy/ttl.go:26:6: htons redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:29:22: previous declaration
note: module requires Go 1.18


5. Меняю go 1.18 на go 1.17 в файле go.mod. Ошибка:
proxy/proxy.go:52:2: array index 15 out of bounds [0:15]
proxy/ttl.go:20:6: TCPInfo redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:21:6: previous declaration
proxy/ttl.go:26:6: htons redeclared in this block
/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/proxy/mystify.go:29:22: previous declaration


Как чинить? На картинке файл proxy.go (ошибка proxy/proxy.go:52:2: array index 15 out of bounds [0:15])
569 2325732
>>325726
Проект говно, устанавливай зависимости руками через go get.
570 2325734
>>325726
>>325732
git clone https://github.com/Macronut/Pinocchio
cd Pinocchio
go build
Пропробуй, возможно ты что-то сломал, возможно проект уже сломан, но если в нем не указан алгоритм сборки, то все должно так работать. Или проект говно.
571 2325741
>>325726
Создай симлинки на эти импорты в папке vendor
572 2325749
>>325732>>325734>>325741
Попробовал другие исходники, теперь выдает:
cp -fpR ./files/ /root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/.pkgdir/Pinocchio/
cp: cannot stat './files/
': No such file or directory


Открывал смотрел все файлы в исходниках - нигде нет пути ./files/* - что это может быть?
573 2325750
>>325732>>325734>>325741
На новых исходниках успешно компилируется через эту команду:
GOOS=Linux GOARCH=mipsle go build -o pinocchio.mips32le

Но мне надо именно через openwrt, а там ошибка: >>325749
574 2325767
>>325749

>Попробовал другие исходники


Какие?

>Открывал смотрел все файлы в исходниках - нигде нет пути ./files/* - что это может быть?


Очередное быдлокодерское решение.
575 2325773
>>325767
Мне анон скинул починенные исходники, сказал что оригинальные исходники кривые:
http://0x0.st/oq98.gz

>Очередное быдлокодерское решение.


Можно это починить редактированием исходников? Я понятия не имею где искать, т.к. я не линуксоид даже близко, мне просто надо прогу скомпилировать и поставить на роутер. И заодно спрошу. Почему у меня убунта так сильно лагает на виртуалке? Когда перетаскиваю окна все тормозит и лагает, есть большая задержка. На винде-виртуалке такого нет даже близко. После моих 144 hz глаза дико устают.
576 2325780
>>325773

>Можно это починить редактированием исходников?


Да.

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


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

>Почему у меня убунта так сильно лагает на виртуалке?


Убунта говно.
578 2325823
>>325780
Я собираю через openwrt SDK. Как починить? Явно проблема в исходниках, потому что я уже успешно собрал это (тоже на GO):
https://github.com/BH4EHN/openwrt-cloudflared/blob/master/Makefile

Но тут уже готовый makefile был. Я создал по аналогии Makefile для Pinocchio
579 2325912
>>325823

>потому что я уже успешно собрал это (тоже на GO)


Я слепой или в репе 0 го-кода, а это просто пакет для какой-то системы?

>Я создал по аналогии Makefile для Pinocchio


...

>Как починить?


>>325789
Возможно ты не так собираешь.

Разве "GOOS=linux GOARCH=mipsel go build" не может собрать для openwrt?
580 2325922
>>325912

>в репе 0 го-кода


Там только makefile и конфиги. Исходники берутся отсюда: https://github.com/cloudflare/cloudflared

>Возможно ты не так собираешь.


Я все так собираю, потому что я уже собрал cloudflared, использую данный makefile: https://github.com/BH4EHN/openwrt-cloudflared/blob/master/Makefile
581 2325936
>>325922
https://github.com/cloudflare/cloudflared/blob/master/Makefile
Обрати внимание на тело цели в строке 193.
582 2325937
>>325936

>193


103 фикс
583 2325944
>>325936
Так оно не использует тот makefile при компиляции, оттуда берутся только исходники, а используется данный файл:
https://github.com/BH4EHN/openwrt-cloudflared/blob/master/Makefile
define Build/Compile
$(call GoPackage/Build/Compile)
584 2325951
>>325944
Тогда удали нахуй строку $(CP) ./files/* $(1)/ из своего (созданного на другом) мейкфайла, чтобы убрать эту ошибку.

>cp -fpR ./files/ /root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/.pkgdir/Pinocchio/


>cp: cannot stat './files/': No such file or directory

585 2325959
>>325951
Удалил, теперь ошибка:
Finding targets
go: warning: "github.com/macronut/Pinocchio/..." matched no packages

Building targets
no Go files in /root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/.go_work/build


В ошибке речь про GO_PKG:=github.com/macronut/Pinocchio

Возможно я не то указал, потому что в cloudflared путь немного другой:
GO_PKG:=github.com/cloudflare/cloudflared/cmd/cloudflared

Но я не нашел ничего похожего в github.com/macronut/Pinocchio
586 2325960
Содержимое моего makefile: https://pastebin.com/raw/z2ZLMJj0
587 2325962
>>325959
Ты вроде исходники менял, с относительного-локального пути импортов до абсолютного-удаленного (то есть на гитхабе), верни, как было и попробуй еще раз.
588 2325968
>>325951
Удалил tar и запустил компиляцию, он по новой его скачал, теперь нет ошибок: (1, 2, 3, 4, 5) >>325726
Видимо они были из-за строчки: $(CP) ./files/* $(1)/ которую я удалил
Но ошибка осталась та же:
Finding targets
go: warning: "github.com/macronut/Pinocchio/..." matched no packages

Building targets
no Go files in /root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/.go_work/build
589 2325972
>>325968

>go: warning: "github.com/macronut/Pinocchio/..." matched no packages


go mod init в директории с проектом пропиши, может поможет.
590 2325982
>>325972

>в директории с проектом пропиши


Я не понимаю. В makefile? Компилирую через openwrt, не из директории проекта. Из папку openwrt. В ней папка package. В папке package папки программ с файлами, в том числе makefile на каждую. Компилирую командой:
make package/pinocchio/compile V=s
591 2325999
>>325982

>/root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/.go_work/build


cd /root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/.go_work/build && ls -l
И листинг сюда, хуй знает, что там у тебя происходит внутри.
592 2326010
root@123:~/Desktop# cd /root/Desktop/openwrt6/build_dir/target-mipsel_24kc_musl/Pinocchio-0.1/.go_work/build && ls -l
total 8
drwxr-xr-x 2 root root 4096 Mar 31 00:21 bin
drwxr-xr-x 3 root root 4096 Mar 31 00:21 src
593 2326011
>>326010
GOROOT, GOPATH устанавливал в переменных окружения?
594 2326015
>>326011
Нет. Там в этот SDK все необходимые библиотики и утилиты ставятся в папку package. То есть язык GO ставится в папку package/lang/golang и тд
595 2326016
>>326015
Скинь ссылку на это все.
596 2326018
>>326016
Сам SDK: https://github.com/openwrt/openwrt (это вроде как полная версия, через которую можно собрать на любую архитектуру, выбирается через make menuconfig. Есть еще урезанная версия на конкретную архитектуру, я пользую урезанную)
Пакеты: https://github.com/openwrt/packages (там же пакет golang)
597 2326045
>>326018
Мне кажется проблема в том, что в проекте нет go.mod, попробуй форкнуть его и добавить его, а после измени мейкфайл, но уже под свой форк.
598 2326048
>>326045

>в проекте нет go.mod


Есть в исходниках, которые мне анон скинул: http://0x0.st/oq98.gz
С ними такая же ошибка. Содержимое go.mod:
module github.com/macronut/pinocchio
go 1.18
require github.com/williamfhe/godivert v0.0.0-20181229124620-a48c5b872c73
599 2326068
Как в го формировать урл из параметра и обработать?
Т.е. в питоне во фласке что-то типа
@blueprint.route("/url/<name>")
@blueprint.route("/url/<path:varargs>/<name>")

И могу обращаться к /url/123 и к /url/qwe/2345

Т.е. что-то вроде подкаталогов, которые формируются из бд/файловой системы
601 2326239
>>295927
Да, это с версия после 2021.1 такое ввели.

>>295817
Чё-то не работает нихуя на люниксе для 2021.1.
Даже полное удаление options/other.xml не помогло.
Файлов .plist у меян нет. Что ещё забыл?
602 2326240
>>326239
~/.java/.userPrefs/jetbrains $ rm -r goland/*
Во, там prefs.xml, похоже это
603 2326255
>>326239
Так это для макоси скрипт. там даже в ссылке на гитхаб написано это
604 2326366
>>299220
с другими двачевскими потихоньку заполняем такую халупу -
https://github.com/Planck1858/golang101
.png7 Кб, 194x259
605 2326464
>>299220
СУПЕР!
606 2326591
НУЖНА ПОМОЩЬ
Что значат эти настройки? https://raw.githubusercontent.com/macronut/Pinocchio/master/pino.conf

service=socks//127.0.0.1:666 - на этом порте он слушает. Помогите разобрать остальное!
607 2326609
>>326591
Вот ты ебешься с этой хуетой уже пару дней, а что эта программа вообще делает? Разве у нее нет нормальных альтернатив?
608 2326613
>>326609
A local DNS server let TCP connection resolve hostnames through proxy by return fake IP addresses
Альтернатив на линукс не нашел. На винде такое делает Proxifier:

>it is impossible to get a real IP address through a proxy so Proxifier has to assign placeholder (fake) IP addresses like 127.8.. which are only valid within the local computer


Задача резолвить через родные DNS прокси. Proxifier это умеет. На линуксе все что находил это проги, которые тупо шлют DNS запросы на указанные DNS сервера, к примера гугла. Это вообще не то что нужно.
609 2326721
>>326613
Ну так пиши автору, хули ты до нас-то доебался? Либо код изучай.
610 2326776
>>326721
Не груби, быдло.
611 2326777
612 2326778
>>326777
Другого на линукс нет, к сожалению. А отсылку я все равно не понял, т.к. я не знаю язык Go. Я вообще никакой код не знаю.
613 2326779
>>326778
Можешь попробовать, поднять SOCKS прокси и через iptables контролировать конечные домены.

Будет такая схема:
"Машина во внутренней сети"->"Внутренний управляющий сервер с прокси"->"Файрволл на сервере, который запрещает пакеты на определенные адреса"
614 2326787
>>326779

>поднять SOCKS прокси


На роутере?

>контролировать конечные домены.


Что это значит?
615 2326794
>>326787

>На роутере?


Да.

>Что это значит?


Хуевые формулировки использовал, но кратко, то iptables позволяет указывать правила обработки пакетов, значит ты можешь с помощью него указать, чтобы пакеты отправляемые на example.org перенаправлялись на условный 192.168.0.255, но я не помню может ли он работать с доменными именами.
https://www.opennet.ru/man.shtml?topic=iptables

Поднимаешь SOCKS5 прокси на роутере, настраиваешь iptables на нем, на внутренних машинах указываешь соединение через SOCKS5 и адрес роутера. Должно работать.
616 2326797
>>326794
Может я не так объяснил? Мне надо чтобы DNS шли от провайдера сокса, как на первой картинке. А у меня получается только как на второй. И при этом все нужно делать на роутере, без каких-либо манипуляций на компе.
617 2326798
>>326787
>>326794
Возможно достаточно будет просто iptables, не помню, как передаются данные через роутер в интернет, возможно он (iptables) их тоже может обрабатывать.
618 2326800
>>326797

>Мне надо чтобы DNS шли от провайдера сокса


Вообще нихуя не понял.
619 2326803
>>326798
У меня щас следующая схема на роутере.
1. На порте 1234 висит проксификатор, в конфиге проксификатора прописан сокс тайланда. TCP трафик отправляется на порт 1234.
2. На порте 5555 висит DNS сервер, в конфиге DNS сервера прописан DNS cloudflare, UDP трафик отправляется на порт 5555.

Что изменить в этой схеме, чтобы было как на первой картинке: >>326797

>>326800
Ты тупой? Ты когда подключаешсья к интернету, то тебе DCHP провайдера выдает свои местные провайдерские DNS сервера. В данном случае провайдер Contabo Asia Private Limited
620 2326820
>>326803

>1. На порте 1234 висит проксификатор, в конфиге проксификатора прописан сокс тайланда. TCP трафик отправляется на порт 1234.


SOCKS5 прокси поддерживает UDP, почему бы тебе просто не перенаправлять все запросы на него?

>2. На порте 5555 висит DNS сервер, в конфиге DNS сервера прописан DNS cloudflare, UDP трафик отправляется на порт 5555.


UDP трафик это не DNS трафик, у тебя потенциальная утечка данных в сети получается.

>Что изменить в этой схеме, чтобы было как на первой картинке


Для меня это просто набор адресов.

>Ты тупой?


Нет.

>Ты когда подключаешсья к интернету, то тебе DCHP провайдера выдает свои местные провайдерские DNS сервера.


Если бы он мне их выдавал, я бы смог без настройки DNS сервера на машине использовать доменные имена, но я так не могу, а значит мне никто не выдавал DNS.
621 2326822
>>326820

>мне никто не выдавал DNS.


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

>SOCKS5 прокси поддерживает UDP


Не поддерживает значит.
622 2326824
>>326822

>Твой провайдер всем клиентам говорит прописать днс гугла в настройках адаптера?


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

>Не поддерживает значит.


https://ru.wikipedia.org/wiki/SOCKS5#Протокол_SOCKS_5
Поддерживает.
623 2326829
>>326824

>Поддерживает.


Ты похоже реально тупой. Если бы он поддерживал, то я бы не пытался несколько дней скомпилировать pinocchio. Иди читай как работает DNS.
624 2326830
>>326829

>Ты похоже реально тупой.


Скорее всего не я.

>Если бы он поддерживал, то я бы не пытался несколько дней скомпилировать pinocchio.


Ты выбрал хуевый проект, который был заброшен 3 года назад, не имеющим документации, с очень низким уровнем кода, засрал половину линукс-треда в /s, пытался написать Makefile на основе другого, но не решился почитать документацию по сборке Go программ для openwrt, вместо использования поисковика ты срешь на двачах.

>Иди читай как работает DNS.


Расскажи.

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

>ты обвиняешь других


Где? Я просто написал, что ты тупой. Теперь ты еще и балабол, потому что я никого не обвинял.
626 2326872
>>326847
Съеби отсюда, чмо.
627 2326992
>>326872
Спокойней, быдло.
628 2327332
>>286762
Чем лучше?
629 2327335
>>327332
Чем Go.
630 2327538
>>320941
>>320943
Если не сложно, можешь свой путь расписать вкратце?
631 2327788
НУЖЕН ДЕШИФРАТОР

Что значат эти настройки? https://raw.githubusercontent.com/macronut/Pinocchio/master/pino.conf

ЛЮБЫЕ ПРЕДПОЛОЖЕНИЯ! НЕ СТЕСНЯЕМСЯ
632 2327789
>>327788
Пошел нахуй долбоеб, ты заебал, тебя в /s попустили, теперь потом тут попустили, нахуй ты вообще продолжаешь срать?
633 2327791
>>327789
Ты что-то путаешь, это тебя опустили и сделали обиженным.
634 2327828
>>327788
Помогу, давай почту/телегу/скайп. Не бесплатно офк. Предоплата 75%
635 2327832
>>327828
Скинь карту куда переводить деньги.
636 2327835
>>327832
Тет-а-тет только
637 2327837
>>327835
Пиши здесь, все свои.
638 2327840
>>327835
Тет-а-тет это в жопу или в рот? Согласен отыметь тебя в жопу за помощь.
639 2328062
кто-нибудь джуном в авито (и не только) пробовал устраиваться сейчас? как успехи?
640 2328117
>>328062

>авито


а они набирают сейчас?
В озон уже месяц на позицию стажера динамят по 10 различным вакансиям :( просто не отвечают на посланное резюме
Стикер255 Кб, 400x487
641 2328123
>>286748 (OP)
Зачем нужен этот ваш Го?

Вакансий 2,5 штуки на всё СНГ.

Бизнесс задачи он какие решает?
642 2328144
>>328117
посмотри на их сайте прямо вакансии, там голанг вакансий много, без указания middle/senior в тайтле (такие отдельно тоже есть) и без требования коммерческого опыта
643 2328145
>>328117
может в резюме дело, попробуй изменить, почекать гайды на резюме от HR, buzzwords побольше накидать, ожидаемую зп убрать
644 2328147
>>328123
за бугром го ценится и очень развит, посчитай сколько репозиториев с голанг на гитхабе и звезд по сравнению с другими проектами, зп до 600к доходят
но в снг для ждунов все плохо, это правда, да сейчас у всех все плохо
645 2328150
>>328123
Вакансий миллиарды.
646 2328167
>>327538
Ну что, работал в провинциальном аутсорсе, занимался бэкенд-разработкой - C++ использовался в проектах чисто по идеологическим причинам. В команде ни у кого не было почти никакого опыта бэкенд-разработки, поэтому учиться было, в общем-то, не у кого. Чтобы не было стыдно перед забугорным менеджментом, начал читать всякие учебники и статьи про базы данных и распределенные системы. Потом случилось так, что решил искать новую работу. Написал резюме generic "бэкенд-разработчика", среди языков написал в том числе Го, который на работе использовался около двух месяцев - забугорный менеджмент захлестнула микросервисная лихорадка. На следующий день получил чуть меньше десятка предложений, выбрал самое интересное, скрыл резюме :-). Поболтали с рекрутершей, отсобеседовался пару раз и готово - теперь я Го-программист. На собеседованиях была только БАЗА - никаких вопросов по фреймворкам и бредятины в духе "готовы ли вы отдать жопу за дядю Боба 100% покрытие тестами и принципы SOLID".
На изучении и понимание C++ потратил довольно много времени - на работе никаких стайлгайдов не было, приходилось самому искать "стандартные" способы делать всё по-нормальному. Наверное, теперь я всё, что было специфично для плюсов, забуду, но это какая-то польза от этих поиском была, я думаю.
647 2328180
>>328167
Перечитал пост, подумал, могло создаться впечатление, что резюме было в духе "и швец, и жнец" с максимумом баззвордов, но нет - оно было вполне честное, про каждую "технологию" писал продолжительность и контекст использования, уровень владения - типа, вот в этом хорошо разбираюсь, а с этим только использовал готовый SDK, и т. п.
Про Го была пара строчек, и честно написано про 2 месяца.
Те, кто набирает Гошников, не ждут КОММЕРЧЕСКОГО опыта 3 года именно на Го. В этом он выгодно отличается от условной Джавы, где для переката обязательно нужно будет дрочить Спринг и т. п.
648 2328434
>>328145

>может в резюме дело


3 пет-проекта, шарю за Redis, Docker, GHA. Ожидаемой зарплаты вообще не стоит, хочется хоть за еду поработать чтобы опыт получить))
649 2328853
>>286748 (OP)
Приветствую гоферов. Подскажите - есть ли команда, скачивающая сторонние покеты, определенные в импорте? Или для каждого пакета надо использовать go install packagename?
650 2328882
Подскажите, как подобный таск решить на Го?
Дан целочисленный массив nums, выведите на экран true, если хотя бы одно значение встречается в массиве как минимум дважды, и false, если каждый элемент различен.
Сижу уже сутки и перебираю разные варианты, свои додумки и адаптации из гугла, но что-то пока херня выходит. Отмечу, что тут даже не слайсы, а базовый массив только..
651 2328972
>>328123

>Вакансий 2,5 штуки на всё СНГ.


меня на одной работе ебут нахуй тебе несколько
652 2328992
>>328972
Как будто на любую вакансию могут взять любую макаку со 100%-ой вероятностью.
653 2328995
>>328853
go mod vendor
go get ./...
go mod tidy
выбирай какой команда нравится
654 2329095
подскажите нормальную статью\лекцию на ютубе про GPM схему и нутрянку горутин. Как их шедулит планировщик на потоки?
655 2329208
>>329095
https://www.youtube.com/watch?v=-K11rY57K7k
Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency
656 2329385
>>286748 (OP)
Какие ваши мнения по поводу go после февральских событий.
Касательно тех, кто не уезжает. Да никто не знает
Будешь ли ты считаться стажёром, если имел много опыта на других языках, а гошку только начинает изучать?
657 2329395
>>329385

> Да никто не знает


То есть ты знаешь ответ и всё равно спрашиваешь?
658 2329406
>>329395
Ну а как без надежды на лучшее?
659 2329407
Буду вкатываться в ваш гоуленг. Мимо 5 года опыта на разных япах
660 2329409
>>329407
И правильно, джунов в пщ не берут.
661 2329957
>>328882
В чём конкретно проблема?
662 2329963
блять какова хуя в го делают поинтеры пиздец
663 2329983
>>329963
Указывают.
664 2330131
>>329957
Не понимаю, как писать. Нужно сравнивать каждый элемент с предыдущим, но я почему-то вылетаю за индексы + нужно сделать ветвление и возврат значения в лоб при совпадении
665 2330139
>>330131
самое просто решение что приходит в голову -- сделать set и пихать в него инты. Если при очередном инте там число уже есть --- возвращаешь true
666 2330420
>>330139
Ну вот почему он берет индекс массива, а не значение этого индекса? Что я делаю не так?
Screenshot4.png37 Кб, 496x590
667 2330421
>>330139
Ну вот почему он берет индекс массива, а не значение этого индекса? Что я делаю не так?

фастфикс, забыл скрин
668 2330523
Ну что вы гоферы, юзаете уже дженерики на пректах? Доложите, как оно.
669 2330561
>>330421
for _, result := range(arr) это из голанга же конструкция? Не помню. Просто воспользуйся ей, зачем писать циклы через for ;;;, а еще у тебя ошибка во втором цикле j должен быть равен i, а не 1. Ну и ходить "в холостую", когда тебе интересен только есть-нет результат, такое себе.
670 2330563
>>330561

>i


i + 1
671 2330567
>>330421

>Дан целочисленный массив nums, выведите на экран true, если хотя бы одно значение встречается в массиве как минимум дважды


И еще задание перечитай, ты не правильно его понял, [ 1, 2, 1 ] - true, не обязательно они должны идти рядом.
672 2330577
>>330421
чото ты нето понаписал тут. Судя по тому что я вижу --- твой алгоритм всегда будет говорить true, т.к. ты вторым лупом опять по всему nums'у (за исключением 0 элемента) проходишь
image.png51 Кб, 242x145
673 2330656
>>328882
наивное решение это идти по массиву в лупе, внутри каждой итерации опять проходить по массиву и сравнивать текущий элемент с остальными ("остальной" - это если индекс внутреннего лупа не совпадает с внешним).
более правильно пройти по массиву, собирая мапу элементов и их количества. если количество больше 1, то выйти с false.
чисто технически можно собрать пройтись по лупу и собрать фильтр блума, потом пройтись по лупу и на каждый элемент-кандидат, на который луп отвечает "ну мб", делать фулскан как в первом случае например.
674 2330659
>>330656

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


сорян слишком думал о залупе ничего не могу поделать
675 2331682
>>330523

>>более правильно пройти по массиву, собирая мапу элементов и их количества


Не всегда можно просто взять и [в худшем случае] умножить потребление памяти твоей программой на x > 2. Если массив большой, и его можно менять, то правильнее будет отсортировать, а дальше тривиально.
676 2332410
Аноны подскажите пожалуйста стыдно немного такие вопросы задавать, но я вот 1С-ник работаю в OZON программирую себе получаю денежку 23 лвл. Хочу перекатиться в GO за несколько месяцев прошел Go Tour и пункты Go Lerning продолжаю изучение, но чувствую что нехватает свободного времени сказывается.
Думаю что чем раньше начну решать задачи от бизнеса тем быстрее руки выпрямиться и быстрее скилл прокачивать буду.
Но пока чувствую, что знаний мало и пытаться перейти в другое направление засмеют.
Так вот в какой момент мне будет не стыдно пытаться перейти в другую команду? Как мне понять, что уже можно хотя бы на стажера идти проситься?
У меня же все есть опыт программирования на 1С ну это же хоть как-то должно тоже учитываться, что я чуть лучше стажера.

В общем какой-то сумбурный нервный поток мыслей надеюсь вы меня поняли
677 2332456
>>332410
Везёт тебе. Попроси тимлида перекатить тебя и всё
678 2332868
Сап, аноны, такой вопрос, самая высокая средняя зп у джунов именно в golang
https://habr.com/ru/company/habr_career/blog/659343/
Вопрос: такую зп джунам платят, даже тем кто с нуля вкатился, за счет высокой востребованности? или те кто вкатываются обычно имеют опыт в других языках и за счет доп скиллов получают такую зп
679 2332901
>>332410
сходи к своему hrbp, скажи, что хочешь ротацию в гошечку. сюда-то что пришел?
680 2332914
>>332868

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

681 2332918
>>332868
в целом, джу-гошник может ожидать себе зарплату повыше, чем скажем джун-пыхер, но и перекаты накладывают сдвиг на статистику
682 2332923
почему так много либ для роутинга реквестов? Есть ли какой-то сакральный смысл в том, чтобы юзать дефолтный net/http, или же на gin +- тот же по производительности в плане хайлоада?
683 2332945
>>332923
каждый пыхер должен написать свой шаблонизатор
каждый джсер должен написать свой мини-фреймворк
каждый гошник должен написать свой роутинг

юзай что угодно популярное, для чего есть готовые миддлвари, которые не придется писать самому
net/http, gin, fiber, echo, etc
684 2332995
Как сделать выполнение какого-то количества строчек одновременно?
685 2332996
686 2332998
>>332996
Да. Нужно небольшой скрипт написать, в котором пару действий не обязательно выполнять последовательно.
687 2333001
>>332918
Собираюсь вкатиться в IT, опыта нет кроме школьного бейсика, матан и диффуры знаю, но технического образования нет
Golang подойдет или лучше другой язык выбрать для начала? Интересен бэкенд и важна зп
688 2333398
>>318134
что за зонды, можно подробнее?
689 2333522
Ананасы, как перестать думать как ооп даун на гошечке или смириться с постоянной копипастой?
690 2333523
>>318134
1. Да, доставь пожалуйста моар инфы про зонд, и как его выпилить на этапе компиляции? Может, есть какие-то флаги?
2. По поводу исходников у зависимостей тоже не понял, как не скачиваются, они же нужны при сборке твоей программы, нет?
691 2334130
>>332868
вкатился с нулевым опытом работы за 35к стажером. потом повысили до 65к. с 11 месяцами опыта перекатился на 100к в другую контору. потом повысили до 150к. с 23 месяцами опыта перекатился на 260к в другую контору.
692 2334444
>>334130
Ты откуда? Если из России то куда ты устроился? Тут компаний, которая джунов набирает можно пересчитать по пальцам одной руки
693 2334445
>>334444
Мало компаний, но много вакансий.
694 2334446
>>334445
Кулстори
695 2334538
>>334130
сколько изучал язык до вката стажером?
696 2334770
>>334538
Да его за 2-3 дня выучить можно. Еще месяц на самые распространенные либы. Месяц на несколько проектов и при условии, что ты пишешь на другом языке - ты примерный мидл
697 2334943
>>334770

>пишешь на другом языке


на любом языке? Даже если на php?
698 2334984
>>334943
Особенно, если на php.
699 2335145
Напомни-ка, почему ошибки вида cannot use foo (variable of type Qux) as Qux - это норма?
700 2335166
>>335145
Потому что катись-ка в свой петухон обратно.
701 2335175
>>335166
мимо.
702 2335182
>>335175
Конечно мимо. Ты случайно прошёл мимо своего петухон-треда и попал сюда.
703 2335378
>>334444
из москвы, вкатывался через один из двух маркетплейсов этой страны, о которых все слышали.
>>334538
го тур только прошел. пошел на собес чисто ради интереса, в вакухе было написано без опыта гошки, так что не старался изучить. я в целом мог себе какой-нибудь говноскрипт на петоне написать и простенький проект на сишке/плюсах поредактировать и чем where от having отличается знал, примерно так.
704 2336703
Я правильно понял, что на go особо проприетарный код не попишешь, чтобы никто не раскрыл содержимое? Потому что рантайм довольно внятные ошибки выдает, если они есть.
705 2336717
>>336703
На Go вообще никакого кода, кроме серверного, не попишешь.
Если ты увидел, что Go компилируется в исполняемые файлы, и провёл для себя аналогию с C++, то эта аналогия ошибочна. И тем более ошибочен вывод, что Go можно юзать для тех же задач, что и C++.
706 2336760
>>336717
Мне надо написать небольшую программу, в которой надо выполнять пару десятков действий (функций) одновременно. Выбрал этот язык из-за горутин. Какой компилируемый язык посоветуешь, чтобы нельзя было посмотреть содержимое самой программы?
707 2336800
>>336760
C++
Rust
708 2336915
>>336760
Слушай, ну твоя программа будет простая же, я её просто декомпильну и разберусь че там как. Что у тебя вообще за желание "нельзя заглянуть внутрь" было бы желание на самом деле. Вирусню и ту разбирают как нехуй спецы, а ты залетышь вообще, подумой. Без негатива если че
709 2336944
>>336800
В расте удобно реализована многопоточность?
710 2337020
>>336944

>В расте удобно реализована


Раст неудобно реализован.
711 2337127
>>336703
Я не в курсе точно, но думаю можно покопаться в кишках и отключить вывод ошибок
712 2337132
>>336760
А если по сабжу, эту проблему решает клиент-серверная архитектура. Не знаю применимо ли в твоем случае, но вариант возможный
713 2338244
Пагни. Поясните плз, в го есть аналог ссылок или конст ссылок?
Прост не могу понят когда есть смысл передавать объект через указатель.
714 2338478
>>338244
по умолчанию в Гошке происходит копирование аргументов, когда передаешь их в функцию. Так что если не хочешь чтобы какой-то огромный объект копировался, передавай его по ссылке.
А вообще вот: https://www.practical-go-lessons.com/chap-15-pointer-type#when-to-use-a-pointer-receiver-when-to-use-a-value-receiver
715 2338479
>>338478

>ссылке


указателю, офк
изображение.png35 Кб, 766x526
716 2338945
>>286748 (OP)

>есть на Русском


Чет не вижу на русском
717 2338948
>>338945
Да вы заебали!
изображение.png45 Кб, 750x455
718 2338949
А вообще решил вкатиться в go для написания серверного приложения, так как на крестах всё это сложно и долго. Нашёл вот такой пример tcp клиента, но он крашится, если сервер недоступен. Как фиксить?
719 2339128
>>338949
Ладно, с крашем я разобрался. Но теперь другая проблема, после того как клиент отключается, сервер уходит в бесконечный цикл
720 2339657
Дайте рецепт по деплою го приложух с базой в докере!
721 2339690
>>339128
Научись основам.
722 2339848
>>339657

>Дайте рецепт


Хероку? Миллион гайдов на ютубчике
723 2341631
>>286748 (OP)
Как там ГО поживает? Ещё встаёт с кален после обосрамса с неотключаемым лагучим сбором мусора или даже не пытается?
724 2341704
>>286748 (OP)
сап, какой язык взять для изучения(сейчас работаю говнарем)? был минимальный опыт c и java. Смотрю в сторону раст, но его синтаксис))))
725 2342827

>В обязательном порядке проходим Go Tour: https://tour.golang.org/welcome/1 (есть на Русском)



Где там на русском?
726 2342932
>>338949

>игнорируем ошибки


>подключаемся один раз перед циклом и из цикла никогда не выходим


мне кажется всё должно работать))
727 2342965
>>341704
Какой язык на рынке труда востребован, тот и изучай
728 2343292
>>332998
var wg sync.WaitGroup
for i := 0; i < 5 (например); i++ {
wg.Add(1)
go func(sync.WaitGroup){
yourScript()
wg.Done()
}(wg)
}
wg.Wait()
729 2343295
>>333522
В каких кейсах приходится копипастить? В принципе редко возникала такая необходимость. А сейчас еще и дженерики подвезли
730 2346354
Почему нет автокаста или я еблан и не разобрался как его включить? Заебывает постоянно писать int64 перед каждым числом
731 2346355
>>346354
Это называется строгая типизация
inb4(1): нет, я не перепутал со статический
inb4(2) да, баззворд
732 2346356
>>346355
хуета
нормальные пацаны по кайфу кастуют че хотят и во что хотят
733 2346474
>>346356

>нормальные пацаны по кайфу кастуют че хотят и во что хотят


Тред волшебников на другой борде.
734 2347771
А есть на го какие нибудь удобные ORM либы? Посмотрел видосы, все хуярят чистыми SQL. А как тогда всякие фильтры писать?
735 2347785
>>347771

> А как тогда всякие фильтры писать?


По твоему, на ORM можно сделать то, чего нельзя на чистом SQL?
736 2347801
>>347771
squirrel или другие билдеры запросов, если не хочеш руками.
737 2347821
>>347785
Он, видимо, ORM-фанатик, пришедший из какой-нибудь Джавы или Пыхи. На самом деле, положняк по орм такой:
ORM придумали программисты, которые не хотели "заморачиваться" с sql-запросами.
Подойдёт для "небольших" проектов (до нескольких тысяч пользователей.)
С ORM проще, пока запросы простые. Если нужна оптимизация и хайлоад, пишем запросы руками.
Вот и решайте.
738 2348202
>>347771
GORM?
Но ораторы выше правы - учи чистый SQL
739 2348243
>>348202
>>347821
Вы о чем вообще? ORM невозможно пользоваться в принципе, если не знаешь, как примерно такие же запросы, которые делает ORM, писать на голом SQL. ORM-макака без знания SQL это что-то из разряда невероятного, я такое даже вообразить не могу.
740 2348269
>>348243

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

741 2348370
>>348243

> ORM-макака без знания SQL


Так ОРМ-ки, написанные сильными программистами, и порождают орды макак без знания эскьюэл.

0. Тяжелые времена порождают сильных программистов.
1. Сильные программисты создают фреймворки.
2. Фреймворки порождают слабых программистов.
3. Слабые программисты порождают тяжелые времена.
742 2348843
>>348243

>ORM-макака без знания SQL это что-то из разряда невероятного, я такое даже вообразить не могу.


хз, вполне себе представляю такого недо-прогера. Решил что "Ептыть, а нах мне этот ваш селект инсерт, ОРМ делает бррр бррр..." и всё
743 2348870
>>348370
сейчас какие времена ?
744 2348981
>>347821
>>348243
>>348370
>>348843
я конечно не настаиваю но во прос был по-моему в том, чтобы писать не тупа круд запросы, а фильтры, и в этом случае нужно как бы не внедрять инжекшоны и штобы это не плодило охуенно неподдерживаемый код
745 2348985
>>348981
Так фильтры — это часть круда, всегда так было же.
У тебя есть эндпоинт типа GetAllGovnoName и там нужна фильтрация, стандартная история. Есть куча способов запилить приличный API для фильтров без ОРМок (каким боком они вообще тут?). Естественно, и без всяких инъекций, если у тебя есть хоть одна извилина. На го это проще потому что строгая типизация.

>>348870
Настают тяжёлые. Так что всем быстро учить сишку с асмом, я не шучу.
746 2349196
>>348981

>штобы это не плодило охуенно неподдерживаемый код


в чем SQL запросы "охуенно неподдерживаемый код"?
или я не понял о чем речь...
747 2349368
>>349196
ну в зависимости от бизнес-требований это не "sql запросы", а 700 строк на генерацию одного запроса и собирание аргументов к нему по маленьким кусочкам и в какой-то момент это начинает внезапно ебать базу
748 2349483
>>349368

>700


цифра из головы, или жизненные примеры есть?
Ни одного такого большого запроса не видел.
Да и элементарно, если бы ОРМки были быстрее и юзабельеней, то в вакансиях требовали бы их, а не знание SQL
749 2349641
>>349483
из головы. в сумме там больше, но там три запроса в одной ручке и в каждом условия билдятся руками со всем соответствующим уровня часть форматстрингов начинается пробелами, а другая часть заканчивается.
750 2349802
Какой положняк по быстродействию последний версий go?
Java всё еще быстрее считает числа?
751 2350261
Как в goland выключить удаление неиспользуемых переменных и импортируемых пакетов? А то пиздец, импортировал пакет, переключился на браузер, зашел обратно и вижу, что эта мразь удалила импорт!
image.png8 Кб, 600x113
752 2350477
>>350261
Попробуй
753 2350549
>>286748 (OP)
Аноны, а почему в Го какая-то не понятная ебка с импортами? Будем пилить монолит по тиху и соответственно делать микросервисы на го, но тут я удивился, что НЕЛЬЗЯ ПРОСТО БЛЯТЬ ВЗЯТЬ И СДЕЛАТЬ ИМПОРТ, это вообще как? Почему я должен ебаться с какой то инициализацией модулей, я ни понимаю, нормальных гайдов как вот образно делать импорты как в питончике ? У всех в импортах какие-то репозитории, пакеты, бля, я просто хочу для начала иметь мейн откуда буду управлять остальными файлами, хоть как-то бля, но я в тупую не понимаю, можно по простому, для тупых, как работают в го импорты ?
754 2350577
>>350549
"Ебаться с модулями" - это создать файлик на 5 строчек и пару папок. Уверен, что не осилишь?
Относительных испортов нету, да.
755 2350588
>>350549

>НЕЛЬЗЯ ПРОСТО БЛЯТЬ ВЗЯТЬ И СДЕЛАТЬ ИМПОРТ


Философия golang - Data-Oriented programming, тебе дают минимум возможностей для выполнения операций с данными, привычный импорт это высоко-абстрактная фишка
756 2350598
>>350577
Не, стой, чтобы просто использовать код из файла N мне надо всю папку инициализировать как модуль ?

>>350588
Ок, ладно,
757 2350738
>>286748 (OP)
В каких языках есть подобные механизмы len, cap для слайсоподобных структур? Когда при добавлении элемента увеличивается cap в 2 раза
758 2350825
>>350738
В любом массиве (контейнере) в любом языке программирования. Можешь написать свою реализацию и расширять на 1, 2, n элементов каждый раз при добавлении нового, оптимальность этого решения будет зависеть от конкретного случая
759 2351151
>>350738

>В каких языках есть подобные механизмы len, cap для слайсоподобных структур?


Плюсы мб? По сути слайс = динамический массив. Я не шарю за внутренность динамических массивов в плюсах, но думаю что идеология похожая.
760 2351462
>>350738
std::vector в cpp
761 2351628
Насколько сложно вкотиться со знанием C++ и JS?
762 2351677
>>351628

>со знанием C++



Если ты действительно знаешь С++, то легко
763 2351783
Стоит ли ставить Линукс и привыкать к нему если я хочу вкатиться в GO?
764 2351892
>>351677
А что схожее с плюсами есть? В чём отличия? Насколько вообще база языка больше/меньше плюсовой? А самое главное надо ли мне это?
изображение.png13 Кб, 495x276
765 2352041
Наконец то дженерики!
766 2352051
>>352041
Не очень понимаю надо ли в Unmarshal ставить & перед data
Обычно все ставят, но и без этого работает. Какие подводные камни тут?
767 2352078
Работы на го для джуна что-то совсем нет.
768 2352084
>>352078
А я тебя предупреждал.
769 2352097
>>352051
если передавать T вместо *T, то создавать объект через new не обязательно и можно просто объявить поинтер и анмаршал сам аллоцирует, если жсон корректный.
https://go.dev/play/p/wvfj9O9TdfG
770 2352098
>>352097

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


передавать ★★T вместо
771 2352112
>>351783
если не хочешь ебаться с докером под WSL на винде --- да
772 2352116
>>351783
ну линекс апреори нужно ставить
а так знание баша помогает спастись от ручного тестирования, когда ты можешь скриптом прогнать сотню разных запросов по двум версиям сервиса и сравнить их вывод.
плюс на собесах могут спросить по деталям, т.к. сервера всё-таки на линексах.
можно конечно на венде теорию дрочить но погружение все-равно лучше.
773 2352129
>>352097
Аа понял про поинтеры, спасибо
774 2352222
>>351677

>Если ты действительно знаешь С++


Ну и что сложного в мире GO, что нужно обязательно байты дрочить 10 лет? В Гошку с нуля легко вкатываться.

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

>>351783
Английский язык и погружение в Linux это первое, что делает программист
775 2352223
>>352041

>any


Заебись, приплыли в мир JS
776 2352224
>>352078
Да и на мидла нет нихуяшеньки. в РФ остались востребованным только сеньоры. рынку пиздец сейчас почти по всем языкам
777 2352237
Захотел тут вкатиться в Go и чуть со скуки не помер. Какой же это скучный язык! Рекомендую программировать на нём только перед сном.
778 2352240
>>352237
Всё так, я тоже не рекомендую, ни в коем случае.
Это же американский язык для Гугла, а у нас гугла нет. Так зачем он?
НИНУЖОН
779 2352403
>>352222

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


вообще пиздец, нахуй так делать, поначалу непонятно что происходит

Под "действительно знаешь С++" я подразумевал также знание алгоритмов и структур данных, которые были написаны челом на С++, ООП и работу с базовыми либами и памятью. Так что это просто хороший бекграунд для вката в го.
780 2352471
>>352403
В Go даже списков нет из коробки
Всего три структуры данны: array, slice, map
Ну охереть вообще
781 2352512
>>352471
А к чему это, я не понял просто?
В любом случае деревья, хэши и другие структуры данных нужно уметь писать под свои задачи
782 2352609
>>352471

>три структуры


всм, stack и heap'а же еще есть, но видимо мало кто об этом знает
783 2352703
>>352609
Это не те структуры, которые программист использует для решения задач
784 2353092
>>352112
>>352116
>>352222
У меня просто ноут я уже наверное часов 20 убил на попытки поставить на него убунту но она просто намертво виснет не доходя до установки все советы перепробовал уже сил никаких нетю
Сильно много я потеряю если останусь на винде?
785 2353132
>>353092
звучит как типичная проблема с флешкой
786 2353163
>>353132
Кстати вполне возможно флешка то старенькая.
Спасибо анон сегодня схожу новую куплю надеюсь поможет.
И еще вопрос какой Линукс лучше ставить? Убунты мне с головой для начала наверное хватит, да?
787 2353196
Аноны, а как через tcp обозначит тип запроса? К примеру я хочу послать два числа и получить их сумму. Или произведение и тд.
788 2353225
>>353196
Послать тип в самом запросе вместе с числами. Никаких "заголовков" нет.
789 2353226
>>353225
Как-то сложно. Нужно будет потом еще строку разбирать получается. А можно для этого использовать например http, или что другие используют? Я просто совсем ньюфаг в go. Хочу например из qt передать на сервер строку, число и массив булевых, как такое реализуется?
790 2353476
>>353226
Структуру отсылай
791 2353488
Пишу свой первый пет-проектик и появился вопрос. Вижу что часто используют паттерн репозиторий. И вроде все становится хорошо, до тех пор, пока данные не начинают взаимодействовать друг с другом. Приведу искусственный пример: пусть программе нужно хранить что-то связанное со странами и с городами. Для них заведены отдельные репы.

Если я хочу добавить новый город, то мне нужно сначала сходить в репу со странами, удостовериться, что там есть нужная страна, а после в репу с городами добавить город+его страну. Но если у меня под капотом какой нибудь постргес, то я бы мог просто для таблицы с городами указать страну как foreign key одним запросом добавлять город, получилось бы более консистентно и скорее всего производительнее. Однако тогда, на мой взгляд, логика растекается и не получается изолировать одну сущность в одном классе.

Расскажите, как в таких ситуациях поступают умные дяди
792 2353573
>>353488
не еби мозги и не разделяй репозитории по сущностям, разделяй по агрегатам.
я вообще не понимаю эту еботу с репозиториями на каждый чих. это какая-то ООП/клин код хуета. я обычно делаю одна БД = один репозиторий. вся более комплексная логика - обертка над ним. чтобы тестить зависимые пакеты вы можете интерфейсы и моки создать только с теми методами, что нужны. в чем я не прав?
793 2353694
>>353132
Спасибо анон убунта встала дело и правда было в флешке
794 2353834
Какие есть тесты с задачками на кишочки языка? Не просто теория, а с конкретными сниппетами кода? Ну типа тех тестов что по ЖС на learn.javascript.ru. "Tour of Go" не предлагать - это введение и оно мной пройдено.
795 2353845
>>353834
Типо литкод порешать?
796 2353851
>>353845

Не. Не алгоритмические, а на тонкости языка. Типа хитро..банной лапши из промисов и setTimeout-ов на ЖС, на прототипы и т.д. То что спрашивают примерно на среднем голанг собесе. А литкод решается на любом языке.
797 2353935
>>353851
Слайсами ебут
798 2354357
>>353476
Можно поподробнее?
799 2354363
>>354357
Отправляй JSON на сервер
800 2354828
>>354363
Что-то не работает. Посылаю на сервер такую строку

> "{\n \"CPU\": \"Intel\",\n \"Motherboard\": \"MSI\"\n}\n"


На пиках код на сервере. Выдает пустые кавычки. На 3 пике вывод, если записывать в буфер.
801 2354829
>>354828
Уже разобрался, почему то программе не нравилось, что имена переменных в структуре с маленьких букв.
802 2354987
Есть смысл писать отдельное серверное приложение для работы с БД, или можно обращаться к БД напрямую с клиента?
803 2354988
>>354987
К БД напрямую с клиента обращались в нулевых, тогда и серверную бизнес-логику писали на хранимых процедурах. Сейчас считается плохим тоном, типа плохо масштабируется. Но смотря что тебе нужно.
804 2355049
>>354988
Дак может ты напишешь как надо и не будешь пальцы гнуть, вась? Я написал что мне нужно, разуй зенки и ответь нормально.
805 2355051
>>355049

>может ты напишешь как надо


Зачем?

>не будешь пальцы гнуть


Он их гнул?

>написал что мне нужно


Уверен?

>ответь нормально


Зачем?
806 2355058
>>355049
Ты с какой колонии такой дерзкий? Сидел? Родину любишь?
807 2355398
>>355049
проиграл
808 2355529
Думаю вкатиться в го, для начинающего норм вариант? В 24 года не поздно ещё? Линуксом интересуюсь, как-то давно проходил курс по питону со всякими базовыми алгоритмами, проблем не возникало, английский хорошо знаю, есть техническая вышка не айтишная. Привлекает тем что вроде бы вакансий немного, но и конкуренция меньше чем в том же фронте, более узкое направление. На крайняк рассматриваю QA.
809 2355539
кстати, кто щупал gioui.org? удобная штука?
810 2355542
>>354987
по-хорошему между бд и юзером должна быть прослойка, чтобв не было робинов-брось-таблицу
также это позволит писать отдкльные методы для отдельных обращений, мутя всё что нажо под капотом, за красивым методом апи
811 2355555
>>355539

>gui на go


Забудь

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


Нет, пиздуй на питоне года 3 работать.
На Го джунов в принципе не может быть.
812 2355694
>>355555

> забудь


почему? и на каких языках тогда писать гуй?
813 2355715
>>355694
JS, плюсы, шарп.
814 2355757
>>355694

>и на каких языках тогда писать гуй?


На любых, которые имеют адекватные фреймворки для гуя, а не костыльные, как в го.
815 2355762
35 лет.
12 лет пишу на пыхе и жс в одной конторе все это время.
Хочу вкатиться в го. Перепишу некоторые части с пыха на го. Таким образом получу опыт коммерческой разработки на го. Реально так дорасти до мидла и найти работу?
816 2355776
>>355757
отлично, а почему в го костыльные?
817 2355781
>>355776
Потому что появились недавно, не обкатаны в проде и сделаны для языка, принципиально не преднащначенного ни для чего, кроме микросервисов.
818 2355858
>>355776
Сравни "нативный" WPF/UWP и Гошные да подумай сам
819 2356751
Что почитать на тему взаимодействия клиента и сервера? Как наладить их взаимодействие? Вот есть десктопное приложение, мне слать запросы по tcp или по http на сервер, написанный на го?
820 2356762
>>356751

>Что почитать на тему взаимодействия клиента и сервера?


Википедию.

>Как наладить их взаимодействие?


По протоколу.

>Вот есть десктопное приложение, мне слать запросы по tcp или по http на сервер, написанный на го?


См. 2.
821 2356849
>>356751
rest api
822 2356878
image.png12 Кб, 562x85
823 2357348
>>286748 (OP)
Боже блять... ну кто и нахуя придумал вот это? Сука, многое стерпеть в ГО могу, но это выше моих сил блять. Имел опыт с JS/TS, Питоном и Жавой - везде по-человечески отрабатывала обработка ошибок
Как вы это жрете нахуй?
824 2357352
>>357348

>Как вы это жрете нахуй?


Есть идеи лучше?
825 2357358
>>357348
Деды с процедурной парашей в 70-х тоже так делали.
826 2357575
>>357348

исключения убоги, усложняют понимание кода и замедляют его

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

>>357348
есть, но пропзал отвергли
strconv.Atoi(str)? - делает return c дефолтными значениями и ошибками
strconv.Atoi(str)! - паникует в случае ошибки
827 2357582
>>357575

>strconv.Atoi(str)! - паникует в случае ошибки


Тогда лучше так, v, ! = strconv.Atoi(str)
Все равно говно.
828 2357683
>>357348
Просто запомни, что все ф-ции в гошке возвращают два параметра
829 2357791
Утверждали что все функции в гохе принимают параметры по значению (при передаче в функцию происходит копирование), соответственно если ты хочешь чтоб они проходили по ссылке то передавай указатели.

Когда запускаем горутины через go - та же тема, но почему в случае каналов мы передаем сразу канал без всяких указателей, но работаем все равно с одним и тем же каналом, т.е. копирований не происходит?

https://ideone.com/Uc8M2U
image.png103 Кб, 1515x675
830 2358205
динамикодрисня как есть
831 2358346
>>358205
Вкатыш спок.
Из динамичного поведения там только автопередача указателя, но не наоборот
832 2358418
ну то есть получается, go по сути как c++ только поумнее, удобнее и более зумерский? я просто щас учу его, хочу в бэк, но стажировки и работа на го это пиздец, надо знать нихуя себе сколько
833 2358430
>>358418

>go по сути как c++


Нет.
834 2358444
>>358418
Из с++ там только дроч с указателями. Да и то до сишного уровня ему далеко
https://ideone.com/Hmrog1
835 2358455
>>358444
Далеко в плане он не так хорош?
836 2358534
>>358418
Лолшто
Go это реинкарнация старого C
837 2358537
Go пытается на двух стульях усидеть.
И в байтах поковыряться и в вебе-хуебе джсоны маршировать в одну строчку
838 2358539
>>358537
И збс жеполучается
839 2358540
>>358539
Есть одна фундаментальная проблема.
Даже ДВЕ.

1) РЕДКИЕ, обновления
2) Язык всё никак не созреет. Дженерики за год добавили, заибися. А комьюнити много о чём просит, всё это игнорят.
840 2358541
>>358537
Нет, не пытался никогда, он всегда претендовал исключительно на веб-жсоны. То, что го компилится в экзешники, ещё ничего не значит.
841 2358542
>>358541
Ну а как-же все эти вскукареки про Http-Траффик, каналы и прочее? Оно ведь не нужно в вебе
842 2358567
>>358542
Нужно, если ебёшься с высоконагруженными микросервисами, ты в любом языке для бэка будешь аналогично ебаться. А можешь писать на го круды и не столкнуться с этим никогда.
843 2358573
>>358567
А теперь главный вопрос.
Насколько в гошке популярны круды и фреймворки для веба?
Чтобы раз-раз как в джанго\рельсах и готово?
Какой процент вакансий? А ОЗОН?
844 2358606
>>358573
Вот да! Выучить всегда можно язык, вопрос в востребованности, хз просто есть ли смысл учить и дальше
845 2358608
>>358606
Все в один голос пишут про "микросервисы" как подавляющее применение в РФ. Хз что там ОЗОН намешал.

Перекладывать жсон на JS куда приятнее и проще. И либ проше
846 2358612
>>358608
хз, особой разницы такой не заметила, хотя всего то на джанго и ноде писала
Просто разница возможно в скорости. Ну и еще за время изучения заметила, что от го так и веет мыслью мол "я дам тебе пизды, если будешь тратить память компа на не пойми что"
наверно все же стоит продолжить изучение, язык только-только обороты набирает
847 2358614
>>358612

>язык только-только обороты набирает


Не знаю, по статистике падаю вакансии с марта очень быстро.
В полтора раза уменьшилось за один только апрель.
Джуном вкатиться нереально, но я бекендер тоже на ноде
848 2358618
https://ideone.com/09Jk5B
вот бичевский метод расширения динамического массива, норм? или его лучше по-другому имплементить? И как его через дженерики для произвольного типа написать? interface{} нахуй
849 2358619
>>358614
просто щас открыла ххру
на всю страну 37 вакансий на го без опыта
от 1 до 3 лет - 448
от 3 до 6 лет - 653
Джуны никому не нужны короче
850 2358620
>>358618

>https://ideone.com/09Jk5B


На нормальный пастбин залить религия не позволяет?
851 2358623
>>358618
Дженерики с типом constraint
image.png52 Кб, 941x741
852 2358630
Слабо растёт
Delphi быстрее стреляет
853 2358634
>>358630
Слабо ебете!
854 2358646
>>358634
Да это бред. Python по факту сейчас никому не нужен
855 2358647
>>358646
Тут есть рациональное зрено, но все не совсем так
Пистон нужен в машобчике и датасоенсе. Но в беке его позиции слабы сейчас. Та же гошка стремительнее развивается
856 2358650
>>358647
Вот, ты прямо телепат. Я именно со стороны "обычного" бекенда и пишу. В "обычном" бекенде без машоба\нейронки\дс там даже руби может потеснить
857 2358651
>>358650
Как давно в Питоне? Сколько зпка? Думаешь в гоху идти?
858 2358653
>>358651
Последний раз была 40к на питоне.
Потом свалил в ноде, сейчас 150к. На питоне сильнее ебали на собесах, вот и забросил.
Сейчас думаю вернуться в питон (заново учиться) или в гошку вкатываться
859 2358654
>>358653
Ты фуллстек? Где нашел работу в ноде? Там вакух еще меньше чем в питоне, в основном это фуллстеки.
860 2358656
>>358654
Я редкий зверь, чистый бекенд на ноде.
Ебать какое гавно я видел. После этого всё желание в JS/TS развиваться НЕТ. Не нравится, всё очень плохо. JS раковый и только для фронта сойдёт, на нём писать нельзя, даже TS не спасает. Это не тот инструмент для бекенда, я ошибся
861 2358657
Вся работа JS backend это пердолинг с самим языком и костыление. Всё хорошо на "пет-проектах" и на простых приложениях (которых не существует в бизнесе). Мне уже go нравится больше, но вкатываться рано, даже error handling не пугает
image.png44 Кб, 995x684
862 2358710

>open source go project

863 2358735
>>358656
а скок лет?
А то все уже в 22 по 5лярдов в наносекунду зарабатывают, боюсь проебать момент
864 2358933
>>358735
Я уже всё потерял, 30 лет, зарплаты нормальной нет
Меня списывайте и хороните под плинтусом
865 2358998
>>357791
Потому что всё что создаётся через make ведёт себя как ссылочные типы.
866 2359139
https://pastebin.com/Tgg7fpnt

В гохе написал свою реализацию вот этого: https://go.dev/tour/concurrency/8 тут нужно через горутины параллельно обойти 2 бинарных дерева и сказать, идентичны они или нет. Обход это обыкновенный поиск в глубину, тут все ясно. Проблема именно с синхронизаций каналов.

В горутине я сбрасываю данные в один основной канал, в конце горутины делаю defer который отправляет с qCh (quitChannel) данные, это как бы должно сигнализировать о завершении одной из горутин, но блять именно на этом моменте возникает дедлок! (fatal error: all goroutines are asleep - deadlock!) Какого хуя?
image.png62 Кб, 906x434
867 2359141
>>359139
Вот эта хуйня с функцией sendToChannel нужна потому что для defer нужно указать именно вызов фуннкции
868 2359148
>>359141

>нужно указать именно вызов фуннкции


лямду defer func(){ ch <- true}() туда вставь проста епта.
по вопросу хз без кода непонятно ты может из канала один раз читаешь, а шлеш туда два раза
869 2359150
>>358619
давай с уникальностью по компаниям. не то чтобы сильно поменяется, но без опыта могут одну вакуху на несколько команд поставить, а с опытом в конкретные.
image.png24 Кб, 1190x272
870 2359256
Что заставляет людей писать такое?
871 2359259
>>359256
Расширение в будущем, потому что не все ошибки являются критическими, а значит некоторые можно без проблем обработать.
872 2359299
>>359259
почему это не написать в будущем?
6842640848756151.png241 Кб, 1717x1674
873 2359302
Что гобляди должны наконец усвоить:

1. err != nil это кусок залупы. Обрабатывайте наконец эксепшны как все Белые Люди. (и да, defer был высран именно по причине отсутствия try-finally)
2. Почему бы не запилить наконец нормальную итерацию по строкам? Сука, в этом говноязыке даже по строке не можешь нормально проитерироваться, т.к. итерируемся мы по байтам. Без сторонних либ и рюмки водяры не разобраться.
3. interface{} это не "мощная фича" это ебаный костыль, которому не место в статически типизируемом языке.
4. null pointer exception это самая частая причина вылетов в рантайме, го не только ничего с этим не делает, но и всячески поощряет их, утверждая что достаточно "просто каждый раз проверяться на nil" (вспоминает пункт 1)
874 2359303
>>359302
Толсто.
875 2359305
>>359302
Да по факту разъебал
Что про RUST думаешь?
876 2359384
>>359302
ну всё убедил я увольняюсь
image.png37 Кб, 728x907
877 2359489
>>359302

>2. Почему бы не запилить наконец нормальную итерацию по строкам? Сука, в этом говноязыке даже по строке не можешь нормально проитерироваться, т.к. итерируемся мы по байтам. Без сторонних либ и рюмки водяры не разобраться.


pic
Или ты что-то другое имел в виду?
878 2359516
Аноны, как установить защищенное соединение между десктопным клиентом и сервером, не устанавливая сертификат?
879 2359523
>>359516
Установить ключ, заранее известный клиенту и серверу, им всё шифровать.
880 2359524
>>359516
t := &http.Transport{
TLSClientConfig: &tls.Config{
Certificates: []tls.Certificate{cert},
RootCAs: caCertPool,
},
}
?
881 2359669
Привет, аноны, хочу вкатиться в голанг с нуля, но не шарю за то как бекенд устроен, посоветуйте ресурсы, на которых можно научиться вещам, необходимым помимо знания самого языка
882 2359985
Avito, Leroy, Ozon, Wildberries, Сбермаркет, а в каких еще крупных компаниях используют go?
883 2360009
>>359669

>с нуля, но не шарю за то как бекенд устроен


Забудь
В голанг не берут вкатунов
884 2360207
>>360009
вроде есть вакансии и на джунов, и на стажировки
885 2360221
>>360207
За еду, на ближайшие 5 лет.
886 2360266
>>360221
сначала да, но через год работы за еду ты уже крепкий джун и можешь претендовать на зп 80+
887 2360636
>>359489
Когда итерируешься по строке, ты итерируешься по байтам а не по символам. Можно при помощи либы strings итерироваться по рунам (символам) но вот если 1 символ у тебя будет 4 байта скажем то ты опять обосрешься.
Что сложного сцуко было сделать по дефолту кодировку у всех строк utf8? Если нужны другие - преобразуешь при помощи той же либы encoding. От того они и строки блять. И завезти отдельный тип bytes (в общем почти как оно сейчас и есть, byte это шорткат для uint8), который интерпретировался бы как массив байтов. Вместо этого какое-то невнятное ковыряние байтов там, где оно нахуй не усралось.
888 2360695
>>360636
толсто
889 2360719
>>360636
Не думал бегать начать? Чтобы лишний вес сбросить.
890 2360803
>>360221
согласен и на такое. скиньте ссылку)
891 2360839
>>360803

>согласен и на такое. скиньте ссылку)


hh.ru/vacancy/55008683 не благодари
892 2360844
>>360839
круто кнш, но я в Москве не проживаю, а удаленки там нет(
спасибо в любом случае
893 2360873
Как установить пакет gorilla/mux? Ввожу команду

> go get -u github.com/gorilla/mux


Ругается, что надо использовать только в папке с mod, предлагает команду install. Окей, использую её, в итоге в $GOPATH/pkg/mod/github.com/gorilla появляется папка [email protected] А что с ней делать? В goland пакет все равно не видно. Почему так сложно всё? Пакет mysql я просто кинул в папку Program Files/go/src и заебись, везде подхватывается.
image.png5 Кб, 367x37
894 2360877
>>360873
мб как-то так импортировать? я кнш новичек только, но похоже mysql пакет он ищет в пути goroot, а mux - в gopath (т.к. в goroot нет)
второй вариант поменять gopath, а вообще да, удобнее go.mod юзать
895 2360924
>>360873
>>360877

>Ругается, что надо использовать только в папке с mod


в чем проблема сделать go mod init?
896 2361073
>>360873
сделай модуль в папке с проектом. У тебя Пщ не понимает куда ему модуль с мухом сувать
897 2361074
>>360873

>Пакет mysql я просто кинул в папку Program Files/go/src и заебись, везде подхватывается.


господи...
898 2361101
чо, пацаны, переходим на goplus?
899 2361109
>>361101

>goplus


Зачем?
900 2361115
>>361074
Что не так?
901 2361122
902 2361325
>>361115

>Что не так?


если это какой-то изящный способ мазохизма -- то окей.
Все модули должны через go get ставиться, а не через такое мозгоебство
903 2361925
>>361101
Спасибо, поблевал
Лучше обратно на питон перейду
904 2362172
Хочу в го, но так привык к питону
905 2362183
>>362172
Хоти.
906 2362441
Как с пыхи вкатиться в го? Джунов не берут? Есть гайд?
907 2362446
>>362441
Хуй сосешь?
908 2362527
>>362446
это обязательное условие?
909 2362549
>>362441
Обычно с него и вкатываться. Хз, видимо похожи
910 2362652
Аноны, допустим на сервер поступает некий запрос, в качестве ответа мне надо переслать строки базы данных. Ладно если их пара штук, просто запихну в массив json и отошлю по http. А если их тысячи, десятки тысяч?
911 2362672
>>362652
Пагинация
912 2362788
>>362652
Двачую пагинацию. Но если ты ёбнутый, врубай chunked:
```
w.Header().Set("Transfer-Encoding", "chunked")
w.Header().Set("X-Content-Type-Options", "nosniff")
```
После этого после каждого row дёргай `(w.(http.Flusher)).Flush()`. Соотвественно у тебя в ответе будет не один json, а стрим json-ов.
К слову, на приёмнике, если он на go, не пересоздавай декодер, используй один для всего стрима - у него есть внутри буффер и ты будешь проёбывать данные иначе.
913 2362797
>>359139
1. Не оставляй за собой висячих на канале горутин. В false-варианте обе твои Walk-горутины утекают.
2. Пушь значения в канал правильном порядке. Прочитай доку и код Tree
3. У тебя закрытие канала уже является сигналом конца обработки. quitChannel не нужен.

Теперь про дедлок. Деферы выполняются в обратном порядке. У тебя получается что обе Walk-горутины обработали деревья и теперь ждут пока кто-то прочитает quitChannel. Но Same-горутина в этот момент залочена и ждёт нового x, которого уже не будет. Варианты локально разрешить примерно следующие:
1. Поменять порядок деферов в Walk
2. Сделать каналу quitChannel буфер хотя бы в одно сообщение, но лучше в 2 (`make(chan bool, 2)`)
3. Выпилить quitChannel.

Один из вариантов решения - https://go.dev/play/p/HfdSANOkRvF
Можно без stop-канала, если не нужна ленивость, тогда в if надо делать `res = res && false`

Теперь попробуй запилить то же самое для деревьев потенциально разных размеров.
914 2363367
>>362652
ну зависит от контрактов и требований. можешь залить в хранилище и отдать ссылку и пусть хранилище ебется с этим вопросом. можешь тупа всё отдать, ты как будто никогда файлы больше 100мб с интернета не скачивал. текстовое можешь гзипом сжать, он в стриме кодируется/декодируется. у нас в сервисах да обычно пагинация.
915 2363816
>>362652

>А если их тысячи, десятки тысяч?


Паникуй и пиши в лог, проблема не в тебе, а в задаче.
image.png67 Кб, 796x750
916 2363871
>>362797
Блин, внутри select и switch вообще говоря не нужен break, в отличие от множества других ЯПов, однако сцуко он там все же может быть и влияет на сам switch/select, поэтому когда запускаешь select через бесконечный цикл то break в нем не остановит цикл for, он подействует на select. Походу надо всегда из оборачивать в функции и выходить из нее через return
917 2363898
>>362652
Альфач берет и отсылает целиком. У тебя комп уже давно тянет многие сотни Мб трафика. Не рефлексируй.
918 2363952
Как спать рандомное время? Вызов:
time.Sleep(time.Duration(rand.Intn(2)) * time.Second)
Отправит его поспать на либо 2, либо 1 либо 0 секунд. А как мне замутить равномерное распределение? Если внутрь time.Duration поместить вызов rand.Float64 то он автоматом округлит его до 0
919 2363959
>>363952
Ну например time.Duration(rand.Intn(2000)) * time.Millisecond
изображение.png31 Кб, 552x450
920 2363981
>>363871
В го есть метки безусловного перехода. Как раз для таких случаев.
921 2364282
>>363981
ебать гнилым сиговном пахнуло. вот что бывает, когда допускаешь ссаных бумеров до руля. засерают всё своими протухшими концепциями
image.png16 Кб, 387x521
922 2364335
>>364282
Лул))0) А ты как собираешься делать break/continue из вложенного цикла? Булевские флаги заводить? Вот пример, имхо первый вариант-то получше будет. Тем более если вложенность 3+.
Любой нормальный язык имеет похожую конструкцию, даже зумерские котлин и свифт.
923 2364556
>>363959
А блять, в жс и пистоне привык что сразу передаю целиком float число и ниебет
(какого хера кстати надо оборачивать вызов rand.Intn в time.Duration? Эта пизда говорит что якобы "invalid operation: rand.Intn(3) * time.Second (mismatched types int and time.Duration)" - как только меняю rand на обычный int все компилится и запускается)
924 2364557
>>364556
1 - ОК
2 - почему-то не ОК
925 2364561
>>364556
Потому что литерал не int, его тип подбирается под место в котором литерал написан.

https://go.dev/ref/spec#Constants
An untyped constant has a default type which is the type to which the constant is implicitly converted in contexts where a typed value is required, for instance, in a short variable declaration such as i := 0 where there is no explicit type. The default type of an untyped constant is bool, rune, int, float64, complex128 or string respectively, depending on whether it is a boolean, rune, integer, floating-point, complex, or string constant.
926 2364573
>>364282
Метки в go не самостоятельны, они обязательно привязаны к какому-то выражению.
Но вообще go это не более чем сиговнецо с горутинами, каналами и сборкой мусора.
>>363898
Компу-то похуй, а серверу в контейнере с ресурсами старого айфона не похуй.
927 2364615
Приветствую смотрящих. У вкатунов, которые решили начать с goвна, нет ощущения, что вас кто-то жидко наебал? Потому что у меня есть, блять. Второй год хуярю проекты для портфолио, а на меня до сих пор никто даже не смотрит. Я просто в шоке, блять. На hh порядка сотни откликов, которые привели к двум собесам, на которых было "будешь работать 40 часов за 5к в месяц?" (рублей, не грина). Это ебучая дыра, нахуй я полез в этого синего хорька, бляяяяяяяяяяяяяяяяяяять. Мог бы, как нормальные челы, хуярить ручки на джанге или спринге и горя не знать, но нет же, блять МАНЯСЕРВИСЫ, ГРПЦ ЭХО СЕРВЕР НА ЧИСТОЙ АРХИТЕКРУРЕ, руками сру в голый tcp, чтобы чел на фронте мог написать ws.onmessage(). Хуета, блять
928 2364618
>>364615
Ну так в го редко берут вкатунов. Я хуй знает кто и зачем тебе его посоветовал. Из после 2 лет питона в го заходил вообще.
929 2364685
Как считать mysql запрос в структуру, не перечисляя по отдельности всех её членов? Выходит слишком громоздко.
930 2364696
>>364685
Странно, что в языке предусмотрены теги для json, а для sql нет.
931 2364698
А че, в гохе не принято в целом в разных горутинах работать с одним общим объектом (массивом, мапой или структурой)? Например бегаю я по матрице nxn в разных горутинах и если элемент равен определенному числу то записывают индекс ячейки в общий массив result

result := [][]int{}

Метод append же блять не мутирует а возвращает новый массив. Даже если указали ебнуть, все равно на выходе у меня получается пустой массив result. Походу в гохе на таких задачах только через каналы работают, да?
932 2364702
>>364698
Задача вообще даунская - дана матрица nхn:
matrix [n][n]string
Вывести все индексы в формате {строка, столбец} элементы которых равны заданному target

Можно пройти все через вложенные циклы for, но очевидно что в гохе такое лучше делает через горутины - ебануть n горутин которые бегают по разным строкам и получить конечный результат
изображение.png29 Кб, 415x400
933 2364946
>>364698
Принято, с этим проблем нет. Не понял, как именно ты пытаешься наполнять result. Скинь код что ли.
Если очень надо передать слайс в функцию и там в него что-то записать, то можно как на пике сделать, но вообще так не делают обычно.
934 2365115
>>364698

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


так ты не присваиваеш результат исходному слайсу, а наверняка новую переменную создаешь. у тебя на выходе должен быть слайс с неопределенным числом элементов, а не пустой. без канала тебе как вариант нужно сразу слайс с N=n_горутин элементов сделать и каждой горутине сообщить индекс в который она пишет.
935 2365122
>>364615
here, probably, on every post about the vkat, they write that the juns are not fucking needed.
you need to roll into the goshka like this:
- you learn pluses/peton/chart/javu
- looking for vakuhi in this language
- you notice a vacuum in the goshka
- you go to social services for goshka, specifying that you learned another language
я короче пост выделил и уменя гугл транслейт выскачил ну короче сорян
936 2365124
>>364685
sqlx/gorm/куча остального чем я не пользовался
937 2365183
938 2365768

>устроился на новую работу


>куча задач по "продукт должен Х", "если Y, заказ должен Х"


как вы с этим живете? я привык жсоны перекидывать между сервисами/бд, а не этой продуктовой хуйней заниматься, которая для ебанов с 1С/сишартом/жавой.
939 2365946
>>364615
ну хзхз, вот прямо ваннаби после курсов условные никого не интересуют особо.

а вот если производил деятельность разработочки по шаблонам проектирования на %framework_name%, имеешь в целом хорошие хардскиллы, возможно разрабатывал что-то гибридное Django x Golang - тогда вы действительно что-то представляющий из себя кадр, и будут готовы рассмотреть кандидата даже если про гошку увидел первый раз в вакансии, но в целом обучаем.

Но вкатуны почти вообще не особо, как в начале написал. Полгодика назад может было и да, но сейчас компании максимально сокращают расходы и не распыляются на инвестиции в стажеров как раньше. Интересуют только хардскилловые ребята с которыми не нужно будет возиться и тратить время на раскачку.
940 2366268
>>365768
Скастить бизнесовые требования в ТЗ - задача аналитиков и продакта. Провалидировать успешность такого каста - задача продакта, лида и тебя. Если скастилось хуёво, то рекомендую отнести задачу обратно лиду. Если тебя сагитируют побыть аналитиком, смело увеличивай сроки выполнения задачи в 1.5 раза.
Если задача связано с регуляторкой - в 2 раза минимум, также перед реализацией надо будет провалидировать самописное ТЗ об кого-нибудь, ибо времени переделывать такие задачи как правило нет.
941 2366456
>>359302

> Обрабатывайте наконец эксепшны как все Белые Люди


Белые люди давно перешли на Result и Optional.
Если надо защититься от долбоёбов - есть recover.

> defer был высран именно по причине отсутствия try-finally


defer - это минимальная реализация scope(exit). По смыслу он больше похож на cleanup-аттрибут в gcc.

> Почему бы не запилить наконец нормальную итерацию по строкам?


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

> interface{} это не "мощная фича" это ебаный костыль, которому не место в статически типизируемом языке


Стирание типов вполне себе фича статически типизированных языков.

> npe это самая частая причина вылетов в рантайме


Львиная доля которых - пропуск проверки err. Как и в других компилируемых языках, не хочешь npe - не используй nullable-тип или пиши тесты/фазз-тесты.
942 2367046
Помогите с запросами к бд. Есть массив string, надо из таблицы получить строки, в которых колонка соответствует какому либо элементу из списка. это я сделал И при этом надо выдавать строки порционно. То есть например первые 5 строк, потом с 6 по 10 и тд. Пагинация короче говоря.
Можно конечно сначала получить все строки, и потом уже взять нужный диапазон, но это как-то неэффективно.
943 2367052
>>364702
Пацаны из оф блога пояснили за паттерны concurrency
https://go.dev/blog/pipelines
изображение.png6 Кб, 670x42
945 2367292
>>367179
Это я знаю, но как это использовать вместе с WHERE x IN () ? Пикрил
946 2367298
>>367292
Хотя разобрался. Ничто ведь не мешает добавить в args значения для Limit
947 2367362
Анончики, подскажите, можно ли у http.Server вносить изменения в роутер на горячую?
То есть после ListenAndServe() менять хэндлеры без остановки и перезапуска?
Если да, то как реализовать?
948 2367436
>>367362
всё очень прозаично

s := http.Server{
Handler: http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
if time.Now().Unix()%2 == 0 {
mux1.ServeHTTP(rw, r)
} else {
mux2.ServeHTTP(rw, r)
}
}),
}
949 2367443
>>367298

>Ничто ведь не мешает добавить в args значения для Limit


это какая бд разрешает лимит вместе с аргументами передавать?
950 2367446
951 2367596
>>367436
блин, ну чет хз. Тут mux"ы предопределены. Мне же нужно при наступлении определенного события сформировать новый хендлер их контекста события и подменить им старый.
952 2367602
>>367436
Может как-то так попробовать

h := someHandler
server{Handler : h}
go func() { server.ListenAndServe() }
h = anotherHandler

Попробую при случае, или хуйню написал?
953 2367633
>>367596
поинтер подменяй или в мапу засунь или слайс, есть же динамические структуры данных. то что я написал легко можно представить в виде

s := http.Server{Handler: http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
________realHandler := getHandler()
________realHandler(rw, w)
____})
}

>>367602
когда ты записал h в хендлер её значение скопировалось в структ сервера и что ты там потом пишешь в h ему вообще похуй. во-вторых это датарейс.
954 2367634
>>367633

>h в сервер


я имею в виду
955 2367635
>>367633

>это датарейс


если писать в сервер
956 2367727
Аноны объясните что я делаю не так
Пик 1 делаю POST запихиваю свой json получаю ответ.
Пик 2 мои туги сделать тоже самое на Go
Только от postman я получаю нормальный ответ 200
А в Go я иду нахуй
957 2367965
>>367727
хз выглядит норм. попробуй скопировать все хедеры которые постман ставит.
958 2367970
>>367633
Да, вот это нормальная тема. Спасибо!
959 2368494
Как получить текущую дату в строковом формате? Чтобы была строка "2022-06-01"
960 2368539
>>368494
time.Now(). Format("2006-01-02")
961 2368818
Как по IP определить страну?
962 2368820
>>368818
а почему вы интересуетесь? вы украинец?
963 2368824
964 2369323
>>367965
Да спасибо помогло
965 2369325
Аноны нужен ещё совет нужна библиотека которая конвертит xml в docs и xml в pdf
Весь интернет перерыл везде только создание по шагам типо addTitle addString addPic, а такого чтоб xml с тегами втолкнул и заработало нигде не нашёл. Если просто текст затолкать он все теги как текст и вывидет, что и логично
Может я искать не умею или тупой и чего-то не понимаю. Помогите
966 2369326
>>368820
Проиграл
967 2369347
>>369325
Берешь спеки docx и pdf в руки и ебошишь
968 2369352
>>369347
Интересно. Типо сам ручками? Окей попробую
969 2369495
В чем преимущество сервера на горутинах от сервера на простых тредах (как в пхп например)?
970 2369517
>>369495
Горутины дешёвые, их можно создавать тысячами, а тредов не должно быть больше, чем ядер + нужно уметь распределять задачи по пулу тредов.
971 2369522
>>369517

>а тредов не должно быть больше, чем ядер


Шо?)
Хочешь в Питоне создам 100 тредов вообще изи? Или в Пхп fpm заспавнит 100 тредов на 100 коннектов
972 2369529
>>369522
Да хоть тысячу создавай, я же не говорю, что технология запрещает так делать. Но смысла нет.
image.png38 Кб, 651x367
973 2369661
Нормально добавлять в динамический массив данные вот так или везде нужно хуярить через append и переприсваивать напрямую этот массив, т.к. в гохе порешали что "мутации это плохо"?
974 2369878
>>369495

>преимущество


рантайм Го сам их приостанавливает и запускает по необходимости. + удобная фича в виде каналов.
Почитай про шедулер Гошки, довольно интересно кмк.
975 2369934
>>369661
Ничего го не перезаписывает. Если есть запас capacity у слайса, добавляет. Если нет, выделяет память и пишет новые значения туда. Можно сразу брать капасити с запасом
976 2369973
>>369661
зачем и главное нахуя

>inb4 мне НУЖНО писать на языке Х как будто я пишу на языке Y

977 2370042
>>369934

>Можно


я бы сказал НУЖНО, иначе много перевыделения памяти
978 2370100
Дорогие анончики помогите плиз, учу Гошку и передо мной встала такая задачка.

Есть json, мне нужно его распарсить чтобы получить два элемента. Как можно это грамотно реализовать?

Достаточно ли просто структуру с двумя элементами создать? Или нужно поебаться?
979 2370133
>>370100
нужно поебаться и навести мышку на замечания линтера и прочитать что
а) в неэкспортируемые переменные ничего не заанмаршалится
б) теги для полей пишутся не так
980 2370144
>>370133
Твое замечание подправил, но получаю следующую ошибку:

json: cannot unmarshal array into Go value of type controller.Hueta
981 2370150
>>370144
json.NewDecoder(body).Decode(&data)
982 2370152
>>367727
Как ты xml в док конвертишь? Это ж залупа какая-то, лол
983 2370154
>>370152
А, увидел догонку ниже. Тоже на этой хуйне свалился
984 2370159
>>370150
Та же самая ошибка(

Есть ещё идеи?
985 2370163
>>370159
Ну чел, у тебя в json'е массив лежит, а ты хочешь вытащить какую-то пару значений. Тебе массив вытаскивать надо, примерно таким же образом делается, просто стракт еще один сделай, где поле типа []Hueta будет.
986 2370168
>>370163
Спасибо тебе большое!
Получилось
987 2370169
>>370163
Кста, не ебу, является ли твой массив в json'е является верхнеуровневым или болтается как поле в виде "hueta": [...], во втором случае надо будет делать var huetaSlice []Hueta и анмашларить в него
988 2370171
>>370169
Короче вот что сделал
image.png72 Кб, 1695x417
989 2370523
А почему у нас дедлок когда мы отправляем в канал который никто не читает? Думал просто кинули данные в канал и пошли дальше не блокируясь, ведь по идее это должна быть не забота отправителя данных, а забота получателя
990 2370532
>>369973

>мне НУЖНО писать на языке Х как будто я пишу на языке Y


Ну да, а хули нет? Я не обязан подстраиваться как чмоня под любого хипстера, флюродросящего "новыми" концепциями, пусть под меня подстраиваются
991 2370546
>>370532
Нахуя тебе Goвно тогда?
992 2370547
>>370546
Бабло
993 2370604
>>370547
Два чаю. Сейчас готовлюсь к собесу на сеньку, после успеха смогу каждую неделю ебать новую атласную шлюху и даже не задумываться о тратах
994 2370914
>>370523
Канал != очередь, у него другое назначение. Можно сделать его буферизированным и тогда сколько-то можно будет накидать не читая, но потом все равно залочится.
995 2371101
>>370532
ну тогда ответ: зависит от компании. если там все такие залетные с синдромом утенка из других языков или готовые жить с "Я не обязан подстраиваться как чмоня под любого хипстера, флюродросящего "новыми" концепциями, пусть под меня подстраиваются" , то норм. если нет, то на ревью киберунизят.
996 2371104
>>370523
для неблокирующей отправки без гарантии отправки есть синтаксис через select. если тебе бесконечный буфер нужен, то пиши свой канал, один хуй это обертка над массивом по сути.
997 2371323
Я кайфанул от goland а траил уже закончил русскому подписку продавать отказываются если я в профеле поставлю Юкрейн смогу оплатить чперез пейпалл например?
Какие еще варианты?
998 2371346
>>371323
Как вариант пару задачек на Stepik по программированию решить. Раньше за это давали студ. лицензию на 3 месяца. Как сейчас не знаю.

BTW чем лучше того же VSCode? У го же охуенный тулинг и language server, что еще может быть нужно?
999 2371348
>>370532
Знавал я человека который на любом языке писал нечитаемую императивную дрисню. Чел был охуенно полезным, но его код без него заморозили и переписали с нуля.

Так вот, если твоя ценность только в том чтобы код писать, то гошка не для тебя. Она как и раст, пиздит гребца когда он пишет код не как принято, только пиздит в рантайме и от того больнее.
1000 2371360
>>371348
Ну не знаю, меня рантайм пиздит, только когда увлекся возвращением nil вместо ошибки (и забыл проверить на него) и при кривой конкурентности. Базово все работает предсказуемо, потому что язык примитивный по дизайну
1001 2371362
>>370523
Этот анон прав >>370914
Каналы это как раз способ синхронизации между горутинами. Поэтому так себя ведут
1002 2371376
>>371346
VSCODE у меня в голове прочно связан с фронтендом и моими потугами в JS а меня от js блевать тянет и на изнанку выворачивает поэтому vs code мне опротивел
1003 2371399
>>371323

> Какие еще варианты?


Notepad++
1004 2371400
VIM
1005 2371416
>>371399
Годно
1006 2371755
Как из высокоуровнеего пайтона вкатиться в го?
Прочитал A Tour of Go и многое выклядит совсем нелогичным и даже сложным.
Реквестирую материалы для перекатывальщиков из питона, где объясняют что и зачем.
На питоне уже 4 года пишу, считаю свой уровень выше среднего. Кроме него только жаес знаю.
1007 2371758
>>371755
На степике курс текстовый по Го годный. А так просто динамикопараша в мозги насирает сильно конеч
1008 2371761
>>371758

>На степике


Где?
1009 2371768
>>371755
Что именно кажется сложным и нелогичным?
1010 2371780
>>371768
Первое что бросается в глаза после питона:
всё строго типизированно
листы/слайсы перемудрённые
концепт поинтеров
классов нет, надо делать методы к объектам struct

Сорри, с нелогичным погорячился. Я понимаю что эти "сложности" связаны с тем что программе надо скомпилироваться и с памятью работать поумнее интерпритатора.
Просто мне пока сложно представить как, например, поинтеры использовать. А написание классов совсем кривым кажется по сравнению с питоном.
1011 2371959
>>371780

>всё строго типизированно


И это прекрасно. Явно приводишь к нужному типу, если это нужно. После Питона непривычно, но со временем понимаешь всю прелесть

>листы/слайсы перемудрённые


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

>концепт поинтеров


Тут тоже все относительно просто. Нужно изменить конкретный объект - передаешь в функцию по ссылке (поинтер). Нужно просто передать значение - передаешь копию примитива (обычная переменная). Ну и слайсы с мапами передаются по ссылке by design.

>классов нет


А есть принципиальная разница? Какую суперфичу приобретает структура, если назвать ее классом? По факту отличается лишь специфическим наследованием через "встраивание".

степик это stepik
1012 2371980
>>371755
А смысл перекатываться, проблемы с работой тоже?

>>371780
пайтон это пайтон.

Просто не сравнивай, это разные инструменты, разные парадигмы, свои особенности.
Это как изучать жс афтер пайтон, там event, dom, spaghetti и вообще подход отличается.
1013 2372136
>>371959
Спасибо что разъяснил, попробую пересилить себя.

>А есть принципиальная разница? Какую суперфичу приобретает структура, если назвать ее классом? По факту отличается лишь специфическим наследованием через "встраивание".


Наследование у классов очень удобное, а ещё питоновские классы можно учить превращаться в dict/list и прочие структуры с помощью дескрипторов.

>>371980

>А смысл перекатываться, проблемы с работой тоже?


Я девопс, мне что-то кроме питона не сильно нужно. Хочу вкатиться для собственного развития, у меня тонна проектов написанных на питоне. Было бы очень круто их переписать на что нибудь компилируемое и быстрое. Да и девопсить надоесть может, перекачусь в девелопера.
1014 2372150
>>372136

>Наследование у классов


Хорошее наследование это когда его немного. Встраивания и интерфейсов вполне достаточно.

>превращаться в dict/list


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

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

Дебажить Питон это больно. На Го я частенько пишу код часа 2, затем запускаю его и все работает сходу
1015 2372175
>>372150
Для меня долго дебажатся логические ошибки, а не синтактические. Такое не отловишь на уровне компилятора, тут тестировать надо.
Думаю в го тоже самое будет. Хорошо что у меня куплен пак IDEх от жетбрейнсов, уже запилил себе goland.
image.png73 Кб, 236x295
1016 2372522
очередной спринт начинаеться...
1017 2372586
>>372522
Лето же. Пора в отпуск петов делать
1018 2372760
>>286748 (OP)
Недавно попустили на моем первом собесе на гоху. Задали вопрос:
- В чем преимущество сервера на горутинах перед сервером на обычных тредах? Например на php
Я ответил:
- Ну горутины более легковесные
- Это-то понятно. Но все же, в чем преимущество?

Блять, я даже и не знал что на такое ответить. Естественно правильный ответ они так и не назвали.
1019 2372859
Можно в гохе как-то создать горутину которая будет не daemon?
1020 2372915
>>372760
ну рассказал бы в чем преимущество ты че. легковесность это такое себе, ты же их не мешками на себе таскаешь. От тебя наверняка ждали рассказать про сисколы, контекст свищинг, размер стака у ос тредов и такое
1021 2372995
>>372915
Еще был такой вопрос: "мы запустили миллион горутин, в каждой из них мы слипаемся на 100 секунд, какие ресурсы и в каком объеме будут затрачены? усложнится ли сборка мусора? насколько?"
1022 2373325
>>372995
>>372760
А на какой грейд в данном случае такие вопросы задают?
И на какой должны, аноны?
1023 2373328
>>372859
чего блядь
1024 2373574
>>373325
Мидл. У меня опыта полгода на Ноде и 2 года на Питоне. Но меня пиздец ебали сначала по кишочкам GC и мой ответ про "конкурентную сборку мусора и 3 цвета объектов" их не устроил, хотели глубже. Еще были всякие интересные вопросы про то что представляет собой структура горутины или подробное описание операции битового сдвига на АЛУ (!)
Кароч, меня 1.5 часа гоняли по внутренностям гохи, не получил ни одного вопроса по базам данных или вебу в целом.
1025 2373716
Когда мы юзаем append то всегда создается новый слайс? append не мутирует а возвращает новый объект, значит ли это что несмотря на то что capacity слайса не превышено все равно будет создан новый слайс?
1026 2373823
>>373716
да, аппенд создает новый слайс. в слайсе два инта и один поинтер https://go.dev/src/runtime/slice.go, поэтому это не страшно.
1027 2373891
>>373574
Это где, в авито или озоне?
1028 2373972
https://pastebin.com/CSL77HME

Ищу пересечение двух массивов. Нормально ли делать как тут - в запущенной горутине мутировать мапу? Или это не по философии го?
image.png120 Кб, 1950x394
1029 2374147
Почему элементарные вещи типа парсинга джейсона делаются так сложно?
1030 2374201
>>374147
А тут есть что-то сложное? Или Питон настолько психику травмирует?
Ни для кого не секрет, что на Го чуть больше кода писать приходится. Но вместе с этим есть и куча преимуществ
1031 2374212
>>373972
В данном коде мапу никто не трогает извне, так что норм. Только смысла у анонимной функции возвращать мапу которую она заполняет нет.
1032 2374238
>>373972
это максимально классический паттерн с вейтгруппой.
1033 2374242
>>373891
Не буду пожалуй пока говорить, чтоб не деанониться на всякий.
Это одна из крупных рашн фирм, не ожидал что меня настолько попустям там, такое ощущение что они сеньку искали.
image.png47 Кб, 758x201
1034 2374243
>>374147
сэкономил тебе две строчки
1035 2374947
>>373574
Какая-то хуйня, я проходил собесы в кучу контор от Авито (6 ебучих собесов, рекорд!) и Яндекса до Тинькоффа и Гетта и нигде настолько глубоко не докапывались. Ну или ты привираешь.

Про сборку мусора не нужно знать про цвета объектов, надо знать в общих чертах как это работает, и как это отображается на коде, классический вопрос с runtime.Gosched и всё такое.

BTW посоны а где чего интересного можно почитать про types2 и прочие изменения внутри го из 1.18? Я что-то ленюсь прям по коду го разбираться, хочется почитать обзоры про мономорфизм и вот это всё. Generics the hard way я читал и изучения глубины вопроса не оценил.
1036 2375387
>>373823
В смысле? Мы заюзали append и он возвращает новый объект. То есть старый остался, мы его скопировали и засунули туда еще одно значение. Если arr в них обоих указывают на один и тот же массив, то блэт исходный должен был измениться, но это нихуя не так.
Не понимаю бля, в чем смысл возни с capacity если мы в любом случае целиком копируем слайс в случае append/
1037 2375418
>>375387

> Не понимаю бля, в чем смысл возни с capacity если мы в любом случае целиком копируем слайс в случае append/


Потому что он копируется не всегда, а только, если вместимость старого массива оказывается превышена.
1) У тебя был массив размером 4 и вместимостью 4: [a, b, c, d]
2) Ты добавил туда новый элемент "e"
3) Тебе под этот слайс был выделен новый массив с удвоенной вместимостью 8, а размер массива теперь 5: [a,b,c,d,e].

Это чтобы если ты скажем в цикле аппендишь массив, не перевыделять память каждый раз, она выделяется с запасом.
1038 2375420
>>375418
Реальный юзкейз:
func IntsToStrings(arg []int) []string {
ss := make([]string, 0, len(arg)) // размер 0, вместимость равна вместимости arg, то есть мы однократно выделили память под массив строк без перевыделения промежуточных массивов
for _, x := range arg {
ss = append(ss, fmt.Sprintf("%d", x)) // и просто добавляем значения аппендом
}
return ss
}

https://goplay.space/#gUSZ5oAphPc
1039 2375489
>>375387

>исходный должен был измениться, но это нихуя не так.


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

проверяется вообще максимально просто без еботы с капасити.
a := []int{1,2,3}
_ = append(a[:0], 4)
fmt.Println(a)
1040 2375568
>>375489
А если передать просто a то ничего не смутируется
image.png136 Кб, 658x511
1041 2375573
>>375568
a := make([]int, 0, 4)
a = append(a, 1, 2, 3)

_ = append(a, 4)
fmt.Println(a[:])
fmt.Println(a[:cap(a)])
1042 2375673
>>375573
Так блять
Вот этого не понял (хули он не показывает последний элемент в первом случае? я ж блять заставляю его целиком слайс напечатать)
1044 2375757
Я к вам с заебавшим вопросом по поводу джуна. Смотрю сейчас рынок и немного плачу и унываю, понимая что вакансий нет. Может кто объяснить что мне делать кроме как сосать хуй. У меня опыта в программировании лет 8, но я не разу не работал программистом, не спрашивайте как так получилось. Есть пара проектов на го на гитхабе. Имеет ли какой-то смысл ждать go джуна вакансию или вкатываться в питон/ноду? И что в данном случае будет востребованней питон или нода?
1045 2375782
>>375757

> меня опыта в программировании лет 8, но я не разу не работал программистом


Напизди что работал
Че ты как маленький
1046 2375791
>>375782
Ты мне скажи пож-ста. Можно ли приравнивать опыт работы скажем в год, к паре проектов на го, одним из которым мы с корешами пользуемся почти каждый день? Я могу примерно подтянуть себя по требованиям к мидлу. Есть еще леткод и кодварс, и вообще я задачки решать люблю. Но боюсь, что если напизжу то просто не потяну реальные задачи.
1047 2375800
>>375791
Очевидно что пиздеть лучше правдоподобно, не стоит сообщать о якобы 8 годах опыта работы, если по факту нет нихуя, лучше сказать что 2 года прогал на питоне/пхп/жс на беке и последние полгода на ГО, чистых гошников практически нет
1048 2375803
>>375800
Только в каждом выдуманном проекте ты должен заранее придумать чем лично ТЫ занимался и что это был за проект. Это всегда первые вопросы на собесе, если не можешь внятно описать что ты делал на прошлых местах,, это будет выглядеть очень подозрительно
1049 2375804
>>375800
>>375803
Ладно, буду пробовать. Спасибо тебе.
image.png35 Кб, 980x252
1050 2375996
Можно ли как то короче писать данную конструкцию?
В питоне я просто делал

api_username = os.getenv("API_USERNAME") or "username"
image.png52 Кб, 1060x537
1051 2376002
>>375996
не тот язык, мистер любитель сахарка
1052 2376004
>>376002
Спасибо, я привык к сладкому, оно красивое.
1053 2376402
Как принято работать с defer и recover?
В каждой высокоуровневой функции своего пакета ставить recover чтобы не ловить ошибок в рантайме и возвращать ошибку из функции напрямую это норм идея?
1054 2376533
Тут слыхал что Редис по своей природе однопоточный и скажем 10к rps-а с Гохи он не выдержит. Как контрить?
1055 2376551
>>376533
два редиса
1056 2377006
Аноны, чзх, почему когда я паршу файлы с двача, он почти все картинки грузит нормально, а видео - какашно. Код на пик 1-2

Плюсом к этом периодически при загрузке картинки в хайрезе/видео он выдает в ioutil.ReadAll и подобных unexpected EOF, лог такой на пик 3
1057 2377012
>>377006
Прокинь j в горутину. А еще wg.Wait.
image.png84 Кб, 1145x724
1058 2377016
>>377012
А куда wg wait поставить? У меня стоит в самом конце проги, чтобы дождаться всех файлов.
И что значит "прокинуть j в горутину"? Типа как аргумент передать анонимной функции?
1059 2377017
>>377006
А еще лови ошибку от ioutil.ReadAll. А еще Body.Close до чтения из ридера. А еще его в defer. А еще чекни статус у response на 200.
1060 2377021
>>377016

> А куда wg wait поставить? У меня стоит в самом конце проги, чтобы дождаться всех файлов.


Хорошо.

> И что значит "прокинуть j в горутину"? Типа как аргумент передать анонимной функции?


Да. У тебя же не блочится цикл. Цикл бежит быстрее, чем выполняется горутянка. j инкрементируется и используется в горутине не с тем значением, с которым ты ожидаешь (гонка же. В твоем коде возьмется последний индекс, наверное).

> htmlFile += ...


Посмотри на html/template
1061 2377023
>>377016
А еще ты скорее всего хотел continue вместо break
1062 2377029
>>377017

>А еще лови ошибку от ioutil.ReadAll


Ловлю (пик 1)

>А еще чекни статус у response на 200.


Она обрабатывается в другом месте

>>377021
Это я понимаю, но не понимаю как реализовать, range же сам по себе инкрементируешь счетчик, а если я делаю цикл через j < len(Files), то он какого-то хуя больше чем нужно увеличивает счетчик и в итоге получается out of range.
Я пробовал через atomic.AddInt и sync.Mutex, всё равно, но мб я еблан и чето не то делал

>Посмотри на html/template


>А еще ты скорее всего хотел continue вместо break


Да, лол

Спасибо, анон
1063 2377035
>>377029

> >А еще лови ошибку от ioutil.ReadAll


> Ловлю (пик 1)


На пике 3 у тебя ошибка летит из http.Get.
В дальнейшем приучись ловить ошибки где только можно. Ненужные отбрасывай. Заиспользуй потом github.com/pkg/errors. Позволяет стектрейсы собирать.

> Это я понимаю, но не понимаю как реализовать, range же сам по себе инкрементируешь счетчик, а если я делаю цикл через j < len(Files), то он какого-то хуя больше чем нужно увеличивает счетчик и в итоге получается out of range.


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

> Я пробовал через atomic.AddInt и sync.Mutex, всё равно, но мб я еблан и чето не то делал


https://goplay.space/#qCG2BrQ0F0F
https://goplay.space/#ZMfaA0X-Erq
1064 2377038
>>377035

>У тебя мб files чистится до исполнения горутины.



Я об этом чето даже не думал, посмотрю, анон
1065 2377079
>>377021

>Да. У тебя же не блочится цикл. Цикл бежит быстрее, чем выполняется горутянка. j инкрементируется и используется в горутине не с тем значением, с которым ты ожидаешь (гонка же. В твоем коде возьмется последний индекс, наверное).


там j := j
1066 2377088
>>376402
дефер для отлова паник ставят редко, чтобы не загаживать код. все равно все хуй отловишь, поэтому обычно там в мейне и в какой-нибудь мидлваре хттп роутера. в других местах обычно добавляют после того как уже упали, а баг не нашли и вот решили закостылить.
Dirty-Tony-Ryan-Allen-Asian-Guy-In-Suit-With-A-Big-Asian-Co[...].jpg184 Кб, 1626x1080
1067 2377092
>>376004
Попка не слипнется?
1068 2377111
>>377079
Сейчас бы делать скрытую логику, основанную на области видимости блока.
1069 2377114
>>377111
это не скрытая логика, а распространенный паттерн в замену более вербозного создания горутины с аргументами. стейтмент находится в том же скопе, что горутина, а не хз где. я намного реже вижу горутины-лямды с аргументами и каждый раз обращаю внимание на них.
1070 2377271
Немного не по теме go, но нормально ли, что загрузка 450 видео из вебм треда длится 5-10 минут при скорости загрузки 8-10 мб/с?
1071 2377318
>>377271
Да, не по теме
Тут вообще похуй какой ЯП, у тебя 99% времени займет сама загрузка
1072 2377362
доброго времени суток. Хочу перейти на го из пхп. Какой небольшой проект можно написать на го для понимания?
1073 2377374
>>377362
Какой-нибудь тырнет-магазин
1074 2377486
>>377271
невозможно ответить не зная суммарный размер видосов. следующий вопрос.
1075 2377529
>>377486
Вспоминаем 5 класс.
5-10 минут - это 7.5 минут, т.е 450 секунд => 1 видео в секунду.
Скорость загрузки 8-10 мб/с - это 9 мб/с => 1 видео весит 9 мб.
Суммарный размер = 9 * 450 = 4050 мб
1076 2377530
>>377529
Идиот блять. С заказчиком, когда он тебе даст невнятное ТЗ тоже маняподсчеты вести будешь?
1077 2377532
>>377530
Там вся работа и проходил, сплошная угадайка. Заказчик пишет хуйню, ты ему в ответ манярасчёты, он тебе в ответ пишет, в чём ты не прав, и так до финального "согласовано, делайте".
1078 2377549
>>377529

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


чел... тебя перепроверить попросили, а не вычислить то, что тривиально выводится из перечисленных данных. для проверки все равно нужно сравнить полученные тобой 4050МБ с исходным суммарным размером. это в каком-то классе учат или с образованием всё так плохо?
1079 2377558
>>377549
Каков вопрос - таков и ответ. Постановка задачи такова, что из следствия надо вывести только одну причину, и она будет единственной верной.
1080 2379988
Есть ли смысл в []*BigStruct{}? Или лучше делать массив структур без указателя?
image.png453 Кб, 600x500
1081 2380004
1082 2380067
здарова гои, чё у вас по ооп?
1083 2380097
>>380067
Ничего, как и по ФП.
Некоторые шизы настаивают, что ООП есть, но на самом деле это всё равно что сишка со структурами и функциями.
1084 2380152
Accept interface, return struct
Как это использовать в методах хендлера/юзкейса/репозитория? Создавать для каждой структуры геттеры полей? А если структура с дохуищей полей?
1085 2380164
>>380152
У тебя что, так много структур, где дохуища полей? Так генерируй.
1086 2380212
>>380097
понял понял, вычеркиваю
1087 2380213
Горутина это аналог корутины? Аналог гринтлета? Или аналог треда? Нихера не понял
1088 2380262
>>286748 (OP)
Это правда что Жава пукает тредом на каждый новый реквест? А Гоха пукает горутиной? В чем плюс гохи тогда?
1089 2380264
>>380262

> Это правда что Жава пукает тредом на каждый новый реквест?


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

> А Гоха пукает горутиной?


Да.

> В чем плюс гохи тогда?


Можно срать не снимая свитер.
1090 2380373
>>380264

>берёт свободный тред из заранее созданного пула тредов


Но нахера? Создание треда - довольно дешевая операция. Почему бы не создавать их динамически?
1091 2380378
>>380373
Нет, создавать нативные треды очень дорого, в отличие от горутин, к тому же нативные треды жрут много памяти.
1092 2380383
>>380378
32 Кб
В некоторых машинах 1 Мб

Много шо пиздец
1093 2380396
>>380383
"Некоторые машины" - это большинство, причём минимум 1МБ.
Ла, по сравнению с горутинами, которые можно спавнить тысячами, это охуеть как много.
1094 2380511
>>380212
Лучше бы пошел и сам изучил вопрос, чем слушать тут всяких.

>>380097
Назови пожалуйста хоть один признак, по которому Го не ОО?
1095 2380587
>>380373

>Создание треда - довольно дешевая операция


для кабана?
1096 2380591
>>380152
ты там собрался все дто в интерфейсы запихнуть? интерфейсы про поведение, а не про данные, каковыми являются дто.
1097 2380610
Здравствуйте господа Гоферы!

Пришел к вам за советом, вкратце опишу ситуацию.
Работаю уже как год и несколько месяцев на позиции инженером по нагрузочному тестированию, по многим причинам уже успел заебаться в следствии чего в начале апреля решил вкатиться в разработку выбрав язык go.

Прошу направить в нужную сторону и/или дать советов, насколько это реально, какие подводные есть. Правильно ли что делаю акцент на проектах в гитхабе или многим похую.

Сообщение может показаться сумбурным, но могу побольше рассказать о своем опыте и знаниях.
1098 2380621
>>380511

>по которому Го не ООП


Нет наследования (встраивание и композиция - не наследование)
Полноценно не соблюдается SOLID
1099 2380622
>>380610
Пробуй. Но не возникай потом, если тебя не будут даже на собесы звать т.к. "опыта мало". В го не вкатываются с нуля.
1100 2380625
>>380610

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


пили сториз

>Прошу направить в нужную сторону и/или дать советов, насколько это реально, какие подводные есть. Правильно ли что делаю акцент на проектах в гитхабе или многим похую.


хз. у тебя шансов больше чем у хуя который вкатывается с нуля. на гитхаб будет на 100% похуй, если ты будешь валиться на самом собесе. а для нормальной зепки скорее нужен опыт+удачный собес+предложение от соперника, а не гитхаб с нерабочими интернет-магазинами.
1101 2380633
>>380625

>пили сториз


Моя позиция особо востребована в банках из чего вытекает следующее
Самая большая проблема это крайне сильная бюрократия с цепями и миской риса. Вот пример, чтобы отладить скрипты мне приходиться подключаться к виртуальному пк через рдп а уже с него к другому пк. Обязанности распределены по ебанутому. Я как-то девопса просил скинуть конфиги постгреса и я ждал сука 3 ДНЯ БЛЯТЬ, хотя это делается в ОДНУ команду. Когда подключаешься через впн к внутренней сети банка тебе обрубают выход в интернет из-за чего приходиться писать бат костыли чтобы вернуть выход -_-
И конечно же перекидывание ответственности с одной команды на другую, я заебался за сегодня искать команду которая могла бы написать ебучие экспортеры на опеншифт и постгрес
1102 2380835
>>380264

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


Так жаба говно получается? Значит её бессмысленно вертикально масштабировать. Надо горизонтально?
1103 2380842
>>380835
Да. Только если стек не реактивный
1104 2380935
Можете подсказать, какие проекты можно сделать с параллельным программированием/жоскими алгоритмами, хочу солидный гитхаб.
1105 2380936
>>380935
Ты же пацан еще, тебе рановато в го, Мужику не нужен "солидный" гитхаб, Мужик сам по себе имеет ценность
1106 2381428
>>380621
ООП это не про наследование, совершенно необязательная его часть, которую нормальные люди как раз делают через композицию. Наследование это антипаттерн.

Солид это вообще маняфантазии из разряда "за все хорошее против всего плохого".
1107 2381433
>>380621
Или ладно пох, в каком месте не соблюдается солид? Кем? А почему должен?
1108 2381445
>>381428

> совершенно необязательная его часть


Для всё не обязательная часть, определим ООП как "возможность создавать структуры и передавать их в процедуры", и ООП будет хоть в ассемблере. Нет, нихуя так не работает, ООП либо есть, и оно как в крестах и жабах, либо его нет, и точка.
1109 2381454
>>381445
ООП ради ООП? И именно такого как в Джаве/Плюсах? Или лучше все таки взять лучшие практики, а говно типа множественного наследования выкинуть нахер?

Если нужно как в Джаве - пиши на Джаве. Но это не значит, что раз не как в Джаве, то уже не ООП
1110 2381458
>>381445
А если серьезно, база ООП - это полиморфизм. И его вполне достаточно для соблюдения твоего любимого СОЛИДа.
Инкапсуляция? Питон клал на инкапсуляцию и что теперь? Не ОО?

Какую уникальную возможность дает наследование так и не понятно. И чем хуже композиция? Вопрос не раскрыт
1111 2381472
>>381454
>>381458
Можно брать и лучшие практики, но не надо называть это ООП. Каким бы говном ООП ни было.
1112 2381482
>>381472
Да почему не ООП то? Третий раз интересуюсь.
В чистой архитектуре нормально раскладывается, что является ядром ООП, а что второстепенно. Вполне конструктивно
1113 2381580
вы далбаебы. если есть динамик диспач методов значит ооп. я сказал.
1114 2381718
>>380935
Напиши свой шедулер для кубера.
1115 2381738
>>381458

>база ООП - это полиморфизм


База ООП - это наличие объектов.
1116 2381826
>>381738
Базо объектов - это наличие классов.
1117 2381855
>>381826
Структура является объектом, но не является классом.
1118 2381859
>>381855
Некорректно объянил, но в общем понятие ООП не имеет значения, слишком абстрактное понятие, языки могут не являться ООП, но на них можно писать в ООП стиле. Хуету придумали, а долбоебы зафорсили.
1119 2381866
>>381859

> понятие ООП


Полиморфизм, инкапсуляция, наследование, классы, экземпляры классов, SOLID.
1120 2381868
>>381866
Это называется сахар, а не ОО.
1121 2381870
>>381868
В ОО важны как семантика, так и сахар.
1122 2381877
>>381870

>важны


Кому?
1123 2382057
привет, онаннисты.
Как думаете, Го хороший язык для вката?
Говорят, он довольно просто и что важно для меня - быстр (какие-то тесты показали что скорость уровня C++)
Но я понять не могу, что на нем можно сделать? Все-таки хотелось бы вкатываться с портфолио каким-нибудь
1124 2382068
>>382057
Хороший язык для вката это c#. Go узкоспециализированный, компактный, учится за неделю, но он для тех, кто знает, что ему нужно.
1125 2382079
>>382057
В го нет джунов.
1126 2382086
>>382068

>учится за неделю


Я так уже "выучил" его за неделю, что был попущен на первом же собесе. Это несмотря на то что у меня опыта почти 3 года на беке
1127 2382095
>>382068
Ты траллируешь? Го сильно проще для вката
1128 2382100
>>382095
Сильно проще для изучения и сильно сложнее для вката.
1129 2382161
>>382057

>какие-то тесты показали что скорость уровня C++


Какие? Какие-то.

>что на нем можно сделать?


Микропенис, а потом еще один, а потом еще один, ..., а потом еще один, а потом тулзу для управления этими микропенисами.
1130 2382258
>>382161
Не С++, а С
Какие? Щас не могу найти ссылку на гит. Но там матем. вычисление лямбда-хуямбда что-то в этом роде.
1131 2382274
>>382100
Почему?
Ты просто не хочешь чтобы я зарабатывал 300к в наносекунду!
1132 2382326
Мне тут в cpp треде кое кто рассказал, что в расте у вас охуенная система сборки, что все очень просто подключается, чуть ли не одной командой компилируется под все ОС. Это правда? Если да, то опишите кратко, пожалуйста, за счет чего это было достигнуто и почему в тех же плюсах этого нет
пока я твердо уверен, что у вас это не так работает, как мне описали
1133 2382332
>>382326
Ой, в Го
1134 2382447
>>382258

>матем. вычисление


Они задрочены уже настолько, что все компилируемые языки примерно на одном уровне.
1135 2382495
>>382326

>Это правда?


Нет.
1136 2382773
Разве ГО не идеаленг для интернета вещей?
Для программирования дронов?
1137 2382820
>>382773
Нет.
1138 2383139
>>382326
Ну если сравнивать с плюсами то да, система сборки это просто майндконтролл какой-то. Компилировать просто, зависимостями управлять просто, есть флаги компиляции под разные архитектуры. В плюсах этого нет, скорее всего потому что ему уже 40 лет, и деды-ебланы очень неохотно внедряют современные всеми привычные вещи в язык.
1139 2383174
>>382773
Для дронов вряд ли. Там все таки реалтайм нужен.
Для IoT - бля, мои мысли изложил. Только пидрилы из Tiny Go который год не могут запилить поддержку Wifi для ESP32. Если дождемся - заживем.
1140 2383192
>>382326
чтоб получить бинарь:

>go build



запускаешь

надо чтоб сорцы лежали в определенной иерархии, тогда все компилится, по началу непривычно может быть, но быстро втягиваешься
1141 2383194
еще не припомню чтоб чтото компилилось больше 5 секунд, на крестах говорят можно пойти поспать во время компиляции
1142 2383197
>>383174
продолжение
И еще кстати не понимаю, почему МашОб"ом то так все плохо. Избавляемся от Питоновской лапши и скорости, сохраняя простату. Не ловим UB с плюсами. Не жизнь, а сказка.

Что имеем: кучу каких-то наколеночных решений для 1.5 задач и Горгонию для пацанов, закончивших MIT. Где мой Fit/Predict блять?

Вообще с библиотеками беда. 90% - 5-10К звезд, при этом разрабатывались три года назад какими-то ноунеймами.

Обидно, что такой замечательный язык так обделяют. Я бы вообще все на Го переписал.
1143 2383203
>>383197

>Избавляемся от Питоновской лапши


Орнул как представил, что заместо простого и понятного вызова вроде np.cross прогер хуярит простыню самописной хуеты
6a0105364a8fba970c017ee74970b9970d-800wi.jpg207 Кб, 500x654
1144 2383205
>>383197

>сохраняя простату

1145 2383206
>>383205
Ну вот примерно так себя чувствуешь, когда на каждый метод в Пандасе ищешь из 30 возможных аргументов нужный.

>>383203
Как раз для этого и нужна хорошая библиотека, которую под Го пока не завезли
image.png154 Кб, 344x252
1146 2383207
>>383206

>пока


И не завезут. Потому что пикрил
1147 2383209
>>383207
Нет, ну сяду я, напишу хуету какую-то (не напишу, я не умею). И будет не 10 васянских мл библиотек, а 11. Тут нужен пуш фаанга
1148 2384866
заебали со своей чистой архитектурой пидоры. нахуй вы делаете 10 практически одинаковых объектов с дублирующимся кодом в десятке ебануто названных микропакетах, когда можно просто 10 методов у объекта сделать? пидарасы ебаные просто.
1149 2385092
>>384866
Вот станешь 300к нсек, будешь бухтеть и раздавать пиздюли. А пока надо грести и не задавать вопросов.
1150 2385393
https://github.com/golang-standards/project-layout
Вот тут пишут что в /cmd/app пихать мейн апп

https://github.com/spf13/cobra/blob/master/user_guide.md
Вот тут пишут что мейн апп кидать в корень, а в /cmd кидать командочки.

Кому верить? Как делать?
Хочу чтобы как у людей было
1151 2385407
>>385393
Забить хуй. И делать как считаешь целесообразным. Посмотри топовые проекты, там везде по разному.
То что какой-то хуй с горы написал что это golang standarts ничего не значи. А он реально хуй с горы, которому лишь бы директорий наплодить
1152 2385419
>>385393
Вот например, в корне три директории. build, scripts, tools - нахуя три директории, которые решают одну и ту же задачу. При этом Makefile у этого уникума лежит в корневом каталоге.
Директория vendor добро пожаловать в 2007.
web, website.
1153 2385451
Я знаю, что всех тут уже заебал этот вопрос, но всё же: а в чем суть поинтера на интерфейс, и почему в функцию, принимающую поинтер нельзя пихнуть экземпляр стракта, который имплементит интерфейс?
Ну реально, если переменная типа интерфейс это пара из поинтера на данные и поинтера на первый элемент списка (или массива - я не ебу) методов, схуяли мы в рантайме не можем осознать, что это таки не сам интерфейс и перед проверкой типа сначала получить реальное значение?
Мб это как-то связано с оптимизацией пустого интерфейса?
1154 2385562
>>385407

>И делать как считаешь целесообразным


Опыт не позволяет понять целесообразность
Но окей, сделаю как получится, спасибо
1155 2385667
>>385451
а кто сказал что есть суть? кидай код. я вижу только возможность присвоить интерфейсу другое значение, полностью аналогичную интам и другой поинтер на хуйню хуйне. в живом коде от людей с экспириенсом не вижу подобной хуйни.
>>385393
вообще похуй. у нас все мейны в cmd идут и я тоже так делал как вкатился. мейн в руте на второй работке видел, в принципе тоже норм. всякие тулзы там кроме главного бинарника в cmd кидал и вроде всем норм было.
а вот всё остальное что можно придумать я бы сказал не норм.
плюс ты ссылку ебаной кобры привел. это бля в принципе довольно специфичная хуйня для консольных утилит, которые построены именно на кобре. у сервисов в продакшене обычно нихуя "команд" нет и кобра нахуй не нужна. я бы даже сказал, что нормальным людям достаточно flag, потому что вы просто ебанутые если накидываете дохуя логики в флаги, заведите конфиг бля или сделайте по-нормальном.
1156 2386186
>>286748 (OP)
Обязательно ли ставить лок на мапу (или юзать sync.Map) если мы знаем что запись новых значений в нее будет идти лишь 1 раз по каждому ключу?
(спросили вчера на собесе, правильный ответ так и не сообщили)
1157 2386193
>>383197
Ты же понимаешь, что приличная доля питоновских машоб-вызовов требовательных к cpu это на самом деле cpp с питоновской обвязкой? или не понимаешь?
1158 2386456
>>386193
Понимаю, но тогда зачем очень часто продакшен модели переписывают под плюсы. Значит влияет
1159 2386457
>>386186
Хз, попробуй взять обычную и параллельно из нее почитать. Думаю что работать будет, но -race будет ругаться.
Ну и мантра про то, что надо думать на будущее и в последствии кто-то захочет писать в нее еще.
Вообще хз, может кто поопытней ответит.
1160 2386519
>>386457
Если race ругается, значит там есть проблема.
По поводу изначального вопроса, короткий ответ: нет, так как запись в мапу не атомарна и там под капотом может происходить много вещей от просто записи в бакет до перевыделения памяти под всю мапу.

>>383197
Я неиронично думаю, что один из основных ништяков питона это его динамическая структура, это во-первых позволяет на лету эвалить какие-то участки кода, чуть ли не выделяя их мышкой, пробовать всякое не дожидаясь компиляции и так далее. Во вторых, питон динамический, что позволяет не думать о типах и писать говнокод, ту самую лапшу, которая конечно говно, но что ты ожидаешь от MLщиков? Они никогда не были про хороший код. Соответственно, чем меньше они думают о коде, тем лучше, говнокод писать быстрее и им не нужно ничего учить лишний раз.
Я бы уж тогда предложил им JS, который хоть и говно, так хотя бы быстрое, под капотом у V8 пиздец сколько оптимизаций.
1161 2386564
>>386519
Но при этом есть класс спецов, работа которых заключается в переписывании питоновской лапши под С++ с оптимизациями под ГПУ и процессор, получающих на уровне ДС"ов, а то и больше.

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

С другой стороны вроде как Горгония может в ONNX, так что ситуация становится проще, но тем не менее, так и остается маргинальщиной.

Хотя настоящая причина моего негодования в том, что я хочу поиграться в МЛ, но от Питона начинает тошнить
1162 2386567
>>386519

>на лету эвалить какие-то участки кода


Не думаю, что ДСы таким занимаются. По крайней мере ни разу не видел.

>позволяет не думать о типах


Опять же, разве в ДС нужно что-то кроме матриц флоатов и комплексных чисел?

То есть плюсы питона для ДС не очевидны
1163 2386569
>>386567

>на лету эвалить какие-то участки кода


Или ты имел ввиду Юпитер? Так он и под Го есть кек
1164 2386592
Аноны, возникла такая задача. Функция может быть вызвана из множества горутин. При этом нужно, что бы выполнение началось только при первом вызове, а запросы пришедшие во время выполнения первого вызова игнорировались (или вызывающий был уведомлен о том, что функция уже выполняется).
Как это почище реализовать?
была мысль с RWMutex и булевым значением типа такого:

func (s struct) () {
s.mu.RLock()
isrunning = s.isRunning // bool
s.mu.RUnlock
if isrunning {
____return "already running"
}

s.mu.Lock()
s.isRunning = true
s.mu.Unlock()
выполняем нужные действия*

s.mu.Lock()
s.isRunning = false
s.mu.Unlock()

return "finished"
}

Но это прям каким-то говном кажестся. Прям реально извиняюсь, что вам пришлось это увидеть, но как сделать по-другому пока не представляю.
1165 2386593
Аноны, возникла такая задача. Функция может быть вызвана из множества горутин. При этом нужно, что бы выполнение началось только при первом вызове, а запросы пришедшие во время выполнения первого вызова игнорировались (или вызывающий был уведомлен о том, что функция уже выполняется).
Как это почище реализовать?
была мысль с RWMutex и булевым значением типа такого:

func (s struct) () {
s.mu.RLock()
isrunning = s.isRunning // bool
s.mu.RUnlock
if isrunning {
____return "already running"
}

s.mu.Lock()
s.isRunning = true
s.mu.Unlock()
выполняем нужные действия*

s.mu.Lock()
s.isRunning = false
s.mu.Unlock()

return "finished"
}

Но это прям каким-то говном кажестся. Прям реально извиняюсь, что вам пришлось это увидеть, но как сделать по-другому пока не представляю.
1166 2386607
Как в коде распологать структуры? Типа создавать отдельный файл types или structures и туда ебенить? Или просто в начале файла заебошить?
1167 2386617
>>386607
Ну если это основная структура пакета, что в начале. Вспомогательные в месте использования.
В отдельных файлах как-то не приходится. Если это не DTOшка какая-нибудь
1168 2386683
>>386607
ага. файлик structures.go
там рядом файлик interfaces.go
еще рядом functions.go
еще рядом methods.go
еще рядом constants.go
еще рядом variables.go
1169 2386687
>>386683
Ну и че ты выебуешься, я types видел в нескольких проектах. Щас заебашу клин кода, сделаю как у тебя и потом будешь так же писать
1170 2386869
>>386687

>я types видел в нескольких проектах.


Зачем он там?
1171 2386905
>>386869
Я откуда знаю? Возможно чтобы код не за засорять несколькими структурами для парсинга json
1172 2386920
>>386905

>Я откуда знаю?


Зачем тогда приводить это в пример?
1173 2386921
>>386920
Потому что возможно это знающие люди и так делать лучше...
1174 2386926
>>386921

>возможно


>знающие


>люди


>так делать лучше


Толсто.
1175 2386929
>>386926
А что не так? Нужно постоянно смотреть как делают другие и это анализировать, иначе развитие будет идти медленнее
1176 2386934
>>386929

>А что не так?


Без понимания, ты можешь унаследовать чужие ошибки.
1177 2386940
>>386934
Ну вот на авторитетном оранжевом форуме спросил, это добавило понимания, что не так?
1178 2387026
>>301812

>Буквально на днях вентилировал этот же вопрос

1179 2387053
>>386593
sync.Once есть.
1180 2387063
>>380262

>Жава пукает тредом на каждый новый реквест


Если брать обычный спринг с обычным Tomcat сервером, то в целом да, там был тредпул, и оттуда брался свободный тред.
Еще есть webflux на netty, там все асинхронное, никакого жесткого долблебния в тредпулы нет.

Сейчас осенью выйдет JDK19, где уже будет Loom. С осени на жабе можно будет пукать виртуальными потоками точно так же, как это сейчас в го делают.
1181 2387064
>>375757
Есть же стажировки в яндексе, озоне и вайлдберисе. Наверное еще и в авито есть.
Озон и вб сейчас должны расширяться, так как параллельный импорт набирает обороты + ушли с рынка всякие торговцы шмотками и мебелью и еще кучи всякого другого
1182 2387069
>>364615
В го вкатуны не нужны толком. Если не осилил войти в какой-нибудь помойный вайлдбериз стажером, то лучше забей и ищи работу где-нибудь в других стеках, в той же пыхе мб что-нибудь и найдешь (гошка плюсом будет возможно).
Вообще сейчас на гошу переходить особо никто не будет, так как это деньги и время, а сейчас времена очень жидкие и неспокойные. Вкладывать хуй пойми сколько миллионов в переписывание легаси параши с пхп на го желающих сильно поубавилось.
1183 2387736
Аноны, можете посоветовать где улучшить навыки параллельного программирования? Есть какие-то упражнения или классное видео, которое классно объясняет как это все работает.
1184 2387750
>>387736
Попробуй для начала разом отсосать 4 члена, там понимание приходить и начнет
1185 2387757
>>387736

>улучшить навыки параллельного программирования


Классных видео или упражнений, чтобы легко, просто и без задней мысли прокачать concurrency попросту нет.

Смотри эти лекции

https://www.youtube.com/playlist?list=PL4_hYwCyhAva37lNnoMuBcKRELso5nvBm

https://www.youtube.com/playlist?list=PL4_hYwCyhAvYTxm55RBm_HA5Bq5W1Nv-R

Делай домашки отсюда
https://gitlab.com/Lipovsky/concurrency-course

Читай талмуды пикрил, а также всевозможные статьи по теме моделей памяти, атомиков + всякие прикольные штуки по типу Software transactional memory, structured concurrency, и т. д., для этого возможно придется погрузиться в разнообразные пропозалы или даже научные статьи на arxiv.org.

В общем, если все это осилишь, то наверное что-нибудь и поймешь в многопоточке и конкарренси, я тебе гарантирую.
1186 2387945
>>387750
Я в глухой деревне и не могу пока твоим советом воспользоваться, расскажешь каково это изучать параллельное программирование?))
1187 2388251
>>387053
То, что нужно, спасибо!

Насколько я понял, реализовать мой случай можно таким образом:
1) Добавляем в структуру поле *sync.Once
2) При вызове функции
----выполняем функцию через once.Do(Fn), параллельные вызовы блокируются
----В конце успешного вызова функции делаем once := new(sync.Once), чтобы по окончании можно было вызвать ее снова в будущем.
1188 2388342
>>388251
И ты таким образом переносишь гонку в `once := new(sync.Once)`. Мьютексы это норм решение и тебе нужно просто +- изящно структурировать код. Советую тебе сначала проверять isRunning атомиком, а потом просто открывать мьютекс и фигачить. Примерно так:
https://goplay.space/#txO7srv9M2F
1189 2388346
>>388342
Бля, забыл isRunning выставлять. Вот примерно так должно работать: https://goplay.space/#vRcOzdMKUXV
1190 2388364
>>388251

>once := new(sync.Once)


ага, теперь незобудь once мутексом оградить.
если тебе нужно снова вызывать её после завершения, то ты по всей видимости mutex.TryLock из 1.18 хочешь. но если ты его хочешь, то ты что-то неправильно делаешь.
1191 2388367
>>388342
А зачем так сложно? Всю функцию можно упростить, используя только atomic.CompareAndSwapInt32
1192 2388402
>>388367
Потому что я на го программировать начал тогда, когда CompareAndSwapInt32 ещё не было, забыл про неё. По идее да, должно сработать.
1193 2388407
>>388342
>>388346
Так Once обновляется в единично запущеной функции, так что гонки быть не должно. Разве нет?
1194 2388412
>>388346
Кстати интересный код, спасибо большое. Атомик как-то не трогал пока да и страшновато.
>>388407
Но вот этот вопрос остается открыт. Т.е. new(once) происходит в функции запущенной под предыдущим once.Do(), соответственно вызывается один раз и гонку не создает
1195 2388436
>>388407
>>388412
Теоретически должно сработать, но воспринимается если честно как хак, перевыделять память под once внутри его же коллбека, такое не очень принято и мб не очень оптимально, в отличие от просто атомика / мьютекса. Хотя конечно экономия на спичках в данном случае.
1196 2388511
>>388436
>>388412
>>388407
вы чего.
теперь скажите что тут нет рейса потому что v обновляется из единично запущенной функции.

v := 1
go func () { v = 2 }()
fmt.Println(v)
1197 2388559
>>388511
Кстати да, мы же в других горутинах обращаемся к once в этот момент. Не учел, спасибо! Видимо действительно придется вникать в atomic
1198 2388999
Аноны, спасибо большое за советы, в итоге получилось так. Возможно накосячил в английском, но работает как надо

func (s *PServer) Update() error {
____if !atomic.CompareAndSwapUint32(&s.updatingNow, 0, 1) {
________// updatingNow != 0: Update() already called at the moment
________// so no need to call it again until the first call completes: this call will be ignored
________return nil
____}
____// Else: updatingNow == 0: There are no other goroutines that execute Update function now.

____// After Update function's end PServer.updatingNow is set 0 (false),
____// so the next Update() call will be executed
____defer atomic.StoreUint32(&s.updatingNow, 0)

...собственно выполнение самой функции...
____return nil
}
1199 2389734
Через несколько дней собес по го, подскажите, что можно подготовить помимо вопрос из поисковика? Как у вас проходили собесы?
1200 2389778
>>389734
На хабре была годная статья по вопросам на Го собес. Поищи.
Ну и также на Хабре по устройству сборщика, горутин.
1201 2389855
>>389778
Как раз по ней готовился (если мы об одной) в двух частях. Спасибо
1202 2390090
>>286762
Не забудь весь рантайм перекопать прежде чем нормальную программу напишешь.
1203 2390092
>>390090
Зачем его перекапывать? Нормальные программы и без этого пишутся, чего нельзя сказать про Go.
1204 2390098
>>390092
Нормальные это хелловорды на WPF с приминением паттернов, ведь сразу нормально сделать было нельзя, и вообще любим это легаси говно тащить за собой в .NET Core.

Кстати, что с неймингом?

Не забудь про ключевые слова readonly, fixed, ref и разные контексты их использования. С другой стороны LINQ.

Microsoft превратила свой язык в какие-то питоно-кресты: с одной стороны куча нюансов, ансейф код - с другой ванлайнеры с линком и его охуенной производительностью.
image.png10 Кб, 841x133
1205 2390519
Доброго времени суток аноны гоферы, пишу вам за советом.
Подскажите пожалуйста, вот я шлю запрос в БД и у меня в таблице есть столбец с NOT UNIQUE.
И когда я специально шлю запрос с дублирующим полем, программа выкидывает ошибку и и выход из выполнения.
Вот какой способ можете порекомендовать чтобы программа из выполнения не выходила, пробовал ошибку обработать но что-то не получается.
P.S. Да, я понимаю что вопрос может показаться пиздец таки тупым но хотел с пообщаться с опытными гоферами.
1206 2391084
>>390519

А что за ошибка то? Паника или ты сам принтишь ошибку, которую возвращает функция?

BTW
Если поле NOT UNIQUE - это значит, что повторяющиеся значения могут быть. Имелось ввиду просто UNIQUE?
1207 2391169
>>391084

>Если поле NOT UNIQUE - это значит, что повторяющиеся значения могут быть. Имелось ввиду просто UNIQUE?


Да, опечатался, имел ввиду что есть столбцы с UNIQUE ограничением.

>А что за ошибка то? Паника или ты сам принтишь ошибку, которую возвращает функция?


Для логирования использую библиотеку логрус
Вот ошибка с консоли:
{"level":"fatal","msg":"pq: duplicate key value violates unique constraint \"book_book_title_key\"","time":"2022-06-28T16:26:01+06:00"}

exit status 1


И я походу понял в чем проблема, короче решил я поменять логрус на стандартную библиотеку лог.
1. Шлю запрос с дублирующими данными
2. В консоли получаю ошибку и программа дальше выполняется
3. А логрус выкидывает exit status 1 и выходит из выполнения

Если я перепишу на стандартную библиотеку log, мне кажется что это будет считаться костылем и не решенной проблемой, как думаешь?
1208 2391177
>>391169
С логрусом не работал, но судя по всему, он считает такую ошибку критичной и крашит программу. Возможно, это поведение можно изменить в либе
1209 2391181
>>391177
Ну либо ты сам логируешь не через Принт (или его аналог в логрусе), а через Fatal
1210 2391185
>>391181
Вот только хотел отписаться, попробовал вместо logrus.Fatal logrus.Println и он с выполнения не выкидывает
image.png11 Кб, 666x155
1211 2391242
Епты бля че для логирования использовать? Вот есть такая хуйня как на пике, но это же пиздос такое делать, потому что это каждый раз нужно файл открыть, записать лог и закрыть. Мб есть фреймворки годные?
1212 2391250
Кстати, анончики, почему вы решили обозначить Го как самый мужественный язык?
Потому что стрейт форвард? Тупой и работает (в хорошем смысле)?

>>391242
Так точно не нужно делать. Херачь все в стдоут, девопсы разберутся. Ну или ты сам путем $ ./programm > log.txt
1213 2391254
>>391242
Если очень хочется все таки в коде файл открывать, вызываешь log.SetOutput(w io.Writer), куда передаешь открытый файл и не трогаешь его пока программа не завершит работу.
1214 2391275
>>391242

>такая хуйня как на пике


Ты этот кусок /b-тредах нашел?
16436254893130.png251 Кб, 579x643
1215 2391286
>>391275
я его сам написал
image.png39 Кб, 1172x619
1216 2391688
Аноны насколько хорошая идея создавать сеты для работы с повторяющимися файлами?
Например у меня есть 20 картинок, которые можно сравнивать по размеру и объему. Уникальная картинка добавляется в сет и дубликаты просто на неё ссылаются.
И есть ли в go кастомные сеты из структур, чтобы не писать одинаковые для каждой структуры?

Понятно, что можно их отсортировать по весу и потом сделать какой-то более быстрый поиск, это все опустим
1217 2391731
>>391688
Дженерики.
1218 2391767
>>391169
Ну плохая библиотека очевидно.
https://pkg.go.dev/github.com/sirupsen/logrus#Fatal
1219 2391805
>>391169
1) Стандартный логгер это говнище, которое не умеет примерно нихуя и кстати это один из стандартных вопросов на собесах, недостатки стандартного логгера;
2) Вообще говоря, os.Exit вообще мерзкая функция, особенно если вызывать её не в main, поэтому вызов её в внутри внешней библиотеки это моветон;
3) Но тут авторы логрус не виноваты, потому что стандартный гошный логгер ведет себя так же, тоже сразу завершает всё при фатале. Смирись и просто запомни, что с легкой руки пидорасов, которые писали стандартный логгер (вот только хуже сделали, ей богу), в гошном мире теперь принято так;
4) Но при этом вообще говоря фатал никто не использует иначе, как выругаться об ошибке и сразу всё завершить, в продакшен коде ты скорее всего log.Fatal не увидишь;
5) Сам по себе os.exit кстати та ещё срань, потому что не вызывает уже зарегистрированные defer'ы.
1220 2391834
>>391805
Хм, понял тебя. Спасибо за такой развернутый ответ!
1221 2392113
Посоветуйте хорошие проекты на Гитхабе, на которых можно поучиться best practice по:
1) Тестированию
2) Логированию
3) Взаимодействию с БД

Собственно в чем проблема. Большая часть популярных проектов - библиотеки либо тулинг, соответственно смотришь только на куцые юнит тесты функций. О логировании и БД речи вообще не идет. Либо какие-то project-example, где тривиальная логика, а взаимодействие с БД ограничевается CRUD методами на одну таблицу.

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

В книгах тоже, к сожалению, вижу только бесконечные примеры в package main, которые к реальному проекту имеют весьма посредственное отношение и показывают только то как дергать нужные функции, при этом не понятно, как встраивать это в архитектуру приложения.
1222 2392116
>>392113
Ну то есть что-то типа real-world application посложнее простого CRUD
1223 2392188
>>392113
К сожалению таких нет, тем более что многие гошники вообще про организацию когда никогда не слышали.

я всё хочу написать какой-нибудь пример сам, но руки не доходят. Рекомендую почитать про ddd, гексагональную и слоистую архитектуру, что-то для себя поймешь.

У меня структура обычно выглядит так
/cmd - тут консольные команды типа run, migrate и так далее
/internal/domain/entity - структуры сущностей и интерфейсы репозиториев
/internal/domain/service - сервисы из предметной области
/internal/app/scenario - сценарии ака юзкейзы ака операции, скажем "регистрация юзера"
/internal/app/service - специфичные сервисы именно для слоя приложения
/internal/infra/postgres - реализации репозиториев, в гексагональной архитектуре это секондари адаптеры
/internal/infra/grpc - реализации сервера, в гексагональной архитектуре это примари адаптеры

Получается так, что /cmd поднимает приложение, внутри него поднимается реализация сервера /internal/infra/grpc
Этот grpc сервер внутри себя при получении внешнего запроса вызывает конкретный сценарий из слоя сценариев приложения.
Сам сценарий внутри себя оперирует сущностями, интерфейсами репозиториев и сервисами из доменной области, которая domain.
Реализации репозиториев лежат к примеру в /internal/infra/postgres

В итоге получается такая цепочка
Клиент вызывает grpc register_user -> grpc register_user вызывает сценарий "регистрация юзера" -> сценарий берет репозиторий Users и вызывает метод Create -> ответ возвращается в обратной последовательности.

Но у меня серьезное приложение, большой домен, много адаптеров, grpc, http, кафка, несколько бд, кеши и так далее, так что мы серьезно вложились в структурирование кода.
1224 2392602
>>392188

>/internal/domain/entity


>/internal/domain/service


>/internal/app/scenario


>/internal/app/service


"как сделать много папочек и не сказать путем ровно ничего для чайников"
1225 2392605
>>392113
сорсы твича скачай если хочешь увидеть рил ворлд хуиту
1226 2392770
>>392188
Спасибо за ответ. Достаточно полезно с точки зрения архитектуры приложения, хотя мне бы посмотреть уровнем ниже, как это все организуется в коде.
Как писать модульные/интеграционные тесты и тест-кейсы. Как именовать функции интерфейсов репозиториев и подобное.
1227 2393160
>>392770
Я бы с радостью заопенсорсил свой код, но у меня крупная закрытая контора финтех и такого конечно никогда не будет.

Давай попробую просто поотвечать на твои вопросы, немного псевдокодом.

> Как писать модульные/интеграционные тесты и тест-кейсы



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

type SuiteRegisterUser struct {
users entity.Users
client http.Client
}

func (s
SuiteRegisterUser) BeforeTest(_, _ string) {
// делаешь инжекты в s, создаешь репозитории, поднимаешь сервер или мок-сервер если надо и всё такое
s.client = http.NewClient()
s.users = postgres.NewUsersRepo()
}

И соответственно начинаешь описывать различные кейсы конкретного сценария:

func (s SuiteRegisterUser) TestAlreadyExists() {
// подготовка данных, если необходимо
const email = "bmt'lablaANUSgma5IZilPUNCTUMc||'om"
ctx := context.Background()
s.Require.NoError(s.users.Create(ctx, &entity.User{Email: email}))

// производишь сценарий
_, err := s.client.Post("/register_user", map[string]interface{}{"email":emaiil})

// проверяешь результаты сценария, если вдруг нужно
s.Require().Error(err, "err_already_exists")
// в другом примере можно было бы найти юзера, чтобы убедиться, что он создался
}

Это пример полнофункционального юнит теста, при котором ожидается, что он поднимет сервер, законнектится к базе и проверит весь код в максимально боевых условиях. Конечно разные люди делают по разному, есть подходы, когда мокают базу, сервер и тд и тп.
Тут у тебя может возникнуть очевидный вопрос, как поднимать базу, если поднимать, я пробовал testcontainers и мне не понравилось, в итоге остановился на том, что в докере поднимаю прям постгрес (или локально или в пайплайне) и через переменные окружения прокидываю доступы в сам тест: TEST_DB_NAME=blabla go test ./...

> Как именовать функции интерфейсов репозиториев и подобное.



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

package entity

type User struct {
ID string
Email string
CreatedAt, UpdatedAt time.Time
}

var (
ErrAlreadyExists error
)

type Users interface {
Create(ctx context.Context, user
User) error // can return ErrAlreadyExists
Update(ctx context.Context, user User) error
FindByEmail(ctx context.Context, email string) (
User, error)
}

И уже внутри internal/infra/postgres реализация интерфейса:

package postgres

var _ entity.Users = (UsersRepo)(nil)

func NewUsersRepo( db
sql.DB) UsersRepo {
return &UsersRepo{
db: db,
}
}

type UsersRepo struct {
db
sql.DB
}

func (r UsersRepo) Create(ctx context.Context, user entity.User) error {
row, err := r.db.QueryRow("insert into users email) values ($1) returning id, email, created_at, updated_at", user.Email)
if err != nil {return err}

if err := row.Scan(&user.ID, &user.Email, &user.CreatedAt, &user.UpdatedAt); err != nil {return err}

return nil
}

Как-то так. Внутри репозитория можно хардкодить запросы, собирать их с помощью билдера и тд, разных подходов много, я тут написал самый тривиальный псевдокодный вариант. Весь прикол в том, чтобы отделить специфику реализации от самих операций над сущностью, с помощью интерфейса. Чтобы у тебе в бизнес-коде не появилось внезапно бд-специфичного кода.
1227 2393160
>>392770
Я бы с радостью заопенсорсил свой код, но у меня крупная закрытая контора финтех и такого конечно никогда не будет.

Давай попробую просто поотвечать на твои вопросы, немного псевдокодом.

> Как писать модульные/интеграционные тесты и тест-кейсы



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

type SuiteRegisterUser struct {
users entity.Users
client http.Client
}

func (s
SuiteRegisterUser) BeforeTest(_, _ string) {
// делаешь инжекты в s, создаешь репозитории, поднимаешь сервер или мок-сервер если надо и всё такое
s.client = http.NewClient()
s.users = postgres.NewUsersRepo()
}

И соответственно начинаешь описывать различные кейсы конкретного сценария:

func (s SuiteRegisterUser) TestAlreadyExists() {
// подготовка данных, если необходимо
const email = "bmt'lablaANUSgma5IZilPUNCTUMc||'om"
ctx := context.Background()
s.Require.NoError(s.users.Create(ctx, &entity.User{Email: email}))

// производишь сценарий
_, err := s.client.Post("/register_user", map[string]interface{}{"email":emaiil})

// проверяешь результаты сценария, если вдруг нужно
s.Require().Error(err, "err_already_exists")
// в другом примере можно было бы найти юзера, чтобы убедиться, что он создался
}

Это пример полнофункционального юнит теста, при котором ожидается, что он поднимет сервер, законнектится к базе и проверит весь код в максимально боевых условиях. Конечно разные люди делают по разному, есть подходы, когда мокают базу, сервер и тд и тп.
Тут у тебя может возникнуть очевидный вопрос, как поднимать базу, если поднимать, я пробовал testcontainers и мне не понравилось, в итоге остановился на том, что в докере поднимаю прям постгрес (или локально или в пайплайне) и через переменные окружения прокидываю доступы в сам тест: TEST_DB_NAME=blabla go test ./...

> Как именовать функции интерфейсов репозиториев и подобное.



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

package entity

type User struct {
ID string
Email string
CreatedAt, UpdatedAt time.Time
}

var (
ErrAlreadyExists error
)

type Users interface {
Create(ctx context.Context, user
User) error // can return ErrAlreadyExists
Update(ctx context.Context, user User) error
FindByEmail(ctx context.Context, email string) (
User, error)
}

И уже внутри internal/infra/postgres реализация интерфейса:

package postgres

var _ entity.Users = (UsersRepo)(nil)

func NewUsersRepo( db
sql.DB) UsersRepo {
return &UsersRepo{
db: db,
}
}

type UsersRepo struct {
db
sql.DB
}

func (r UsersRepo) Create(ctx context.Context, user entity.User) error {
row, err := r.db.QueryRow("insert into users email) values ($1) returning id, email, created_at, updated_at", user.Email)
if err != nil {return err}

if err := row.Scan(&user.ID, &user.Email, &user.CreatedAt, &user.UpdatedAt); err != nil {return err}

return nil
}

Как-то так. Внутри репозитория можно хардкодить запросы, собирать их с помощью билдера и тд, разных подходов много, я тут написал самый тривиальный псевдокодный вариант. Весь прикол в том, чтобы отделить специфику реализации от самих операций над сущностью, с помощью интерфейса. Чтобы у тебе в бизнес-коде не появилось внезапно бд-специфичного кода.
1228 2393173
>>393160
привет анон! подскажи пожалуйста, вопрос не по теме будет, а в чем разница между мидлтварями сервисами, репозиторий я понял, эта та сущность которя с бд работает, а в чем разница между ними то обеими, так то получается они логику сервиса обрабатывают не?
1229 2393317
>>393173
Не совсем понял вопрос, в чём разница между миддлварями и сервисами? Или между сервисами и репозиториями?

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

Так, нет, давай зайдём с другого конца. Когда ты пишешь какой-то серьезный софт, то ты действуешь в терминах предметной области, скажем, магазина. Это означает, что вообще в бизнесе существуют такие вещи как "заказ", "доставка", "покупатель" и тд и тп, это история даже не про код, это часть реального мира.
И ты для решения каких-то бизнес задач (скажем, интернет магазина), эту предметную область моделируешь. Если ты слышал когда-нибудь термин "модель", то скорее всего её кто-нибудь безграмотно употреблял в смысле "штука, которая хранится в базе" или "модель бд". А на самом деле весь твой интернет магазин - это некая модель бизнес процессов, как у физиков, когда они вулкан моделируют какой-нибудь к примеру.

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

Если модель богатая, тогда у тебя всё должно быть выражено напрямую через сущности. Что-то вроде такого:
function ScenarioInstantPurchase(user, product, payment) {
cart := user.GetCart()
cart.AddProduct(product)
order := cart.CreateOrder()
order.AddPayment(payment)
order.CalculateDelivery()
// ... и тд
}

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

function (s *Scenario) ScenarioInstantPurchase(user, product, payment) {
cart := s.cart.AddProduct(cart, product)
order := s.orders.CreateFromCart(cart)
s.payments.CreateForOrder(payment, order)
s.delivery.Calculate(order)
// ... и тд
}

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

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

И из этих кубиков ты в слое приложения (app) собираешь сценарии ака юзкейзы. Которые потом будешь вызывать откуда тебе там надо, из сети, консоли, интерфейса, тд
1229 2393317
>>393173
Не совсем понял вопрос, в чём разница между миддлварями и сервисами? Или между сервисами и репозиториями?

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

Так, нет, давай зайдём с другого конца. Когда ты пишешь какой-то серьезный софт, то ты действуешь в терминах предметной области, скажем, магазина. Это означает, что вообще в бизнесе существуют такие вещи как "заказ", "доставка", "покупатель" и тд и тп, это история даже не про код, это часть реального мира.
И ты для решения каких-то бизнес задач (скажем, интернет магазина), эту предметную область моделируешь. Если ты слышал когда-нибудь термин "модель", то скорее всего её кто-нибудь безграмотно употреблял в смысле "штука, которая хранится в базе" или "модель бд". А на самом деле весь твой интернет магазин - это некая модель бизнес процессов, как у физиков, когда они вулкан моделируют какой-нибудь к примеру.

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

Если модель богатая, тогда у тебя всё должно быть выражено напрямую через сущности. Что-то вроде такого:
function ScenarioInstantPurchase(user, product, payment) {
cart := user.GetCart()
cart.AddProduct(product)
order := cart.CreateOrder()
order.AddPayment(payment)
order.CalculateDelivery()
// ... и тд
}

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

function (s *Scenario) ScenarioInstantPurchase(user, product, payment) {
cart := s.cart.AddProduct(cart, product)
order := s.orders.CreateFromCart(cart)
s.payments.CreateForOrder(payment, order)
s.delivery.Calculate(order)
// ... и тд
}

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

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

И из этих кубиков ты в слое приложения (app) собираешь сценарии ака юзкейзы. Которые потом будешь вызывать откуда тебе там надо, из сети, консоли, интерфейса, тд
1230 2393319
>>393317

> Советую смотреть на это так, что пакет domain это такой фреймворк для сборки бизнес процессов, в нём есть сущности (entity), хранилища для непосредственных операций над сущностями (разнообразные круды и селекты) - это репозитории и сервисы, хранящие в себе прям логику.


В смысле три разные вещи:
1) сущности - описывают объекты
2) репозитории - напрямую чёто делают с объектами
3) сервисы - какие-то логические штуки, вычисляторы, организаторы, тд
1231 2393357
>>393317
Спасибо тебе большое за такой развернутый ответ!

Такой ещё вопрос (был бы рад если и другие опытные гоферы подскажут) пишу свой CRUD сервис с 8-10 ендпоинтами, БД постгрес, авторизация и регистрация присутствует (JWT токен использую), все изменения в гитхаб пушу стабильно. Тянет ли это на сильного джуна? Сейчас работаю тестером нагрузочником бекенд сервисов в одном из банков в рф (зеленый если что), вот думаю перекатиться в разработку на гошке
1232 2393448
>>393357

Я не опытный гофер (и не этот анон>>393317), просто вонаби гофер, даже не из ИТ. В общем погружаюсь уже около 2 лет, первый из которых страдал херней на питоне и Сях, а последний сижу за Го, к сожалению не занимаюсь каждый день, из за чего растянул процесс вката пиздец.

Так вот. Недавно услышал такой совет: "просто и без задней мысли начинаешь искать работу". И вообще забить на все, потому что учиться можно бесконечно. Исходя из того, что ты написал, я бы начинал искать работу прям сейчас. Еще и прошлый опыт +- пересекается.
1233 2393458
>>393448
пчел спасибо за поддержку, но ты наверное и сам знаешь как трудно найти работу на гофера, мой единственный выход это пилить пет проекты. Ты удивишься но мой опыт где я больше года занимаюсь НТ и успел ещё полгода АТ позаниматься, вообще ни в пизду ни в красную армию оказалось в контескте вакансии на гофера. Так что как-то так оказалось....
videoplayback.mp4701 Кб, mp4,
480x480, 0:09
1235 2393484
>>393464
волк слабее льва и тигра но на джаваскрипте не пишет бекенд
1236 2393513
>>393357

Почему бы и нет? Главное помнить, что пет проект - это всего лишь пет проект, это хорошо, но ещё не всё. Вывод, что ты "сильный джун" будет делать чел, который тебя собеседует. И да, разница между сильным джуном и миддлом довольно невелика и вероятно в основном в величине зп :D

С моей точки зрения грейды различаются так:
1 стажер вообще ничего не знает
2 джун что-то знает и что-то умеет, но как это применить - нет
3 миддл стабильно и правильно делает задачу по техническому описанию
4 сеньор и сам себе техническую задачу напишет, от бизнеса ему нужен только кивок в нужную сторону

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

Кстати вообще не факт, что тебе нужен jwt или что ты его правильно используешь. Просто к слову, если ты юзаешь что-то, будь готов ответить, почему ты это используешь и чем оно лучше другого.
1237 2393557
Такой вопрос. Пишу обновляемый хендлер. В текущем виде с моими маня-тестами работает как надо. Возникает вопрос, при высоких RPS есть вероятность, что функция Update будет долго ждать, пока не прекратятся вызовы ServeHTTP?

Если да, то можно ли в таком случае запускать вложенный ServeHTTP в отдельной горутине (пометил жирным)? Сохранится ли "копия" хендлера для активных вызовов (пришедших до запроса на Update, но еще не отработавших) или ее изменение в структуре вызовет сатану?

type UpdHandler struct {
____mu sync.RWMutex
____h http.Handler
}

func (uh UpdHandler) Update(h http.Handler) {
____uh.mu.Lock()
____uh.h = h
____uh.mu.Unlock()
}

func (uh
UpdHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
____uh.mu.RLock()
____uh.ServeHTTP(w, r) // --> go uh.ServeHTTP(w,r)
____uh.mu.RUnlock()
}
1238 2393559
>>393557
Опечатался, внутри ServeHTTP естественно идет UpdHandler.h.ServeHTTP, рекурсии нет
1239 2393582
>>393513
в моем маня-представлении это будет учебный проект для маслят которые хотят вкатиться в нагрузочное тестирование. Так как начинающим НТшникам нечего тестировать. Если тем же условным мануал куа можно любой сайт открыть и протестить то с НТшниками посложнее, нагружаемый сервис может подумать что это дудос и забаних нахой айпишник маслёнка НТшника. А так как сервисы на архитектуре рест самые популярные в бекенде, то им достаточно будет развернуть мой проект на той же виртуалке и потестить написав скрипты на jmeter, loadrunner, k6 и т.д.

как тебе идея?
1240 2393793
>>393582
Хз, зачем кому-то так заморачиваться. Хочешь что-то нагрузочно протестить - делаешь `docker run -p 3000:80 ealen/echo-server` и вперед. Ну или nginx в докере поднять, со специфичными конфигами.

Так-то объект тестирования внутри вообще не должен быть ни гибким, ни как-то особо написанным. Просто какой-то тупой http сервер с каким-то профилем нагрузки.
Максимум

go run server.go

где server.go это

func main() {
http.HandleFunc("/hello", func (w http.ResponseWriter, req *http.Request) {
// ну тут можно ещё в базу стукнуться или семафор на 100 одновременных запросов поднять для тестов.
fmt.Fprintf(w, "hello\n")
})
http.ListenAndServe(":8080", nil)
}

В-общем, если ты делаешь пет проект как тестировщик, не программируй, а делай штуку для тестирования, максимум пользы, минимум излишеств. Не нужно тут ничего самому программировать, просто предоставить людям заглушку для тестов.
А если ты делаешь пет проект как программист, то тогда это не должно быть учебным пособием для тестировшиков, а должен быть некий близкий к реальности программный продукт, который покажет твои навыки писать, собственно, программные продукты. Сделай, не знаю, тот же интернет магазин к примеру, бложек, туду лист, куча вариантов. Я в качестве своего первого пет проекта лет уже почти 10 назад сделал копию музыки вконтакте, сервис, в который можно было заливать файлики с музыкой и потом слушать их онлайн ^_^
1241 2393806
>>393557
Из спеки rwmutex:

> If a goroutine holds a RWMutex for reading and another goroutine might call Lock, no goroutine should expect to be able to acquire a read lock until the initial read lock is released.



Всё ок будет.
1242 2393811
>>393793
бля оч круто звучит слушай. я тебя понял, просто моя основная идея была в том чтобы написать сервис который был бы близок к реальному продукту, чтобы как ты сказал прокачать навыки программирования а уже потом только пришла в голову предложить стажерам качать навыки НТ на нем. Но все же спасибо за такой развернутый ответ :)
1243 2393892
>>286748 (OP)
$ migrate create -ext sql -dir db/migrations -seq create_users_table

> error: unknown option `-x'



Аноны, с чем это может быть связанно ? Не могу сделать миграции, хотя делаю все согласно доке, какая то фигня с флагом. Подскажите, пожалуйста
1244 2393897
>>393557
тебе обновление хендлера нужно блочить во время выполнения?
просто делаешь
RLock
h := uh
rUnlock
h.ServeHTTP
а твоя штука с горутиной наверняка будет неожиданно работать, если где-то ожидается, что servehttp блочит на время выполнения.
1245 2393901
>>393897

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


как пример мидлвары которые после servehttp что-то делают например длительность измеряют.
1246 2394030
>>393897
В идеале обновлять одновременно с выполнением. Что бы запросы направленные до запроса обновления корректно завершились.

>твой вариант


http.Handler это же интерфейс и мы просто скопируем ссылку на функцию. И после RUnlock ее свободно могут изменить -> в h.ServeHTTP будет гонка. Разве не так?
1247 2394041
>>393806
Вот как раз таки из-за этого и боюсь, что вызов Апдейта будет отложен на неопределенное время. Или Lock встает в своего рода очередь и последующие запросы на RLock будут выполнены после лока на запись?
1248 2394056
>>394041

> Или Lock встает в своего рода очередь и последующие запросы на RLock будут выполнены после лока на запись?


Да
1249 2394059
>>393892
А что такое migrate? Таких пакетов десятки.
Пока вслепую вангану, что должно быть `migrate -ext sql create -dir db/migrations -seq create_users_table` либо `--ext`. А вообще читай доку конкретного пакета и/или его гитхаб.
1250 2394064
>>394030

>http.Handler это же интерфейс и мы просто скопируем ссылку на функцию. И после RUnlock ее свободно могут изменить -> в h.ServeHTTP будет гонка. Разве не так?


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

var x any = 1
y := x
x = 3
fmt.Println(y)
1251 2394260
>>286748 (OP)
Привет, анончики.
Думаю над перекатом в Го.

Подскажите, какая область применения этого языка? Какую работёнку в среднем можно получить, чем придётся заниматься? Заранее благодарю.
1252 2394294
>>394260
жсономешалки.
всякие микро серверсы для бек енда, реже системные и плат форменные утилиты уровня NIH ансиблов, интеграции с девайсами уровня "есть драйвер для сканера/кассы, нужно предоставить к ним синхронную/асинхронную апишку" что по сути тот же бекенд
1253 2394383
>>394059
Эта штука делает миграции и накатывает их, я конечно не особо понимаю зачем, ведь sql я и так руками написал,
я чисто из документации копировал этот код и он сука не работает, у людей в ютубе даже работает.

Я вообще думаю отказаться от этих утилит, по сути, что она автоматизирует? Ничего, Только файлы создает
1254 2394414
>>394383
Значит, ты неправильно её используешь.

Давай начнём с того, что есть несколько паттернов работы с базой и для начала нужно определиться, какой у тебя и правильно подобрать под него тулчейн.
1) Код-first, он же orm'ный, когда ты сначала описываешь сущности в коде, а потом некий (возможно самописный, возможно либа типа gorm, не к ночи будь помянут) код маппит их в базу. Соответственно, этот же код может накатывать и/или создавать миграции. У того же gorm (только умоляю не начни его юзать, это порождение Сатаны, а не либа) есть метод AutoMigrate, который сам увидит новые поля у сущностей и сам их накатит. Более правильный вариант, это конечно прям генерировать миграции и накатывать их отдельно;
2) DB-first, когда ты руками пишешь миграции и вообще модифицируешь базу данных, а потом некий код маппит данные их базы в код. Например, как sqlboiler, который генерирует гошные структуры по схеме бд (этот пакет в целом годный, я юзал);
3) Смешанный, когда ты руками описываешь структуру бд, руками описываешь гошные сущности, а потом настраиваешь маппер между ними. Самый гибкий, но и самый требовательный к прямоте рук.

Но при всех этих 3 подходах, у тебя как правило есть задача "накатить миграции", то есть, посмотреть, что уже было накачено, накатить недостающее, если не получилось на катить - то откатиться назад к предыдущей точке. Какие-то миграции могут быть кодовые, какие-то чисто sql, какие-то должны выполняться внутри транзакции, а какие-то нет.
Ты мне до сих я же блять прямо спросил не сказал, что за пакет ты юзаешь, пока что я вангану что это https://github.com/golang-migrate/migrate и он делает именно это, хранит в базе таблицу с уже накатанными миграциями и умет апгрейдить/даунгрейдить состояние системы до нужной точки. Это можно написать самому, но внешний пакет здесь нормальная тема, потому что этот код в целом одинаковый во всех проектах.

tldr: создавать файлики это не главное, главная задача - это "накатки и откатки миграций", с разными опциями. Иногда её решают ормки, иначе, есть смысл использовать внешние тулзы для таких дел.

>>394260
Несколько специфических областей:
1) Блокчейн и крипта.
2) Кубернетес и прочие девопс штуки;
3) Написание бекендов в компаниях среднего и большого размера, как правило "микросервисов", хотя я бы не обращал внимания на этот баззворд, в 99% случае люди не вполне понимают, что говорят. Кажется, что наибольшая доля го в финтехе, и традиционном и всяких модных необанках. Но при этом крупные конторы часто юзают, в РФ - те же Авито, Яндекс (яндекс.еда вроде), mail.ru, 2gis.
Единственное, надо понимать, что у пехапешников, js'ников и джавистов есть вариант устроится джуном в какую-нибудь мелкую контору, местячковый аутсорс за еду и там за год набраться какого-никакого опыта. С го такое скорее всего не проканает, аутсорса на го почти нет, вакансий больше в крупняке.
1254 2394414
>>394383
Значит, ты неправильно её используешь.

Давай начнём с того, что есть несколько паттернов работы с базой и для начала нужно определиться, какой у тебя и правильно подобрать под него тулчейн.
1) Код-first, он же orm'ный, когда ты сначала описываешь сущности в коде, а потом некий (возможно самописный, возможно либа типа gorm, не к ночи будь помянут) код маппит их в базу. Соответственно, этот же код может накатывать и/или создавать миграции. У того же gorm (только умоляю не начни его юзать, это порождение Сатаны, а не либа) есть метод AutoMigrate, который сам увидит новые поля у сущностей и сам их накатит. Более правильный вариант, это конечно прям генерировать миграции и накатывать их отдельно;
2) DB-first, когда ты руками пишешь миграции и вообще модифицируешь базу данных, а потом некий код маппит данные их базы в код. Например, как sqlboiler, который генерирует гошные структуры по схеме бд (этот пакет в целом годный, я юзал);
3) Смешанный, когда ты руками описываешь структуру бд, руками описываешь гошные сущности, а потом настраиваешь маппер между ними. Самый гибкий, но и самый требовательный к прямоте рук.

Но при всех этих 3 подходах, у тебя как правило есть задача "накатить миграции", то есть, посмотреть, что уже было накачено, накатить недостающее, если не получилось на катить - то откатиться назад к предыдущей точке. Какие-то миграции могут быть кодовые, какие-то чисто sql, какие-то должны выполняться внутри транзакции, а какие-то нет.
Ты мне до сих я же блять прямо спросил не сказал, что за пакет ты юзаешь, пока что я вангану что это https://github.com/golang-migrate/migrate и он делает именно это, хранит в базе таблицу с уже накатанными миграциями и умет апгрейдить/даунгрейдить состояние системы до нужной точки. Это можно написать самому, но внешний пакет здесь нормальная тема, потому что этот код в целом одинаковый во всех проектах.

tldr: создавать файлики это не главное, главная задача - это "накатки и откатки миграций", с разными опциями. Иногда её решают ормки, иначе, есть смысл использовать внешние тулзы для таких дел.

>>394260
Несколько специфических областей:
1) Блокчейн и крипта.
2) Кубернетес и прочие девопс штуки;
3) Написание бекендов в компаниях среднего и большого размера, как правило "микросервисов", хотя я бы не обращал внимания на этот баззворд, в 99% случае люди не вполне понимают, что говорят. Кажется, что наибольшая доля го в финтехе, и традиционном и всяких модных необанках. Но при этом крупные конторы часто юзают, в РФ - те же Авито, Яндекс (яндекс.еда вроде), mail.ru, 2gis.
Единственное, надо понимать, что у пехапешников, js'ников и джавистов есть вариант устроится джуном в какую-нибудь мелкую контору, местячковый аутсорс за еду и там за год набраться какого-никакого опыта. С го такое скорее всего не проканает, аутсорса на го почти нет, вакансий больше в крупняке.
1255 2394562
>>394414
У меня третий подход, ОРМ мне противно использовать, да, его, и он именно не работает, хотя по пути нарастания сложности мне удалось добиться от него генерацию JS файлов, но это мб другой какой-то пакет? Посоветуй альтернативу этому пакету

Я ж именно пониманием этого всего дошел, а не от балды хыхыхы че зачем
1256 2394582
>>394414
Вообще, спасибо за такой развернутый ответ, видать этот пакет migrate походу фигово работает на макоси у меня, просто не заводится и все, может есть приемлемая альтернатива? Не хочу генерировать го, хватит sql , мигрирую постгресс базу,

Вообще, мне б для тупых объяснить вообще как эти миграции работают в плане отката-наката, ведь речь о обновлении базы, иногда нужно прописывать у поля что-то вроде default="1234", бо иначе не заведется, или возникнет конфликт какой, хз, думаю приколов там достаточно

Могу я вообще понимать миграции как что-то типа гита для баз данных?
1257 2394614
>>394582
Не понял про default и конфликты, у тебя там явно какая-то лажа происходит. И уж тем более не понял, причём тут JS.

Если не нравится migrate, ну используй goose, в целом, одна фигня.

Миграция - это грубо говоря операция изменения структуры бд. В серьезных проектах у тебя есть код, который зависит от структуры бд, поэтому тебе нужно при релизе кода, который скажем начинает работать с этой таблицей, эту таблицу создать. Отдаленное сходство с гитом наверное есть, не знаю, сложно сравнивать.
Ты же можешь посмотреть прям по коду, что этот тул делает.
Грубо говоря, ты создаешь файлики:
001_create_table_users.sql
002_add_admin_user.sql
003_add_users_email_fields.sql

И тогда у тебя база может быть в 4 состояниях, 000 - где ничего нет, 001 - где отработала только первая миграця и тп. И migrate просто по очереди накатывает недостающие миграции. Проверяет, что накатить, а что нет он просто - заводит ещё одну таблицу, в которой хранит инфу, что он уже накатил, а что нет. В goose эта таблица так и называется, goose_db_version, по-моему.
1258 2394624
>>394614
Спасибо, теперь намного яснее, такой кайф с питончика и опыта тестирования на джаве переходить на го
1259 2394659
>>393892
мне каежтся у тебя конфликт в патхе. ты вообще тот мигрейт вызываешь той версии которые ты думаешь?
1260 2394662
>>394659
Я кстати вообще не люблю использовать migrate отдельным тулзом, больше нравится в cmd отдельный эндпоинт для наката миграций юзать. Тот же goose можно и как либу использовать.
1261 2394665
>>394662
у нас всё это делается при раскатке автоматом. разработчики тупо файлики в папке создают, так что необходимость ручного вызова миграций кроме как для отладки от меня начала ускользать вообще. а для отладки я могу шаг тупо на базе прогнать.
1262 2394692
>>394665
Я про другое. Не нужно в систему ставить отдельный тул, у тебя есть общий бинарник, например `go build -o users`
И соответственно `users serve` поднимает сервер, а `users migrate` накатывает миграции. Как их накатывать, руками или нет - вопрос десятый я вот пре-хуком helm'а это делаю.
Вопрос в том, нужно ли отдельно на сервер ставить ну или в докере запускать, один хрен внешняя штука goose и делать goose migrate или нет. Мой ответ: не нужно.
1263 2394719
>>394692
по моему мнению, учить сервис накатывать миграции и захламлять код, и тем более иметь ручку для этого - не нужно. накат миграции можно реализовать на любом языке и просто переиспользовать во всех сервисах, не давая разработчику с чешущимися руками лишнего повода лезть в по сути бойлерплейтный код. у нас при деплое отдельный контейнер с накатчиком поднимается перед стартом сервиса или вроде того. бинарники у нас тоже не общие, апишка крутится в одном, всякие очереди расхлебываются другим. миграцию накатывал бы третий.
1264 2395045
Так, короче я не очень понял по поводу логирования:
1. Идея использовать свою структуру и интерфейс, чтобы открывать файл, использовать log.SetOutput(file) ясна. Непонятно только, что в этом плохого?
2. Можно использовать различные фреймворки и там все круто сделано и т.д. и т.п., но чем это неудобно может быть в проектах? Типа зачем кастомный логгер приводить к стандартному логгеру?
3. Как передавать логгер как io.Writer, если тогда у него не будут работать методы, кроме Write(p []bytes)?
1265 2395048
>>395045
Автору нахуя-то нужно несколько логеров в проекте. Поэтому он решил сделать дженерик логгер (на самом деле просто открыватель файла) и передавать его другим логгерам.

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


Привести к единому типу (открытому файлу лол). А логгер сам разбирается как и что писать в этот файл. В конечном счете взаимодействие идет через логгер библиотеку.
Передавая io.Writer ты просто сообщаешь логгеру, куда писать инфу.

Вопрос не в тему, ты под Виндой работаешь? Просто интересно)
1266 2395050
>>395048

>ты под Виндой работаешь?


Да, а к чему это, мне интересно
1267 2395051
>>395050
Какой-то не такой permition 0666?
1268 2395056
>>395050

>Какой-то не такой permition 0666?


Да вроде такой как нужно, только не понятно что это значит в контексте Windows.

>Да, а к чему это, мне интересно


Не знаю, интуицию тренирую. Просто насколько мне кажется, Windows затрудняет восприятие абстракций. Например, почему писать в стандартный поток вывода логи - ок.
Если ты опытный анон, который свитчится в го, извини. Но для новичка, думаю, разрабатывать на Го будет гораздо полезнее и понятнее под Unix, что бы сразу привыкать к продакшн-инфраструктуре.
image.png28 Кб, 506x367
1269 2395072
>>395056
Я пробовал линукс (Ubuntu) на виртуалке, ну его нахуй.
Чето снес - пиздец системе, VSC я ниосилил, а мне надо писать на C++ изредка (CLion говнище какое-то).

Перекат на линукс не то, чтобы проблема, просто на это опять уйдет время на настройку всякого вместо программирования. Легче это сделать когда я немного освою golang.

Ну то есть должно получиться что-то типа такого?

>Привести к единому типу (открытому файлу лол). А логгер сам разбирается как и что писать в этот файл. В конечном счете взаимодействие идет через логгер библиотеку.

1270 2395272
>>395072
Если тебе не нужно несколько логгеров в программе (99.999% кейсов), то просто открываешь файл куда хочешь писать и передаешь его либе для логгинга. И вызываешь методы либы. Если есть сомнения насчет либы - бери логрус и не парься

Хотя обычно принято писать в stdout. Более опытные аноны поправят, если не так
1271 2395275
>>395045

>type LoggerInterface interface


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

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

>TxtWriter


есть же os.Stdout, который то же самое делает
1272 2395296
>>395275

>TxtWriter


>есть же os.Stdout, который то же самое делает



Я поэтому про Винду и написал, как правило люди именно на винде не вдупляют, как можно работать с файлами, что такое потоки ввода вывода и что можно с ними делать.
А если начинать с VisualBasic/C# то можно вообще научиться заводить пустые окна на выполнение любой операции. А юникс потом как рокет сайнс воспринимается, либо наступает просветление и человек больше виндоус не запускает.
image.png40 Кб, 1054x195
1273 2395502
https://itanddigital.ru/interviewgolang
Аноны гоферы подскажите, решил почитать статейки типа (вопросы по голанг на собеседовании). И наткнулся на эту статью, с таким вот ответом. Прошу подсказать, за такое по ебучке нужно давать?
1274 2395533
>>395502
хуйня какая-то, наверняка ебан с яндекс.толоки писал.

палю реальные примеры вопросов от одной из компаний https://pastebin.com/ida9Lezs
1275 2395547
>>395533
крайне признателен анончег!
image.png97 Кб, 960x228
1276 2395573
Вопросик к знатокам, прочитал давеча про web scale и мне стало интересно, а вообще гофер в 2к22 даже если сеньор должен будет писать какую-то программу или систему, чтобы программа запускалась в датацентре на нескольких машинах в многопотоке или это уже утерянные технологии и таким только деды занимаются?
1277 2395574
>>395573
Ну и в общем и целом интересно, такое вообще часто в России применяется? Мне что-то сложно представить вебмакакена, который помимо CRUDа как-то там чето в многопотоке запускает удаленно
1278 2395577
>>395573
Да почему же. Только актуальней становится. Гугл колаб например, Web3 и вся хуйня.
>>395574
Есть в нормальных компаниях. Вебмакакены по определению этим не занимаются
1279 2395697
>>395573
максимум классика. в ВБ у нас два ДЦ было, в авито 3. плюс N реплик сервиса которые между ними раскидываются.
в редких случаях когда сервисы для ПК пишеш (например для окон ПВЗ например), то можно считать что ты центр мира с одной репликой.
1280 2395885
>>395697

>ВБ, Авито


Как там работается? Про ВБ очень плохое слышал, пойдет туда джуном перекантоваться полгода-год?
Об Авито мое представление получше, не ошибаюсь?
image.png47 Кб, 556x157
1281 2396149
Кстати если выдрочить за лето алгосы, базу golang, gin + postgres + брокер сообщений какой-то, то есть шанс залететь стажером в озон?

https://hh.ru/vacancy/66610729?from=vacancy_search_list&hhtmFrom=vacancy_search_list&query=golang стажер
1282 2396165
>>396149

>за лето


>алгосы, базу golang, gin + postgres + брокер сообщений


Очень оптимистично. Я бы убрал "за лето" из уравнения. Тогда вполне.
И почему именно в Озон, если там реджект или нет вакансий? Забить хуй?)
1283 2396177
>>396165
Нет вакансий на стажера, есть на джуна тока
Ну хотя бы к зиме надо осилить, я второкурс пи, что-то мы проходили, если что
1284 2396245
>>395885
вб - зависит от отдела
мимокрокодил
1285 2396312
>>395885
по моему опыту в ВБ хуета была, но я тоже склоняюсь к тому, что это зависит от отдела. никаких дейликов, никаких код ревью, нихуя не было, тупо писали в телеге задачку и всё. это при том, что у меня нулевой опыт работы был. технологии там вполне индастри стандарт, так что поразбираться интересно было и съебать после годика с плюсом к ЗП было легко. в авито культура/процессы топ
1286 2396332
Как найти ждуну работу на гошечке находясь в жопе РФ?
Какие проекты надо в портфолио иметь?
Что можно запилить в соло чтобы прокачаться? (инб4 ничего волчистность)
Очень надо работу найти до конца года, в бекграунде круд на рельсах, тудушка на реакте, нравится гошечка, думаю о суициде.
1287 2396339
>>396332
Джуну даже в ДС никак
1288 2396340
>>396332
телеграм бота для продажи нелегального хардкор порно. работой начальник колонии обеспечит.
1289 2396344
>>396340
Звучит настолько банально, что небось уже весь рынок захвачен и поделён.
1290 2396347
Нахуй так жить? Почему мне не повезло со спавном.
1291 2396354
>>396347
Переедь.
image.png302 Кб, 774x551
1292 2396411
1293 2396825
так, уважаемые аноны гоферы, призываю вас на помощь.

я правильно понимаю что горутины легковесны из-за следующих факторов
1. context switch происходит не на уровне ОС а на уровне потока на котором крутятся горутины
2. за счет малого стека на 2 кб при запуске горутины

так? или я нифуя не понял?
1294 2396837
>>396825

>малого стека на 2 кб


Ну вообще от 2, а то и 4-ех вроде. ХЗ. А так по фактам
image.png18 Кб, 786x196
1295 2396846
>>396837
Для тебя выкопал анончег
1296 2397028
>>394614

>ты создаешь файлики


Гохеры, вы серьезно жрете это говно? Не ТЫ блять создаешь файлики, а фреймворк/либа это делает за тебя, и делает он это на основе схем моделей которые ты написал, и работаешь блять ты не с сырым sql и с моделями, и генерятся не просто sql-файлики а файлы миграции, в которых также по возможности имеется опция даунгрейда

Это делает любая нормальная система миграций в любом нормальном ЯПе, даже в Петухоне
1297 2397033
>>397028
Пиздец как толсто.

> любом нормальном ЯПе, даже в Петухоне


А не, всё встало на свои места.
image.png183 Кб, 380x380
1298 2397194
>>397028

>фреймворк это делает за тебя

1299 2397236
>>397028
Я блять кому буквально сообщением выше вот этим >>394414 рассказывал, что есть разные флоу работы со схемой базы? Тот, о котором ты говоришь, это первый ака orm'ный и он не лучше и не хуже прочих, просто у каждого из них свои особенности.
image.png26 Кб, 1034x312
1300 2398405
>>286748 (OP)

>когда нам завезут дженерики


Я чего-то не понимаю? Или вам буквально недавно завезли их?
1301 2398408
>>398405
Опхуй уже хуй знает сколько не обновляет шапку.
1302 2398437
>>398405
Пусть завозят красивые.
1303 2398592
>>398405
из-за голандопидоров их всё равно невозможно использовать

>ААААААААААА У МЕНЯ КРАСНЫЕ БУКОВКИ ИЗ-ЗА ЖЕНЕРИКОВ ААААААААААААААААААААА

1304 2398710
>>398592
Почему не liteide?
1305 2399379
Анонсы, через 2-3 месяца начинаю искать первую работу программистом, на Го. Информации для изучения у новичков очень много, прошу помочь отделить зерна от плевел. Что важно для первого места, что лучше освоить в процессе.

Что имеем:
ИМХО неплохо знаю базу и стандартную библиотеку (http, os, flag, IO, sync и проч.), Gin базово совсем, но, думаю, подразобраться будет не проблема. Не гнушаюсь лезть в исходники и разбирать устройство либ.
По concurrency активно испльзую Mutex/RWmutex, WaitGroup, один раз пришлось использовать Atomic. С каналами работал значительно меньше, но понимаю.
Из General:
Git (базово): clone, pull, commit, push
Linux: активно использую, терминала не боюсь, но без Баш-скриптов и хитрых пайпов.
SQL (базово): фильтрация, агрегация, простые join’ы

Что планирую подтягивать:
1. SQL, Postgres, MongoDB, правильная архитектура данных и проч. Стоит ли вообще в NoSQL на начальном этапе лезть (выглядит конечно поудобнее, но всем нужен СКЛ)
2. Архитектура веб-приложений, Gin (или лучше что-то другое?), DDD
3. Алгоритмы, Problem Solving (сейчас быстро решаю задачки уровня Easy, иногда получается Medium). Знаю в крупняке, где юзают Го алгоритмы любят.
4. Docker
5. Правильная организация тестирования и логирования.
6. Git

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

Знаю мнение здешнее, что на Го джуны не нужны, тем не менее вакансии периодически встречаю. Буду пробовать.
1306 2399447
>>399379
У меня тоже самое как у тебя анончег. Только на пару месяцев дольше изучаю. Могу посоветовать написать рест хуйню, прям конкретно прокачаешься во всем. Сам сделал чувствую себя ниибаца гейнием
1307 2399468
>>399447
Неплохой совет, надо бы, но писать очередной тудулист или "библиотеку" не интересно, да и не впечатлит никого особо. Вполне могут счесть за копипасту.
А достойный проект в голову не приходит. Либо что-то, где вообще не нужна БД, либо 1-2 хендлера.
Либо заумная херня, на которую желательно знать MQ, и как организовывать соответствующую архитектуру (еще один топик для изучения), писать 2-3 месяца и в итоге говно окажется, поскольку задачка не по скилу.
1308 2399484
>>399468
Да, рест хуйня будет промежуточным проектом сечешь? Я вот тоже думал что у меня будет максимум 3-4 чмоэндпоинтов но в итоге перевалило за 8, попробуй аля клин архитекчур реализовать, короче норм тема, за 1-2 недели норм тему сделаешь
1309 2399724
>>399379

>Gin


пока вы все гугляли с друзьями я учил хттп роутер
пока вы женились я учил хттп роутер
устроился @ на работе rpc
1310 2399730
>>395050
Если на собесе серьезно спизданешь что работаешь под виндой - тебя обольют смуззи и сразу переведут в чуханы
собрался быть бекендером - осваивай UNIX
1311 2399762
Я нихуя не понял. Ну ладно закончились M зеленых потоков, дальше-то что? Что значит "планировщик управляет распределением горутины по всем возможным потокам"? (пик 1)

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

И что значит рантайм го приостанавливает горутины при блоке и возобнавляет при разблокировке? Блокировке чего? (пик 2)

Кстати, что можете посоветовать в общем и целом по многопотоку, (native threads, green threads), но чтобы не оч дохуя по объему
1312 2399801
>>399762
плюсую этого анониса, опытные пчелы призываю вас на помощь по этим вопросам
1313 2399929
>>399762
Так же в тему добавлю вопрос
Имеет ли смысл запускать в гоурутинах bash скрипты? То бишь что-то вроде
go func () {cmd.Exec(....)} или даж с контекстом

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

Иными словами, делаем /get на какой-то /handler1 и надо еще на машине кое что запустить и желательно проконтроллировать, как это лучше реализовать?
1314 2400020
>>399762

>Ну ладно закончились M зеленых потоков, дальше-то что?


ну если программе больше нечего делать, то либо программа выходит, либо программа выходит с fatal error: no goroutines (main called runtime.Goexit) - deadlock!

>И что значит рантайм го приостанавливает горутины при блоке и возобнавляет при разблокировке? Блокировке чего? (пик 2)


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

>go func () {cmd.Exec(....)}


смысла нет. есть cmd.Start специально для этого. и вообще на каждый скрипт все равно новый процесс создается, так что экономия тут такая себе.
1315 2400161
>>400020
ок, понял, но вот чего не понял.
https://pkg.go.dev/os/exec#Cmd.Start
Чем тогда он отличается от https://pkg.go.dev/os/exec#CommandContext ?

С Контекстом я всего лишь могу чуть более гибко решить свою задачу выходит, В случае cmd.Start получается я могу уйти в бесконечное ожидание? Но в случае контекста я явно задаю условие
1316 2400203
>>400161
это разные вещи. CommandContext инициализирует команду, Start её запускает, Wait ждет завершения.
если ты про Command, то да, без контекста с отменой/таймаутом можешь навечно заблочиться пока yes печатает свои строчки. но команда без контекста тебе может пригодиться, если ты сам хочешь обработать отмену контекста и отправить sigterm вместо sigkill. тут уже CommandContext(context.Background, ...) или Command(...) на твой выбор.
1317 2400430
Аноны, как реализовать что-то типа DefaultContext. Например, для всех запросов определенного типа передавать контекст с таймаутом 5 секунд (нужный контекст передается в структуру). Наивно думал, что можно просто завести поле defaultContext и его передавать. Но, насколько я понимаю, контекст с таймаутом одноразовый, и отсчет начинается с времени создания.
Получается в структуре нужно заводить поле с конструктором контекста типа
type struct {
...
____DefaultCtx func()context.Context
}

или можно как-то более изящно?
1318 2400573
>>400430
Так и не понял, чего ты хочешь. Если нужен таймаут - ну бери его и указывай сразу где нужно. Если у тебя сервер, то можешь middleware с контекстом для нужных роутов прокинуть, теоретически.
1319 2400693
Аноны как пет проект пойдёт репозиторий с разными алгоритмами и их реализацией (как пример сортировка обычная сортировка слиянием, однобуферная, многопоточная и итеративная и т.д.)?
Хочу вкатиться на стажера, это вообще мне будет как + на собесе или это никому нахуй не нужно и никто на это смотреть не будет?
1320 2400795
Вкатываюсь в Go из джавы, очень нравится. Посоветуйте актуальную литературу для версии 1.18, пожалуйста. Желательно, чтобы было печатное издание на русском.
Книга из оп-поста "Язык программирования Go | Керниган Брайан У., Донован Алан А. А.", говорят, уже устарела.
1321 2400896
>>400795

>1.18


>на русском


>печатное


>для языка который от версии к версии практически не меняется, в который кроме контекста (за 5 минут можно разобраться), модулей (за 5 минут можно разобраться) и женериков (за 10 минут можно разобраться) ничего особо и не добавили

1322 2400977
>>400693
чет не звучит как пет проект, а как тупо репа чтобы гитхаб пустым не был уровня ответов к aoc/литкоду. если как либу оформишь с чем-то полезным вроде фильтра блума то мб.
1323 2401019
>>400977
Фильтр Блума, деревья, RMQ, LCA, алгоритмы поиска кратчайшего пути, ещё криптография скорее всего. Только если я нахуячу этого всегда там репозиторий оч большой будет, не заебно будет в теории даже для того, кто захочет этим воспользоваться?
1324 2401655
как лучше удалять множество элементов из слайса(слайс будет содержать тип []BigFKstruct{})?
1325 2401883
>>401655
поменять с последними элементами и обрезать слайс
1326 2403154
кто-то может пожалуйста объяснить, почему в треде так активно обсуждают джаву? го адекватный язык, от того что джава хуже\лучше го лучше не становится, или я чего-то не понял?
1327 2403155
>>403154
Поскреби гофера - найдёшь джависта.
1328 2403178
>>403154

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

1329 2403427
Анонче, ищу аналог https://pypi.org/project/python-crontab/2.6.0/ на гошку

Задача - динамически менять кронтаб от суперпользователя, но при этом мало добавить задачу, еще нужно удалить конкретную, поменять, что-то вроде круда только для кронтаба нужно сделать. Затык в том, что то, что должно выполняться доступно из под sudo crontab -e, от обычного пользователя не работает. Системный скрипт такой, так как еще интеграция с реальным миром, по вызову апишки го будет реагировать оборудование которое описано системными скриптами(этакая апишка, чтоб что-то сделать надо вызвать определенный скрипт или же подредактировать/добавить/удалить задачу в кронтаб через судошку)
image.png149 Кб, 1591x403
1330 2403439
1331 2403459
>>403427
Основной затык, что нужно делать все от супер пользователя, я хотел бы этот крон вообще в отдельный сервис вынести да и все, просто ничего не могу дельного найти относительно именно запуска с судошкой

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

Я хз, я б так ответил, но моя компетентность слаба, просто пишу проект для кабанчика, разгербаю что там навалили до меня и привожу в порядок, такое
1332 2403577
>>403439
А зачем в общем и целом делать слип, если нужно что-то проверять, если есть sync.Cord? Слип локает горутину и мы не можем ничего делать n секунд. Есть инфа от знающих?
1333 2403588
>>403577

>Слип локает горутину


Горутина нужна только чтобы выполнить 1 единственное действие. Если она его не выполняет, то пусть спит
1334 2403678
>>403588
ну типа в ней данные могут какие-то быть (и скорее всего будут), к которым нужно обращаться будет, во время слипа хуй сосать можно тока и не обратиться к ним
1335 2403813
>>403459
пишешь консольную утилиту для редактирования
даешь юзеру который крутит апишку nopasswd на эту утилиту
1336 2404630
Как поставить рантайм голанга в докеровский контейнер в целях разработ очки? Контейнер под вопросом требует ещё и питона в рантайме, а установка питона с пипом ручками - та ещё ёбля. Так что я за основу решил взять альпиновский питоновский образ и вставить в него голанг. Вроде как всё копируется и ставится вгетом и даже голанг лежит в /usr/local/go, но на первом go install падает с ошибкой "/bin/sh: go: not found". Мне именно рантайм нужен, а не бинарник собирать.
1337 2404654
>>397028
Нихуя жавадебила прорвало от сырых sql.

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


Даунгрейд тебе говнолиба не сможет гарантировать, так как его возможность зависит от структуры отдельной миграции. Так что даже даунгрейд нужно ручками писать, хотя если ты из этих, то можешь интерполировать в строчный литерал, лишь бы сырой sql не трогать.
1338 2404666
>>404654

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


Более чем в половине случаев - нет. Но когда нужно, этим можно озаботиться.
и да, даунгрейд делается тоже не через сырые запросы а через ORM
1339 2404674
>>404630
компилятор? /use/local у тебя в патхе? либо пофиксь патх, либо вызывай абсолютным путем
1340 2404781
>>404666

>Более чем в половине случаев - нет.


То есть почти в половине случаев всё равно ручками нужно писать.

>и да, даунгрейд делается тоже не через сырые запросы а через ORM


ORM будет занята n + 1 запросами, там не до миграций.
>>404674
Проблема в том, что питоновский образ тоже с патхом балуется:
https://github.com/docker-library/python/blob/b7c086e0d9ec53c7d7705f826efe2960d70b43e5/3.9/alpine3.16/Dockerfile#L10
https://github.com/docker-library/golang/blob/ad25ff18a6fcb732a2998c89424d00aa1acc2d31/1.18/alpine3.15/Dockerfile#L16
Я пробовал переобъявить патх как ENV PATH "/usr/local:usr/local/go/bin:$PATH", но не работает.
1341 2404884
Какие у вас петы на голанге? Чем на работе занимаетесь? Только конкретнее плз
1342 2404895
>>404884
Ненавижу goвно, пишу на нём исключительно ради деняк. Соответственно, никаких петов на нём.
Снимок экрана 2022-07-14 в 12.46.48.png48 Кб, 866x657
1343 2405114
Случайно обновил VsCode и появилась эта хуйня. Как они меня заебали своими погаными обновлениями, пользуюсь им так как не осилил nvim и в нем не работает нормально автокомплит.

Как убрать этот прямоугольник? Бо пиздец глаза режет, я даже тему менял, ничего не помогает, или как откатиться от обновления ?
1344 2405117
>>405114
хз че за прямоугольник. удали кеш/перезапусти без экстенжнов. если ты после обновления не все окна закрыл, то перезапусти все окна.
1345 2405162
>>404781

>ORM будет занята n + 1 запросами


Ебало гобляди, всерьез считающей что в ормках до сих пор ее не научились решать, представили?
1346 2405236
>>405162
Волшебные ОРМки знают по доступу к полю объекта, что надо делать fetchOne()/fetchMany() или fetchAny(), ага. Типичный мирок с ООП головного мозга.
1347 2405259
>>404781
Короче накостылил решение, которое по сути компилятор копирует из альпиновского образа и ставит нужные переменные в конечном образе:
https://gist.github.com/GabenGar/6540465da34a36feb80600c2e9ebaca2
1348 2405289
>>405117
Это я все делал. Удалось пофиксить только откатом вс кода на более старую версию, джсончик с настройками удалял, явно дело не в них. Не обновляйтесь с 1.69 пацаны, не рекомендую

Я просто хз, есть ли универсальная IDE от жидбрайнсов? Мне надо на пистоне писать, открывать юпитер ноутбуки, го, js , java желательно еще плюсы

Спасибо
1350 2406077
>>406070

>пук... на винде не работает.... пынямаете??

1351 2407894
Анонсы, а что вы в проектах для документации используете? Swagger(OpenAPI)?
1352 2408086
Решил для подготовки порешать тестовые. Вот от Авито.
https://github.com/avito-tech/adv-backend-trainee-assignment
Собственно возникли следующие вопросы:
1) Стоит ли тут следовать DDD/Clean Arch. или проверяющие сочтут за карго-культиста, на такую задачу CA разводить и плодить директории?
2) Сортировка + Пагинация. Какие должны быть интерфейсы для получения данных из базы? Насколько целесообразно реализовывать на сыром SQL? Выглядет ебовато. Как реализовать без ORM?
1353 2408105
>>408086
Просто делай мвс круд. Sql можешь в хранимые процедуры вынести(выколивать их из кода)
1354 2408121
>>408105

>МВС круд


Понимания, что такое MVC на бэкенде, да еще и с JSON API еще меньше. Я пока вонаби. Надо бы погуглить.

Спасибо!
1355 2408131
>>408105

>выколивать их из кода


Вот пока не могу придумать, как назвать функции.
Пока на ум приходит что-то типа этого, но выглядит всрато.
GetOrderByDate(context, descending bool, limit int, offset int) []Entity
GetOrderByPrice(context, descending bool, limit int, offset int) []Entity

limit и offset для пагинации.
1356 2408150
И еще один вопрос. Если я выбираю реляционную структуру, и мне надо хранить до 3 ссылок на фото товара, нормально ли делать такую схему?

CREATE TABLE IF NOT EXISTS advertisements(
id SERIAL PRIMARY KEY,
title VARCHAR(200),
price DECIMAL(15, 2),
description VARCHAR(1000),
photo_1 TEXT,
photo_2 TEXT,
photo_3 TEXT,

);
1357 2408169
>>408131
Нет, не нормально. Сделай доп таблицу (1 к m)
1358 2408172
>>408169
А если они упорядочены, добавить колонку с приоритетом?
1359 2408442
>>408150
Нет конечно же, для этого отдельную таблицу выделяют с сылкой на ключ основной таблицы.
1360 2408558
>>408150
мы бы возможно запихнули их в jsonb поле. в отдельную табличку должно быть тоже норм.
>>408131
тут похоже что колонку сортировки нужно передавать параметром, там же только одно слово после order by меняется в запросе.
>>408086
достаточно должно быть обычных репа+сервис+ручки+модельки без ДДД ебатории.
sql по классике у нас билдится руками в сервисе, часто даже без всяких squirrel. ормов тут ещё не видел.
1361 2409035
>>399762

Вообще чтобы понять основную идею отображения горутин на потоки необходимо первым делом снизойти на уровень системных вызовов операционной системы.
Вызовы бывают синхронные по типу (здесь перечислены функции на языке Си по UNIX-стандарту, аналогичные есть на винде) read, write, create, dup, dup2 и так далее. Синхронные они в том смысле, что основной поток исполнения блокируется до тех пор, пока эти функции не вернут результат. Допустим, ты читаешь файл и read "усыпит" твою программу, до тех пор пока не прочитается нужное количество байт.
Более гибкая, но запутывающая альтернатива -- это асинхронные вызовы по типу aio_read, aio_write. Их основная суть в том, что ты прокручиваешь цикл для выяснения происходящих событий - запись завершена, чтение завершено и т.д. При этом твоя программа не блокируется. В основном цикле ты можешь работать с разными вызовами и событиями

Как итог: горутины размазываются по тредам.
Когда тред определяет, что в горутине происходит асинхронный вызов, то он отправляет его на асинхронное исполнение и цепляет другую свободную горутину. При этом отдельным потоком (если я не ошибаюсь) запускается net poller который узнает статусы исполнения горутин. Если асинхронное исполнение завершено, то он возвращает горутину на поток обратно. Тоже самое неверно для синхронных вызовов. Если горутина использует синхронный вызов, то она никуда не отправляется и по сути пожирает один тред
1362 2409208
Вы хули тред не перекатываете? Сидите как джависты в легаси
1363 2409255
>>409208
Перекати.
image.png675 Кб, 1280x960
1364 2409256
>>409208
тред проще не перекатывать чем перекатывать
1365 2409343
>>408558

>запихнули их в jsonb поле


Так реляционка же? Если да, то тут нарушение нормальной формы, не

>тут похоже что колонку сортировки нужно передавать параметром, там же только одно слово после order by меняется в запросе.


И правда, спасибо!
1366 2409678
>>286748 (OP)

>Сейчас вб при подаче к ним на стажку просит вертеть деревья и решать задачи уровня яндекса на собесах.



Это правда?
1367 2409684
>>408086

>Авито


Ебало представили?
1368 2409688
>>409678
Это везде так, даже на фронте от макак требуют верчения деревьев.
1369 2409761
>>409255
Все за вас нужно делать мимо rust бэк, предыдущий тоже я перекатывал
изображение.png53 Кб, 234x215
1370 2409762
1371 2409769
>>409343

>Так реляционка же? Если да, то тут нарушение нормальной формы, не


в тестовом может это и интересно, что ты знаешь джойны и как нормализовать БД (в комменте вполне можно обосновать почему ты решил денормализовать), но ИРЛ никому нахуй не нужна нормальная форма, если она не дает никакой выгоды и из-за неё приходится усложнять запросы агрегатными функциями/джойнами/дополнительными запросами. если у картинок нихуя нет дополнительных свойств, у тебя появляется какая-то странная колонка для порядка картинок, которую хз как обновлять при добавлении/удалении картинки из середины, и тебе нахуй не никогда не нужно будет картинки выбирать отдельно от объявления, то мне кажется это валидный кейс для денормализации.
Тред утонул или удален.
Это копия, сохраненная 5 августа 2022 года.

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

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