Вы видите копию треда, сохраненную 3 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Для вката в Go читай:
- Донован, Керниган "Язык программирования Go"
- https://www.golang-book.com/
- книги из списка https://github.com/dariubs/GoBooks
- а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw
Пэкеджи можно искать тут https://github.com/avelino/awesome-go
Живем в ожидании Go2, пробрасываем ошибки, смеемся над джавистами, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериков
Прошлый >>1603114 (OP)
Введение одновременно в go и TDD.
https://golangbyexample.com/template-method-design-pattern-golang/
Здесь промежуточные шаги в разных реализациях сделаны намеренно разными, чтобы не возникало лишних вопросов, но что если какая-то часть алгоритма для всех реализаций общая? В традиционном ооп-языке это было бы заключено в метод абстрактного класса, от которого бы наследовались конкретные реализации. В го, я так понимаю, надо просто объявить непривязанную функцию в пределах пекеджа, но так как реализации должны выполнять контракт интерфейса, такой метод должен быть и у них, и заключаться он будет в единственном вызове той функции. Коряво как-то.
Для ГОсударей.
Нормальные книги по го написали только Брайан Керниган и Билл Кеннеди, остальные - какие-то дикие индусы от издательства Packt.
Только для php ли?
Я шизик.
есть конечно
Нет. С новой версией проекты в $GOPATH/src считаются устаревшими. https://blog.golang.org/go1.14
Используй модули https://blog.golang.org/using-go-modules
Спасибо.
А в джаве ввели модули, а их никто юзать не хочет.
В основном это крупные конторы. Rambler, например, активно использует Go, проводят по нему митапы. Но есть еще куча криптовалютных стартапов, которые думают что у них хайлоад и по этому избегает динамикодрысни
> Rambler, например, активно использует Go
Я думал там деды совковые сидят, судя по недавней ситуацией с нгинксом.
Я думаю там дохера людей, которые получают на много выше рынка, и плюс к этому они еще за счет того что работают в крупной конторе имеют СТАБИЛЬНОСТЬ, которая мне, например, мелкогалерному ( <30 душ) рабу и не снилась. Так что не думаю что из-за этой истории от туда массово поперли работники
>А на Го вообще есть вакансии в РФ?
Есть, но не для начинающих программистскую карьеру с Go. И только в паре городов на всю страну. Без опыта кодинга на каком-нибудь легаси-шлаке не возьмут.
Учат пщ в основном те, кому он реально нравится. Это не промышленные языки типа Java, JS или php, которые учат ради вакансий.
я не он но мне кажется легаси за 10 лет накапливается меньше, чем за большее количество лет (за 15 или 20, например). ну это без учета географии. насколько там распространен был го в россии десять лет назад? у нас еще не весь сишарт на него переписали.
>насколько там распространен был го в россии десять лет назад?
Кстати, периодически слышу о компаниях, которые начали использовать пщ в проде до релиза 1.0. Как можно быть такими мудаками? Им на столько насрать на свои проекты? Там же API и стандартная либа пиздецки поменялась, при том почти все - ломающие изменения. Тогда еще паник не было, были тупо креши, нахуй так жить? Я в своей сраной конторе не могу убедить людей писать на пщ всякие микросервисы для потоковой обработки всякого (стримы в js-е имеют сверх уебищный API), а тут люди как-то начали на нем писать как на основном языке
Не обращай внимания на идиотов.
Какая тебе разница, пусть хоть на D пишут. Куда не плюнь, везде вахтеры сидят.
Это просто зависть слегка, что я не нашел на Go зп как у себя на ноде. Вот и проиходиться жрать что дают
нет, с петоном и плюсами знаком, ну там sql еще. типичный набор выпускника инженерной специальности и несколько проектов без звездочек уровня "консольная программа" (ну как в вакансиях пишут) на гитхабе. я вообще хоть какую-нибудь вакансию по плюсам искал.
Это просто зависть слегка, что я не нашел на Go зп как у себя на ноде. Вот и проиходиться жрать что дают
дс вкатился с нуля, первый язык(работа), и я даун, то потому что был готов грести - прижился
причем вкатился в 26, до этого ни разу не работал, прошел курсы на курсере от майлсру и все)
да только первый курс, второй курс даже не успел начать, нашлась работа
>>637113
ты сам кем рботаешь? сколько тебе лет? меня заставляли даже собеседовать людей нахуя непонятно, порофлить на до мной или посмотреть на что я способен, как по мне то и так видно что я даун социофобный, и приходили люди которые даже не знали что будет если в json.Marshal передать структуру где поле с маленькой буквы названо, при этом утверждали что на предыдущей работе получали 70к
Курс там как-то с места в карьер начинает, но в пдф-ках много полезных ссылок на почитать.
>какое тебе первое задание дали?
брать жсоны по ссылке, запихивать их в БД, сделать фронт с отображением данных табличек БД, поиском и сохранением. ну и запихнуть все это в кубер
>штат большой гошников
ну, больше 50 точно
> ну, больше 50 точно
бля, случаем не вайлбериз?) когда челиков собеседовал, половина резюме от туда была, говорят там ад хотя и я по 10 часов сижу, да еще и по субботам иногда
бинго. про ад не могу ни опровергнуть, ни подтвердить. я жду когда мне нормальную работу будут давать. в команде про особые напряги не слышал.
У вас сайт как говно сделан. Зашел по коду по смс и нет в профиле настройки "создать пароль". Мне каждый раз по смс заходить?
у меня также было
на моей галере 100 / 150-200
но их мало, потому что в основном приходят джуны, год сидят и уходят, хотя к тому времени зп у них 60-70
Это в ДС?
Присоединяюсь к вопросу только интересует не столько логика - с ней все понятно, сколько взаимодействие с DOM-ом
На изичах можно устроить в jetbrains если соответствуешь требованиям. Ой, как и в любую другую компанию в мире.
Да на нём ничего нет, даже MVC-фреймворка нормального, которые, конечно же, нинужны.
https://github.com/avelino/awesome-go#gui
Третьего дня, по совету проверенного индуса попробовал https://github.com/veandco/go-sdl2. Ощущения — АТАС.
Ну в чем прикол толстых бинарников, если все равно придется тащить следом тысячу зависимостей.
Ты всегда можешь C зависимости статично прилинковать, с большей или меньшей еблей.
> Ну в чем прикол толстых бинарников
Действительно, в чём? В пщ ведь есть единственное правильное мнение на этот счёт, выбора-то и нет. Так что это никакой не "прикол", а тупо поставили перед фактом.
>From Java to Go 2017-01-15
Придурки, новый свитч в 14 джаве не дождались.
И свитч условие без скобок написали, уже совсем мозги гошкой отбили.
>я по 10 часов сижу, да еще и по субботам иногда
8 часов работаешь как обычный человек, потом останешься на пару часов, чтобы писать if err!= nil, а по субботам пишешь с нуля ассерты к тестам?
> ассерты к тестам
> к тестам
> тест
на моей галере нет времени писать тесты тесты пишет тот кто мало работает - слова тимлида
Процедура - это когда языкоделы въебали упорина и решили для функций без возвращаемого значения ввести отдельный термин.
>>639051
Нет, это koins такие
https://play.kotlinlang.org/koans/Introduction/Hello, world!/Task.kt
Нет, в паскале еще видел такое.
Вообще, я натыкался на мнение, что с семантической точки зрения функции предназначены для того, чтобы что-нибудь посчитать/сконвертировать/etc, основываясь на параметрах, и вернуть результат, а процедуры выполняют какие-то действия, изменяющие состояние (глобальное или у параметров). Под это определение могут попадать и борщехлёбские IO (), и сишные void.
Ого, оказывается, даже термин есть. Двач познавательный.
Маловато у Go пользователей в России. В чём причина?
Да в рашке и IT относительно мало.
>2020-03-02
>Our team already had plenty of prior experience with comparable projects in a similar environment using JVM languages like Java or Kotlin. This time, however, we chose Go. and here is why.
читать далее https://tech.trivago.com/2020/03/02/why-we-chose-go/
блин, тока щас узнал, что TJ Holowaychuk теперь гофер https://medium.com/code-adventures/farewell-node-js-4ba9e7f3e52b
Вот хочу узнать когда мне нужно модели с базой синхронизировать? До этого писал на пистоне (Django ORM), там с этим строго и понятно. Тут пока не могу в workflow вьехать.
Можешь пояснить по хардкору?
Не выёбывайся, плез. Я пишу бота не для того, чтобы написать бота, а чтобы познакомиться с конкретными технологиями.
ну да, берешь какой-нибудь sqlx или squerrel и вперед, так у нас делаем и в майлру также челики делают.
>>640064
А если мне внезапно понадобится переехать с одной БД на другую?
Я, конечно уже успел прочитать мнение что в GO предпочитают писать чистый SQL, но наравне и мнение что желательно всегда использовать ORM для чистоты кода и переносимости к смене БД.
> А если мне внезапно понадобится переехать с одной БД на другую?
через интерйфейс-репозиторий методы пишешь, будет новая бд - реализуешьте же методы под новую бд
> Почему gopls не видит структуры из пэкэджей в соседней папке
тоже эта параша бесила, сидел на vs code год и потом плюнул и сижу на goland'e, сбрасывая себе триал переодически
>А если мне внезапно понадобится переехать с одной БД на другую?
То ты сядешь и пререпишешь разово весь sql код путем автозамены или статической трансляции с одного диалекта на другой. Немогёшь?
сижу на вскоде. захожу в проект, делаю го гет пакет. и пакет становится виден. ну разве что иногда перезагрузить ленгичсервер нужно.
> А если мне внезапно понадобится переехать с одной БД на другую?
На практике такое бывает крайне редко такого не бывает никогда.
И следует помнить, что раз ОРМ призваны поддерживать любые СУБД сразу, то в результате получается пересечение их возможностей, то есть где-то на уровне ниже SQLite.
> тоже эта параша бесила, сидел на vs code год и потом плюнул и сижу на goland'e, сбрасывая себе триал переодически
Да, это пиздос. Я от несовершенства этого мира страдаю пиздец. Хотел одновременно изучить emacs (нравится, что можно делать абсолютно всё без мыши) прпуиер с ищучением го, но вот уже как месяц (а то и больше) пытаюсь изучить го, так я 95% времени пердолился с его тулзами, и жалкими потугами запустить эти тулзы в emacs'e. Бляяяя так бесполезно время я ещё не проебывал. Даже если бы в игори играл там я хотя бы удовольствие получал бы.
Думал VSCode будет лучше (а по скорости настройки нового языка он действительно лучше), но все тулзы языка используются прежние. Собственно сменилась только обертка, а кривой инструментарий остался.
Блядь я всей душой хочу слезть с JetBrains (швабода, членукс, вот это всё), но мне стоит только один раз запустить IDE, как сразу приходит гнетущее меня осознание, что все эти "бесплатные", "свободные" редакторы кода это ебучий notepad по сравнению с полноценными IDE, и что для развития проекта одной "свободой", "открытостью" и "сообществом" сыт нихуя не будешь, и проприетарщина этому миру просто необходима.
Пиздец, похоже нужно забивать на все эти члениксы и дроч на СПО, возвращаться на винду, и учить какой-нибудь сисярп или жабу.
>>640076
Я вообще с SQL на "Вы". Да, я понимаю, что его надо бы учить в первую очередь, но сейчас я хочу Go и бота по-быстрому
>>640078
Вот у меня пакет users. Как мне сделать так, чтобы gopls увидел что в нём есть или хотя бы просто перестал срать, что я не нахожусь в GOPATH?
>>640097
Я с тобой согласен. Но в вакансиях вроде видел, что иногда требуется опыт работы с gorm. К тому же вот такой интересный документ нашел
https://github.com/Alikhll/golang-developer-roadmap
GORM там тоже не на последнем месте. В общем лишним не будет.
Лишним не будет, да.
ORM обычно берут не чтобы поддерживать все СУБД разом, а чтобы легко отображать объектную модель в реляционную и не писать все запросы руками. Более того, в больших проектах часть запросов может делаться через ORM, а часть может быть нативными.
Согласен. Как по мне еще профит в читаемости кода, чтобы не засорять исходники программ raw sql. А расширяют чистым SQL в том случае, когда гибкости ОРМ не хватает для хорошего решения конкретных задач. Собственно, нужно знание и чистого SQL и ORM языка на котором работаешь, в идеале.
>Вот у меня пакет users. Как мне сделать так, чтобы gopls увидел что в нём есть или хотя бы просто перестал срать, что я не нахожусь в GOPATH?
а ты go mod init вообще сделал??????
Вот этой хуйни я не понимаю. Мне типа надо для моего проекта govno-test-project сразу заводить реп на гитхабе и ассоциировать с ним пакет? Код работает и без этого. В goland линтер не показывает никаких ошибок, а вот gopls, как сказано в одном issue, "пока не поддерживает такой функциональности" (я так понимаю это называется "модулями")
если ты не пользуешься гопатхом, ты делаешь модуль. ты первый день на го что ли? назвать свою залупу можешь как угодно, никто тебя не заставляет репу создавать.
Не гитхаб, а гит. Можно завести локальную репу с произвольным адресом и никуда не пушить.
Ну и политика у гугла - заставить всег гошников юзать гит и семвер, я в ахуе просто.
Я вообще с этого хуею. Думаю, скоро привыкну к специфике.
>>640130
В основном туториале про пэкеджи нихуя не сказано. На данный момент я прошел только его, и как написал выше 95% времени пердолился с тулингом и с дохлыми language server's чтобы все это говно работало в emacs. Оказалось, достаточно было поставить goland, и никаких go ьщв init он мне писать почему-то не говорит.
В питоне, например, если проект на джанго, то там своя орм, иначе sqlalchemy. Для энтузиастов есть всякие peewee и ponyorm. Итого учишь 2-3 фреймворка. В го же куча каких-то репозиториев на гитхабе, хуй проссыш.
авторитетно заявляю что все действия с бд должны происходить через хранимки, а все запросы из языка должны быть простыми силектами и инсертами и никак иначе.
Может, мне еще КУРСОР создавать?
>авторитетно заявляю что все действия с бд должны происходить через хранимки, а все запросы из языка должны быть простыми силектами и инсертами и никак иначе.
Ну так го бацк ту ДВУХЗВЕНОЧКА ДЕВЯНОСТЫЕ ЕЛЬЦИН ДЕФЛТ тогда:
https://github.com/PostgREST/postgrest
И бекэндеры нинужны - достатчно одного дида-DBA от короны соответствующими мероприятиями спасать.
Немного проиграл. А нельзя rest поднять на sqlite, тогда вообще будет удобно, бросил один файл в дропбокс, вот тебе и микросервис.
Почему неудобно? Скрипты миграции запустить везде легко.
Как написать такое на го?
https://pl.kotl.in/JAUGtlBt1
>Чё там у вас за пизда?
Пизда и пизда.
>Вкатываться?
Как хочешь, зависит от задачи. Для большенста хуяк-хуяк-и-в-продакшен проектов тебе будет достаточно обмазаться TypeScript'ом
Лично я понял, что мне не хватает ноды, когда появилась куча задач с потоковой обработкой. Вроде как уже давно везде async-await, благодать, но как только речь заходит за работу со стримами - снова хотнический пиздец из переплетенных, словно щупальцы, калбеков
>Камни какие?
отсутсвие дженериков и if err != nil { return nil, err }
> Для большенста хуяк-хуяк-и-в-продакшен проектов тебе будет достаточно обмазаться TypeScript
Так я обмазываюсь. На галере просто больше популярен ванильный жосэ. Такая хуйня.
> но как только речь заходит за работу со стримами
.then параша?
> отсутсвие дженериков
А шо, так нужны?
> if err != nil { return nil, err }
А это хуже чем
try { whore.vagina } catch(hiv) { die }?
Опять выходишь на связь?
https://play.golang.org/p/3TPtLO4ayS1
Кстати, до 1.х в Go были .filter и .map, но их выпили, т.к. не нужно, к тому же без дженериков - теряеться безопастность типов.
Ну и самое главное - вызов функции - слишком дорогая операция, чтобы при обработке больших массивов делать это на каждый элемент (по этому компиляторы стараються заинлайнить все вызовы, которые возможно)
>>компиляторы стараються заинлайнить все вызовы
В котлине это инлайн функция (пикча)
>Опять выходишь на связь?
Мне кажется вариант с циклом был бы даже читабельнее. хотя вам может так привычнее, я не сразу прочитал этот код
>но вот уже как месяц (а то и больше) пытаюсь изучить го, так я 95% времени пердолился с его тулзами
у go с русскоязычной литературой для начинающих туго, то ли дело у раста https://doc.rust-lang.ru/book/title-page.html где всё легко и просто
>.then параша?
Нет, там .on('eventName', cb) параша
>А шо, так нужны?
Нужны, никто же не спорит. Не просто же так https://github.com/cheekybits/genny запили и используют. Сейчас в core-тиме идет активная разработка. Видел статью, но не могу найти, где описывалось как скачать бета-версию компилятора с поддержкой контрактов, но API может еще быть изменен, да и IDE или go-pls скорее всего еще не будут поддерживать новый синтаксис
>А это хуже чем
>try { whore.vagina } catch(hiv) { die }?
Зависит от ситуации: с одной стороны в js-е (с async-await) ты можешь взять в try-catch вызов на самом верхнем уровне (например, в случае веб-сервера - http handler), и больше нигде внутри не обрабатывать ошибку, и писать только логику в случае успеха, а потом все обработать.
С другой стороны - если тебе нужно отлавливать в коде определенные ошибки - тогда как раз и начинаеться
>try { } catch(e) { if (e instanceof MyErr) { handle(e) } else {throw e}}, которые выглядят просто ужасно, если их становиться больше 1-й
А вот в го у тебя просто все, что может вызвать ошибку - оно ее возвращает как обычное значение, и тебе нужно ее либо проигнорировать, либо обработать, либо вернуть вызывающему. В результате код на половину состоит из проверки ошибки на nil и возврат, если не равно.
>почему все переходят на него не с JS, а именно с питона
Потому что писали на питоне бекенд и в итоге охуели, потому на питоне легко писать, но никто не пишет так, чтобы потом легко читалось. Встречаешь в чужом коде def foo(param) и кто его знает, что за тип у этого параметра, потому что всем западло использовать typing, вот и сидишь читаешь простыни кода, чтобы увидеть, что в это foo передается, и не факт, что сразу правильно увидишь из-за утиной типизации. В го тебе иде мимоходом все это подскажет за секунду.
А бэкендеры на жс - хтонические безбожные существа, им для запуска хеллоуворлда нужно 200 метров библиотек, они уже не могут жить вне этой скверны и над перекатом на языки для людей не задумываются.
Питонщикам лень юзать typing, но не лень учить новый язык? Странно получается.
JS - это полный пиздец, конечно. Я тут недавно искал плагин для одной либы, и вместо простого скрипта мне предложили поднять бабель, вебпак, коммонжс, ноду и хуй пойми что ещё. Забил, выдернул фрагмент из исходника плагина и подстроил под либу, сразу заработало, и вся эта хуйня на десяток зависимостей нахуй не нужна оказалась.
>А вот в го у тебя просто все, что может вызвать ошибку - оно ее возвращает как обычное значение, и тебе нужно ее либо проигнорировать, либо обработать, либо вернуть вызывающему. В результате код на половину состоит из проверки ошибки на nil и возврат, если не равно.
Щас будет анпопулар апинион, но код с проверкой на эрроркод пижже чем трайкеч
Справедливо заметить, что у них разные назначения.
Невалидные данные от юзера, с последующим ответом 422 статусом - вполне ожидаемая ситуация и её есть смысл хендлить как ошибку. Невозможность сохранить что-то в базу, потому что она внезапно отъехала - не ожидаемая ситуация и тут нужен експешн, который на нужном уровне будет пойман и обработан как ответ с 500 или 503 статусом.
Тут еще проблема в том, что на уровне, где случилась ошибка - совершенно не понятно, на сколько она критична для вызывающего. Даже взять твой пример,
>Невозможность сохранить что-то в базу, потому что она внезапно отъехала - не ожидаемая ситуация и тут нужен експешн
Может быть как критичным, так и нет, если у нас есть врапер над драйвером базы данных, в котором мы хитрожопым образом в случае падения базы перенаправляем запрос на реплику/новый мастер
Так же ексепшены часто использовались как ROP для бедных. Такое себе отделение happy path от обработки всякого говна. И часто это был misuse, учитывая, что исключения нужны, внезапно, для обработки исключительных ситуаций, а не всего подряд.
Не так давно индусня сделала фундаментальное открытие, что для ROP исключения вообще-то не обязательны. Например, уже более 20 лет известен отличный обобщённый вариант через Either + Kleisli composition в стиле type `TwoTrack a b = Either [a] (b,[a])`. В принципе, в любом мало-мальски прогрессивном языке есть его специализированные вариации. К сожалению, в убогих парашах, где ничего нет, приходится пилить свои низкоуровные реализации, пердолить тормозные развесистые try catch блоки, или вообще как диды в 80х руками обрабатывать все ошибки по месту.
Забыл приклеить, чтобы было понятно что за ROP.
>если у нас есть врапер над драйвером базы данных, в котором мы хитрожопым образом в случае падения базы перенаправляем запрос на реплику/новый мастер
Которые тоже могут закончиться.
Олсо,
>хитрожопым образом
В обработчике исключения, очевидно!
в чём суть? делать два синтаксически разных типа ошибок, чтобы обозначить какая ситуация ожидаемая, а какая - нет? для этого нужен точный критерий, какие ситуация ожидаемы, а какие - нет. а то получится так, что будут ожидаемые ситуации с ексепшнами. зачем? что если отъезд базы это ожидаемая ситуация?
> не ожидаемая ситуация и тут нужен експешн
мне кажется тут пропущено много предложений, в которых выводится и обосновывается связь между необходимостью эсепшена и категорией ситуации
Всё очень просто - исключения нужны там, где происходит то, что не должно происходить при нормальной работе приложения.
Так же есть такой вариант: нужны там, где дальше продолжать работу (по какой-то цепочке) невозможно.
В том-то и дело, что когда ты пишешь либу ты понятия не имеешь, что для вызывющего кода будет нормальной ситуацией, а что - нет. Например - OOM: для кода в юзерспейсе это редким исключением - неожиданная ситуация и кроме как упасть - нельзя ничего сделать.
С другой стороны во всяких драйверах такая ситуация вполне себе обычная и ожидаемая, и с ней нужно как-то работать.
Если ты ещё можешь как-то рыпаться, например, как в примере про переключение соединения базы, то это не исключение, потому что ты продолжаешь работу. Если переключаться тебе некуда - продолжать работу бессмысленно и это исключение.
Насчёт инпата, те кто делают на эксепшенах ROP, сказали бы что да. Является ли это исключительной ситуацией? Зависит от домена. Если твой клиент - это уникальный источник данных, который внезапно поменял формат, что тут можно сдеать? Можно только кинуть исключение. Если это корявый юзер инпат, который предположительно может быть корявым, это ещё не конец - тебе надо сформаровать правильное сообщение об ошибке, отдать его в нужном формате и ответить. Т.е. по существу цепочка обработки никак не отличается от обработки валидных данных. В таком случае, ошибка - это данные и это не исключение.
Зависит от либы.
При попытке сохранения записи с неправильными типами данных в таблицу я бы предпочёл получать эксепшен, потому что нет смысла это хендлить, да и хендлить нечего.
Но в большинстве случаев ексепшены в библиотечных функциях - зло (но иногда никак).
>При попытке сохранения записи с неправильными типами данных в таблицу я бы предпочёл получать эксепшен
А я предпочел бы получить ошибку компиляции
>в пщ мнения рабов не спрашивали.
Ты так говоришь, словно кого-то заставляют использовать Go, и люди от этого страдают
просто го это авторский язык, авангард.
О, это что, шутка про я знаю X = я слышал слово X != я умею писать на X)))))))))))
Как ты догадался? А над ней милионный репост "акчуали дажа струспуп не знает ц++", узнаешь?))
Хуй знает, я про акучали узнал на двоще пару недель назад где-то
>Go's defer statement schedules a function call (the deferred function) to be run immediately before the function executing the defer returns
Если выполняется перед return, то почему здесь
https://play.golang.org/p/klPxLsZ7KqF
он подменяет возвращаемое значение?
Или вот на пике код из стандартной библиотеки. Если файл закроется перед ретурном, должна же быть ошибка? Так в какой момент выполняется отложенный вызов?
Все, разобрался.
У него же огромный монолит на 500к строк, который долго пересобирать после добавления каждого принта.
Сегодня вам дебагер, а завтра исключения и джинерики попросите? Нет уж.
И вообще го очень быстро компилиться, отлаживай принтами
>отлаживай принтами
Как что-то плохое.
Всегда пишу свою отладочную обертку со стектрейсами и логами не на ГОвне, конечно же
Есть много способов получить его на халяву, либо просто пройди по ссылке в проект дебагера, который опенсорсный
Не слушай даунов. 500loc это достаточно крупеный монолит. Если у вас проект значительно больше, ну там 2-3 млн loc, и это монолит - то вы пишете говнокод
Все же давно уже перешли на микросервисы, которые легко поддерживать, скейлить и заменять в случае чего?
Не сдохли и не сдохнут никогда.
Микросервисы не решают всех проблем и в ряде случаев они не применимы вообще.
>А как устанавливал его?
https://github.com/go-delve/delve/blob/master/Documentation/installation/osx/install.md
>какая версия го
go version go1.12.1 darwin/amd64, из docker desktop
>длв
То что в мастере
>макоси
10.14.1 (18B75)
Дефолтный бекенд
>А, у меня 10.15, может в этом проблема
Вполне возможно, в go.mod go 1.11 прописан
Не, я имел в виду версия макоси 10.15
У дефолтного бэкенда проблема в том, что он на всех обращениях к nil pointer падает, даже если они потом где-то обработаны, пишут что это какой-то баг в lldb которому лет 5 уже
Ты отстаёшь от хайпа. Все уже пожрали микросервисов и поняли, что это просто другой компромисс
По ссылке же написаны фичи (в т.ч. и про дебаг).
Пентестер я. Смотрю что программисты нахерачили и где они понаделали ошибок, если таковые есть
Попутно пишу всякую всячину на го для себя
Я дико извиняюсь за флейм. Ответ на свой вопрос искал в гугле-но там все както слишком лаконично.
А какие перспективы и востребованность Go в Европе?
Через 3 месяца еду туда работать, не прогером, и хочется через n месяцев/лет сменить деятельность.
Один коллега писал на Go, после чего лампово свалил в другую компанию за 250к, он и очень лестно отзывался о Go.
В РФ я понимаю "ГО в дополнение, чистый не нужен нахой иди впизду" и 1.5 вакансии
А какая разница, оно же использует тот же delve, который у меня не работает ни в vscode, ни из терминала
Молодой язык, со временем будет больше легаси, больше вакансий.
Если гугл его не убьет, просто потому что может.
Я утрирую фразы с прошлых тредов и вообще, что пишут пор Пщ в pr
Ну знаю, что можно делить на 2 пиздеж
>1.5 вакансии
в ДС-ДС2 вакансии есть, это видно по хх, но всем нужны мидлы, ждуны нахуй никому не нужны, впрочем такая ситуация во всех языках, кроме пхп лол.
Под ненужны, офк имеется в виду, что все реально, но нужно напрячь булки.
Вот есть россыпь микросервисы. Когда они запускаются в композе или кубере, связи разруливает трафик, все отлично и удобно.
Но вот разрабатывать таким Макаром не круто.
Что-то изменил - пересобери образ - перещапусти контейнер. Дебажить и так можно (закинуть в докер дела), но не сильно удобно.
А можно как-то вытащить доменные имена трафика наружу, на хостовую систему? Что бы запустил все, оно работает, и по запуску приложения на хосте оно могло ходить куда угодно?
Человечек, ты путаешь корпоративный сектор и айти в целом. Стартап можно писать на чем угодно, он или умрет, или его зальют деньгами и его можно будет переписать. Корпорации не будут использовать то, что через 10 лет возможно умрет. Го за 10 лет не умер, сейчас он наконец вскарабкался в топ-10 tiobe, у разработчиков есть роадмап и поддержка гугла. Его будут использовать, хотя джаву он конечно не вытеснит.
Дарт и перл там тоже жив.
Поддержка гугла на фоне закрывающихся проектов тоже ничего не стоит
>tiobe
Лол, деревенщина.
>есть роадмап
О, ну все, теперь точно выстрелит.
>хотя джаву он конечно не вытеснит.
То есть, он останется на обочине ненужных языков?
Minikube?
>Корпорации не будут использовать то, что через 10 лет возможно умрет
Да сплошь и рядом.
(1) одни копрорации покупают других копрораций; сливают АйТи отделы, конвертируют говно в мочу (или обратно)
(2) переходят к другому вендору (пушто дешевле на пять копеек; и/или новый вендор подсуетился и занёс кому надо) ; опять конверсия г в м (или обратно)
tiobe вообще классный показатель. По нему получается, что корпорациям правильнее писать на бейсике, чем пщ, раз он выше.
Где треб про бейсик? Даже про 1С тред есть, а про бейсик нету. Но в тиобе он есть и даже выше c#, js и php.
1C тред есть потому что у нас есть 1С. А янки пойдет устраиваться на vb.net скорее всего
А на чукотке яблоки продают. Только яблонь нет.
Нормальные программисты знают и используют разные языки.
Сейчас Гошка - лучшее, что есть на рынке под высоконагруженные вебсервисы.
Скоро люди распробуют Раст и перекачуют туда.
Джавы/шарпы - тырпрайзное говно.
Плюсы - ад.
Скриптовые языки давно не тянут.
Есть только го и Раст.
И только сишка охуенна во всём <3
Для нормальных программистов это может и работает
Но сейчас же конкуренция и количество джунов для каждых яп на порядок выше
Го не так популярен - отсюда можно решить, что шанс устроиться джуном выше
А что ты можешь предложить как альтернативу? Жабу с ее жирнющим рантаймом и стартом в несколько секунд (привет aws lambda)?
мимо ваш инсайдер
> стартом в несколько секунд
Минут, ты хотел сказать? И есть мнение, что похуй, сколько она стартует, всё равно на проде её запустят только один раз, и будет она там работать дохуялион лет до следующего обновления сервера.
мимо
>Минут, ты хотел сказать?
На сколько я знаю - там не на столько все плохо. Я хотел сказать - десятки секунд.
>И есть мнение, что похуй, сколько она стартует, всё равно на проде её запустят только один раз, и будет она там работать дохуялион лет до следующего обновления сервера.
Лет 10 назад - я бы согласился. Но сегодня, в эпоху кубера и всяких облачных сервисов с еще большим уровнем абстракции - везде происходит постоянный up- и downscaling, и время запуска - это вполне себе релевантный показатель на сегодня.
У нас на работе один жирный монолит, и да, он запускается минуты. С микросервисами были бы десятки секунд на каждый, тоже небыстро.
А что там так долго запускаеться? Вы профилировали это?
Для меня это просто очень дико звучит, у нас проект на ноде (правда он не особо крупный, но тоже монолит) стартует 1.5 секунды, при этом почти все это время сжирает соединения с облачными базами, ну и совсем немного времени на занятие порта
GraalVM
В жабе это повседневность, профилировать нечего. Даже хеллоуворлд на спринг буте стартует секунд 5-10. А у нас тут дохуя компонентов, каждый инициализируется, настраивается. Всего понемножку, в сумме дохуя.
golang weekly
буду вкатываться к вам
уж больно хочется получать 90к бачей
И не будет. Нахуя им с кем-то ею делится?
Вэлком в еблю с симуляцией под бровсер и парсинг хтмл-говен.
Хотя нет, пизжу, есть у них апишка. Причём простая рест апишка депрекейтед и закроется к июлю, а эти хипсторы уже графкуэля навернули.
>Что гуглить чтобы написать скрипт для автматической проверки и скачки сториз из инстаграмма на мой ноут?
'python instagram api'
Практически никогда так не бывает ни в каком языке. Скорее нужно будет пару часов продираться сквозь срачи на стэковерфлоу.
> не могут жить без ексепшенов
Пиздец. Язык в котором нет экспешенов. Такой существует? Даже в жс, даже в Прологе есть экспепшены. Как можно жить без выкидывающихся ошибок? If'ы на каждый вызов функций вешать, проверяя ERROR_CODE?
А варнингов там тоже нет? Ну хотя бы лямбды есть? Если есть типы, но нет дженериков, то как вы вообще делаете полиморфные функции?
эксепшены блевота, у тебя неприязнь от сдвига парадигмы. КАК ЖА ЕКСЕПШОНЫ ВСЕГДА ЖИЛИ С НИМИ ВОН ВЕЗДЕ ЕСЬ. пройдет.
>А варнингов там тоже нет? Ну хотя бы лямбды есть? Если есть типы, но нет дженериков, то как вы вообще делаете полиморфные функции?
хотя бы тур пройди. нахуя что-то рассказывать человеку, которому даже это лень сделать?
> эксепшены блевота
Чем?
Я серьезно не понимаю, как ERROR_CODE времен 20 века может быть удобней эксепшенов.
> Язык в котором нет экспешенов. Такой существует?
Сишка. Но в ней есть longjmp для упоротых.
В расте, вроде, тоже зачем-то пытаются победить эксепшены.
Лучше упасть крича об ошибке, чем упасть тихо и незаметно. В коде ошибка - сразу эксепшен.
незаметность в количестве строк в логах при падении выражается? так можно и без ексепшнов стактрейс в сотню строчек вывести. эксепшоны не заставляют твой код падать заметнее. это всё хуйня. в коде ошибка - сразу жалоба компилятора, вот это я понимаю.
>Если есть типы, но нет дженериков, то как вы вообще делаете полиморфные функции?
Интерфесы, иногда - пустые, иногда - нет, кодогенерация.
Что ты такое лицо скорчил? Сказано же, контракты будут ближе к Go2
Я пару раз зашел в этот тред в прошлом году и вот сейчас, и каждый раз встречаю здесь тебя. Ты очень преданный хейтер, нужно отдать тебе должное.
А по-моему люди указывают на одни и те же проблемы, которые не фисятся годами. Хотя странно что-то ожидать от just use for loops языка, где даже хуитка типа питонячих генераторов - недоступное удовольствие.
>хуитка типа питонячих генераторов
Здесь вообще улыбка истории. У питонист GIL и поэтому они пытаются в асинхронность через генераторы. У гошников ПРОСТОТА и поэтому они делают свои генераторы на горутинах.
>одни и те же проблемы, которые не фисятся годами
Семантическое версионирование же, ожидайте го2 1.15 теперь неизвестно когда зарелизят.
А как они это рационализировали? У меня, например, довольно много строчек вида _ GovnoInterface = new(MochaStruct), просто для того, чтобы голенд мне сгенирил методы интерфеса, да и для наглядности
Простота Go - на самом деле просто маркетинговый ход. Да, простой синтаксис, минимальный необходимый набор возможностей языка. Но когда речь заходит о поддержке реального когда - оказываеться, что нужно довольно серьезно понимать как работают OS, память, процессор, межпроцессорное взаимодействие, примитивы синхронизации, вот это все. В большей степени, чем для всяких js, питона и php.
Простота всяких js, питона и php - на самом деле просто маркетинговый ход. Да, простой синтаксис, минимальный необходимый набор возможностей языка. Но когда речь заходит о поддержке реального когда - оказываеться, что нужно довольно серьезно понимать как работают OS, память, процессор, межпроцессорное взаимодействие, примитивы синхронизации, вот это все.
Да, охуенно. Как много мьютексов в твоем типичном js или Python коде? Как много атомиков?
>Как много мьютексов в твоем типичном js
Это тот js, в котором 20 лет был callback hell, потом добавили промисы и сразу же получили promise hell, который, в свою очередь, заменили async/await hell'ом. Ну да, куда уж го до всего этого.
В питоне же асинхронность сейчас пилят с оглядкой на го, а до этого параллельное выполнение там было не сказать что простым.
> заменили async/await hell'ом.
Не слышал о таком. В чем там проблема-то может быть? Ну, кроме https://habr.com/ru/post/466337/
Я не помню, нуждался ли я хоть раз в дженериках. Ставлю на то, что после их введения 99% гоферов не будет ими пользоваться.
Я пару раз нуждался. И оба раза - при реализации хелпер-метода работы со структурами данных, вроде мапы или слайса. Решал каждый раз через https://github.com/cheekybits/genny, в целом - доволен, единственное - он никак не анализирует код, и если попросить его сгенерить некомпелируемый код (например, если передать в качестве типа слайс в метод, который сравнивает дженерик-аргументы) - он просто сгенерит его и все, вместо какого-либо ворнинга или ошибки. С контрактами такой херни не будет, на сколько я могу судить по черновикам.
ну знаешь, мне вот хотелось написать вспомогательную функцию чтобы вставить элемент в слайс или удалить из него.
Хотелось, но потом ты просто писал одну-две для конкретных интерфейсов/типов и все было хорошо.
на пятый раз для пятого типа писать её уже грустно
Хорошо, если у тебя в laba1.go пара типов (int и string, да?). А вот в большом проекте бывает очень много типов слайсов
Ты оборачиваешься, видишь пикрил. Твои действия?
смотря ему в глаза монотонным голосом цитирую заученное наизусть ""The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software."
Хорошая вещь, можно написать кодогенератор, который будет из крестов делать исходник на go.
Только этого здесь не хватало.
>learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language
То есть Пайк считает, что эти языки под категорию "brilliant language" никак не подпадают.
Ну так он сказал learned, а не understood.
Конечно. Это наименее спорная и заслуживающая внимания часть его высказывания. Вся суть создания Go заключалась в том, что языки вроде плюсов, петона, жавы, хуевые по какой-то причине.
Хорош наворачивать абстракции. Го снова сделал программирование простым, каким оно было для меня два десятка лет назад
Нахую я вертел ваши фабрики, создающие фабрики, магию и прочую хрень.
Забудьте, как страшный сон
Просто программируйте. Просто, понятно, многопоточно.
> простым
Примитивным. Кому-то процедурная лапша на сях, го или паскале может быть в кайф, но это точно не может быть нормой.
Ну так го и есть тырпрайз, но это не чувствуется, т. к. на нём пока маловато легаси.
если go такой примитивный, то почему до сих пор нет транспайлера go в твой_любымый_язычок? гошные библиотеки пригодились бы
Было бы кому перекатываться ещё.
А как там с DRY?
>фабрики, создающие фабрики
Таким же только в джаве и шарпе страдают. На том же питончике можешь вообще без классов писать.
Судя по формулировке
> многопоточно
, его не устроят языки с GIL (питон, руби) или с убогой асинхронщиной (жс, пхп). Понятно, что потоки =/= параллелизм, но всё же.
А какой юзкейс у такого решения? gopherjs можно запускать в браузере, тут - да. А транспайлить в другие языки какой профит?
Да, поэтому он сделал язык который ему нравится больше других языков.
Никакого профита нет. Хомячки увидели, что куча языков транспайлится в js и решили, что это правильно и так должно быть со всеми языками. То, что это сделано не от хорошей жизни, и что это может понадобиться только в браузере, им в голову не приходит.
Про что ты вообще несешь, ты даже не понял пост, на который ответил.
Они не могут уйти в свой загон, в закрытой среде оказывается, что они пишут на языке для тех, кто не осилил scala, а так они самоутверждаются в своей голове за счет го и им немножко легче жить.
> в закрытой среде
В фантазиях самих скалистов? Ну раз на то пошло, на жабе пишут те, кто не осилил шарпик.
Я тут выбираю 3 язык для изучения, стоит ли учит Go?
Где он вообще используется, кроме написания всяких консольных штук?
Go это синоним высокопроизводительный вебоориентированных микросервисов.
+ Серверлес
+ да, теснит питон для консольных утилиток
Полезно для расширения кругозора. Многие гуру рекомендуют учить один новый язык в год, желательно отличной парадигмы от твоего рабочего.
мимопроходил
Если ты программист, то языки программирования, если ты какой преводчик - то человеческие языки. Нельзя давать мозгам застаиваться.
Go слишком утилитарный.
Для мозгов надо идти либо ближе к железу - асм.
Либо в абстракции - хаскель, эрланг, раст, пролог
Ебать ты вахтер.
Раст-то?
Моззиловцы тупо натащили туда баззвордов, тупо по приколу. Это суперсолянка концептов.
Неплохо ломает голову.
Но другие
Котлин, конечно.
Какая разница, все равно будешь в этом треде сидеть.
У го есть интересная работа с потоками, если всю жизнь сидишь на промисах - то полезно будет поработать по-другому.
Так то да, именно csp достаточно редко встречается.
Но именно n:m конкурентность много где есть, но на акторах.
> всю жизнь сидишь на промисах
Я понял, почему уровень треда такой. Потому что здесь все хоть и делают вид, что они перекатываются с питона, на самом деле они все латентные джаваскриптеры, лол.
Все херня.
Кроме дженериков и перегрузки функций. И, подаоуй, надо работать над gc, отсутствие поколений и compaction - позор.
Хотите адового беспорядка, пиздуйте в плюсы или расты.
>>651911
Я, например, не латентный, а я вполне себе js-разработчик, просто все еще не нашело нормальную работу на Go. Но первый язык у меня таки Питон.
Потому что иначе ему пришлось бы кодить на котлине, а это гораздо хуже, чем срать на двачике.
>дженериков и перегрузки функций.
это рельно нужно лишь 0.0001% гоферов
лучше бы размер бинарников привели в порядок
>Хотите адового беспорядка, пиздуйте в плюсы или расты.
раст-то тут причём? язык молодой и продуманный, там нет этих исторических нелепых нагроможений
>дженериков и перегрузки функций.
>
>это рельно нужно лишь 0.0001% гоферов
Вот реально, дженерики нужны были пару раз, когда дублировались всякие util функции
Перегрузки - вообще не помню, когда были нужны
>надо работать над gc, отсутствие поколений и compaction - позор.
они выбрали mark-sweep gc из 70-х потому, что он создаёт минимальные задержки, а на большое потребление памяти им пофиг, ибо память дешёвая
Два чаю!
Достался проект на го, который писали экс-пхпшники. Долго думал зачем мне фасады и фикстуры, импорт пакетов и структуры дают все что надо.
>Two implementations of random numbers, math/rand and crypto/rand.
О! А вот и гуглозонд проглядывать начал.
Поколения как раз помогли бы перфомансу.
Незачем каждый раз тратить процессор на обход всех объектов.
Чаще пары раз.
Кодогенерация конечно помогает, но хотелось бы что-то более интегрированное в язык.
Говорят надо только коллекции вкурить, а синтаксис жабы не нужен
Чёт копейки какие-то. Даже я, околоджун, получаю 90к в месяц. И это в условиях кризиса из-за короны-чан.
>лучше бы размер бинарников привели в порядок
Ты это серьезно? Это же было осознанное решение - пожертвовать размером бинарей ради удобства эксплуатации и относительной независимости от окружения. Если очень надо - есть https://github.com/tinygo-org/tinygo
> Хорошо, что в Go принудительный опенсорс.
Ты это о чем? Ты вполне можешь использовать приватные репозитории для своего кода
Чтобы юзать либы, приходится тянуть их исходники. Binary-only пакеты давно задепрекейчены.
Сюрприз, почти везде либо акторы, либо треды, либо промисы.
У нас московские джуны получают +-100.
А вот провинциальные - до 50.
Поправка на уровень выживания.
Едь в Европу
Я щас сам перехожу с js на go; чтобы было меньше конкуренции намутить оффер в Германию
Довольно высокая зп
Порог вхождения высокий? Не просто же знать синтаксис?
На го вообще возможно обрасти экспертизой, сидя дома? Как в мобилках или фронте
Ничего запредельного. Для джунов задачи по алгоритмам и пара задач на многопоточность.
Можно и дома, запили борду на микросервисах, задеплой ее в кубер. запили что-нибудь на серверлес.
Ну вот я сейчас глянул, crypro/rand в основном использует crypto/cipher. Все написано на го.
Да, охуенно.
> ну я вышку закончил моаис, но один хуй эникеем 3 лет работал потом, периодически пытался учить питон, но забивал член доходя до ооп
Ты там совсем обкотлинился? Кроме андроид-смартфонов есть ЕВМ и других форматов и назначений.
Я думал, го - худший язык программирования, а оно вон оно че. Лучший! Давно он таким стал? Я думал, лучший это раст. Ты, кстати, перед тем как пост высрать, рейтинг на СО смотрел?
Причем здесь андроид, я сижу на распбери пай.
Но ведь "лучший" в заголовке пщ-тредов уже сто лет как...
Рейтинг твоей мамки тоже не впечатляет, но мы же об этом не пишем. Проявляй больше увожения.
Чтобы просто кодить хватит и пары дней, если у тебя есть опыт с другими языками. Для собеса можно поготовиться месяц, почитать, покодировать разные штуки.
А вот чтобы проникнуться общепринятыми подходами и в одиночку разрабатывать качественные сервисы, надо как обычно, потратить хотя бы год на коммерческую разработку в команде с уже сеньористыми сотрудниками.
Но таких мало, я сменил за последние 5 лет уже 3 компании, и везде сраные миддлоджуны. Заебали, я хочу научиться чему-то у скилловых чуваков, а не учить недомиддлов прописным истинам.
Круто звучит
сам бы даже попробовал вкатиться, но работаю на маке и максимум могу работать в винде, а для линукса ебать какой тупой
Больно только в первые разы. Я уже 3 года сижу на дуалбуте кубунта+винда, мне норм. Винда нужна только для игорей, для остального вполне хватает линупса.
мне мака не хватило (такой же паренек как я который пришел на пару недель пораньше, сидит на маке), так что я на убунте, слава столману
Нет.
Не обязательно, но если есть желание - можно обмазаться всякими unsafe вещами, но не советую.
1) в 90% случаев тебе это не понадобится
2) там где всё таки понадобится -- всё придётся лезть профайлером и обмазываться флагами
3) помни, что эскейп -- не часть спеки языка, а деталь реализации, и когда выходит следующая версия компилятора всё может стать лучше или хуже
> Или я латентный байтоёб и мне надо в другой язык?
this
Пщ value-based язык, не выебывайся и не передавай дто по пойнтеру
И вообще покажи профиль, вангую, что оно тебе не надо
Ты откуда такой вылез?
В го работа с указателями в большинстве случаев сводится к следующим случаям:
1) Надо менять структуру, а не создавать копию
2) Для экономия памяти при передаче аргументов
3) для того, чтобы значение было nullable
Вот доклад про указатели https://www.youtube.com/watch?v=yEiaCx0fR9k
>>655851
Объясняю обоим, внимайте
эскейп-анализ именно для того и нужен, чтобы видеть и страдать, как все, от чего берется указатель улетает в кучу посмотрите еще как работают интерфейсы, че такое dynamic dispanching и минимизируйте плз использование сигнатур вида func(h *Handler) DoSmth(), посмотрите че по факту лежит в структуре Handler и если там одни пойнтеры на другие структуры, то копируйте ее блять!
это значит, что память при схлопывании стека сама собой не очистится, и гц придется лишний раз по-работать, резонный вопрос - а зачем?
с текущим железом (2к20й уже наступил ёпт) скопировать десять бит на стеке не стоит ничего, скопировать эти же 10 бит в кучу стоит дороже на порядок, а переодически поглядывать на эти 10 бит и перепроверять, а щас они доступны, а щас, а щас - бонусный оверхед
поэтому пойнтеры нужно для
1) Надо менять структуру, а не создавать копию
3) для того, чтобы значение было nullable
да и то, иммутабельность рулит и педалит, а за нулабля надо пиздить по рукам чтобы нормально сигнатуры проектировали
Мне тоже кажется, что все забыли, что тред-то про илюшу.
нахуй надо
Пишется.
- устанавливаешь го
- устанавливаешь питон
- пишешь десктоп на питоне
- профит
Все что вы хотели знать о поинтерах, но стеснялись спросить. Спасибо
То есть, если я например хочу записать строку в таблицу, я должен неиронично сначала написать insert запрос с плейсхолдерами, передать куски моей структурки как аргументы запроса, а потом еще дернуть lastinsertid и в эту структурку впихнуть?
Да, чистый SQL лучше всего. Охуеный язык. Я вообще не пойму, зачем понапридумывали всяких ORM, мало того что ограничивающих разработчика, так ещё и тормозных. Толку от них 0, используемая СУБД всё равно никогда не меняется, а в выразительности нет равных SQL-ю. И сложные запросы намного понятнее, когда написаны на SQL, а не на очередной бестолковой поделке с синтаксисом для особенных. И проблем от них КУЧА, они вносят в проект столько неявной и неуправляемой магии, что через некоторое время вообще хуй проссышь, что к чему и куда. Нахуй. Лучше SQL для работы с данными ещё ничего не придумали.
Примерно так. Можешь еще всякие sql-builder попробовать.
В гошных Ормах много неявной магии, поэтому лучше их не использовать
Пока лучшее что видел - это https://github.com/pressly/goose.
Eго, кстати, в Авито используют, пруф - https://youtu.be/hKnWq4RmNKE
Это трап?
А то у меня от большинства объяснений как_нарисовать_сову.jpg
Попробуй сначала вживую руками с ними по-работай
Потом попробуй обсудить с кем-то кто понимает что это и зачем
А потом можно попробовать снова почитать статьи/книжки
> как_нарисовать_сову.jpg
Закономерно, учитывая, что интерфейсы - абстракция, не имеющая аналога в реальном мире.
Привет мир уже готов (а хули его там готовить), на пути БД. Базовый туториал прошел, но пока не чувствую язык. Сложно ориентироваться с модулями и тонкостями.
Или забить на это всё, гуглить по ходу и пилить своего бота?
Ладно, задам немного другой вопрос. Сейчас меня больше всего интересует организация и управление состоянием БД.
Вопрос: есть ли какие-либо общепринятые инструменты в GO для управления состоянием БД? Т.е. вот я пишу бота, мне надо создать схему БД. Мне её тупо SQL'ем писать?
Стоит ли сразу использовать ORM?
>Мне её тупо SQL'ем писать?
Да, потом накатываешь инструментом миграции. goose чисто гошный, flyway просто популярный.
>Стоит ли сразу использовать ORM?
Почитал разные мнения, тру-гоферы пишут запросы вручную, в крайнем случае кодогенерация. В популярном горме пустые интерфейсы => теряются преимущества статических анализаторов => можно было не укатываться с питона.
А когда начнешь писать вручную, начнешь стрелять себе в ноги с транзакциями, prepared statements, context.Cancel(), но за такие шрамы тебя будут уважать другие гошники.
Спасибо. Приходится по крупицам собирать информацию "как надо" и "как принято". Не хочется стрелять себе в ноги, но без этого конечно никуда.
Все-таки решил что сначала нужно прочитать книгу, т.к. я нихуя не понимаю, а чтобы нормально себя чувствовать в языке для меня нужно его почувствовать (я хз как еще это описать).
Придется смириться с тем, что я не гений программирования и не рок звезда, и не могу "писать что-то осмысленное через пару дней изучения go, пройдя одно руководство" как говорят всякие пидарасы на youtube. Самооценка, конечно, страдает, но ничего не остается кроме как принять свои слабости и упорно трудиться.
Хотя читать книгу гораздо проще чем писать код, поэтому даже тут проеб.
Короче есть вопрос
Я пишу что-то типа поисковика, логика которого крутится на серваке, написанном на ГО
Я нахуячил (запрототипировал) логику поиска на питоне - с токинезацией, графами и тд
ВОПРОС
а как мне это в го воткнуть? реализовать именно на нем или запускать процесс питоновский? во втором случае не проебу производительность?
Читай Кернигана, чтение небыстрое, но он действительно хорошо объясняет.
А потом читаешь
https://github.com/Alikhll/golang-developer-roadmap
и понимаешь, что все тлен.
ты наркоман, зачем так сложно-то?
у тебя есть несколько стульев:
синхронная коммуникация по сети/юникс-сокету (делаешь в своем питухоне веб сервер и ходишь в него из го)
асинхронная коммуникация по сети (мессаджброкеры/очереди на бд и прочее)
шаред-мемори между процессами
треш вида os.Exec() питоновского кода из го
На какой стул сам сядешь, куда мать посадишь?
>>658934
в анусе но зависит от кейсов
Просто проиграешь. С микросервисов никто не начинает. Все сначала делают монолит, а когда он станет слишком большим его итерационненько переделывают.
Нормальные пацаны сразу делают на микросервисы.
Не имеет смысла сначала делать плохо, что бы потом ебаться с легаси. Тем более, только у новичков (и динозавров) есть представление, что микросервисно писать больше.
Уже всё готово и разложено по полочкам.
Таки начал, и с первых страниц уже некоторые нужные и непонятные ранее вопросы прояснились. Я так подумал, а куда вообще спешить.
Роадмап тоже находил, очень годно. Думаю после книги все пойдет как надо. 400+ страниц все-таки не труда по 1.5к, если постараться за пару недель осилю с конспектами в md, майндмапах и примерами
по сравнению с DSLами для обработки текста?
>ну типа похожесть определить, или косинусное расстояние
нет, в го такого нет. на уровне компилятора запрещено. из-под земли вылезет гофер, а в гофере роб пайк, который набросится и загрызет тебя.
Если ты студент или сотрудник большой компании - да. Всего, что не хватит, напишешь сам.
В остальных случаях, бери питон
Ну правда, уже все на автомате.
Берешь gokit, быстро пилишь микросервисы. Когда требуются транзакции, берешь airflow.
Закидываешь в managed cloud.
Ты прекрасен.
Глупо спорить и переубеждать кого-то в этих ваших интернетах, поэтому и я не стану
но интерисующимся по-рекомендую почитать, в инете этой инфы хватает, не как "правильно" делать микросервисы, а какую проблему их придумали решать
Любой тьюринг-полный язык подходит для этой задачи, рекомендую sed, попробуй, базарю, ещё захочешь!
что ты как маленький, тебе не язык нужно выбирать а развитую экосистему, где уже есть готовые билиотеки для решения твоей проблемы
Я то и дело натыкаюсь на популярные инструменты с мертвыми репами, которые тупо бросили разрабатывать то в 12, то в 15 году.
Что не так с тулзами языка? Почему гугловский gopls не поддерживаем модули? Это же какой-то пиздец! Этим языком же не 3.5 Васяна пользуются. Как так вышло-то вообще?
Джун-джанго спрошу: блять, почему ТАК мало позиций для джунов в европе?
Извиняюсь за ВЫСЕР бесполезный, но блять, живу в Гермашке, за 2 неделе 15-20 сообщений от рекрутеров по джанге и 0 по пщ
Питон заебал, думал сменить
Какой пердолинг? Приведи пример?
Пересобирают ядро каждые 5 минут? Ставят haskell-notebook на AIX?
Вроде все тоже... Управляемые легковесные потоки и коммуникация между ними...
> Почему гугловский gopls не поддерживаем модули
гугловский гоплс отличается от обычного гоплс? обычный вроде поддерживает.
Вброшу платину, я тут залётный. Остался без хлебушка как и многие, решил вкатиться в го, за месяц-два самоизоляции его можно задрочить чтобы взяли на работу стажёром за еду?
Нет
Уже много раз писали, что вакансий по пщ очень мало и чаще идет в дополнении к дргому языку.
Анон выше писал, что они долго ищут джунов, но это скорее исключение.
Лучше вкатывайся в js - работы дохуя, что по фронту, что по ноде, тем более последняя давно опережает пщ
Ориентируйся на город.
В мск можно найти работу на любой экзотике.
Если ты не из дефолта, то лучше выбрать пыху.
Это конечно так, но не без опыта.
Зависит конечно от хотелок. Если хочется сидеть в офисе со стабильной (хоть и меньшей) зп — пхп, иначе жс и удалёнка.
посиди лучше месяцев 9-12 и заводи трактор
Книжки по архитектуре и курсов по практике написания.
Наоборот, чем более популярна технология, тем больше конкуренция.
А вот взять что-то вмеру популярное, вроде го, раста, эрланга и вайтивайти, мне кажется будет легче.
я с тобой бы согласился, но про РФ это пока не так работает, по моим наблюдением: типа, опять же, только один анон, вроде писал, что ищут джунов чисот с пщ. А остальные вакансии - как 2й язык.
Про эрланг, ТОЛЬКО СЛЫШАЛ, что еще хуже-полторы вакансии
>А остальные вакансии - как 2й язык.
Что там за вакасии для многостаночников? До обеда на питоне, после - на го, после работы остаешься виндоуз переустанавливать и картриджи заправлять.
Ещё мало компаний, где все на го.
Обычно есть монолит на джава/пыхе/питоне. И в вакансии требование на него, как основной язык.
И расстаскивание этого говно на микросервисы на go.
> Наоборот, чем более популярна технология, тем больше конкуренция.
шок этот парень сводит экономику к линейным уравнениям первой степени бесплатно без смс
Кто пишет на голенг типичные КРУДы - я вас нахуй не понимаю.
Язык для этого ну максимально уебанский.
Лапша и боль гарантированы.
А так как С с гц если то язык конечно достойный.
Нахуй тупые пидорасы-менегеры его пихают в круды- хуй знает.
Я тебе больше скажу.
Сейчас в айти грядет жопа, так что чтобы ты не выучил за 2 месяца, тебя никуда не возьмут
айти отрасль прикладная не будет заказывать бизнес, погромисты первые под мост пойдут.
условно ресторан может работать без сайта, а сайт без ресторана не может
Да, логично. Нормально себя будут чувствовать только айтишники из других сфер не из списка.
Без сайта - да
Без бухгалтерии, склада, еботы с партнерами, скидочками-карточками, интеграции с доставками - ниет
Не переживайте, нормальные пограмисты только поднимутся на этом кризисе, конечно, будет и те, что лососнет тунца и не маленькая вероятность, что таких будет большинство
>>661245
Как понадобится 1к+ рпс с одного инстанса (и учитывай, что такой круд и метрики будет писать и ивенты кидать ну и бонусом, не обязательно дрочить один инстанс пг/мускуля/шины ивентов, а можно работать с несколькими нодами кластера) - приходи
ты только что описал аутсорс и продуктовые галеры, аутсорс заглотит так, как даже котогейчик не глотает
Все эти бухгалтерии, склады и тд у них уже есть. А вот денег на сайт или еще чего уже нет.
> условно ресторан может работать без сайта, а сайт без ресторана не может
Если у ресторана проблемы, то закрыв сайт - он их не решит, ресторану придется закрыться, таким образом айти пострадает в последнюю очередь условно - после всех ресторанов.
Живу в городе с жесткой самоизоляцией, рестораны могут работать только на вынос, сейчас сайты и мобильные приложухи - последний способ как-то работать и многие все что осталось вкладывают в айти и доставку. После карантина безработица будет высокая и борьба за платежеспособных клиентов будет нешуточная + привычки к онлайн потреблению у людей тоже останутся. Айти остается максимально актуальным занятием.
Айти конечно же не стоматология или сантехника, но чтобы айти рухнуло нужен прям капец в экономике.
это был пример коней в вакууме, но принцип ты понял, бизнес не дает заказы, ойти собирает бутылки
Сразу видно, что ты не в теме.
Работаю на галере сейчас: 20% проектов закрыли - всех, кто оказался без дела, сократили. Также поурезали всякие бонусы типа выплат за спорт, бонусы за рекомендацию и тд.
А проблема в том, что кризис начался в мире, и они экономят, в первую очередь на айти.
ну да там галеры аутсорсные сплошные
На айти не экономят.
Во время кризиса срезают левые расходы, которые не жалко было в хорошие времена, но могут потопить в кризис.
Если вашей компании стало плохо, знайте, вы занимались хуйней.
Ну ты тупой
Я тебе говорю реальную ситуацию: на айти начинают экономить в первую очередь, поэтому сейчас все аутсорс галеры начинают экономить и сокращать людей или зарплаты
у меня продуктовая и то сказали болт вам а не премии, кабы не поперли
У меня всё норм. Вообще ничего не поменялось. Нанимаем людей.
У моих знакомых плохо только у говноедов, тьфу, битриксоедов. Потому что накуй оно не нужно.
640x360, 0:31
В целом согласен, но есть компании где IT отдел - это как раз "левые" расходы. Помню читал пасту, где кабанчик расказывал, что завел IT отдел, по тому что это статусно
>>661381
В аутсорсе все скорее плохо, но аутсорс это не все IT. Да и аутсорс бывает очень разный, в том числе и компании, которые продают IT-продукты, над которыми не могут остановить разработу, и компани с большим горизотном планирования - которые понимают, что если они распустят команду - они потом потратят очень много времени на то, чтобы новые сотрудники вошли в курс дела и начали делать хоть что-то полезное, и есть компании, деятельность которых в современных условиях стали более востребованы чем обычно, и они сейчас гребут деньги лопатами
>но аутсорс это не все IT
ты малость не понимаешь структуру рынка нашего ойти снгшного погреб я на галерах, даже выпало мне как то порулить одним небольшим проектом, проект я сдал и в рот ебал больше тимлидом работать но ща не об этом, и я видел некоторое дерьмо, так вот в украихе/белорахе аутсорс почти и есть все ойти, ибо внутренний рынок там баблом небогатый и делать продукты под него тупо нахуй не упало из-за открытого настежь рынка аутсорса в котором в жирные времена платили в разы больше да и заказов поболее, так внутренний рынок там или мертв или в зародышевом состоянии остался, в рахе ситуация обратная из-за общего протекционизма поток бабок за аутсорс был не такой обильный и это позволило внутреннему рынку выжить и потихоньку развиватся.
что же происходит когда все плохо в кризисные времена потом заказов падает, своих надо кормить, и галерки мелкие и средние получают финансовую пробоину и идут ко дну, выкидывая бомжевать погромистов, галерки крупные у кого есть бабос могут впасть в спячку перебиваясь заказами какие есть и попутно отлавливая бриллианты в море говна которое разлили галерки помельче, у галерок продуктовых, коих в рф много, обычно есть клиенская база, расти она врятли будет, да и оборот упадет, но так как она работает в основном на внутренний рынок падение внешнего спроса не бьёт по ним как кувалдой, так что как то так это работает.
Обычно да, зачастую - для graceful shutdown'а
Бизнес будет давать заказы пока есть хоть в каких-то отраслях рост, если весь корабль тонет целиком, то ясеньхуй айтишная каюта пойдет ко дну с остальными. Но до этого надеюсь не дойдет.
>>661363
Чем жестче условия, тем больше бизнес выкручивается, чтобы оставаться конкурентоспособным. Новые проекты, если они не критичны для бизнеса, конечно закроют, но поддержка существующих становится фактором выживания бизнеса. Мб в странах без жесткого карантина другая специфика, конечно.
А 20% это не 20% людей часом? Потому что даже в таком случае, просадка не такая сильная как в других областях. И при этом после кризиса айти будет расти еще быстрее остальных отраслей.
>для проброса логгера.
Интересное решение, никогда не думал о таком использовани контекста. Я логгер получал либо из синглтона, либо - через dependency injection'а
Нужно из контекста.
Что бы в логгере уже были полезные поля, вроде id запроса, идентификатора пользователя и подобных штук помогающих отладке.
> В целом согласен, но есть компании где IT отдел - это как раз "левые" расходы.
Залетный ИТТ. Работаю как раз в такой конторе, пилим внутреннюю CRMку. В команде нет ни одного действительно опытного IT специалиста. У всех опыт не больше года-двух и тот опыт был получен в этой конторе. Считай все на своих ошибках. При чем эти ошибки везде: в бизнесе, в бизнес логике, в архитектуре, у менеджеров при построении задач бизнеса. Пиздос, в общем. Решил остаться на этой работе из-за широкой свободы действий.
Как только начался карантин прямой босс тут же начал искать сторонние заказы. Сразу стало понятно, что высшее руководство поставило ультиматум, и скоро наш отдел пидорнут.
Босс начал браться за какие-то лютые окологосударственные милионные заказы. Сказать, что я охуел это не сказать ничего.
Команда из начинающих менеджеров, незнающих девопсов и пяти джуниоров разной степени прожарки, да милионный муниципальный заказ с кучей интеграций...
Страшно представить, какой ад нас ждем если мы случайно в это втянемся.
А с другой стороны, если не втянемся, то скорее всего половину, а то и весь отдел тупо пидорнут, а учитывая, что у меня полтора года не очень качественного опыта и 5 лет работы на обыкновенным быдлом на заводе, в моей мухосрани мне тупо придется возвращаться пахать быдлом на завод.
Короче, не так и рушатся мечты, анон. Я же пошел в программирование за мечтой, и планировал её достичь к 30, в апреле собирался съебывать в коронавирусную за опытом и заработками.
Но случилось то, что случилось. И теперь потребуется несколько лет чтобы все хотя бы устаканилось, не то что вернулось на круги своя.
Да, в другую профессию.
А как понадобится гибкий код и возможность быстро и дешево подстраиваться под новую бизнес-логику - съебывать в ужасе. Это понятно, ок.
Дело не в вертикальном масштабировании.
А в том, что сейчас век интернета и все больше проектов переползает в ранг хайлоада.
И заливать железом проблемы выливается в суммы с 4-5 нулями в месяц от Амазона.
Поэтому скриптовые языки и загибаются.
переведу на язык биологии, вы жили в комфорте пилили какую то хуйню для кишков компании(которая особо и не нужны были), в итоге из-за кризисы новые вызовы, если ваш отдел сейчас не войдет в резкий поток изменений, если вы не выйдите из зоны комфорта и в стрессе не начнете хуячить что- то новое, то вы по всем законам рынка должны умереть.
звезды на гите не повод для дрочки на технологию. Некоторые не стесняются подъебывать, выкладывая библиотеки-подъебки.
> А если мне внезапно понадобится переехать с одной БД на другую?
Для того, чтобы у тебя код на go остался неизменным при смене базы, он у тебя должен быть ну очень абстрактным.
И то непонятно, иногда нужно написать запрос с группировками, with, оконной функцией и ещё парочкой очень специфичных вещей. Как ты это сделаешь через свою ORM? Скорее всего никак, и будешь делать 10 запросов из кода, а потом в коде же мерджить их результаты, что будет в разы неэффективнее.
В итоге мы приходим к такому выводу, что ORM подходят только для случаев, когда ты просто гоняешь json'чики между кодом и интернетами, причём самыми что ни на есть типовыми CRUDами.
А как только у тебя появляется сложность в работе с данными, ты резко начинаешь использовать функциональность и особенности базы на 100% и код запросов, во-первых, становится слишком сложным, чтобы его могла сгенерировать ORM'ка, а во вторых слишком специфичным, чтобы просто так взять и поменять базу.
Поэтому в мире пехапе ормки распространены повсеместно - там чаще всего нет нагрузки и абсолютно любой говнокод неэффективный код проканывает. А на го просто по области применения обычно пишут нагруженные сервисы, которые должны использовать эффективные запросы.
Вы видите копию треда, сохраненную 3 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.