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

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

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

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

Прошлый тред:
>>2972146 (OP)
Source Code.jpeg106 Кб, 736x738
2 2996984
Ну, желаю, чтобы все!
3 2996987
Ну чë, когда их добавят?
4 2997020
Не хейтер, но хуже энтерпрайз/веб говна чем на го ещё не видел:
1. Тяжело читать тонны простогобойлерплейт кода, большой проект на джаве/шарпе переварить в разы проще.
2. Васяны с ооп бэком тащат его в го, причем дохуя.
3. Никакого DI, тупо дрилинг аргументов вниз не отрицаю принадлежность этой фичи к ооп и рефлексии, но как шейрить что то глобальное адекватно?
4. go.mod это пиздец
5. Кодогенерация типов/енумов это пиздец
6. Нестабильная экосистема
7. Проябывает в перформансе расту, шарп уже на пятки ссыт
8. Нативный компилинг? Та же джава и шарп уже ссут не на пятки а в харю.
9. В ооп хотя бы завернуть сложность можно, а тут композиция не выглядит мощной и удобной альтернативой
10. Дженерики только недавно добавили, какого хуя их изначально не было? И учитывая парадигму го, они нужны или мейнтейнеры прогнулись под всхлипы смузихлёбов?

Ещё до кучи вопросов есть, заебало писать.
Объясните смысл этого говна в вебсервисах, кто блять сказал что это хорошая идея? Или кидайте хороший примеркод/проект, а то вижу одно говно.

Гугл делали его для себя, неужели призрачная легкость и компилирование нативного бинарника хватает что бы залетать на рынок и срать в уши? Тупо ебут своими горутинами память вместо проца, тк плашки с оперативкой в серверах менять проще чем проц. А дауны сидят и с довольным ебалом слюни пускают.
,
5 2997022
>>2997020
Я вот тоже задаюсь примерно такими вопросами.
Один из вариантов ответа - оно успело устареть, так толком и не развившись. Потому, что было основано на старых наработках, и реализовано пенсионерами. Т.е. 10 лет назад это всё было (вроде как) стильно модно молодёжно, а потом хуяк, и всё. Так бывает.

И тоже потихоньку склоняюсь в пользу джавы, в смысле - не перекатываться.

Хотя, вот для CLI-утилит оно совсем даже не плохо. Самодостаточных, или если важна скорость/конкурентность/низкое потребление памяти. Сервисы писать - милое дело. Как замена Си в очень многих случаях, если это не настоящее системное программирование. Но, для бизнес-приложений (aka энтерпрайз) оно не годится совершенно, тут и обсуждать нечего. Ибо там абстракции решают.

И я совершенно не жалею, что потратил на это время. И, возможно, из этого ещё выйдет профит.
6 2997023
>>2997020

>ебут своими горутинами память вместо проца,


Нет, это не так. Ебут именно проц. Память потребляется по минимуму.
В этом и смысл.
7 2997024
>>2997022

>Сервисы писать


Я имел в виду системные сервисы, конечно.
8 2997424
>>2997020

>не хейтер


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


это ты блять буквально из существующих дженериков высосал предъяву что их раньше не было?

>Гугл делали его для себя


значит другим нельзя пользоваться или что?

>с довольным ебалом слюни пускают.


в чем проблема когда люди довольны работать на гошке?

в целом не понимаю мотивацию этого высера
9 2997438
>>2997023
Если следовать законам физики, то го не может быстро работать. Его бинарник слишком большой для того, чтобы уместиться в память. Горутины отжирают гигабайты памяти https://pkolaczk.github.io/memory-consumption-of-async/, а ГЦ занимает 100% процессорного времени. Только вот го об этом не знает — летает себе и всё тут.
10 2997566
>>2997438
Что-то странное он там намерял в конце.
Вообще, тест странный, т.к. без данных о реально выполненной этими потоками работе - это фуфло. И вообще, как-то маловато там подробностей.
11 2997835
>>2997020

>go.mod это пиздец


А в чём именно пиздец, по-твоему?
12 2997880
>>2997566
Какой язык такой и тест
13 2997948
>>2997880
Если бы ты не был таким тупым, то сходил бы по ссылке и посмотрел, о чём вообще речь. И не писал бы хуйню.
14 2998092
>>2997566

> Вообще, тест странный, т.к. без данных о реально выполненной этими потоками работе - это фуфло


Там же написано что просто слипались на 10 секунд. Подозреваю что отвратительный результат у го связан в первую очередь с использованием time.Sleep вместо специально сделанных для потоков таймеров
15 2998099
>>2998092
Вот и я о том же.
Тест на многопоточность без реальной работы потоков - это просто бессмысленная хуита.
По сути = это у него тест эффективности реализации sleep в разных языках, лол.
16 2998199
>>2998092
>>2997566
проблема не в эффективности time.Sleep. проблему гошки (а точнее особенность, т.к. тест действительно хуйня и для рил лайф малорепрезентативен) в комментах описали - на каждую горутину аллоцируется 2КБ стек. от того, что там в time.Sleep происходит, мало что поменяется.

какая-нибудь таска в однопоточном языке с ивентлупом не будет столько отжирать, такое загнется по другой причине.
17 2998273
>>2998199
Ну и нормально, 2 кб это ни о чём вообще.
Это рассчитано на реальные задачи, а не на красивые циферки говнотестов.
Там ещё интересно, что у горутин стек растёт до упора вообще, что позволяет делать рекурсию любой разумной глубины, например.
олегкозырев.jpg66 Кб, 586x567
18 2999213
Кого он отыгрывает?
19 2999438
>>2999213
Интереснее другое - зачем надувают весь этот инфоцыганский стильно-модно-молодёжный хайп вокруг нишевого языка с высоким порогом вхождения?
И с маленьким количеством вакансий, а для стажёров/джунов - просто вообще без?
Какова цель вот этого вот всего?
20 2999446
>>2999438
Добавлю - у этих видео десятки тысяч просмотров.
Я не думаю, что есть столько русскоязычных молодых людей, которые могли бы программировать на Го, и которые хотели бы смотреть всю ту чушь, которую эти инфоцыгане транслируют.

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

Вопрос - кто и зачем это смотрит?
21 2999473
>>2999446

>есть столько русскоязычных молодых людей


Дак смотрят те, кто хочет стать программистом и получать 300к/сек, а не те, кто уже программирует.
22 2999490
>>2999438

>Интереснее другое - зачем надувают весь этот инфоцыганский стильно-модно-молодёжный хайп вокруг нишевого языка с высоким порогом вхождения?


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

Смотри вакансии и требования в них.
23 2999501
>>2999490
Ох, сынок, ещё бы ты понимал, кому ты это пишешь, лол.
24 2999506
>>2999473
Ну, совсем левым людям такое смотреть просто не интересно.
Несмотря на желание получать 300KK/ns.
Может пыхобляди смотрят?
25 2999545
>>2999446
вкатуны, студентики, шарписты, джависты. в общем помои общества
26 2999619
>>2999545
Ну, с помоями понятно.
А на чём у нас пишут элитарии?
27 2999634
>>2999619
на договорах
28 2999651
>>2999634
На стенах, ты хотел сказать?
29 2999682
>>2999651
можно и так сказать
30 2999961
>>2999501

>ещё бы ты понимал, кому ты это пишешь


Долбоёбу
16270418508350.jpg242 Кб, 811x486
31 2999968
>>2999506

>Может пыхобляди смотрят?


Так и есть, лол. Люди сидят-пердят на своей пыхе/шарпах/питоне лет 5, а потом натыкаются на видос и идут слать резюме на гоферские вакансии, даже не удосужившись прочитать пару статей или хотя бы пройти тур по го. И ведь не краснеют, когда рисуют себе опыт по 5+ лет в хайлоаде с микросервисами, наебывая этим хрюш, а потом по полчаса хвалятся опытом на техсобесе и сыпятся на первом же джуновском вопросе про структуру слайсавам смешно, а я каждый раз охуеваю
Хуже волков, чесслово. Те хоть как-то готовятся к собеседованиям и прорабатывают тему, а эти тупо пытаются на понт взять и по-братски пустить поучиться покодить на модном языке с 300к зепкой и лычкой сеньки.
32 3000072
>>2999968
Лол, вот же шакалы.
Но, это не даёт ответа на другую часть вопроса - зачем такое кино снимают в таких количествах?

Просто жажда личной популярности? Как-то сомнительно. Слишком много этого стало. И все они гордо представляются от имени своих работодателей, играют в собеседования и т.п. Что наводит на мысль, что работодатели и платят за шоу.
Будь оно иначе - это были бы видосы про программирование (которые смотрело бы 1.5 человека), а не про то, как пролезть к кормушке. Ну кому нужны конкуренты, в самом деле?

И везде актёры представляются бывшими пыхоблядями, и прочим днищем. Т.е. они как бы говорят зрителю - видишь, мы - такое же быдло, как и ты. Мы просто пришли, рассказали сказку и теперь имеем 300KK/ns. И ты тоже сможешь пролезть - язык простой, делать нихуя не надо, просто получай деньги, еби гусей, будь счастлив.

Очень напоминает найм девушек на работу за границу в 90-е.
Без интима, разумеется, ну как вы могли такое подумать?
33 3000092
>>2999968
Ловите наркомана. По твоему, хайлоад бывает только на говняшке? Если ты такой дохуя эксперт по теме, так спроси, чем плох jwt токен и почему медиатор - это антипаттерн, а не душни хуйней про внутренности языка. Спроси еще про сборку мусора, блеать, будет классика епама.
Вангую в тебе чмоню мидла с двумя годами опыта, который наконец-то дорвался до собесов и теперь УТВЕРЖДАЕТСЯ.
34 3000161
>>2999968
Это случайно не ты с такими смешными усиками?
35 3000164
>>3000092

>спроси, чем плох jwt токен и почему медиатор - это антипаттерн


не тот анон, но про это на отдельной секции поебут. а на секции по го ебут по го, регламенты такие. не у компании цели каждого вкатуна брать. да и наберешь ебанатов - тебе же с ними потом работать. к слову, самое главное это практические задачки. если челик их может решить, то про самые основы вроде слайсов/мап у 90% нет проблем ответить.
36 3000173
>>2999438

>хайп вокруг нишевого языка


Москва, вакансии отфильтрованны по названию и выкинут небэкенд
Go - 515
C# - 495
PHP - 504
Очень нишевый язык! Я запрещаю вам писать круды!
37 3000177
>>2999968
А без опыта вообще реально попасть на собес?
38 3000183
>>3000173
Из этих 515 вакансий 90% требуют опыт от 5 лет, причем, пять лет именно кодинга на го. По остальным хрюши имитируют бурную деятельность и собирают базу, человек на самом деле не нужен. Если на другие языки берут всех, от ждуна до лида, и можно вкатиться, то на го нужны только сеньки.
39 3000199
>>3000183
Ещё поди офис, а не удалёнка и провинциалам вообще нет шансов вкатиться
40 3000375
Вот, кстати, отличный образец того, что называется днище ёбаное.
Особенно понравилось про бинарное тело.
Которое можно лучше сжать.
И это программисты, блядь, вообще охуеть.
https://www.youtube.com/shorts/RG-DLbmsr3A

У меня такое кино совершенно отбивает желание становиться одним из этих людей. Это просто себя не уважать.
41 3000463
>>3000092
А чем плох jwt?
42 3000546
>>3000463
Логаут юзеру не сделаешь просто так, токен считается валидным, пока у него не истечет время годности. Приходится хранить список всех активных токенов, что убивает всю идею. По сути, мы имеем обычную куку, только большего размера, с возможными дырами в безопасности и для проверки которой надо напрячь процессор, а потом все равно пойти в редис и посмотреть, а жива ли сессия. Designed by Google, directed by Robert Weide.
43 3000578
>>3000375
Козырев, Тузов... просматривается некая система.
Бубнова или Валетова у них там нет?
44 3000611
>>3000546

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


Время токена устанавливается на несколько минут. Если требуется выполнить операцию на сервисеВ, а токен протух, то идешь в сервисА за новым токеном, делаешь хуйню в сервисеВ. Имея два токена, можешь ходить в сервисВ и сервисЦ.
Если бизнес хочет точности отзыва токена (секунда в секунду), то можно это устроить, используя очередь сообщений.

> Приходится хранить список всех активных токенов, что убивает всю идею.


Не надо. Нужно хранить только таблицу юзеров с его данными. По его ИД отзываешь.

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


Размер, да, есть. А с чем сравнение делаешь?

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


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

> и для проверки которой надо напрячь процессор, а потом все равно пойти в редис и посмотреть, а жива ли сессия. Designed by Google, directed by Robert Weide.


Какая сессия-то? Ты просто подписываешь ИД юзера и дату хождения нахуй, генеришь строку.
45 3000785
>>3000546
Есть oauth для таких штук с аксес и рефреш.
46 3000837
>>3000578
— Девушка, а вы в очко играть умеете?
— Умею, умею...
— А в преферанс?
— А это куда?!
47 3001291
>>2996967 (OP)
>>2997020
Я начинающий кодер, вот недавно получил свой первый офер на го вакансию в финтехе, на данный момент около полутора месяцев на испытательном сроке, на го кодить начал сравнительно недавно, около полугода назад, до этого изучал год джаву(и до этого еще пол года шарпы), но конкуренция там бешаная, наверное раз 7 мне отказали с учетом траты времени на выполнения тестовых задач и собесов, на го было меньше конкуренции, отчего сильно обрадовался.

Но после прочтения твоего поста(первый раз зашел почитать треды, не бом бом как это называется), возникло неосознанное ощущение, что так и есть(есть едва уловимое рациональное объяснение, что большого проекта не напишешь), соответственно есть вопрос, а можно ли вырасти в отличного программиста, продолжая кодить на го? Ну то есть не получится ли так, что спустя время мой потолок будет что-то типо перкладывания джисонов?
Если не получится, то есть ли варианты, переката на джаву или шарпы после получения определенного кол-ва опыта в конторах?
48 3001317
>>3001291
Если ты хочешь вырасти как программист - Го вообще не вариант.
Я просто не представляю, что на нём может написать человек без опыта программирования на других языках. Дичайшую хуйню, разве что.
Удивительно не то, что джунов не нанимают на Го.
Удивительно, что иногда их таки берут.
sage 49 3001324
>>3001291
Поздравляю. Первая часть твоего поста воодушевляющая. А во второй ты скатился и начал ныть.

Хватит ассоциировать свой успех или неудачу с конкретным языком программирования. Хороший программист он таким и остаётся вне зависимости от языка. Это просто блять инструмент. Ты можешь хоть 10 языков знать и использовать. Если завтра go исчезнет, от этого никакой трагедии не случится. Программирование есть, было и будет. Что ты вложишь в это слово, зависит только от тебя. Если ты считаешь что программирование перекладыванием джейсонов, значит ты такой и есть. Проблема в тебе. Рукожопам всегда что-то мешает, то гены не такие, то страна не такая, то язык не такой, то работодатель не такой, ну и так далее.

Ну то есть, это не проблема языка, что тебе дают такую работу. Если у дворника скучная работа, то проблема в метле что ли? Логика пиздец.
50 3001330
>>3001324
Вообще я даже не задумывал логику, что мне просто досталась работа следовательно нишевая область, просто по заверениям поста - проекты не могут быть грандиозными и го , это что-то типо пхп, я бы просто не хотел тратить время на что-то неперспективное, я конечно не отрицаю, что есть замечательные программисты на пхп, но хотелось начать с фальшстартом, а не с калом в руках
51 3001331
>>3001291
конечно упрешься в потолок. вот в шарпах и джаве можно бесконечно надрачивать на ООП, паттерны и тюнить ГЦ жвм, чтобы перекладывать жсоны более эффективно. конечно для эмбеддед/графики/системки у тебя все названные языки хуевые и ничего не другого не светит. да и дальше сеньора не уедешь, т.к. там уже мало играет роли количество заюзанных паттернов на строчку кода, но зато будешь бесконечно расти в отличного программиста.
52 3001333
>>3001317
Хм, ну я предварительно еще делал 3 месяца боевой проект на стаже за бесплатно, так что мне не кажется удивительным мое избрание, хотя ситуация на рынке России печальная, складывается ощущение, что единственный вариант для контор, как восполнить дефицит кадров - это учить собственных
53 3001336
>>3001330
что для тебя грандиозный проект?
54 3001345
>>3001336
Хм ну точного определения я не могу дать, кажется из-за нехватки опыта, но могу сказать, что должно быть в грандиозном проекте: решание тасок, проектирование заставляет двигаться извилины, прям что-то наподобие чтения доказательв из высшей алгебры
55 3001354
>>3001345
Допустим решая на данный момент задачи на го, которые мне ставят , мне конечно тяжело, но 80% времени мне кажется я занимаюсь рутиной, написанием кода(именно писаниной), тесты и коменты
frame-480959451692082747.jpg182 Кб, 1500x667
sage 56 3001360
>>3001330

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


Кто это говорит? Ноунейм из интернета? С таким же успехом можно подойти к любой бабке на улице и спросить что она думает по поводу будущего golang'а. Это просто чьё-то мнение. Чем он это обосновывает? Тем, что сам язык ограничен? А ты дошёл до потолочка возможностей языка, чтобы так говорить? Уверен, ты ещё даже 5 процентов возможностей языка не исчерпал. У тебя ещё ёбанная бездна для роста. Я не знаю кто так говорит. Но я вижу что go используют paypal, google, uber, twitch, cloudflare, capital one, twitter, microsoft. Если бы был хуёвый язык, стали бы они его использовать? А мнение кукаретников мне до пизды. Пусть кукаретники вначале представятся - кто они, откуда взялись и какие у них заслуги. Я тоже могу чё-нибудь пукнуть, а-ля через год всё программирование накроется медным тазом. А ты теперь докажи, что не накроется!
57 3001374
>>3001360
Да ты прав, вероятно я просто с ничего решил покрутить комок мыслей, как столкнусь с рутиной и невозможностью роста, так и буду решать данный вопрос
sage 58 3001410
>>3001374

>невозможностью роста


Блять для тебя это вообще не актуально. У тебя в любом отношении гигантские, просто невъебанные возможности для роста. Невозможность роста среди программистов обычно понимается как "зарплатная невозможность роста". Это когда ты 10 лет в отрасли, а у тебя зарплата не растёт. Тебе рано задумываться над такими вещами. Ты и так в финтехе работаешь, в относительно жирной малоконкурентной нише. Чё тебе ещё собака надо. Тебя надо отвести на экскурсию в НИИ, чтобы ты маленько посмотрел как работают программисты С++/embedded и сравнил с тем что есть у тебя сейчас.

Тебе грех ныть. Каждый раз когда ты ноешь, должно раскрываться небо и боженька должен тебя пиздить молнией.
59 3001419
>>3001345
так тут дело в тематике твоей конторы. у джавы/шарпа/гошки - 99% контор жсономешалки. свичайся - не свичайся, соотношение примерно одинаковое. в графике/хардовом эмбедеде/МЛ матеша была бы, но там и другие языки.
а на бэкенде формулы максимум уровня посчитать расстояние от lat1/lon1 к lat2/lon2 с учетом кривизны Земли. может, у отдельных команд будет что-то похардовее, но обычно сложные задачи это либо дроч на оптимизацию, либо архитектурный дроч, где тебе нужно придумать план на год вперед и убедить несколько команд что твои идеи охуенные.
60 3001423
>>3001410
Хаха, обнадежил - спасибо, ну я поэтому и пошел кодить что-то не связанное с матешей, потому что в нии нереально душат за гроши, у меня как раз диплом сейчас в кафедре кибернетики
61 3001436
>>3001419
Честно говоря, в финтехе computer sciencами и не пахнет, максимум с чем мне приходилось пока работать, это с криптографией и то там не нужно было разбираться в устройстве конкретного метода, так как в пакетах уже все написано
Хотелось бы что бы был сайнсы ваши, но не так много как например в исследовании операций
sage 62 3001438
>>3001423
Короче, у тебя пока ещё поводов переживать нету. Придёшь годика через 2-3. Сейчас это просто надуманные страхи в твоей голове и не более того.
63 3001482
>>3001436
ну большинство работок это и есть просто software engineering с элементами computer science. можешь компенисировать это NIH синдромом и писать все заново, но лучше не надо.
64 3001665
>>3001333

>3 месяца


Дружище, я тебе открою маленький секрет.
Чтобы научиться программировать - нужно примерно 10 лет.
Об этом ещё Эрик Реймонд кто это? как-то написал хорошее эссе.
Это не говоря уже о том, что таким вещам учатся всю жизнь.
65 3001689
>>3001374

>как столкнусь с рутиной и невозможностью роста


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

Например, в интернетах есть книжка "Functional Programming for the Object-Oriented Programmer", https://leanpub.com/fp-oo
Там на языке Clojure (лисп для jvm) пишут с нуля объектно-ориентированную систему. Я гарантирую, что после такого опыта ты станешь гораздо более лучшим программистом. Или после прочтения Functional Programming In Scala. Или после Functional Reactive Programming (это не для слабонервных).

Если хочется чего-то не столь хардкорного - то, например, React.
Там вполне себе такое практичное FP в полный рост. И вообще на JS сейчас достаточно много продвинутых техник программирования - язык позволяет.
Есть, кстати, хорошая книжка Composing Software, Эрика Эллиота:
https://scanlibs.com/composing-software-exploration-programming/
66 3001894
>>3000611
Ты не понял. Суть токена была в том, что тебе не надо ходить куда-то еще для проверки, достаточно самого токена и статик ключа. Можно запустить хоть тысячу серверов для авторизации и все они будут работать параллельно, не мешаяя друг другу. Как только у тебя появляется внешнее хранилище, куда твои сервера должны сходить, начинаются гонки и вся идея идет по пизде.
Когда ты получаешь от клиента session cookie, ты по этой куки идешь в редис и смотришь, есть ли сессия по такому ключу. Когда ты получаешь токен, ты сначала ебешь CPU, а потому все равно идешь в редис ну ты понел. Плюс, гоняешь дополнительный трафик по сети, который тоже стоит денег. В итоге в профите только продавцы облаков, ты им больше закидываешь бабла, а для тебя толку ноль.
Сессия - это не только юзер айди, сам по себе он бесполезен. Надо, как минимум, хранить список ролей, чтобы стажен охранник не имел доступа к данным главбуха.
67 3001901
>>3001291
Офис или удалёнка?
68 3001908
>>3001901
Офис
69 3001910
>>3001665
Вообще я занимаюсь программированием около лет 5-6, начинал я еще школьником, батя мне тогда микропроцессоры дал и заставил что-то делать, писал я на чистом C, платы были msp430 вроде, но именно нормальный рости и изучение началось месяцев 6-12 назад
70 3001911
>>3001908
Везёт москвичам...
71 3001913
>>3001911
Эх, я не москвич, в сибе мотаюсь от офиса до универа по 30 минут, ноги уже как у проф. специалиста
72 3001915
>>3001913
Я из своей деревни по 3 часа добирался до универа в ближайшем миллионике, а вечером обратно. Оставалось время только поспать.
Если бы не мой адрес проживания, то давно бы уже вкатился в программисты. Сейчас вот хочу на удалёнку попробовать, но походу шансов нет.
73 3001918
>>3001915
Хз, по ощущениям все как будто топят за удаленку и более менее компании - ее предоставляют, у меня в целом время в офисе никак не контролируется, я могу че хочу делать, но именно что бы удаленку получить , наверное надо просто стать опытным, а так я думаю ты можешь пойти на что-то типо удаленной практики с дальнейшим устройством, например контора aston devs занимается таким, там легкий собес на практику довольно таки, но вилки конечно печальные, практика бесплатная - 3 месяца, потом ты получаешь джуна-1 - 53 к в мес вроде, рост раз в полгода + еще ты подписывает галерский контракт на то что ты должен после практики около полуторагода отработать, я поэтому и отказался
74 3001919
75 3001926
>>3001689
Ну для улучшения навыков в программировании, слишком много тропов импрува, область такая, что нужно выстраивать идеальный путь из материала, так его количество огромно и при этом все быстро устаревает и т.д.. Именно про функциональное программирование: насколько я знаю, изучение данной темы мне поможет делать более эффективные stateless программы, но вообще еще в школе я несколько раз посещал курсы F# - функциональный язык, показалась какая-то шляпа, ход мысли конечно преображается , но прикладная составляющая крайне мала
76 3002154
>>3001926

>F# - функциональный язык


Это - Микрософт, прежде всего. Т.е., ненужная хуета.

>прикладная составляющая крайне мала


Я уже привёл в пример Реакт.
И вообще современный JS - это очень много практичного ФП. Потому, что JS - это Scheme с сишным синтаксисом, лол.
Но, главное в том, что это меняет ход мыслей, и ты начинаешь иначе видеть задачу.
И делать такие вещи, которых ты не сделал бы без знакомства с ФП.

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

> микропроцессоры


Это большое дело. Бате - респект.
А если ты ещё и осциллографом тыкал во всё это - так вообще.

Цифровая электроника, микропроцессоры, низкоуровневое программирование - это те вещи, которые очень много дают даже если ты потом пишешь на джаваскрипте. Это меняет сознание, и даёт такую интуицию, которой просто не может быть у васяна, учившегося на пыхе. Или у эдуарда, учившегося в матшколе.
78 3002176
>>3002165
Осцилограф тыкал, батя работы принес, помойму нужно было в определенном порядке построить положительный сигнал на выход к двигателю, мой батя даже мне экзаменационную работу дал за 5к, правда от денег я отказался, а так да низкоуровневая херня сильно вправляет мозги, микропоцессоры меня сильно не заинтересовали - еще зелен был, но потом начал на с++ дрочить компетитив задачи, и из-за того что много работал с регистрами в микропроцессорах, предпочитал писать алгоритмы с адрессной арифметикой, как -то так
79 3002180
>>3002154
Хз насчет реакта, писал маленький сервер на нем для мини приложения вк, в целом не очень отношусь в динамической типизации, потому что мозг заплывает и в овоща превращаешься, вывел это из опыта написания мл на пайтоне, из-за того что с базой не разобрался, но при этом все работало, получалось крайне не оптимизированные модели - кал полный
80 3002184
>>3002180
Кстати а насчет промисов и монадов, звучит круто, в джаве немного читал реактивную либу, но максимум работал со стримами в джаве, кстати очень понравилось, но тут уже на любителя
81 3002191
>>3002180

>маленький сервер на нем


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

Динамическая типизацация - да, это кал. Поэтому я, по возможности, использую Typescript для фронтенда. Но, при должной дисциплине и наличии хорошей IDE - можно и на JS - типы можно прописывать в комментариях JSDoc, примерно, как type hints в питоне.
82 3002194
>>3002191
Ну да, сервер был на ноде, но джонсоны отдавал в реакт(конечно сомнительный опыт...), если бы не апи вк, который требует нода, то написал бы на чем-нибудь другом, думаю это можно, но просто более запарно
83 3002196
>>3002184
Есть книжка Functional Programming in Java. Очень рекомендую.
Она больше теоретическая, т.е. не про стримы, а про фп подходы вообще. Но для повышения квалификации, если пишешь на джаве - очень даже. И, во многом, она лучше, чем знаменитая FP in Scala. Для примера - там описано, каким способом можно на джаве делать хвостовую рекурсию (TCO/TCE) да, через жопу, но, тут важен сам подход..
Но, надо понимать, что это не для начинающих.
84 3002197
>>3002196
Не соменваюсь что книжка классная, но сейчас пишу на го, раньше пытался пробиться на джаве, но конкуренция душит сильно, да и список литературы не убавляется совесем, на данный момент мне бы закончить читать чистую архитектуру и компьютерные сети Олифера
85 3002206
>>3002197
Кстати, возможно с джавой дело не в конкуренции, просто перед переходом на го, решил писать в nvim, в итоге втянулся и просто понравилось, что все понятно в отличие от джавы и ее DI - все под капотом, ничего не понятно, недавно даже с одногруппником решили проект запилить, ну и бек на джаве сделать, так как появлялись ошибки, логи просто убогие, ничего не понятно, в том же го с открытыми пакетами и go to definition, почти моментально становиться понятно в чем проблема
image.png2 Мб, 1024x1024
86 3002236
>>3001360

>Но я вижу что go используют paypal, google, uber, twitch, cloudflare, capital one, twitter, microsoft. Если бы был хуёвый язык, стали бы они его использовать?

87 3002243
>>3001894

>Когда ты получаешь от клиента session cookie, ты по этой куки идешь в редис и смотришь, есть ли сессия по такому ключу. Когда ты получаешь токен, ты сначала ебешь CPU, а потому все равно идешь в редис ну ты понел


Чел, ты просто нихера не понимаешь как надо использовать JWT.
1. Если у тебя проверка JWT это нагрузка на CPU, это значит что пришло время обновить свой Pentium 4.
2. JWT кука экспайрится когда экспайрится, всё! Ни в какой Redis, не надо, вот вообще не надо, совсем. Даже на минуточку, только спросить. Если ты начинаешь прикручивать Redis, то ты долбоёб который не разобрался в технологии.

JWT логаут работает с задеркой в TTL JWT токена. Всё! Прими это как данность. Если в твоем магазине дилдаков нужно логаутить пользователя в течении 63 мсек, то тебе просто неподходит JWT.

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


Я в принципе ожидал, что ты нихера не разобрался, но настолько это прям вообще.
88 3002291
>>3002206
Да, есть такое дело.
Собственно, Го этим и привлекает - доступностью. При всех своих недостатках.
Под "доступностью" я имею в виду не какую-то лёгкость программирования, а сочетание очень многих факторов, лень расписывать сейчас.
89 3002428
Стоит ли в начале поработать на других языках, а потом перекатываться в го?
90 3002436
>>3002243
Так бы сразу и сказал, что ты джун после курсов. Ты даже не понял, что я написал.
91 3002456
>>3002436
По сути есть что возразить?
92 3002457
>>3002428
На го зарплаты такие же, как и на других языках. Литерали нет смысла учить эту хуиту и проходить собесы, чтобы в итоге получить столько же. Или даже меньше, ведь это илитный язык для особенных на нем в хухле пишут.
93 3002492
>>3002436
Ну так то чел прав, а зачем прикручивать какой-то сторадж, ака сессию с JWT, какой смысл затрачивать дополнительно время ЦП, если ты не освободил от ебки с сессиями в памяти?
94 3002562
>>3002457
А мне нравится язык и хотел бы на нём работать, но боюсь, что меня не возьмут из-за отсутствия опыта.
95 3002667
Наслушался долбоебов на прошлой работе, мол язык охуенчик, много платят, много где используется, работать на нем - одно удовольствие. Решил глянуть, че за язык такой восторг у этих анальников вызвал, и чето прихуел. Это же говнище ебаное, попытка родить что-то близкое к православному Си, но для откровенных клинических дебилов.
Короче, нахуй, язык для даунов
96 3002690
>>3002667
Зато у го нет прожорливой виртуальной машины и сервисы не весят сотни мегабайт. Этого уже достаточно чтобы язык был неплохим.
97 3002698
>>3002690

>Зато у го нет прожорливой виртуальной машины


Зато есть жырный рантайм.

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


Еще как весят.
98 3002971
>>3001360

> Но я вижу что go используют paypal, google, uber, twitch, cloudflare, capital one, twitter, microsoft. Если бы был хуёвый язык, стали бы они его использовать?



Во первых, ты так уверен что будешь работать в этих фирмах?
Во вторых, сельский интернет-магазин имеет такой же трафик как в этих фирмах?
99 3003135
>>3002698
Нет. Сервисы на го кушают меньше чем JVM, и докер образы мелкие, особенно если бинарь в скратч завернуть.
100 3003158
Можно ли пользоваться chi?
101 3003182
>>3002492
Ты поставил время жизни токена 1 минута. Через 63 секунды от пользователя приходит запрос с устаревшим на 3 секунды токеном. Твои действия?
102 3003190
>>3003182
Посылаем нах
sage 103 3003227
>>3002971
Это не проблема самого языка. Если где-то каких-то работ нет, нужно спрашивать с работодателей. Не язык виноват, что он не создал рабочие места. А почему они не создали - боялись, подумали "а вдруг чо", не знали или ещё какая причина - это уже вопрос другой. Чисто технических причин тут нет. Это больше к психологу.
104 3003345
>>3003227
Получается без опыта на удалёнку не устроится?
105 3003376
>>3003345
Только если контора целенаправленно нанимает людей без опыта на удалёнку. Такое бывает, сам несколько раз видел на hh. В таком случае подразумевается, что их будут учить.
Но, вряд-ли там будет Го.

Вообще, без опыта лучше пойти в офис, если есть возможность. Толку будет в разы больше.
106 3003380
>>3003376
А если самому хорошо выучиться? Тогда возьмут?
image.png784 Кб, 1024x683
107 3003381
>>3003182
Ты вообще не отдупляешь базовые вещи про JWT, но зачем то лезешь со своими охуенно ценным мнением.
Если приходит запрос с устаревшим токеном, посылаешь рефрешить его. А уже в сервисе рефреша можно принудительно экспайрить сессии.
sage 108 3003428
>>3003345
Бля, я не знаю, устроишься ты или не устроишься. Это зависит от работодателя. Но если так говорить, то получится самосбывающееся пророчество. Потом будешь "а я же говорил" твердить. Всё зависит от того, нужны ли конкретному работодателю удалённые работники. И от твоей дисциплины. Может ты будешь по 5 минут в день работать, хуй тебя знает.
109 3003463
>>3003381
Надо рефрешить или юзер отозвал этот токен и надо вернуть 403?
Сложные вопросы, да джун, это тебе не литкод дрочить.
110 3003484
>>3003380
Сам ты можешь выучиться только до определённого предела.
Дальше - надо решать реальные задачи в реальном окружении.
Это называется практический опыт.

На удалёнку тебя без опыта возьмут только в том случае, если будут готовы с тобой возиться. И таких работодателей есть некоторое количество. Как правило, это подразумевает какие-то подводные камни - низкая зарплата или легаси проект или что-то ещё. Это нормально.
111 3003517
>>3003463

>Надо рефрешить или юзер отозвал этот токен и надо вернуть 403?


Дебил, что у тебя юзер отозвал? Клиент идёт рефрешить токен и получает 401. Дальше логин и получение нового рефреш токена.

>Сложные вопросы, да джун, это тебе не литкод дрочить.


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

112 3003528
>>3003517
То есть ты раз в минуту жестко ебешь сервис аутентификации. Миллион юзеров и все каждую минуту ломятся в одно узкое место. Да ты у мамы архитектор!
Про отозвать токен не напрягайся, это слишком сложная концепция для тебя.
113 3003559
>>3000546

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


храни только принудительно отозванные токены. одна табличка. грузишь её раз в минуту в память или слушаешь события, всё. ттл в памяти == ттл токена. потом они идут нахуй при рефреше.
114 3003590
>>3003428
>>3003484
Ладно, пойду лучше в РНР, может потом из него вернусь в голанг.
115 3003609
>>3003559
ну и если памяти не хватает, то тупо фильтром блума тот же редис закрываешь
116 3003611
>>3003590
Это очень хорошая идея.
Я серьёзно.
117 3003615
>>3003611
А какой фреймворк лучше учить для го? Симфони вроде для переката в джаву, а в го получается Ларавель надо учить?
118 3003645
>>3003528
17к rps невероятный хайлоад. Такую нагрузку вообще один сервер выдержать может.

>Про отозвать токен не напрягайся, это слишком сложная концепция для меня


Я тебя понял.
119 3003683
>>3003615
Вот тут я тебе не советчик, бро.
Потому, что когда я писал на пыхе, ещё даже слова "фреймворк" в природе не было.
Попробуй просто посмотри по вакансиям в твоём регионе - что больше требуется и за что больше платят. Ну, и что тебе самому больше нравится.
120 3003768
>>3003615
Где связь между фреймворками пыхи и говнолангом?
121 3003776
>>3003768
Симфони создавался как клон спринга из джавы, а Ларавель как клон рельсов из руби. Возможно для голанга лучше Ларавель подойдёт, чем Симфони, потому что последний рассчитан на ООП и энтерпрайз, что явно не го-вей.
122 3003785
>>3003776
Бред.
123 3003808
>>3003227
Нет, это проблема языка. Спм чзык устроен так что разработка на нём идёт сложнее чем на других
124 3003818
>>3003683 >>3003615
Но, вот я сейчас бегло посмотрел, и я бы предпочёл ларавель.
125 3003821
>>3003808
Ой, вот только не надо пиздеть.
https://go.dev/talks/2013/oscon-dl.slide#1
126 3003877
>>3003182
Послать его заново авторизироваться, в чем проблема? процедура авторизации включает рефреш токена, мой вопрос в том, что если ты хранишь сессию, зачем юзать JWT? Можно тогда другой токен юзать и сторить сессию, тогда ты не будешь затрачивать лишнее время цп, JWT прожорливей остальных
127 3003901
>>3003182
В самом jwt прописано время его действия. Если устарел - значит отправлять рефрешить.
128 3003946
>>3003877
Ты не в ту сторону воюешь. Мой поинт в том, что по сути jwt нахуй не нужен, это та же кука, только длинее и жрущая цпу. Это мамкин архитектор бросился защищать токен, ведь он из жопы святого гугла, поэтому безупречен. Что с токеном, что без него, один хуй надо на каждом запросе куда-то дополнительно сходить и проверить.
129 3003954
>>3003946
Хм, ну ладно, просто тейки насчет сессии вместе жвт были довольно спорные, если это не из той позиции то сорян, а так я бы поспорил, насчет ненужности, аргументво не приведу, но слышал, что хранить сессию в куках не безопасно, например я в своих проектах в оперативке храню и дэмпингую в бд, но мне кажется жвт довольно сильно разгрузил бы память за счет цп
130 3003985
>>3003954
В куках сессию не хранят. В куке хранят уникальный ключ сессии, тот же беарер, только в несколько раз короче. На сервере по этому ключу ты идешь в редис или в инмемори бд и достаешь сессию. Надо разлогинить юзера - дропаешь запись. Так было всегда, но потом гуглу припекло, что куки придумали не они, и появился токен.
131 3004009
>>3003985
Хз, помойму все в хедере хранят ключ сессии
132 3004028
>>3004009
Или хедер это и есть куки?
133 3004031
>>3004009
Как можно что-то хранить в хедере?
И про ключ сессии в куке он правильно сказал - так везде делают, в т.ч. в джаве ее (JSESSIONID). Если клиент куки не поддерживает - то в параметре запроса с таким же именем.
мимо
134 3004062
>>3004031
миддлвара авторизации , каждый запрос пишет хедер авторизации
135 3004090
>>3004062
Но хранят то это не в хедере, правда? В хедере - передают.
А в куке - именно хранят, как в базе данных. Куки - они для этого.

А потом, твоя миддлвара авторизации передаёт это с сервера на клиент. А на клиенте? А обратно передать? Ну и вот.
136 3004096
>>3004090
А зачем хранить сессию у клиента? Это для того что бы при перезапуске браузера, он оставался авторизован?
137 3004101
>>3004096
Если так, то мне кажется лучше уж тогда при перезапуске спрашивать кредитионалсы, хотя в вк мне было бы неудобно...
138 3004125
>>3004096
Не сессию. А идентификатор сессии.
Хранить надо для того, что HTTP - это протокол без состояния. И каждый запрос - как в первый раз.
А не замечаешь ты этого потому, что состояние удачно имитируется. Куками, например.
139 3004151
>>3004101 >>3004125
И я тебе даже больше скажу - либо куки, либо - хранить в коде страницы и передавать как параметр запроса. Всё, других способов нет. И хранить на странице и передавать в запросе - это лишний геморрой, для избавления от которого и придумали всю эту механику с куками.
140 3004311
>>3000546

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


Ты дурак что ли? Хранить надо отозванные идентификаторы сессий и время экспирации последней куки этой сессии, периодически дропая неактивные.
Время экспирации берётся или из самой куки, когда одна сессия соотвествует одной куке, или берётся некий глобальный максимальный ttl куки до рефреша (около суток).
141 3004539
>>3004311
Не важно, что именно ты хранишь, важен сам факт. Сходить туда-сюда по сети к редису занимает больше времени, чем обработка запроса самим редисом. И так надо делать на каждом запросе, нахуя тогда весь этот цирк с токенами?
142 3004588
>>3004539
сколько у тебя отозванных индикаторов? ну 2 млн в день? и допустим 16 байт на айди сессии 8 байт на таймстемп. 45МБ в памяти не уместишь?
143 3004845
>>3000092
>>3000546
>>3000164
>>3000611
>>3002243
А без jwt, на классических сессиях можно сделать так, чтобы юзер никогда не оказывался разлогинен, если регулярно посещает сайт? С jwt так можно сделать, если рефреш токен живёт к примеру 30-90 дней. При каждой экспирации аксес токена выдаётся новая пара аксес+рефреш, в итоге рефреш токен всегда свежий и можно никогда больше не логиниться если посещаешь сайт хотя бы раз в срок экспирации рефреш токена. Такой подход реализуется вообще как-либо кроме как через аксес+рефреш jwt?

Мимо посредственный код манки, никогда не работавший с классическими сессиями
Стикер512x512
144 3004899
>>3004845
Basic auth делаешь и вперёд.
просто рефреши Куку сессии
# OP 145 3005039
>>3004337
Тогда тред перекатывайте своей гомокомпашкой. Мне эти конфочки не нравятся, я убрал
146 3005078
>>3005039
твои проблемы. Мы тут все не для твоих предпочтений, а комунити и всей хуйни, так что если уж кати, то кати, нормально. Или тебя там затравили, беднягу?
147 3005121
>>3004845
Охуеть, уже надо два токена. Больше токенов богу токенов!
У куки можно поставить время жизни, тогда просроченную куку браузер не будет отправлять. На сервере ты хранишь такие долгоживущие куки где-то в бд или настраиваешь редис, чтобы он сохранялся на диск.
148 3005189
>>3005078
Там сидят токсичные хуесосы-снобы. Одна ирония, сарказм и прочее говно на серьезные вопросы, как и у любых двачеебланов, птьфу.
149 3005248
>>3005189

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


Это говей.
150 3005262
>>3005248
Это русский говей.
Бессмысленный и беспощадный.
151 3005687
Опять девопсы гугла обсуждают надо или не надо использовать токены
# OP 152 3005722
>>3005078
Мне в целом все двачеконфочки неприятны, поэтому или перекатывайте тред раньше чем 5-7 дней после бамп лимита (лол) или идите нахуй
153 3005785
>>3004899
Не понял. Ну вот залогинился юзер, сервер создал сессию, записал айди сессии в редис, вернул на клиент куку с временем жизни 30 дней. Через 30 дней юзера выкинет из аккаунта. Как я буду рефрешить куку, при каком действии юзера?

>>3005121

>Охуеть, уже надо два токена. Больше токенов богу токенов!


Так с jwt два токена это дефолт, не? Refresh token rotation это база.

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


Так после того как кука сессии просрочилась, юзера выкидывает из аккаунта, хотя он к примеру каждый день заходил на сайт. Это хуёвый UX.
154 3005799
>>3005785

>Ну вот залогинился юзер, сервер создал сессию, записал айди сессии в редис, вернул на клиент куку с временем жизни 30 дней. Через 30 дней юзера выкинет из аккаунта.


Так у тебя и с JWT токеном то же самое. Пользователь должен зайти до того как refresh токен потухнет. В любом случае надо периодически заходить. Самое долгоживущие средство это клиентский сертификат, там вообще годы.
155 3005812
>>3005799
С JWT сервер выдаёт новую пару токенов каждый раз когда аксес токен протухает, то есть по сути у юзера каждый день время жизни рефреш токена обновляется если он посещает сайт каждый день, и логиниться снова ему не нужно. А кука сессии просто протухает через назначенное время и юзера выкидывает из аккаунта, даже если он каждый день посещал сайт.
156 3005923
>>3005812
Куками ты можешь сам управлять. Сервер отдает данные с заголовком Set-Cookie, в нем можно указать время жизни. Браузер получает этот заголовок и перезаписывает куку у себя. Юзер зашел на сайт, ты ему вернул новую куку now + 30 дней, он ее сохранил (а ты не забыл сохранить куку в бд на стороне сервера). Завтра юзер зайдет - получит новую куку тоже на +30 дней и так далее. Юзер залогинен пока кука есть у тебя в базе.
157 3005960
>>3005923
Причём, оно так уже лет 25+ работает. Когда слова "json" ещё и в проекте не было. Не говоря уже про "веб-токен".
А ещё лет через пять следующее поколение будет удивляться, что, оказывается, можно веб-страничку отдать не навернув 10 микросервисов в облаке.
158 3006010
>>3005923

>Завтра юзер зайдет - получит новую куку тоже на +30 дней и так далее


В какой именно момент происходит выдача новой куки уже залогиненному юзеру, какой эндпоинт этим занимается? Вот это нихуя не понятно. В отличие от jwt, где всё сразу понятно. После экспирации аксес токена следующий запрос к апи вернёт 401 ошибку, хттп клиент на фронтенде перехватывает ответ запроса, делает запрос к api/auth/refresh, получает новую пару токенов и повторяет изначальный запрос, на который ранее вернулось 401. А когда юзер залогинен с сессией, то хз вообще когда ему выдавать новую куку сессии, при каком запросе? Какого-нибудь роута api/users/me, который часто вызывается?
159 3006033
>>3006010
>>3005923
о чем вы блять спорите? та же самая кука может хранить тупо рефреш токен. жвт тут нихуя нового не приносит. как вы там реализуете выдачу нового рефреш токена или обновление куки это блять одна и та же хуйня.
160 3006036
>>3006010

>какой эндпоинт этим занимается?


Ох, блять. Я же пошутил про микросервисы. А оно вон оно чо, лол.

Ну тебе же всё написали, перечитывай, пока не дойдёт.
161 3006070
>>3006036

>Ох, блять. Я же пошутил про микросервисы. А оно вон оно чо, лол.


При чём тут микросервисы? Где я говорил про микросервисы? У монолитов нет эндпоинтов/роутов?

>Ну тебе же всё написали, перечитывай, пока не дойдёт.


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

>>3006033
О том, как сделать чтобы юзера никогда не разлогинивало из аккаунта, если он посещает сайт каждый день, при этом используется подход с классическими сессиями. Бекенд выдал куку сессии на 30 дней в момент логина, 30 дней проходит, юзера выкидывает из аккаунта.
162 3006071
>>3005923

>Завтра юзер зайдет - получит новую куку тоже на +30 дней и так далее


Что значит "юзер зайдет"? Бекенд ему через Set-Cookie будет обновлять время жизни куки при запросе к любому роуту что ли?
163 3006073
>>3006010

>А когда юзер залогинен с сессией, то хз вообще когда ему выдавать новую куку сессии, при каком запросе?


При всех. Это часть пайплайна обработки запроса.
164 3006076
>>3006073
Это не создаст слишком много лишней нагрузки по сравнению с подходом access/refresh jwt? С ним обновление всего 1 раз в N минут происходит, N = время жизни рефреш токена. Ещё и редис дёргать на каждый пук.
165 3006080
>>3006076

>Это не создаст слишком много лишней нагрузки по сравнению с подходом access/refresh jwt?


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

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


Так тебе на каждый запрос надо получить атрибуты пользователя и его права для авторизации. Один хрен дёргать редис.

Если прям ссышься, то обновляй, только если половина времени сессии прошла. Или если больше часа прошло.
166 3006082
>>3006080

>На браузер или на сервер? Там один хер куча других заголовков обрабатывается.


На сервер. При наличии большого количества юзеров начиная с некоторого количества RPS сервер начнёт охуевать, возможно с не такого уж большого количества. А при jwt auth с рефрешем хоть миллион юзеров обслуживай с огромным RPS.
167 3006083
>>3006071
Ты бы давно уже взял, и посмотрел в дебаггере, как это работает на реальных сайтах, и что за говно там шлют в каждом запросе.
168 3006085
>>3006082
Да не будет ничего охуевать, это мизерная фигня по сравнением с тем, что там и так на каждом запросе происходит.
169 3006126
>>3004151
локал сторадж же еще есть
170 3006275
>>3006082
Любой сервер когда-нибудь охуеет от количества юзеров. Чтобы этого не произошло, используется шардирование. Ты берешь юзерайди из токена говоришь: у кого айди меньше 100к те идут на сервер1, 100к - 200к на сервер2 и так далее. Аналогично для куки: берешь первые несколько символов и роутишь на сервер1 для АА, сервер2 для AB и тд, буквы добавляешь сам. Роутинг происходит внутри реверс прокси (например nginx), который написан на си и охуенно быстрый.
Проблема же не в том, залогинился юзер или нет. Проблема в том, а может ли этот хуй заходить к нам в апи, и токен это не решает. Представь у тебя маркетплейс и есть апишка, через которую юзер может быстро загружать каталоги в свой магазин дилдаков. Для входа в апишку используется токен. Апишка платная, если юзер не проплатил премиум, мы должны эту фичу ему отключить, сразу же, и сразу же включить после оплаты. В итоге тебе приходится хранить список токенов и на каждом запросе проверять. Хранить надо долго, пока не протухнет рефреш токен. Спрашивается, чем это отличается от обычной куки и нахуя было устраивать цирк с токенами.
171 3006281
>>3005189
Двачую, зашёл посмотреть, там какую-то хуйню обсуждают вместо го три с половиной инвалида, нахуй такие конфы нужны. Уже проходили, вместо конструктива и помощи там будут срачи на тысячи постов от токсичных ублюдков, это же двачеры.
Screenshot20240117-095504.png57 Кб, 1440x735
172 3006430
>>3006080

>Так тебе на каждый запрос надо получить атрибуты пользователя и его права для авторизации. Один хрен дёргать редис.


Деградант, съеби уже отсюда! Ты даже блядь введение не прочитал https://jwt.io/introduction
173 3006474
>>3006430
Джун, там без тебя деревья не вращаются.
174 3006549
>>3006474

> Я икспеееерт! Иксперт я скозал!

175 3006754
>>3006549
Я не он, но, я тебе скажу, что применять jwt просто для любой авторизации - это оверхед. Оно для single signon, а это далеко не всем надо.
И вообще, цель jwt - просто обмен шифрованной информацией через открытые источники. Использовать это для авторизации на обычном сайте - не очень умно. И напоминает карго-культ, как и с микросервисами в колхозном маркетплейсе.
176 3007061
>>2996967 (OP)
Коллеги, такой вопрос, хочу сделать обращение во внешний сервис для получения данных, в каком каталоге лучше разместить логику запроса туда? какие бест практис?
177 3007063
>>3006754

>цель jwt - просто обмен шифрованной информацией через открытые источники


ну ты загнул, просто выдал, просто завернул, просто забайтил, просто в тираж вышел, кишки выпустил
178 3007065
>>3007061
/internal/clients/pornhub/pornhub.go
179 3007066
>>3006754
Я нигде не писал, что JWT это универсальный инструмент для всего. даже не знаю, хули тот деградант тригернулся

Мой поинт был про то, что этот иксперт постоянно пишет про свою непреодолимую тягу выпить сходить в редис. При правильном использовании JWT не требуют ходить ни в какой редис, токен самодостаточен. Именно в этом его главное преимущество. Недостатки тоже есть.
180 3007300
>>3007066

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


Мы вам не перезвоним.
181 3007329
>>3007300
Вброшу свои 2 копейки.
Я никогда не работал с jwt, никогда не было причины.
Сейчас почитал очень бегло, и (пока) не понимаю, зачем вообще это нужно? В чём главная идея? Какую проблему это решает?

Это чтобы не лазить каждый раз в базу и не искать там пользователя? А типа просто получить токен, проверить сигнатуру и время действия и разрешить/запретить? А если я спиздил токен и предъявил?
182 3007335
>>3007329
jwt можно через payload между миккросервисами пропихивать, тем самым размешая какие-то действия от пользователя, микросервис будет обращатся в отдельный сервис авторизации за пермишенами истользуя этот жвт. А иначе бы в каждом микросервисе пришлось подсистему авторизации делать
183 3007348
>>3007335
Но хуево с точки зрения что jwt распухнет со временем от инфы + вся инфа не всем микросервисам нужна, а она будет гонятся туда сюда. но можно гонять хеш, а токен хранить в сервисе авторизации.

мимо кулибин
184 3007354
>>3007348
жвт приходит с фронта
хешируется в гейтвее сервисом авторизации
из гейтвея в микросервисы толкается хеш
185 3007365
>>3007300
Мудило, ты снова выходишь на связь?

Тебя, дегроиду уже объясняли что аксес токен валиден до истечения TTL. А список невалидных токенов ведут только такие дебилы как ты.
186 3007391
>>3007335
Между своими микросервисами я бы предпочёл для подобных действий какую-то свою структуру.
В целом, этот jwt выглядит как решение в поисках проблемы.
Подозреваю, что единственная проблема, которую он реально решает, это single signon.
Это всё просто моё скромное мнение, и я ни на что не претендую.
187 3007410
>>3007365
Ну всё, тогда поняли. Логаут юзеру не сделаешь просто так, токен считается валидным, пока у него не истечет время годности. Хуйня ваш JWT.
188 3007448
>>3007410
Мне кажется, оно вообще не для этого.
Там весь смысл в том, что оно подписано. Т.е. можно передавать через третьи руки, и иметь гарантию аутентичности данных. Если тебе не надо передавать через третьи руки - эта хуита тебе просто не нужна.
189 3007505
>>3007410

>Ну всё, тогда поняли. Логаут юзеру не сделаешь просто так, токен считается валидным, пока у него не истечет время годности. Хуйня ваш JWT.


Деградант, ты по кругу здаешь одни и те же тупые вопросы:

>JWT логаут работает с задеркой в TTL аксес токена. Всё! Прими это как данность. Если в твоем магазине дилдаков нужно логаутить пользователя в течении 63 мсек, то тебе просто не подходит JWT.


И специально повторю для тупых:

>Если в твоем магазине дилдаков нужно логаутить пользователя в течении 63 мсек, то тебе просто неподходит JWT.

190 3007588
>>3007505
Ну да, придумать ТТЛ на все будущие ситуации и если что-то пойдет не так, то терпеть, пока не протухнет. Данность. Просто рабское мышление.
191 3007590
>>3007588
Буквально загуглить https://www.google.com/search?q=refresh+token+ttl и сколько упоминаний найдем что юзают ТТЛ уровня минуты?
192 3007604
>>3007590
Мне кажется, вы напрасно спорите.
Не имеет значения, какой ттл.
Важен сам принцип - хорош этот подход для аутентификации или не очень. В данном случае - не очень.
193 3007836
>>3007335
Никто не гоняет токен между микросервисами. У тебя приватная сеть, там данные ходят открыто. Проверка токена выполняется на входе в твое облако, в гейтвее, если токен невалидный, реквест дальше просто не идет.
194 3007843
>>3007588
Святой гугл не может ошибаться. Сказали два токена, значит, два токена, барин лучше знает. Ты че самый умный епта?
195 3008147
>>3007588

>Ну да, придумать ТТЛ на все будущие ситуации и если что-то пойдет не так, то терпеть, пока не протухнет.


Вся разработка состоит в том, что тебе надо предусмотреть наперед: архитектуру, стек и технологии, API, форматы данных и т.п. И ничего, как то справляются, а вот TTL токена это прям неразрешимая задача.

>>3007836

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


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

>>3007843

>Святой гугл не может ошибаться


Ну как можно быть таким дебилом? Достаточно же открыть RFC и увидеть, что там 1 автор из Майкрософт и 2 ноунейм кампании.
196 3008470
Го-спода, распедальте, пожалуйста, про Context.
Интересуют не цитаты из документации и т.п. - читать я умею, и у меня есть что.
Интересует личный практический опыт, объяснение на пальцах с каким-то реальным убедительным примером.

Просто мне этот самый контекст кажется какой-то непонятной, притянутой за уши фигнёй. Как морская свинка - ни к свиньям, ни к морю.
Как я понял, это используют, в основном, чтобы канселить что-то, особенно в конкурентной среде. А как контейнер для (контекстных) данных использовать не рекомендуют. Тогда почему это не назвали Canceller или Terminator?
Т.е., возникает ощущение, что задумывали одно, а вышло другое. Выбросить было жалко, переделывать некогда, поэтому - оставили так.

Смысл термина "контекст" мне понятен, если что. И объекты-контексты, в том или ином виде, я постоянно использую в программах на джаве. Речь именно про Context в Го.
197 3008494
>>3008470

>Тогда почему это не назвали Canceller или Terminator?


Потому что в Го всё через жопу. Таков говей.
198 3008527
>>3008494
Нет, ну контекст часто подают как одну из основных фич Го. Наряду с горутинами и интерфейсами.
И мне это совершенно не понятно. Возможно, я просто не понимаю каких-то случаев, где он реально решает.
199 3008618
>>3008527
Очевидно кто подаёт, тот и должен объяснить что в этом такого особенного.

Единственный существенный плюс который я вижу: это то что он встроенный в стандартную библиотеку и является best practices. А то в некоторых языках, всё сводится к советам создать флаг и периодически проверять его значение.
200 3009860
>>3008470
пример чего? в отличие от каналов/интерфейсов контекст это даже не часть языка, он просто лежит в стандартной либе.
это просто стандартный инструмент для реализации отмен (грейсфул шатдаунов/таймаутов) и для передачи значений выступая в роли TLS. это всё конечно можно тысячей способов самому реализовать, просто контекст - стандартный и все его используют.

https://dave.cheney.net/2017/08/20/context-isnt-for-cancellation
https://dave.cheney.net/2017/01/26/context-is-for-cancelation
201 3009967
err != nil { err, nil } уже убрали? А что с дженериками?
202 3010000
>>3009860
Там чел пишет реально страшные вещи:
In effect context.Context is being used as a conduit to arbitrarily extend the API of any method that takes a context.Context value. It’s like Python’s kwargs, or whatever the name is for that Ruby pattern of always passing a hash. Using context.Context in this way avoids an API break by smuggling data in the unstructured bag of values attached to the context. It’s thread local storage in a cheap suit.

Т.е. он пишет, что похерить контроль типов при компиляции - это классная идея. Вот какие мы молодцы - придумали контекст, это прямо как в питоне и как в руби.
Многое стало понятнее. Например, куда делись все рубисты, лол. Они перекатились в Го. Например, главный сингапурский гошник, автор новой книги Go Cookbook - бывший рубист.

Самый прикол в том, что он подаёт такой тривиальный (и очень сомнительный) ход как ниибацца великое открытие в программировании. Я раньше думал, что мне просто кажется, что гошные гуру просто нихуя не умеют программировать. Теперь начинаю понимать что нет, не кажется. У них там свой мирок, их время от нашего отстаёт лет на 35, примерно. Курят план-9, наслаждаются жизнью. Завидую им.
203 3010004
>>3010000

>Т.е. он пишет, что похерить контроль типов при компиляции - это классная идея


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

>We’d have gone from an explicit compile time dependency to an implicit run time dependency, one that could not be enforced by the compiler.

204 3010010
>>3010004
Вот оно что, оказывается. То есть, это был сарказм.
А я охуел от таких заявлений, и дальше просто не читал, лол.
Щас почитаю.
205 3010032
>>3009967
Сборку мусора мы добавим.
Эксепшены не добавим.
Таков путь.
206 3010037
>>3010000
У меня сложилось впечатление, что эти особенные пытаются изобрести DI контейнер, но не могут сформулировать свои мысли. Зато деревья крутятся, код мутится.
207 3010038
>>3010032
ну и нахуй тогда ваш говноланг нужОн??? Лучше уж как деды как джаве
208 3010040
на джаве*
209 3010152
>>3010037
Ну, вообще-то, именно с DI per se проблем в Го никаких нет.
В смысле - интерфейсы позволяют инжектить куда угодно любую хуиту, которая крякает, как утка.
Другой вопрос, что этого, обычно, не делают (в том смысле, в каком это делают в DI-контейнерах на джаве), ибо, считается, что это не кошерно.

Подозреваю, что суть того, что в Го непопулярны решения a'la джава в том, что тут всё заточено на агрессивную конкурентность. И, соответственно, во многих местах либо стейтлесс или запрет копирования. А в спрингах-хуингах просто море стейта везде, и всё переплелось-перееблось.
Я именно таких объяснений не встречал пока, но, полагаю, что интуиция у хардкорных гоферов работает примерно так.
210 3010154
на джаве!
211 3010165
>>3010152
Добавлю ещё, что штуки типа DI-контейнеров - это зависимости. И достаточно объёмны. А в Го принцип такой, что лучше похерить DRY чем тащить даже маленькую зависимость со стороны. И в этом есть своя сермяжная правда, если вдуматься. Потому, что обратный подход можно наблюдать в node.js или в том же спринге. И выглядит это просто отвратительно.
212 3010549
>>3009860

>https://dave.cheney.net/2017/08/20/context-isnt-for-cancellation


>https://dave.cheney.net/2017/01/26/context-is-for-cancelation


Хуйня какая-то.

Понятно что, контекст не надо использовать для вещей которые критчны для функции. Такие вещи надо передавать явно, аргументом. Но при этом вполне нормально передавать там вспомогательные вещи - например информацию для трейсинга или некая контекстная информация типа айди запроса.
213 3010556
>>3010549
Я же говорю - если передавать данные в контексте это антипаттерн, то нахуя, спрашиваетя, называть это контекстом? Ибо если это контекст, причём не конкретный контекст, а вообще какой угодно, то в нём должны быть данные. Иначе это не контекст, а что-то другое.

Поэтому, от этой фичи я сразу почувствовал запах.
Выглядит как грязный хак для отмены хттп запросов, который потом решили обобщить и назвали громким названием.
214 3010559
>>3010556
Хотя, я допускаю, что эти разговоры про "данные в контексте = антипаттерн" - это для дурачков-джуниоров из гугла, которые, если дай им волю, все параметры запихнут в контекст, и будут очень горды собой.
215 3010566
>>3010556

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


Потому что контекст, предает не данные. Неожиданно правда?

Контекст передает контекст выполнения. Вот есть у тебя функция которая читает ищет и возращает из базы что-то. Критери поиска и DAL к базе это параметры этой функции. А еще у функции есть контекст, это откуда и когда эта функция была вызвана. Например контекст это информация о том, что функцию вызвали для обработки запроса /user/123 и айди реквеста 48391999-85aa-4ac6-955f-5459220ed60d - это контекст. Контекст не критичен для работы функции и может отсутствовать, например в юнит тестах. А параметры всегда должны передаваться. валидация параметров на nil это отдельная тема. Контекст можно использовать для логгирования, например по айди реквеста удобно отследить что вообще происходило с запросом.

>>3010559

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


В гугле запрещено самостоятельно что-то в контекст класть. Есть библиотеки которые туда кладут данные для трассировки то о чем я выше писал, но самому нельзя.
216 3010579
>>3010566

>контекст предает не данные


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


То есть, всё-таки данные. Ну и правильно. Иначе это никакой не контекст.

И, потом, это не же называется ExеcutionContext или какой-то ещё узко-специальный контекст. Значит, можно передавать то, что считаешь нужным, в разумных пределах.

Вообще, я постоянно обращаю внимание на то, что нейминг в Го - это очень большая проблема. Называют вещи просто хуй пойми как. Отсюда и километровые комментарии к функциям из трёх строчек. Где параметр называется просто 'a', а потом тратится 20 слов, чтобы объяснить, что же это такое на самом деле. И это у них считается бест практисиз (а у нормальных людей - лютый антипаттерн)

А я, наоборот, к неймингу отношусь весьма ответственно и придирчиво. Потому, что если слова не имеют под собой почвы, то дела не могут совершаться. Ну и самодокументируемый код, опять же - большое дело.
217 3010583
>>3010566
Но, на самом деле, твой комментарий очень многое для меня прояснил.
За что тебе большое спасибо.
Именно подобного рода объяснение я и имел в виду, когда задавал этот вопрос >>3008470
Теперь всё встало на свои места.
218 3010601
>>3010549
ну смотри, в одной статье он высказывается против передачи зависимостей вроде логгера в контексте, которые можно передавать явно.
во второй - чтобы контекст стал просто хранилкой значений и не занимался лайфтаймом.

т.е. твои трейсАйди/реквестАйди ложатся в контекст вполне.

вторая статья намеренно спорная. обоснования такие, что трудно различить дедлайн/кенсел и трудно дождаться полной отмены всего и захватить ошибку после отмены. да и вообще thread-local storage и отмены ортогональны. поэтому нужно декаплить контекст от лайфтаймов (и придумывать что-то новое на подобие tomb). часть проблем решается уже сейчас - например возможность передать ошибку в отмену контекста.
219 3010984
>>3010579

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


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

>>3010601
У него вообще как-то не очень сформулирована его претензия к контексту. Я вот не понимаю зачем надо дожидаться что горутина закеселилась и самое главное какой результат он ждет после этого.
220 3011000
>>3010984

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


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

Вообще, это всё выглядит как какой-то случайный грязный хак, который зачем-то решили обобщить, и который теперь выглядит как решение в поисках проблемы.
Я думаю, что если у столь многих людей по поводу этой хуиты постоянно возникают одни и те же вопросы, на которые нет ясных ответов, значит это именно что хуита. Я видел посты ещё 17-года, где люди писали, что в Го-2.0 этой хуйни быть не должно, лол.
221 3011007
>>3010984

>У него вообще как-то не очень сформулирована его претензия к контексту. Я вот не понимаю зачем надо дожидаться что горутина закеселилась и самое главное какой результат он ждет после этого.


ну я тоже не особо понимаю. думаю, он хочет сделать err := cancel() и продолжить выполнение, когда все горутины вышли (т.е. по сути как errgroup). ну и т.е. этот юзкейс по сути вейтгруппами/errgroup решается.
222 3011078
>>3011000

>Можно какой-то пример? Потому, что тут совершенно явное противоречие.


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


Например добавление айди запроса в логи: https://blog.gopheracademy.com/advent-2016/context-logging/
код можно и поизящнее сделать, но идея понятна

>>3011007

>ну я тоже не особо понимаю. думаю, он хочет сделать err := cancel() и продолжить выполнение, когда все горутины вышли (т.е. по сути как errgroup). ну и т.е. этот юзкейс по сути вейтгруппами/errgroup решается.


Зачем после кэнсел ждать завершения горутин, я не понимаю. Наступил таймаут - кэнсельнул все горутины, вернул ошибку и все. А если какой-то код не обрабатывает правильно кэнсел или завис? Вызов API так и будет висеть, ни таймаут еррор ни результатов?
223 3011104
>>3011078
То есть, как я и говорил - контекст просто передаётся в другую функцию, не глядя.

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

Напоминает Руби в его лучшие годы.
Кстати, где он?

Потом была Кложура, на которую все дрочили до кровавых мозолей, писали километровые восхищённые посты, ахали и охали.
Там тоже революционные подходы к конкурентности. Причём, в отличие от Го - действительно революционные. И где она сейчас?

Я на Маннинге в 2017 купил книжку Clojure, The Essential Reference, по программе MEAP (Manning earty acess programm). Т.е. ты покупаешь недописанную книгу и потом получаешь обновления. Книга охуенная, просто кладезь информации по стандартной библиотеке. И сейчас она на 99% дописана. И что в итоге? MEAP начался в 2016-м (!) сейчас - 2024. И дописана до конца эта книга не будет. Такие дела.

Сик транзит глория мунди.
Я думаю, что Го окажется примерно там же.
Собственно, он уже отправился в путь.
224 3011201
>>3011078
Чтобы не потерять данные. Например, случается кансел на этапе, когда клиент получил подтверждение успеха, а бд отъебнула. Горутина продолжает ожидать пока раздуплится под с базой, удерживая всю программу от шатдауна. Если код завис, значит ревьюер мудак и его надо опустить по зп, а может и в жопу По хорошему, надо тогда хоть в логи плюнуть, что там зависло на n-минут после канселя, а потом уж выбрасывать принудительно.
225 3011215
>>3011104
Контекст для переменных действительно говно, но вон фронтовики лакомятся редаксом и им даже нравится. Голанг имеет очень приятную асинхронщину, но уйдёт на помойку истории совсем по другим причинам.
226 3011347
>>3011215
С чего бы го куда-то уходить? Нахуй вы в тред приходите и срете о том какой хуевый язык, что он умрёт и прочее, идите на хуй, заебали.
227 3011409
>>3011104

> То есть, как я и говорил - контекст просто передаётся в другую функцию, не глядя.


> На мой взгляд - это лютая хуйня и антипаттерн.


> Потому, что, во-первых, убирает проверку типов.


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


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

>истинный го-вей - говно, палки, подводные камни


да. тут инжиниринг, а не кодерство и дроч на охуенные абстракции. вся суть чтобы сделать максимально просто с минимумом абстракций, т.к. абстракции это подводные камни еще большего уровня.
228 3011430
>>3011409
и поясню
инжиниринг - это решить задачу максимально поддерживаемо
кодерство - решить задачу хоть как-то, даже с использованием ахуенных абстракций, не запариваясь о поддерживаемости
программирование - решить задачу супер-оптимальным способом, не запариваясь о том, что кто-то разберется в итоге
229 3011482
>>3011409

>да. тут инжиниринг


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


Ну, в этом есть своя правда.
В джаве часто бывает пребор с абстракциями, и это выходит боком.
230 3011585
>>2999619
На пхп, очевидно. Без троллинга.
231 3012272
>>3011104

>Я думаю, что Го окажется примерно там же.


а ебейшие зарплаты в бигтехе для гоферов?
232 3012283
>>3012272
Кложуристам, в своё время, платили просто конские деньги примерно там же. Возможно, и сейчас платят кое-где.
Рубистам тоже, кое-где, платят довольно много. Потому, что написали на рельсах просто хуеву тучу всего. Даже на Jruby можно найти вакансию в Москве, если поискать хорошенько.

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

Тут ещё такая штука, я думаю - компьютеры стали очень быстрыми, и памяти очень много. И то, что 15 лет писали бы на C[++] - теперь пишут на питоне. Я имею в виду не веб, а просто программы. Поэтому в "быстррм" Го потребности просто нет. А чтобы заменить C++ - он не настолько быстрый, и с абстракциями туговато, и стд. библиотека - так себе. Поэтому - остаются сетевые утилиты и штуки вроде докеров-куберов.
233 3012284
>>3011201

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


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

И в целом это не дело горутины решать, ждать или нет. Пришёл кэнсел - остановили обработку, откатили транзакцию и всё.
234 3012290
>>3011104

>На мой взгляд - это лютая хуйня и антипаттерн.


>Потому, что, во-первых, убирает проверку типов.


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


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


Ок, расскажи как ты будешь протаскивать айди запроса через весь стек вызовов? С учётом того что часть кода это фреймворк.
235 3012389
>>3012290
Ладно, я признаю, что немного переборщил.
В java ee сервлетах тоже есть request scope, куда можно пихать разное, но, там это выглядит естественно, как часть системы.
Основная претензия была, скорее, в том, что оно всё шито белыми нитками. Понятно, что это такой язык, и что контекст появился позже, и нормально внедрить его в библиотеку уже было нельзя и т.п., но, всё равно раздражает.

А вот как тебе эта фишка, что если ты используешь контекст с cancel или с таймаутом, то надо обязательно вызывать cancel() в конце, даже если всё прошло нормально (чтобы освободить ресурсы)?
Не, я даже догадываюсь зачем - чтобы ты явно обозначил, что на момент выхода из функции отмена уже ни на что не влияет. Но, всё равно, такая нелогичная хуита очень раздражает.
v.png5 Кб, 295x171
236 3012465
На случай, если go совсем испоганят и гугл заблокирует доступ санкциями, то есть похожий язык под названием V.
Сравнение с go https://vlang.io/compare#go
Список софта https://github.com/vlang/awesome-v
237 3012504
>>3012283

>компьютеры стали очень быстрыми



А всё уже, халява кончилась. Закон Мура больше не работает. У квантовых компов прогресс очень медленный. Вот в статье рассматриваются пути выхода https://www.science.org/doi/10.1126/science.aam9744
Короче, те, кто сейчас делает ставку на быстрый софт, выиграют в будущем.
238 3012532
>>3012504

>Закон Мура больше не работает


Прохладная история из 2007 года, только это не значит ровным счетом нихуя, это просто эмпирическое наблюдение. Про будущее у софта тоже смешно, у всего того кода что сейчас пишется никакого будущего нет, есть только решение проблем в настоящем, здесь и сейчас, языки программирования устаревают очень быстро, программы на них написанные выкидываются целиком и переписываются на новых модных языках, через 15 лет твой код даже не соберется потому что не найдется библиотек подходящих версий в поставке операционной системы, и проще будет переписать всё с нуля чем ковыряться в говне мамонта, это нормальный жизненный цикл программного обеспечения, у него есть свой срок эксплуатации, в какой-то момент всё неизбежно будет выброшено и забыто, старпёры все говорят как один - на занимайтесь преждевременной оптимизацией "на будущее", потому никакого будущего у всего что мы пишем нет.
239 3012593
аноны, живу и учусь в ростове на дону. сейчас обучаюсь на 3 курсе, т.е. через 1.5 года уже выпуск будет. подумал, что хватит мне вола ебать, надо думать о будущем. из вводных - изучал только питон и плюсы по учебе, знаю(л) норм, особенно плюсы. запреметил вот язык golang, но я хз как вкатываться, время еще есть, а вакансий хуй да нихуя, только начиная с мидлов иногда что-то встречается. я правильно понимаю, что единственный шанс на вкат мне только какая-нибудь стажировка в тинькофф, и то, если пройду?
240 3012812
>>3012532
Ты сейчас описал мусорные стартапы и петушиные галеры, которые эти стартапы обслуживают. В продуктовых компаниях до сих пор живет код на джаве хуй знает какой версии, из дотнета до сих пор используются древние WinForms и WebForms. У крупных игроков уровня яндекс вообще все свое и в рот они ебали айти моду.
241 3012817
>>3012290
Это называется глобальная переменная. В терминах DI - это scoped lifetime service. В том же сишарпе ты создаешь интерфейс типа IRequestContext со свойством RequestId, ставишь его как scoped, на входе в обработчик инициализируешь и потом просто инжектишь везде, где нужен реквест айди. Все просто и понятно и не надо передавать какую-то хуйню по стеку вызовов.
242 3012846
>>3012812
Ну и какое будущее у программы на WebForms? Готов поспорить, разрабы думали над архитектурой, применяли различные оптимизации, не ленились, считали микросекунды, может даже тестами всё покрывали, но что в итоге-то?
243 3012894
>>3012846

>Ну и какое будущее у программы на WebForms?


Учитывая, что она до сих пор жива?
Блестящее, я думаю.
244 3013046
>>3012593
самый легкий путь да, через стажировку без опыта без смс. ну т.е. проходишь там го тур и пробуешь. в самом языке особо нечего учить (точнее дохуя познается только на реальном опыте и от стажера не ждут). поэтому параллельно можешь учить другой язык, чтобы был запасной аэродром, потому что второй легкий путь - свичнуться мидлом. (или через полгода на другую стажировку пройти.) ну и "без опыта" не означает что ты про го вообще нихуя не знаешь - как мапы/слайсы устроены и что такое горутины наверняка спросят. а про нетполлер/обработку сисколов/ГЦ возможно нет.
245 3013071
>>3013046
Этот дятел в каждый тред такое запостил.
Пусть в 1С идёт, лол.
246 3013168
>>3013071
аноны, живу и учусь в ростове на дону. сейчас обучаюсь на 3 курсе, т.е. через 1.5 года уже выпуск будет. подумал, что хватит мне вола ебать, надо думать о будущем. из вводных - изучал только питон и плюсы по учебе, знаю(л) норм, особенно плюсы. запреметил вот платформу 1с, но я хз как вкатываться, время еще есть, а вакансий хуй да нихуя, только начиная с мидлов иногда что-то встречается. я правильно понимаю, что единственный шанс на вкат мне только какая-нибудь стажировка в тинькофф, и то, если пройду?
247 3013188
>>3012283

>Но, то, что год от года его всё меньше и меньше рассматривают как язык общего назначения - это очевидно.


Как ты это определил? Мне вот не очевидно, мимо не гошник
248 3013250
>>3013188
Я определил это читая интернеты.
И глядя на даты постов.
А ещё вот тут, например, в комментах есть несколько исторических экскурсов:
https://news.ycombinator.com/item?id=38872362
249 3013594
>>3012283

>Поэтому в "быстррм" Го потребности просто нет


Поэтому озоны, авито и прочие маркетплейсы да и не только массово на него переезжают? Даже в ВК пояились вакухи.
250 3013643
>>3013594
Озон просто купил компанию с гошниками, а шарп в то время был для винды только. Теперь там .NET/Go вместе, никто не собирается дотнет выпиливать полностью.
251 3013670
>>3013594
Я имел в виду не для веба, а для "обычных" программ.
Да и для веба, далеко не всем нужна топовая производительность.
Большинству - не нужна. А нужна быстрая и недорогая разработка.
Кстати, я совсем не против Го, наоборот - за.
252 3013676
>>3013643
В Озоне - чего только нет.
Там в платёжной системе даже изрядный кусок на 1С используют, чтоб ты знал.
253 3013746
>>3013676

> изрядный кусок на 1С используют,


С ассемблерными вставками.
254 3013760
>>3013746
Смех-смехом, но, такое вполне возможно.
Для 1С можно писать плагины на шарпе или крестах. Ну, а там уже - ассемблерные вставки, лол.

А в Озоне это используют не для реал-тайм платежей, а где-то в кредитной части, подробностей не знаю.
255 3013818
>>3012817

>Все просто и понятно и не надо передавать какую-то хуйню по стеку вызовов.


Просто и понятно пока твоя DI магия работать как ты ожидаешь. А если твоя горутина получит не свой контекст, то ты хуй разберёшься почему если вообще заметишь жто.
256 3013956
Пишу Дискорд бота, и не могу понять как лучше архитектуру построить чтобы была возможность легко расширять функционал команд и прочее, как будто пробел какой-то в знаниях каких-то паттернов или хз. Посоветуйте чего, в гугле одни туториалы.
257 3013981
>>3013956
Загугли паттерн Команда. Просто посмотри, делать так не надо, это ООП. Как надо - сам догадаешься.
Кстати, с удивлением узнал, что википидоры называют паттерны "шаблонами". Прямо пахнуло прелой совчиной, лол.
258 3015181
Привет, вкат в go с нуля норм идея? Будет ли возможность найти вакансию, или лучше искать в шарпах, жабе, петуне?
Мимо неудачный вкатун в android kotlin, вакансий 0
259 3015316
>>3015181
Питухон.
260 3016128
>>3015181
Также соснёшь. Голенг для сенек из-за кучи подводных. Стартуй с пыхи, если надо быстро, или с жабы, если есть время.
261 3016382
>>3015181
Ахаха, привет несостоявшийся коллега.
Я тоже проебался с выбором профессии, 1 год своей жизни потратил в пустую в андроид разработку, задрочил kotlin, xml и compose верстки, hilt, retrofit, mvvm, sqlite и все равно никому нахуй не нужен. Я даже себе 1 год опыта нарисовал в ноябре чтобы хоть как-то попытаться вкатиться в это говно. Но везде одни отказы блять.
Благо я хоть на другой работе, не связаной с it зарабатываю 140к и жить хоть как-то можно.

Я тоже решил перейти на бэкенд и рассматриваю Go, но чет, читая этот тред, всё совсем печально в плане выбора Go первым языком для бэка.
262 3016478
>>3016382
Андроид - это с самого начала был плохой выбор.
Даже если бы нашёл работу, это было бы какое-нибудь днище.

Алсо - если ты действительно постиг Котлин (хотя-бы отчасти), то Го должен пойти нормально. Бек-хуек - это не важно. Язык - это язык.

Тем не менее, задачи на беке другие. И (как я уже писал тут пару раз) - могу посоветовать в качестве начального упражнения Питон - Flask или FastAPI. Просто чтобы язык не путался под ногами. Также - базовое знание питона лишним в принципе не будет. Одно умение писать утилитарные скрипты для себя - стоит очень многого.

И, кстати, почему не джава? После андроида и котлина?
263 3016506
>>3016478

>Андроид - это с самого начала был плохой выбор.


Почему? Разве разработка мобильных приложений не является очень востребованной?
264 3016559

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


Э-э-э-э...
265 3016742
>>3016382
МЯУ, но я реально шарю вглубь, только всем похуй. Год серого опыта у меня. Последний собес проходил, в техническом плане хорошо отвечал, вопросы были несложные, но послали нахуй с единственной пометкой: "мало опыта"
266 3016744
>>3015181
Тебе буквально осталось выучить бд, спринг и пойти в любую компанию где упоминается java/kotlin.
267 3016770
>>3016744
Рассмотрю такой варик, а пока думаю пойти за нищие 30-45к в техподдержку на халтурку одну, там работать по времени мало надо, эта тема с тестировкой и девопсом связна чутка, мб в это вкчусь параллельно. В свободное время подготовлю накрутку опыта в android и буду туда траить, ну и на крайняк бэк с жабой, хотя я не люблю жабу и бэкенд. Мне нравится именно на Kotlin писать и верстать на compose, да, я охуевший.
268 3016842
>>3016744

>осталось выучить бд, спринг


Хуйня вообще осталось. Начать и кончить.
269 3017097
>>3016478
Да, с Котлином всё ок. Думал в Го вкатиться, но видишь, тут же пишут что для первой работы никому нахуй на нем не нужен.
А по поводу Питона, читал на многих ресурсах что он хорош только для аналитиков и МЛщиков. Для бэка это хуйня (не моё мнение)
270 3017141
Как в шаблоне Go посчитать количество символов в строке и если их больше 150, обрезать до 150?
272 3017173
>>3017141
Работать со строкой - так же как со слайсом.
>>3017157
Зачем ради такой фигни это тащить?
273 3017177
>>3017173
тащить что?
274 3017190
>>3017097

>он хорош только для аналитиков и МЛщиков


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

Серверы на питоне делали за 20 лет до того, как появилось ML-говно. И ещё больше делают сейчас. И скорость там вполне сопоставима с Го (который тоже не C++).

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

Ну и скрипты, конечно же.
Сетевые и не-сетевые утилиты, и прочее.
А так же GUI несколькими способами.
А так же дёргать сишные либы с минимумом затрат на это.

Питон - охуенен.
А ML-говно просто фильтруй.
275 3017191
>>3017177
Или я не понял, и ты просто строку в шаблоне хочешь обрезать?
276 3017192
>>3017191
Чел спросил про шаблоны как там обрезать строку, я дал ссылку на доку как пихнуть в шаблон кастомную функцию. Это стандартный подход в вебе с хелперами в шаблонах
277 3017202
>>3017192
Бля, я уже заработался реально.
И слово "в шаблоне" в исходном комменте просто не заметил, лол.
278 3017271
>>3017190

>Серверы на питоне делали и скорость там вполне сопоставима с Го (который тоже не C++).



Хуя ты серишь. В режиме single query:
1. Django - 18,355 rps
2. Gin - 185,337 rps
279 3017371
>>3017271
Причём тут джанга, ебанаша?
Ты бы ещё Zope вспомнил, клоун.

На хуй иди, токсичный пидр.
280 3017398
>>3017371

>Django - web framework


>Gin - web framework


Видишь, одно и то же, значит Го в 10 раз быстрее Питона, совсем тупые, не понимаете что такое rps? Requerst Per Second.
281 3017418
>>3017398
Дада, логика такая примерно.

Понятно, что Го быстрее.
Только в 95% случаев это не имеет никакого значения вообще.
Насколько он быстрее, чем последняя версия FastAPI - хз. Но, пидантик сильно ускорили в последних версиях, как я слышал.
Но, такую хуитку, которую на питоне ты напишешь за вечер не глядя, на го ты будешь писать хз сколько.

Реальные бенчмарки зависят от задачи. RPS - хуйня вообще. Затык обычно в бд или в бизнес-логике.
Вот тут интересная дискуссия на эту тему:
https://www.reddit.com/r/golang/comments/u5squc/golang_vs_fastapi/?rdt=60057
282 3017532
>>3017190

>Серверы на питоне делали за 20 лет до того, как появилось ML-говно. И ещё больше делают сейчас. И скорость там вполне сопоставима с Го (который тоже не C++).


Чел...
https://web-frameworks-benchmark.netlify.app/compare?f=gin,fiber,chi,echo,fastapi
>>3017418

>Реальные бенчмарки зависят от задачи. RPS - хуйня вообще


Наверное latency намного важнее, да?
изображение.png106 Кб, 744x350
283 3017573
Думаю перекатиться из Rust какие подводные?
2 года веслаю на хрусте, до этого 1,5 года руби/пхп макакой и по-мелочи набирается претензий.
Основные это макросы и кодогенерация много всякого говна делается в компайл тайме в итоге много где ныряя посмотреть как работает код библиотеки окунаешься в нечитаемое говнище и приходиться пиздовать куда-то в гит репозиторий читать ишью таких же бедолаг.
Управление зависимостями тоже пизда https://crates.io такая же хуета ебучая помойка что и npm частично даже одни и те же люди делали, каждая микрописька тянет с собой вагон микрописек, в итоге чтобы сказать hello world в микросервисе на axum ставиться 90 крейтов. Нормальные имена библиотек заняты васянами с хэлоувордами. В итоге всё выглядит как полная параша.
И вакансии это пизда, либо криптохуйня, либо госконторы, которые слушают сеть и мониторят соцсети думаю понятно что мониторят или клепают БПЛА думаю понятно какие и для чего, еще там у провайдеров бывает всякое, но там часто нужны рокстары-помидоры 10+ лет опыта, которые окаменелое говно мамонтов с крестов переписывать будут. Крипта ебучая хуйня написанная на коленке, я туда окунался на полшишечки между делом и такого количества говна я повидал, плюс там каждый молодежный NFT-стартап помирает через год выплачивая ЗП своими токенами пока живет, относительно нормальных проектов с перспективой там с гулькин хуй. Вообще живут именно валюты бтц, эфир и тд, а остальное всякое говно для стрижки лохов инвесторов. В итоге годных вакансий довольно мало.
Смотрю в сторону go, вроде суть примерно такая же, также почти всё руками пишешь, также ошибки руками обрабатываешь, также все вокруг структур, но с другой стороны всё как-то проще. А все шутки про if err!= nil {return err;} от тех кто ни писал ни строчки, ide это о одно if понимает и особо не замечаешь. Но количество нормальных вакансий это просто небо и земля, почти всё продуктовые компании пишущие джсономешалки.
Вот собственно интересуюсь какие подводные?
284 3017596
>>3017573

>или клепают БПЛА думаю понятно какие и для чего


ХОТЕТ. Скинь пожалуйста ссылку на вакансию. Я хочу ебать, давить, петушить, хуярить, топтать хохлов, если за это ещё будут деньги плотить, так вообще песня. Работа мечты.
285 3017622
>>3017418
Зачем делать что-то на медленном старом языке, когда есть супер быстрый новый? Зайдет на твой сайт 100к человек одновременно, Питон пукнет и обмякнет, а Го переварит и еще попросит, клиенты довольны и какая экономия на серверах, на оперативной памяти? Огромная.
286 3017673
>>3017596
Вот такие регулярно попадаются https://hh.ru/vacancy/8953095618
Но скорее тебя будет петушить товарищ майор и дадут тебе запрет на выезд
288 3017980
>>3016559

>Э-э-э-э...


Ты видел как голангеры обрезают строки?
289 3017981
>>3017622
Тебе уже писали, что рейт запросов умножается на нуль бизнес логикой и хуёвыми сикуэлями. Голанг не про монолитные приложения с логикой. Голанг про микропенисы уровня хочу какать, какою. Пилить на нём что-то сложное, есть ошибка архитектуры приложения.
image.png731 Кб, 878x755
290 3017985
>>3017573

>клепают БПЛА

291 3017986
>>3016559
Добро пожаловать. Снова.
292 3018007
>>3017985
Это пока тебя не пригласят бумажку подписать в кабинете у товарища майора. Тут и случается самое веселье с запретом выезда за границу в течении 5 лет после увольнения и прочие плюшки гостайны
293 3018105
>>3018007

>Это пока тебя не пригласят бумажку подписать в кабинете у товарища майора.


Моя первая работа такая была, нашел чем удивить. Я правда АЭС занимался, не военкой.
294 3018189
>>3017981
мне кажется на гошке и монолоит можно написать, какая собственно разница то? вон куб 2 ляма строк и ничо
295 3018272
>>3018189
Мы не знаем всех подробностей этой разработки, вполне вероятно разрабы работают вахтами на этом проекте, поочередно уезжают на реабилитацию в психиатрическую клинику по мере внесения правок в код.
296 3018288
>>3018272
Чел, модульный подход ничем не хуже ООП. ООП это opinionated блаж. C модулями тоже пишут монолиты. Пример питон джанга, руби рельсы. А голанг еще и статически типизирован из коробки. Голанг хуже только в том плане что нет большого фреймворка
297 3018302
>>3018288
Если Голенг ничем не хуже, а даже лучше из-за дрочки типов, то почему на нём еще нет своей джанги и рейлс?
298 3018330
>>3018302
1) Не модно уже. Сейчас модно ставить пакеты. С DI любая васянка превращается в фреймворк.
2) Высокоуровневый и так. С стандартной либе готовые компоненты от фреймворка.
299 3018407
>>3018302
Джанга и рельсы загибаются потихоньку, сейчас рельсы и руби в целом почти никто не использует, а на петухоне всяки FastApi популярны вместо джанги. Сейчас как раньше не нужно генерировать кучи страниц на бекенде, а достаточно выплюнуть json. В гошке почти всё для этого есть из коробки.
300 3018410
>>3018330

>не модно



>>3018407

>не нужно


>всё есть, принтом отдадим строку ключ-значение в сокет, достаточно я скозал!



Вот это подрыв.
301 3018420
>>3018410

>подрыв


Уроки то сделал, подрывник?
302 3018483
>>3018410

>>не модно


>>не нужно


Расскажи, мой юный друг, чего тебе НУЖНО в рельсах и джанге
303 3018496
>>3018407

>Сейчас как раньше не нужно генерировать кучи страниц на бекенде, а достаточно выплюнуть json.


Ну хуй знает, вон сча хайп на go + htmx + templ, когда мне нужно какой-то простой сайт накидать, я его быстрее на фласке/фастапи с жинжей сделаю, чем отдельно ещё буду под это дело фронт разворачивать.
304 3018527
>>3018483
Нуу, модели, валидации, has_many belongs_to ассоциации, простенький ORM, роутинг, работа с кешэм (на уровне фрагментов страницы, на уровне извлечения данных), каскадные удаления с отработавшими коллбэками, возможность подключать разные базы данных и связывать данные из них на логическом уровне, какой-нибудь простой шаблонизатор с поддержкой лейаутов (служебные страницы намного проще отдать в виде готового html, чем парсить json на клиенте), модуль авторизации\аутентификации, возможность выкинуть долгий запрос в отдельный воркер, со стороны сервера уведомлять клиента о статусе этого воркера через вебсокеты, ну базовые круды что-то вроде generate crud zlupa чтобы инструмент разворачивал бойлерплейты и не писать эту шелуху самому, поддержка миграций для базы данных конечно же, накатить\откатить, возможность зашифровать\расшифровать данные для безопасного хранения, по-моему абсолютно базовые вещи для веб-разработки.
305 3018531
>>3018496
Это когда в одного пишешь там да проще на каком нибудь MVC а для отправки формочек жиквери, а в продуктовой команде бек пишут одни, фронт другие, а разворачивают третьи.
306 3018610
>>3018302

>почему на нём еще нет своей джанги и рейлс?


Потому что для этого, нужно использовать рефлексию, много рефлексию. А это не говей.
307 3018618
308 3020330
>>3018610

>рефлексия не го-вей


Но почему? В чем проблема рефлексии? Это же логично, мощно, удобно, это инструмент, который сделал серьезный шаг вперед и открыл новые горизонты, да, местами не быстрый, но отказываться от него по каким-то надуманным "не го-вей", просто абсурд.
309 3020810
сап гоферы,
выкатываюсь из рубипараши спустя десять лет, ибо заебало, думаю вкатиться в го или раст.

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

Есть аноны с опытом раста и го? Мнения?
310 3021247
>>3018527

> модели, простенький ORM


С одной стороны это все хорошо, но как только начинается чуть большее чем обычный CRUD, то пизда. Я помню в рельсах бывало частенько кто-то наебывался с 1+1. А всякие хитрые запросы приходилось писать в ActiveSupport::Concern используя по сути тот же sql, но костыля методами orm, пиздец как бесило, тебе нужно одновременно хорошо знать sql и orm и додумывать в голове что оно там построит. Оно еще не всегда оптимально запросы строит, например иногда вместо джойнов лучше сделать подзапросы я уже не помню почему у меня это не получалось в рельсах. Я помню там еще был пиздецкий запрос который получал все записи и потом гонял по циклам, тот кто его писал не до конца понимал что он делает, там еще было обернуто бизнеслогикой короче не сразу заметно, а с sql это более очевидно, я выкинул большую часть кода и переписал на sql простенький запрос в пару сотен строк который работал в раз 20-30 быстрее, продажница получала свою эксельку за пару секунд вместо минуты.
Для простеньких задач да, согласен, проблематично руками писать и хочеться какую-нибудь ORM. Короче всё по задачам

>валидации


Один хуй сам пишешь исходя из безнеслогики

>has_many belongs_to


>каскадные удаления с отработавшими коллбэками


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


На голом sql ты это всё напишешь более подробно и более детально можешь все сделать

>роутинг


Да, в рельсах элегантное, тут много писанины, согласен

>с кешэм (на уровне фрагментов страницы,


> какой-нибудь простой шаблонизатор с поддержкой лейаутов


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

>служебные страницы намного проще отдать в виде готового html, чем парсить json на клиенте


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

>модуль авторизации\аутентификации


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

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


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

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


Ни разу с ними не работал, думаю тоже реализуемо

>ну базовые круды что-то вроде generate crud zlupa чтобы инструмент разворачивал бойлерплейты и не писать эту шелуху самом


Это да, не хватает иногда, в рельсах прикольно было крудошлепить

> поддержка миграций для базы данных конечно же, накатить\откатить


Тоже есть, только пишешь сразу голый sql

>возможность зашифровать\расшифровать данные для безопасного хранения,


Всё есть

Короче как я понял тебе не хватает фронтенда, нормальной orm и кодогенерации, это да нету. Остальное всё есть просто немного по-другому
310 3021247
>>3018527

> модели, простенький ORM


С одной стороны это все хорошо, но как только начинается чуть большее чем обычный CRUD, то пизда. Я помню в рельсах бывало частенько кто-то наебывался с 1+1. А всякие хитрые запросы приходилось писать в ActiveSupport::Concern используя по сути тот же sql, но костыля методами orm, пиздец как бесило, тебе нужно одновременно хорошо знать sql и orm и додумывать в голове что оно там построит. Оно еще не всегда оптимально запросы строит, например иногда вместо джойнов лучше сделать подзапросы я уже не помню почему у меня это не получалось в рельсах. Я помню там еще был пиздецкий запрос который получал все записи и потом гонял по циклам, тот кто его писал не до конца понимал что он делает, там еще было обернуто бизнеслогикой короче не сразу заметно, а с sql это более очевидно, я выкинул большую часть кода и переписал на sql простенький запрос в пару сотен строк который работал в раз 20-30 быстрее, продажница получала свою эксельку за пару секунд вместо минуты.
Для простеньких задач да, согласен, проблематично руками писать и хочеться какую-нибудь ORM. Короче всё по задачам

>валидации


Один хуй сам пишешь исходя из безнеслогики

>has_many belongs_to


>каскадные удаления с отработавшими коллбэками


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


На голом sql ты это всё напишешь более подробно и более детально можешь все сделать

>роутинг


Да, в рельсах элегантное, тут много писанины, согласен

>с кешэм (на уровне фрагментов страницы,


> какой-нибудь простой шаблонизатор с поддержкой лейаутов


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

>служебные страницы намного проще отдать в виде готового html, чем парсить json на клиенте


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

>модуль авторизации\аутентификации


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

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


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

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


Ни разу с ними не работал, думаю тоже реализуемо

>ну базовые круды что-то вроде generate crud zlupa чтобы инструмент разворачивал бойлерплейты и не писать эту шелуху самом


Это да, не хватает иногда, в рельсах прикольно было крудошлепить

> поддержка миграций для базы данных конечно же, накатить\откатить


Тоже есть, только пишешь сразу голый sql

>возможность зашифровать\расшифровать данные для безопасного хранения,


Всё есть

Короче как я понял тебе не хватает фронтенда, нормальной orm и кодогенерации, это да нету. Остальное всё есть просто немного по-другому
311 3021248
>>3020810

>Есть аноны с опытом раста и го? Мнения?


На раст не советую идти, там реально с работой туго и зарплаты особо не отличаются.
312 3021270
>>3021248
С работой в целом или в России? Я рассматриваю международные компании в основном
313 3021343
>>3020330
Рефлексия медленная. Если в рельсах и джанге, это не так заметно из-за того что сам язык не очень быстрый, то в го это будет сильно заметно. В жаве эту проблему решают кодогенерацией, но в го нет такой опции. Можно статитически генерировать код во время билда, но это сложно. Проще гошников заставить писать бойлерплейт код, они привычные.
Рефлексия ненадежная. Где-то не так назвал, не тот регистр и всё упадет в рантайме.
314 3021355
>>3021343
Медленная настолько что гошка превращается в питон?
Почему все время только одно считается истинным?
Если писать на го то только микросервисы и только хайлоад со всеми кафками, di плохо, не нужно,а копипастить трудно тестируемые портянки зависимостей хорошо
315 3021370
>>3021270
На западного барина крипта в основном, а РФ в госконторах и опсосах. Можешь сам поизучать.
316 3021372
Вообще эта дихотомия вымышленая. В качестве умозрительных примеров

Большая часть того же докера ни какой скорости требования не предявляет. Никто не создает контейнеры миллион раз в секунду. Тем не мение докер целиком на го написан

Сервис в монолите может браться через DI, это не значит что у тебя каждый реквест будет замедлятся DI. Сам сервис может эффективно обрабатывать запросы.
317 3021401
>>3021355

>Медленная настолько что гошка превращается в питон?


Не превращается, но в мире го заметная. Тут момент в том, что го в основной выбирают те, кому важен перформанс/ггц и 99 персентиль. Конечно если в го насыпать сахару, проложить рельсы, на нём начнёт писать Веб Студия Сокол, но это не цель го. Комьюнити не поддержит.

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


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


Это идеологический вопрос. Авторы го предложили такую парадигму вначале, потом сформировалось комьюнити которое это поддержало/приняло. И теперь это самоподдерживающийся тренд. В го идут те, кто любит писать много кода и топит за явные зависимости, минимум абстракций и т.п. А те кто любит convention over configuration идут в руби и питоны.
318 3022024
>>3018288
ООП - говно. В го не система типов, а говно.
319 3022027
>>3018407

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


Как там в 2016? Htmx ещё не взлетел? Graphql пока не изобрели?
320 3022069
>>3022024
Ваще похуй. Айти это про делание платного софта, а не красивости.
321 3022165
>>3022027

>Graphql пока не изобрели?


Это кал уже умирает, и слава богам
322 3022354
>>3022165
Вообще в ахуе честно говоря с динамики отрасли, пыха была модная, ушла, рейлс был модный, ушел, нода была модная, ушла, гошечка наша любимая модная, но где гарантии что через месяц её не похоронят? Никаких.
323 3022393
>>3022354
Надо уметь вкатываться в тренды
324 3022395
>>3022354

> пыха


> ушла


Лол нет, она как обслуживала большую часть интернета, так и обслуживает
325 3022472
>>3022395
Битриксо-вордпресы и прочее цмс говно это основная масса которое пилят подвальные студии по всему миру, вот это и есть пхп.
Всякие нормальные symfony задыхается, а Yii и zend сдохли. На плаву только laravel те же рельсы, но и то он дошел до пика популярности и потихоньку вниз сползает, мне кажется его ждет судьба рельс.
326 3022541
>>3017573

>Думаю перекатиться из Rust какие подводные?



1) Гугл стремится напихать зонды https://opennet.ru/58639/
2) Невозможно собрать программу с зависимостями без подключения к интернету. То есть когда все зависимости программы уже скачаны, то при создании новой программы с подключенными зависимостями go ломится в интернет вместо того, чтобы брать уже скачанные из кэша.

>Управление зависимостями тоже пизда


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



По-моему, такая ситуация у всех языков, для которых облегчено скачивание зависимостей, включая go. Ручное скачивание зависимостей неудобно, но зато люди бы больше задумывались перед тем, как что-то подключать.
327 3022551
>>3022541

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


Если это проблема, то можно поднять свой прокси на локалхосте и пусть ломится туда.
328 3022558
Прошлые озоновские route256 кто-нибудь проходил? Нормальные курсы или как у отуса? Я скачал с торрентов поток 2020, там в первых лекциях вообще какие-то приглашенные кабанчики рассказывают хеллоуворлды, хотя курс позиционируется для мидлов.
329 3022636
>>3022541

>Гугл стремится напихать зонды


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

Ну и в целом, это нормальная практика. И Оракл и Майки собирают данные о том как исползуют джаву и дотнет. Более того, если у тебя крашнулось приложение это норм практика прислать саппорту хипдамп. В котором, на минуточку, есть все данные приложения. А не просто счетчики как в телеметрие от гугла.
330 3022650
>>3022541

>1) Гугл стремится напихать зонды https://opennet.ru/58639/


Ваще похую, я даже удивлен что они этого не сделали ещё.

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


Тоже не проблема, я же не на полярной станции в Антарктиде собираюсь работать

>По-моему, такая ситуация у всех языков


Нет, тут именно подход как в js качаются разные версии одной и той же зависимости, много где будет ругаться что версии друг к другу не подходят. Плюс всякие стандартные штуки тянутся из сторонних зависимостей, например для рандома сторонний rand, для работы с асинхронностью tokio и очень часто к нему futures, для жсонов serde и многое другое.
331 3022659
>>3022558
Тоже думаю пощупать, также спиздил с рутрекера и удивился как в первых лекциях говорят про гит и линукс. Потом чел рассказывает про синтаксис, на благо быстро как раз для перекатывающихся. Но наверное в этот поток не вкачусь, пока условий и времени нет, буду пробовать летом-осенью если будут.
332 3025101
>>3021401
Но, разве сериализация-десериализация json делается не через рефлексию?
В смысле - она же везде в микросервисах - и всё нормально.
изображение.png33 Кб, 864x428
333 3025280
Как вы работаете с БД? Сижу примус починяю с туду сервисом и возник вопрос как оно там при работе с БД. Накидал модельки для круда и решил у чата гопоты спросить как сделать по красоте чтобы конекшн к БД был в модели, чтобы не пробрасывать через 3 пизды через контроллеры, оно мне предложило глобальную переменную или коннектиться каждый раз и высрала этот код. На мои возражения что мол какого хуя на каждый реквест коннекты делать, ответила типа спокуха там какой-то планировщик и делает всё красиво под капотом.
Собственно вопрос это нормально ли, там реально есть какой-то планировщик?
А после строки log.Fatal(err) оно в панику не упадет?
А как вы делаете красиво в продакшене?
334 3025290
>>3025280
Забыл уточнить, я использую "database/sql" из коробки, БД постгрес
335 3025300
>>3025280

>какого хуя на каждый реквест коннекты делать


Ты вообще понимаешь, как работает веб сервер?
336 3025313
>>3025300
Чел не тупи причем тут вебсервер. Тут надо понимать как работает постгря. Она на каждый коннекшен поднимает всю свою трихомундию заново. Для работы с ней используют менеджер который пул коннекшенов поддерживает, потому что сама постгя не имеет такой штуки. Обычно эта хуйня есть в любом драйвере любого языка.

мимо
337 3025439
>>3025300

>Ты вообще понимаешь, как работает веб сервер?


Что тебе нужно рассказать, задавай вопросы.

Для пхпшников тред в другом месте, если что. В нормальных языках где запущенное приложение не умирает каждый раз, на каждый реквест не делается коннект к БД, а используется уже существующее подключение. Потому что само подключение это очень дорогая операция и на стороне БД там под капотом много всего делается.
338 3025477
>>3025280

>там какой-то планировщик и делает всё красиво под капотом.


Так открой капот и посмотри.
В го это просто.

>>3025439

>В нормальных языках


>на каждый реквест не делается коннект к БД, а используется уже существующее подключение.


С чего ты взял, что в го не так?
339 3025505
>>3025477

>Так открой капот и посмотри.


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

>С чего ты взял, что в го не так?


Кто говорит что в го не так, шиз? Я и спрашиваю как эта хуйня работает и вообще хотел узнать как в продакшене у гоферов делается, но мне начинают писать всякие залетные пхпшники вкатуны за каким-то хуем, которые нихуя не знают.
340 3025516
>>3025280
>>3025505
Бля, нашел в чём сосбтвенно проёб. Эта хуйня мне нахуевертила выше объявление переменной var db *sql.DB и нижу по коду вместо того чтобы присвоить значение объявляла новую db из-за двоеточия.
db, err := sql.Open("postgres", connectionString)
Короче переделал и в итоге получился синглтон с коннекшеном, теперь заебись в логах БД не создается подключение.

Но тем не менее вопрос о том как это грамотно делается в продакшене остается открытым
341 3025834
>>3025280

>log.Fatal


>return nil, err


нахуя

>чтобы конекшн к БД был в модели, чтобы не пробрасывать через 3 пизды через контроллеры


ну так мы не делаем. бд (пул коннекшнов) инжектится в сервисный слой в main(). хз как это на джавособачьем.
342 3025892
>>3025834

>нахуя


гпт такую хуйню написала, уже попробовал, панику дает

>бд (пул коннекшнов) инжектится в сервисный слой в main().


Это как? Есть пример какой-нибудь на гитхабе?
343 3025960
>>3025892
Чувак, этих примеров - как говна за баней.
И в интернетах, и в книгах.
Но, судя по тому, что ты используешь Искусственного Идиота - результат тебе не очень нужен, тебе нравится сам процесс.
344 3025973
>>3025892
И даже далеко ходить не надо:
https://go.dev/doc/database/manage-connections
345 3026060
>>3025101
Да сериализация JSON, XML работает через рефлексию. Но тут надо понимать что выбора особо нет. Если у тебя нет заранее написаной схемы, по которой можно сгенерировать структуры gRPC, OpenAPI, XSD передают привет, то кроме рефлексии у тебя нет выбора. При этом например в Java, есть варианты скомпилировать это в байткод, который затем JIT преобразует в нативный код.

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

Ситуация такая, что вокруг каждого языка сложилась своя платформа, ниша, подход к разработке, набор инструментов, и т.д. И большинство библиотек фреймворков его придерживаются, просто чтобы ими пользовались, в код контрибутили, и т.п.
346 3026133
>>3025516
Пиздец ты у мамки архитектор. Пулом конекшенов управляет драйвер бд под капотом, ты просто каждый раз вызываешь open и не паришься.
# OP 347 3026152
>>3025516
Хз насколько правильно это (моя первая и пока единственная работа на го), но мы на проекте пробрасываем вот такой синглтон бд в структуру с бизнес логикой и оттуда уже с ним работаем и все, никаких изысков
348 3026158
>>3026152
Так все делают, в других языках тоже. Есть интерфейс DbConnection с методами Query и т.д. Есть интерфейс Database с методом Execute, который принимает лямбду с аргумантом DbConnection. Этот Database внутри Execute подключается к бд и управляет транзакциями, чтобы не писать Commit/Rollback сто раз в бизнес логике. DbConnection пробрасывается по стеку вызовов, это правильно, так сразу видно, где мы используем бд. Сам Database является синглтоном и инжектится через DI.
349 3026452
>>3026152
СУБД не говей, SQL весь перформанс на ноль делит, в итоге программа на Питоне и на Го работает одинаково медленно, где in-memory key-value хранилища?
350 3026454
>>3026452
дебил итт
351 3026464
>>3026454
Высокая производительность это оптимизация хранения данных в первую очередь, маня, а потом уже язык и всё остальное, если ты из Го дёргаешь портянки джойнов в Постгрес с единой базой и единой точкой входа, то ты просто дурачок каргокультист, который повторяет за большими дядями и ведётся на всё модное, но как и зачем дела делаются - понятия не имеет.
352 3026470
>>3026452
В реальных задачах, не в литкоде дроченом, даже джаваскрипт работает с той же скоростью, что и компилируемые языки. Особенно в микросервисах, где джейсон по сто раз ездит туда-сюда по сети. Поэтому в штатах нодежс мегапопулярна, а на супербыстром расте пишут только авторы раста.
353 3026472
>>3026470
Как же, у тебя в голове, насрано.
354 3026473
>>3026472
Матешу не прогуливай.
355 3026520
>>3026470
Всё так, ботлнек на сеть и на доступ к данным это два якоря веб-разработки, не важно насколько язык быстр и насколько пиздат код, программа большую часть времени простаивает, ожидая, пока данные пройдут через систему хранения и сетевой стек.
356 3026566
>>3026454
харош кукарекать goвноед максималист
твоё инмемори хранилище может пиздануться и потерять все данные навеки вечные

software engineering это всегда трейдофы
пиздеть про то что ЭТА ЛЮЧЕ ПАТАМУШТА БЫСТРА!!!! могут только ебанаты фанбои без реального опыта разработки

используем инмемори для кеша, для персистенса и транзакций используем субд

Думай, ребёнок
357 3026570
>>3026520
спешите видеть, школьники goвноеды itt на своём хуёвом велосипеде докатились до рассуждений о io bound/cpu bound вычислений
358 3026616
>>3026566

>ЭТА ЛЮЧЕ ПАТАМУШТА БЫСТРА!!!!


Так это девиз голенга, дрочить попугаев в синтетике, о чем ты говоришь?
359 3026631
>>3026570
Что вы там на цпу вычисляете на голенге? Вместо СУБД среднее арифметическое подчитываете?
360 3026668
>>3026631
протеины
очевидно же
361 3026676
>>3026668
Зачем Авито считает протеины?
362 3026708
>>3026631

>Что вы там на цпу вычисляете на голенге?


100500 элемент Фибоначчи.
image.png43 Кб, 586x795
363 3026994
Объясните вкатуну, почему аутпут именно такой (причём, он меняется в случайном порядке при запусках: то сначала пишется победитель, то сначала проигравший).
По идее мы сначала запускаем две горутины и ждём в цикле пока они отчитаются в цикле по done. Первая горутина, которой достанется поток выполнения, проиграет, т.к. на этот момент канал battle ещё пуст, и она сможет в него записать. После этого она сразу же записывает своё имя в канал done ждёт main. Дальше заходит горутина-победитель, читает имя проигравшего и ждёт, пока main освободит для неё канал done, занятый первой горутиной чтобы отчитаться о завершении.
То есть по моим соображениям формат вывода всегда должен быть следующим:
Language1 lost
Language1 is done
Language2 beat Language1
Language2 is done
Однако на практике это не так, и на выводе в случайном порядке пишется то сначала победитель, то сначала проигравший. Объясните, что я упускаю?
image.png2 Кб, 135x99
364 3027004
>>3026994
В догонку к вопросу: откуда может браться такой вывод я вообще не понимаю. Допустим, поток исполнения меняет горутину между селектом и записью в канал. Это объясняет, почему done выходят в рандомном порядке. Но ведь кейс победителя в select не может отработать до кейса проигравшего. Как тогда возможен такой порядок строк?
365 3027074
>>3026994
Ты вообще какую-то дичь написал, мне кажется.
Что сделать-то хотел?
366 3027077
>>3026994

>done


И открой для себя WaitGroup.
367 3027082
>>3027074
>>3027077
Это рандомный пример из гугла, написанный не мной. Пытаюсь понять, почему он работает так, как работает. Как я понял, пример иллюстрирует чтение и запись в один и тот же канал из одной функции или типа того, это не важно. Я просто хочу разобраться
368 3027083
>>3026994
ну я могу предположить что почти всегда последний язык будет проигравшим, т.к. шедулится первым. а в каком порядке оно напечатается, тут хз, потому ты там еще 4 сискола делаешь.

сохраняй вывод в строку и печатай после завершения. еще можно сделать gomaxprocs=1 или debug.setmaxthreads и прочекать насколько поведение стало воспроизводимым.
369 3027091
>>3027083

>ну я могу предположить


Вот тут:
https://scanlibs.com/concurrency-in-go/
пишут, что горутина может даже вообще не запуститься.
Т.е. нельзя делать вообще никаких предположений такого рода.
Надо просто всё синхронизировать.

>>3027082
Это не пример, а какая-то хуйня.
Читай книжки (см. выше).
370 3027102
>>3027091

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


ага, а программа может не выйти, зовите тюринга. горутины синхронизированы с main через канал. всё тело горутин до отправки в канал включительно будет выполнено. вейтгруппа-хуюппа больших гарантий в этом кейсе не даст.
371 3027107
>>3027102

>вейтгруппа-хуюппа больших гарантий в этом кейсе не даст.


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

Вообще - пример полное говно. Потому, что ничего не иллюстрирует. В то время, как есть куча классической инфы по теме, написанной умными людьми.
372 3027139
>>3027083

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


хотя короче да, потестил 10к запусков и в этом кейсе это не так - примерно 50/50 исходы. я бы так упростил пример, чтобы избавиться от сисколов https://go.dev/play/p/ph9Qone5Wm8
тогда можно попробовать объяснить: первой почти всегда запускается пыха, идет в селект и видит, что никакой из кейсов не доступен, добавляется в recvq и sendq канала и засыпает. просыпается горутина с гошкой и псевдорандомно выберает кейс в селекте, т.к. оба кейса доступны.

если добавить каналу буфер - https://go.dev/play/p/SY8m9hMM7bU - будет видно, что в 99% первой запускается пыха. (т.е. из 10к запусков порядка 9980 выигрышей у пыхи, которая отправляет в канал и выходит).
373 3027169
>>3027139
Я всё равно не понимаю, откуда берётся рандом. Мы проходимся в цикле, первым элементом является Go. Создаётся горутина с Go, в селекте она может только записать, т.к. канал ещё пуст. После этого main читает из done и вторая горутина не успевает завершиться. В моём представлении это должно работать так. Планировщик что ли в случайном порядке выбирает горутины?
374 3027176
>>3027169

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


До тебя, я вижу, начинает потихоньку доходить.
Потом, глядишь, начнёт доходить, почему конкурентность это сложно, и зачем пишут все эти книги.
375 3027193
>>3027169
https://github.com/golang/go/blob/master/src/runtime/proc.go#L6621
когда ты делаешь go func(), горутина не запускается, а просто кладется в runnext переменную - следующую горутину на выполнение.
если в runnext уже есть горутина, то она уходит в локальную очередь и в runnext у записывается новая созданная горутина. т.е. последняя созданная горутина выполняется первой, а потом в очереди создания. но это в теории, когда у тебя есть только один P - так то еще глобальная очередь и воровство горутин есть.
376 3027208
Да ладно, не трольте вкатуна, ему и так хуёво будет всю его жизнь когда он поймёт в какое же он дерьмо вляпался и начнет просыпаться в 4 утра от стресса и выгорания

>>3027169
В concurrent среде выполнения есть только одна гарантия: никаких гарантий.
Нельзя делать никакие предположения по твоему коду, когда код выходит за границы 1 потока (в твоем случае ты запускаешь несколько корутин). Что запустится первым, что последним, что в процессе выполнения засаспендится - никаких гарантий.

Именно по этой причине придумали всякие акторы и прочие future'ы
377 3027243
>>3027193
>>3027169
если ты про то, что в 0.2% случаев горутины все равно в неожиданном порядке выполняются - ну тут я походу без GOMAXPROCS=1 запускал, а так пыха на 100% у меня пока выходит. если бы это были более длинные горутины, то еще GODEBUG=asyncpreemptoff=1 может понадобиться - хз насколько детерминированно sysmon горутины усыпляет.
шедулер в целом хуевертит как хочет, поэтому максимум вероятностные суждения можно сделать. и не факт, что в другой версии гошки это не поменяют или что-то еще.
378 3027300
>>3027243
Ты бы, лучше, эту энергию потратил на что-нибудь более полезное.
Например - на изучение go memory model.
379 3027565
>>3026994
Ты упускаешь принципы работы операционной системы. Система переключает потоки в случайном порядке.
380 3027761
В гомод нет алиасов
@
Создал пакет
@
Импортировал в 100500 проектов
@
URL пакета поменялся
@
Прогоняй 100500 проектов через файнд унд репласе

Наркоманы бля...
381 3027817
>>3027565
Ну в случае если у нас GOMAXPROCS=1, операционная система ничего не переключает, т.к. поток всего один, насколько я понимаю.
382 3027840
>>3027817
Чтобы выполнялось в одном потоке, убери go в строке 23.
# OP 383 3027868
>>3027761

> URL пакета поменялся


Ты работу хоть раз работал?
384 3027996
>>3027868
Переместили с гитхаба на корп гитлаб, в чем я не прав?
385 3028001
>>3027996
Да у меня самого личные репозитории зеркалируются
386 3028028
>>3027996
Переместили попенсорс или приватный пакет вашей конторы?
387 3028030
>>3028028
приватный я же так и написал

>Создал пакет

388 3028036
>>3027817
с GOMAXPROCS=1 потоков тоже несколько может быть. если у тебя тред собирается заблочиться на сисколе, например файл с диска прочитать, то P отходит другому треду. после этого порядок исполнения уже не гарантирован - например у тебя головка ЖД может две секунды отлипать.
389 3028039
>>3028036
хотя он и до этого не особо гарантирован
390 3028093
>>3028036
Их не просто несколько может быть.
Их может быть сколько угодно. Особенно горутин.
А порядок исполнения может быть совершенно чётко описан формулой как бык поссал
391 3028469
>>3028093
ну если ты запустишь сколько угодно go func(){runtime.LockOSThread();select{}}(), то их будет сколько угодно. а так их несколько
image.png56 Кб, 781x463
392 3028482
>>3028093
ну то есть берешь и смотришь. на сервисе 400к рпм. 20 тредов и 1к горутин в пике. их может быть сколько угодно, но их не сколько угодно
393 3028558
>>3028482
Ну, тот чувак очень упрощённо понял эту тему.
Типа сделал 1 процессор, значит будет один поток.
А на самом деле - совсем не один. И даже не 2-3. А дохуя.
394 3028589
>>3028036
Плюс еще как минимум на линуксе нетворк поллер на отдельном треде висит.
Снимок экрана 2024-01-31 в 23.43.23.png223 Кб, 1540x1550
sage 395 3029017
Сап, антуаны. Покритикуйте скриптец по-брацке
396 3029045
>>3029017
И что за фигня у тебя в самом начале цикла fоr?
И надо было написать, что является входными данными.

Алсо - надо было на https://go.dev/play/ залить и прислать ссылку.
397 3029060
>>3029017
1. main должен быть почти пустым, функционал должен быть вынесен в функции, с возможностьб подменить все входные данные для тестов.
2. Не ебу, но выглядит как будто тебе надо
reader = csv.NewReader(...)
reader.Comma = ' '
Но похуй.
3. В 26 строке лучше будет вывести позицию где ошибка и опционально проблемное слово. Выводить ошибки принято в stderr и с помощью log.
4. У тебя при ошибке парсинга в 28 строке в num будет 0. Ты или [хочешь log.Panic, или добавить continue в обработку ошибки
5. В 28 строке потенциальный выход за границу массива с паникой. Мб count_arr должен быть маппой, мб не хватает проверки на границы num.

Могу приебаться к именам переменным ещё. Но это за меня сделает линтер - возьми golangci-lint и погоняй его.
image.png37 Кб, 495x131
398 3029096
399 3029318
>>3029017
Бля, после года в своей микросервисной галере, пиздец как отвык от простенького кода в main, решающего задачку. Чет расслабился имея работу, пойти что-ли литкод подрочить...
400 3029415
>>3029017

>двухпробельные отступы


фу лох
401 3029520
>>3029017
И ещё раз тебе скажу - начинать надо с формулировки проблемы.
Типа - мой код должен делать то и это, оцените как получилось.
Потому, что в очень многих случаях люди пишут даже довольно неплохие программы, просто они решают немножко не ту задачу, которую требовалось решить.
402 3029915
>>3029045
Добавил входных, залил на play, спс
>>3029060
Вынес в функцию. Там не csv, просто данные в stdin. Поправил вывод ошибки. Поправил имена пельменных. Поставил линтер, спс.
>>3029096
You're my brother
>>3029318
Чего-ж не подрочить?
>>3029415
Погуглил, в го принято 8 символов? Мдэуш
image.png22 Кб, 225x225
403 3029925
>>3029520
Задача работает, хотелось критики чисто по структуре, т.к. пишу на другом языке. Но добавлю описание, спс.

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

Вам заданы 10 целых чисел от 1 до 4. Проверьте, что заданные размеры соответствуют требованиям выше. Гарантируется, что кораблей на поле ровно 10 и их размеры 1-4 включительно
Снимок экрана 2024-02-01 в 16.10.30.png34 Кб, 700x522
404 3029930
https://go.dev/play/p/WktbL1QcWX2

Сори что в несколько сообщений. Сраный двощ, со своим сраным спамлистом
405 3030319
>>3029017
С именами переменных беда конечно, s, v - букв не хватает на клавиатуре? read_line это действие, валидное название функции, но не переменной, reference - кейворд из раздела указателей, вводит в заблуждение относительно сути своего содержимого, иди дрочить стайлгайд кароче.
406 3030411
>>3029930
>>3029925
нихуя не понял. что за первая строка? почему она не читается? не нашел в алгоритме чтобы вертикали учитывались, если задача про валидацию расстановки в морском бою. где проверяется что кораблей десять?

хотя бля вроде разобрался. типа нужно убедиться, что на каждой строчке четыре "1", три "2", две "3" и одна четверка?

ну я бы так поправил https://go.dev/play/p/yF1bKvzInG5 . на самом деле не особо от твоего варианта отличается.

если ридер принимать на вход функции, то легче поддержать разные типы ридеров (поменять StringReader на файл или io.Stdout). если бы это был какой-нибудь адвент оф код, то я бы даже забил на вынос парсинга отдельной строки в функцию и тестировал полный инпут всегда.
а в рил лайф сценарии счетчик скорее бы в мапе был, а не в массиве. ну просто потому что в общем случае значениями не интовые размеры кораблей выступают, а какие-нибудь строки.
407 3030414
>>3030411
ну я там проебался немножк конечно ищите лохи))
408 3030522
>>3030319

>С именами переменных беда конечно, s, v - букв не хватает на клавиатуре?


Но, разве не таков говей?
В стдлибе такого очень много, причём, в таких местах, где нормальные люди постеснялись бы.
409 3030584
>>3030522
Ты ж не в стдлиб пишешь.
410 3030669
>>3025973
>>3026152
>>3026158
>>3025834
Спасибо, анончики, всяко перепробовал, короче сам пришел к такой архитектуре в main создаю коннекшен, а дальше через DI проборасываю в контроллеры и все красиво получается без костылей.

>>3025960

>Чувак, этих примеров - как говна за баней.


Я просто хотел тот самый пример, которой прям go way, который завещал бородатый седой дядька отец основатель. А на гитхабе только говно за баней разной степени всратости.

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


Пока да только процесс, потыкаюсь еще недельку другую может быть и на результат пойдет если понравится
411 3032293
Что-то давно ничего не слышно про козырных-тузовых.
У них там всё хорошо?
Онлайн-собесы идут у бесов?
412 3032608
есть gin fiber chi, echo. Какой из них самый пиздатый?
413 3032610
Когда уже стэктрейсы уже добавят? Уже заебался их вручную писать
414 3032614
415 3032658
>>3032610
panic(err)
416 3033164
>>3032610
это не go way, успокойся и привыкай
418 3033569
>>3032610
Тебе в джаватред
419 3033612
>>3033164
Go away
420 3035590
>>3033569
джава уже пресытилась
421 3035601
>>3033569
кабан заставляет писать на котлине, а я не хочу(
image.png33 Кб, 405x109
422 3035715
чому?
423 3035963
>>3035715
У хохлов айти уже закончилось, по 800 отзывов на вакансию, но ебанутые продолжают пилить видосики на свиномове.
424 3037432
https://tip.golang.org/ref/spec#For_range

Завезли range для интов, цикл от 0 до n-1. Хотел побомбить от того что сделали такое половинчатое решение, но уже даже не хочется. Походу становлюсь гофером.
1678502490294356.jpg340 Кб, 827x905
425 3037826
>>3037432
В чем половинчатость решения?
426 3038006
>>3037826
Что, так сложно было сделать итерацию по произвольному диапазону, а не только 9...n-1 ?
16476673498600.gif434 Кб, 305x205
427 3038140
>>3038006
А нахуя? Когда и зачем ты последний раз писал for i := 9; i < n; i++
428 3038410
>>3029415
Рубист
429 3038433
>>3038140
1. Это нужно таким деградантам как ты, которые обратный цикл без ошибок не могут написать.
2. Неделю назад писал
for i := k; i <= n; i++
Ну и обратные тоже нужны бывают.

Ты просто туповат и не понимаешь, что язык это инструмент для большого количества разработчиков. И тут аргументы типа мне не надо, это хуевые аргументы.
430 3038595
>>3038433
Go - это не язык решения задачек на литкоде, а в первую очередь инструмент для решения бизнес-задач.
431 3038783
>>3038433
Если бы ты не был дауном, то мог бы понять, что rangefunc итерирует существующие типы, а не любую рандомную хуйню. Как ты изобразишь произвольный диапазон синтаксически? range (10, 100)??? [10..100]??? 10 100??? В любом случае получится нечто несуществующее в языке.

Если ты настолько тупой, что не в состоянии написать for ;;, то можешь прямо сейчас написать функцию RangeInt(a, b int) []int и итерироваться по ней сколько хочешь.
432 3038806
>>3038783
В питоне обычно рендж как раз и крутят не с нуля, в этом его фишка - диапазон каких-то значений, а если у тебя с нуля, то это обычный for-each и тащить range смысла нет.

>то можешь прямо сейчас написать функцию


Почему бы разрабам не написать эту функцию и не включить в библиотеку, раз уж выкатывают какую-то фичу? Типа мы делаем колесо, ну как в модных языках, но колесо будет не круглым, а квадратным, но вы можете сами ножичком почикать вот так чик-чик-чик и будет похоже на круглое. Интересные решения конечно.
433 3038943
>>3038806

>В питоне


Пошел нахуй

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


Потому что пошел нахуй, даун. Напишешь сам если нужно, не сломаешься. Щас бы всякое говно в стдлиб тащить ради инвалидов, которые 3 строчки написать не могут
434 3039073
>>3038783

>Как ты изобразишь произвольный диапазон синтаксически? range (10, 100)??? [10..100]??? 10 100??? В любом случае получится нечто несуществующее в языке.


Ох блядь! Вот же нерешаемая задача современности, придумать синтаксис для range! БЛЯЯЯЯ! Как же её решить, а?! Ну никак ничего не придумывается!

>>3038783

>можешь прямо сейчас написать функцию RangeInt(a, b int) []int и итерироваться по ней сколько хочешь.


Спокуха, уже и так ясно что ты тупой, не стоит дальше упирается в демонстрации этого. Предложить аллоцировать слайс на пару миллионов элементов, чтобы тупо проинтегрироваться от 1 а не 0. Это очень гениальное решение.
435 3039384
>>3039073
Даунище...
Screenshot 2024-02-07 at 15.41.05.png48 Кб, 588x524
436 3039408
>>3039073
Хуесос, про каналы не слышал?
437 3039409
>>3038806
ну затащат итераторы и сделаешь себе рендж прям как в петоне чтобы в целых двух местах его заюзать
438 3039412
>>3039408
сколько мютексов на картинке?
439 3039419
>>3039409
Скриптопарашный рендж - мощнейшая шутка, особенно при работе с датами, но здесь ничем таким даже не пахнет к сожалению, от ренджа одно только название почему-то.
440 3039427
>>3039419
я про range over function https://github.com/golang/go/issues/61405, который в 1.22 не завезли.
441 3039501
>>3039408

>Хуесос, про каналы не слышал?


Ебать даун. Ты вообще представляешь сколько всякой синхронизации и рид/райт барьеров происходит при записи/чтении из канала? Не говоря уже о том, что никаких инлайнов и прочих оптимизаций в таком коде не будет.
442 3039594
>>3039501

>представляешь


Имаджинировали ебало дауна, который рассуждает о перформансе вместо того, чтобы сделать бенчмарки и понять, что обсрался и пора обтекать?
443 3040513
>>3039594
Во первых ты дебил, который думает жопой. Твоя говноидея с каналом требует создания и запуска отдельной горутины. И любому здравомыслящему человеку ясно что это жрёт память на порядок больше, даже чем итератор, не говоря уже про for. Во вторых досрочно эту херню можно остановить только закрыв канал, что вызовет панику. В третьих перформанс каналов давно забенчили и он херовый https://syslog.ravelin.com/so-just-how-fast-are-channels-anyway-4c156a407e45
444 3041569
Почему вкатиться в го будет лучше чем раст?
445 3041576
>>3040513
Это случаем не ты всем мозги ебал с асинхронностью в растотреде? Ты свой там софт на микроволновке запускаешь?
446 3041579
>>3039073

>Ох блядь! Вот же нерешаемая задача современности, придумать синтаксис для range! БЛЯЯЯЯ! Как же её решить, а?! Ну никак ничего не придумывается!


На самом деле внести новую синтаксическую конструкцию в существующий язык довольно сложно
447 3041618
>>2996967 (OP)
Sup, я 24 летний вкатун самоучка (без вышки) и хочу знать какая стратегия лучше для вката:
1) Продолжать писать код и дрочить сети, SQL, инфру и после основ спамить резюме везде
2) Просто гриндить литкод 24/7 по гайдам Neetcode и участвовать во всех стажках бигтеха
448 3041718
>>3041618
Пет-проект делай, имиджборду на микросервисах, захости на сервере, с деплоем и тестами, с мониторингом, чтобы было похоже на настоящее приложение, тогда хотя бы видно будет что ты на уровне студента что-то делаешь, а литкоды и чтение документации это тупиковая залупа которая тебя никуда не приведет.
449 3041720
>>3041618
Почему ИЛИ? В 2024 тебе надо и то и другое. Еще и софтскиллы не забудь. И сверху еще один ЯП на уверенном уровне, чтобы не сочли за slow learner’а. Не забудь еще взять курс по системному дизайну заодно.
Ну и как вишенка на торте: гитхаб с несколькими интересными СВОИМИ проектами.
И я сейчас не шучу.
А ты думал все так просто, щенок ебаный?
мимо вкатился в Ит в 13 лет и уже давно выгорел
450 3041734
>>3041618

>Просто гриндить литкод 24/7 по гайдам Neetcode и участвовать во всех стажках бигтеха


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

>Продолжать писать код и дрочить сети, SQL, инфру и после основ спамить резюме везде


НЕ НАДО НИЧЕГО ДРОЧИТЬ. Делай то что будет приносить пользу. Не нужно жить по принципу "а вдруг чёнибудь пригодится". Если тебе это не нужно здесь и сейчас, скорее всего не пригодится вообще никогда.
451 3041735
>>3041576
Не я. Лучше по сути написал бы.

>>3041579

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


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

Го таковым не является
452 3041814
>>3041618
Просто выбери самый простой вариант: смотришь требования на вакансии, учишь буковки, проходишь собесы, перекладываешь легаси говно от забора до обеда. Ебанатов, которые требуют литкод и петпроекты на гитхабе, просто посылай нахуй, и без них вакансий полно.
453 3042476
Сап, я вкатун, пашу полгода за еду на универ (фуллстак го реакт в команде таких же челов), откликался на всё подряд, получил можно сказать один оффер на должность онли бека но из сферы gambling. Чё думаете, хвататься за столоминку или это может зашквар местный, потом никуда не возьмут?
454 3042481
>>3041720

>мимо вкатился в Ит в 13 лет и уже давно выгорел


Сейчас тебе 14?
455 3042569
456 3042595
>>3042476
А в чем проблема?
457 3042604
>>3042595
В каком-то из соседних трендов видел что gambling это зашквар для резюме, ну и на очко присел немного
458 3042611
>>3042604
Хз, сам сейчас устраиваюсь в такую контору мидлом, но не в рф. Платят дофига, еще и релоцируют. Имхо, все разговоры о том, где работать зашквар а где нет- хуйня. По-моему мнению работа в госухе это зашквар. Работа на впк это зашквар. Но тем не менее, у меня есть знакомые которые работают или работали и там и там, и у них нет проблем с поиском дальнейшей работы.
459 3042613
>>3042604
Ты сам сказал, что откликался на всё подряд. Чему ты удивляешься.
460 3042632
>>3042611
Казино и вся эта залупа - всё равно что наркотики продавать, да, люди сами несут бабки, но это всё не совсем адекватно и добровольно, не далеко такая работа ушла от оператора колл-центра службы безопасности сбербанка, вымогающего деньги у пенсионеров, люди пострадают от твоего труда и с каждой строчкой такого кода мир становится более ублюдочным местом, нужна ли такая работа? Мне кажется что нет, та же работа в госухе - попытка навести порядок так или иначе, а гемблинг это однозначно зло, без вариантов.
461 3042637
>>3042632
Да это промытка очередная с творржком вместо мозга
462 3042652
>>3042604
>>3042611
>>3042632
Здесь нет однозначного ответа, что лучше а что нет. В программировании полно неоднозначного дерьма. Всякие накрутки, порнуха, гемблинги, крипта и т.д. С одной стороны, ты участвуешь в этом косвенно. Меня как-то просили сделать интернет-магазин с ношенными женскими трусиками. Это же не я продаю свои трусы? Конечно если тебе неприятно, ты можешь вообще не упоминать об этом в резюме. Но с другой стороны, будет совесть давить. Типа а как же там невинные овечки которых наёбывают в казино? Поэтому здесь фифти-фифти. Что тебе важнее? Высокая зп и грязная совесть или средняя зп и чистая совесть.
463 3042761
>>2996967 (OP)
Привет, анон, подскажи, а что такого вы пишите, что у вас такие огромные нагрузки? Какие проекты пилить? Где бизнесу выгоден ваш этот Go ?Кажется, что это язык только бигтеха и подражающих ему
464 3042792
>>3042476
>>3042604
ну тебя максимум могут спросить, когда ты уже собесы прошел и смотрят на фит в команду. просто отвечаешь что нужны деньги были/помутнение рассудка/сожалеешь раскаиваешься извиняешься в церковь ходишь каждое воскресенье. да на самом деле вообще похуй. через пять лет думаешь какой-то нормальной конторе не похуй будет что чел пять лет назад был в конторе ставок?
если вот прям не хочешь, то хотя посиди еще полгода, с полным годом устроиться попроще должно быть (это я выдумал, но наверное в реальной жизни работает).
465 3043482
>>3042761
Огромные нагрузки появляются у дебилов, которые не могут в шардирование. Там, где достаточно сайта на пхп, ебанаты лепят 100500 микросервисов а потом гоняют терабайты джейсона туда-сюда. Классический пример - маркетплейс. Достаточно каждому клиенту выдать свою базу, но нет. Мы сделаем одну гигабазу для заказов, другую гигабазу для товаров, а потом сидим охуеваем от нагрузок, когда все юзеры лезут в одну точку отказа.
466 3043498
>>3043482
Архитектор мамкин
image.png102 Кб, 620x413
467 3043523
>>3043482
одного джейсона должно хватить каждому юзеру!
468 3043527
>>3043482
лол
469 3043609
>>3043482
Двачую. Тоже с этим столкнулись, предыдущая команда зачем-то завезла го, ща там связка го + реакт. Хотим переписать на монолит рельсы + хотвайр. Проект - еком
470 3043610
>>3043609
Тоже хотите по кластеру бд на каждого юзера?
471 3043612
>>3043610
да вообще все это выглядит как излишняя сложность. Мы же не гугел, не яндекс, не озон, значит и нагрузок нет и все проебы с ответов больше 2сек - значит мы где-то проебались, не учли или забыли индекс вот и все.
472 3043621
>>3043482

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


Шопифай кстати так и делает, 75.9 миллионов rpm на неповоротливом руби он рейлс приложении, проблема масштаба в вебе решается штатно даже в однопоточных блокируемых скриптопарашах.
473 3043659
>>3042792

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


Как раз наоборот, херочка будет смотреть твою резюмуху где работал и что делал. Хер его знает как она к казино отнесется. Может у нее брат от этой хуйни умер.
А на калчерал фит, уже на резюме не смотрят, могут конечно спросить что делал или почему пошел, но ты им уже скорее нравишься, чем нет. И если не рассказывать, что ты любишь найобывать людей, то в этот момент всем пофиг.
474 3043661
>>3043482
At First I Was Like

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


But Then I Was Like

>Там, где достаточно сайта на пхп, ебанаты лепят 100500 микросервисов

475 3043721
>>3043661
о вы из англии?
476 3043730
https://www.youtube.com/watch?v=yE5Tpp2BSGw

>what we got right


Первый же пункт - маскот, ололо. Не устану повторять: люди выбирают ЯП по маскоту и синтаксису, добро пожаловать снова. Теперь буду для усиления эффекта тыкать этой цитатой пайка.
477 3043744
>>3043730

>Первый же пункт - маскот, ололо.


Да там весь спич точно такой же. Послушать пайка, так немного с комьюнити неправильно работали, в документации было мало примеров, какую-то стандартную библиотеку криво написали, а в остальном всё прям заебись вышло. Никаких проблем в языке или рантайме нет.
478 3043762
Правда ли, что гуланг - хуйня в бэкенде, и что приходится везде писать бойлерплейт if err != nill ?
479 3043766
>>3043744
Ну он с самого начала перечислил все реальные пиздецовые косяки (систему типов, обработку ошибок, стандартную либу и т.п.) и сказал, что типа уже столько про это написано, что я на этом не буду останавливаться. (клоун-эмодзи.пнг)
480 3043962
>>3043762

>и что приходится везде писать бойлерплейт if err != nill


Гулагерам такое только в радость! Если тебе не нравиться писать if err != nil то ты не настоящий гулагер. Иди в сишорп.
481 3044206
>>3032608
На нашем заводе chi использовали.
Gin не нужен, остальное даже не пробовал.
482 3044337
>>3032608
Gorilla mux
483 3044401
>>3025101
>>3026060
Есть еще такое, https://github.com/mailru/easyjson, но там кодогенерация по заранее известной схеме (зато + перформанс).
484 3045056
>>3043659
херкам не похуй? им нужно вакухи закрыть. "челик 4 года экспириенса, еще и с вышкой? ну может на сеньора в эту команду пройдет, позвоню". или все сложнее?
меня как раз на финале/калчефите спрашивали есть ли какие-то продукты где я не готов работать типа ставок. ну я ответил, что вообще похуй, если все честно/добровольно/со смазкой. контора вообще не про ставки. офер получил, принял на грудь
485 3045194
>>3045056

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


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

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


Меня онлайн казино тоже спрашивало, очевидно что не всем их бизнес нравится.
486 3046391
Посмотрел видос один про сравнение асинхронщины в разных языках. Правда, что в гуланге самые пиздатые горутины? Пиздатый язык, если так и есть. Только я всё равно не буду писать на нём из-за низкоуровневости и ручного перекидывания ошибок
487 3046423
>>3046391

>низкоуровневости


>голанг


што
488 3046471
>>3046423
другое имел ввиду, типа руками надо многое писать, и не хватает удобных штук из других высокоуровневых языков.
489 3046513
>>3046471
Уже сделали оффициальный пакет slices, теперь все удобно. Остальное нинужно.
490 3046564
>>3046513
Как вставить элемент в середину слайса?
491 3046581
>>3046391

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


Да. Не красят функции, вытесняющая многозадачность, можно сравнить миллионы. Единственное, чего нет это сборки мусора с учётом потока.
492 3046660
>>3046564
slices.Insert(s, len(s)/2, val)
493 3046745
Чем ваш недонахрюк лучше джавы?
494 3046755
>>3046745
хотя бы тем, что жвм тащить не надо
мимо
495 3046786
>>3046745
Не получится написать большинство паттернов
496 3047352
>>2997020
Если у тебя куча бизнес-логики, то единственный нормальный вариант это java + spring.

Из того, где я работал, go был неплох, где нужно было решать задачи транспорта. Ну вот взять кусок байтов из топика, немного его покрутить и отправить в другой топик.
Или например взять поток байтов и раскидать по s3 бакетам. Ну или например сходить в 10-20 сервисов в многопотоке, забрать у них метрики и как-нибудь аккумулировать их у себя, сорт оф дашборд чтобы получился.

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

Писал также круды энтерпрайзные на питухоне. Там на проекте тоже не было нормального DI. Куча самописного говна на метаклассах, декораторах, DI на декораторах, магия, спрятанная в импортлупах, из ниоткуда появляющиеся циклические импорты и прочая залупа. Питон имхо годится только для каких-то прототипов на начальных стадиях. Чтобы показать начальству, что твоя идея вообще может работать хоть как-то. Потом это нужно переписывать на другой язык с нуля, а питуха выбрасывать.
497 3047370
>>3001291
Если у тебя команда нормальная, то ок.
Я на первой работе тоже на го писал, правда мне дали легаси кал ковырять, который вообще писали не в моей команде и который был крайне ужасно написан. Там нужно было какие-то доделки сделать по заказу, но никому нахуй не всралось ковыряться в застарелом говне мамонта, поэтому этот сервис скинули на меня.
А потом я ушел в другое место на еще более плохой проект, лол. Вот такой неудачник по жизни.
498 3047379
>>3012465

>похожий язык под названием V


v-lang это известный скам в области компиляторостроения. Не позорься и уноси эту парашу.
499 3047385
>>3017097

>А по поводу Питона, читал на многих ресурсах что он хорош только для аналитиков и МЛщиков. Для бэка это хуйня (не моё мнение)



В целом соглашусь. Большой бекенд проект на питоне с бизнес логикой превращается в самое запомоенное легаси.
Питон хорош для быстрых прототипов. Для чего-то большего - нахуй и в пизду.
500 3047869
>>3047379
поясни
501 3047955
>>3047869
Там до сих пор под капотом http вызовов curl вызывается?
502 3048336
>>2997020

>8. Нативный компилинг? Та же джава и шарп уже ссут не на пятки а в харю.


РРРРЯЯЯЯЯЯЯЯ, нитрендова, пацаны в шкалке в унитаз головой макнут, нужно чтобы байт-код в виртуальной машине исполнялся! Барин так сказал, значит так и нужно!
503 3049024
>>3048336
Не знаю как в шарпе, но в джаву грааль завезли разве?
Кажется, этот проект просто умер где-то в недрах оракла.
504 3049097
>>3048336
Зато байткод можно генерировать на лету, а потом его JIT в нативный переведёт. И там где у го рефлексия, у джавы и шарпа наивный код.
505 3049224
>>3049097
И у чего меньше оверхед, у рефлексии или джита?
506 3049274
>>3049097

>байткод можно генерировать на лету


А нахуя? Ну да, есть bytebuddy, но для меня это все кажется какой-то очень хуевой магией, которую потом раздебажить в случае чего будет почти невозможно.
507 3049927
>>3049224
По процессору у рефлексии оверхед больше. По памяти у джита.
508 3049952
>>3049274
Это не для крудошлепов технология. А для тех кто пишет системные библиотеки, DI, ORM и т.д. Мне приходилось этим заниматься, по началу конечно надо повникать, но в целом ничего невозможного. Обычно генерированный код это просто клей между библиотекой и пользовательскими классами.
509 3050766
>>3046391
Настолько пиздатые, что авторы языка пишут блогпосты про то, что ГОРУТИНС АР НОТ ИНАФ, и собираются в следующем релизе впиливать в дополнение к ГОрутинам таки и обычные КОрутины. А в любом стайлгайде по конкурентности первый пункт - не использовать горутины (в публичном апи).

За нормальной асинхронщиной пожалуйте в эрланг\эликсир.
510 3050768
>>3049224
Идеологически и теоретически джит - более правильный подход, так как может в профайл-гайдед оптимизации наживую. За джитом будующее в любом случае.
511 3050815
>>3050766

>Настолько пиздатые, что авторы языка пишут блогпосты про то, что ГОРУТИНС АР НОТ ИНАФ, и собираются в следующем релизе впиливать в дополнение к ГОрутинам таки и обычные КОрутины.


И ты даже можешь дать ссылки на эти блогпосты?

>А в любом стайлгайде по конкурентности первый пункт - не использовать горутины (в публичном апи).


Ты не понимаешь разницу между "не использовать" и "не использовать в API"?

>За нормальной асинхронщиной пожалуйте в эрланг\эликсир.


Любишь несвежее говно?
512 3050833
>>3050815

>Любишь несвежее говно?


Гугл умудряется выдавливать свой голенг уже несвежим, каким-то чудесным образом, у них там 86 год так и не закончился судя по всему.
513 3051196
>>3050833
Маня, где ссылки?
514 3052260
>>3050815

>дать ссылки


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

>Ты не понимаешь


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

>Любишь несвежее говно?


Нет, я в го-треде не от любви сижу
515 3052667
Перекат
>>3052664 (OP)
516 3067621
>>3026994

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


Чтобы так было, тебе надо добавить в канал буфер. У тебя канал небуферизованный.

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

К слову, даже если ты добавишь буфер в канал battle, у тебя порядок тоже будет без гарантий, т.к. первая горутина может вполне себе быть не зашедулена сразу же. Гарантии ты можешь получить только синхронизировав горутины руками явно.
Продвинутые знания в конкуррентном программировании Макс 517 3104193
Коллеги, всех приветствую!
я php-разработчик, с коммерческим опытом около 5 лет.
волею судьбы на нескольких проектах имел честь получить опыт с гошкой и мне понравилось
в последнее время начал погружаться все глубже (написал несколько пет-проектов - во сновном боты + игровой сервер для карточных игр на вебсокетах)
хочу в обозриом будущем свичнуться с концами в го.
отсюда просьба - порекоммендуйте здравое чтиво по конкуррентному программированию и идематическому пути всего этого зоопарка в го.
в целом со всеми примитивами в контексте гошки знаком хорошо, читал ОС таненбаума и архитектуру компьютера + 100 ошибок в GO (считаю очень полезной эту книгу) + Golang для профи
Хотелось бы глубже разобраться и получить железное понимание всех конкуррентных концептов - для меня как для похапешника это не так очевидно)
Возможно есть какие-то хорошие опенсорс проекты или специализированное чтиво статьи для продвинутого уровня?
базу уже имею (понимаю как не нарваться на дедлоки и когда и как лочить данные + всякие паттерны а-ля воркерпулов и слияния каналов мне известны) и пока не очень понятно, каким образом и откуда набраться сильных знаний в этой области)
буду благодарен за ваши советы и мнения!
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

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

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