Andrey
https://play.golang.org/p/1Ya2-DcN4y7
Andrey
Получается только один проход по ids. Конечно, m[u.ID] внутри себя тоже итерирует, но там поиск будет быстрее, чем проход по массиву.
Pavel
вопрос наверное идиотский, но: в половине гайдов пишут о том что все свои проекты надо создавать в $GOPATH/src/, это вообще актуально? или можно использовать любую папку и проблем с, допустим, пакетами не будет? например, пока я в свободное время ковыряюсь в го, я бы хотел создавать все в папке на моем я.диске, чтобы ковырять их из дома и с работы
Aleksandr
Wingman
Wingman
export $GOPATH="$GOPATH:/home/user/go:/path2/go"
Andrey
Andrey
идеального варианта нет. Только ждать vgo
Wingman
можно и забить вообще на gopath, но тогда свои пакеты придется импортить относительными путями, типа `import "../pkg", а это зло
lynx
lynx
Pavel
хм, понял, спасибо
Daniel
Pavel
ну в общем проще сделать через репо на гитхабе, чтоб все лежало в гошном воркспейсе и просто через гит синхронизироваться
Anonymous
кто-то работал с github.com/go-playground/validator ?
Anonymous
вопрос по нему - как валидировать на непустоту хотя бы одного поля из списка?
Nikita
Ребят всем привет, соори за оффтоп.
Мы (Grinteq Belarus), ищем сениора GO разработчика с бекграундом C++ или Ruby.
Работа ремоут или в Минске. Пишите в личку за деталями.
Mary
#job #fulltime #go #golang #Спб #Питер #блокчейн #финтех
Всем привет! Ищу Senior Golang Developer в международный блокчейн-проект. Ребята занимаются разработкой/исследованиями в сфере финтеха 11 лет. Сейчас в питерском офисе работает ~100 человек.
Фултайм, но гибкий график. Офис, но с видом на Финский залив. З/п от 150 000, но верхний порог зависит только от вас.
Подробное описание вакансии: http://telegra.ph/Senior-Golang-Developer-v-blokchejn-proekt-03-23
—---------------------
Резюме, вопросы и комментарии:
@mary_digital
m.kudriavtceva@gmail.com
🎉
🎉
Mary
arkady
Всем привет.
Я тут решил вкатиться в го с питона и у меня есть вопрос.
Например в питоне, если я написал бекенд, затем хочу задеплоить его на сервак, на котором есть 4 ядра.
Чтобы задействовать все 4 ядра, я подниму какой-нибудь uwsgi перед nginx.
А как быть в GO? Он автоматически распределяет нагрузку или можно ограничить как-то?
Vadim
Для этого есть горутины
arkady
так они в рамках одного ядра крутятся или на всем проце?
Vasily
на всех ядрах
Vasily
но вы можете органичить количество используемы системных тредов, чтобы не все ядра занимать
arkady
Заранее извиняюсь, если мои вопросы покажутся глупыми
Sergey
https://golang.org/pkg/runtime/#GOMAXPROCS
Andrey
И SO https://stackoverflow.com/questions/17868419/how-can-my-go-program-keep-all-the-cpu-cores-busy?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
Igor
Vasily
там очень старая версия го, но принципиально ничего не менялось с тех пор
arkady
Расскажите пожалуйста еще, что страшного в том, что нет джинериков и как их понять?
Sergey
Vasily
ничего с тех пор не менялось концептуально
в го полная обратная совместимость
Alexander
Vasily
Igor
Igor
И в Go одна из самых худших реализаций работы с коллекциями
Alexander
Slava
забавно, что некоторые люди, которые говорят про проблему дженериков в го - даже не знают что такое дженерики. Кто-то думает что это как-то связано с классами и наследованием =)
Мерль
В стандартной библиотеке go есть семейство функций scan
fmt.Scan()
fmt.Scanln()
fmt.Scanf()
которые читают форматированный ввод из stdin
Так вот, в принципе нет ничего удивительного, но если не знаешь, можно неплохо обосраться: если считывать ввод в "%s" (это форматированный ввод слова без пробелов), то строка до первого пробельного символа считается в переменную, как и ожидалось, а остальное пойдёт на ввод терминала
https://asciinema.org/a/InQ5FUrIDQqgs9M8ac6Inmcaz
Мерль
Решение — использовать bufio.Scanner в режиме ScanLines
arkady
Еще в одной из статей читал, что в го нет необходимости городить очереди очереди задач(типо celery), для выполнения фоновых задач.
Почему?
arkady
Если фоновая задача просецессозависимая - она же заблочит все мои горутины, ведь так?
John
как минимум горутины отлично подойдут для воркер пула
Andrey
arkady
Andrey
Andrey
так какой смысл от этого пула?
Воркер пул выгодно использовать там, где обработка запроса может блокироваться внешним IO. Тогда, пока один воркер заблокан, другой может обрабатывать новый запрос.
John
так какой смысл от этого пула?
ну если сравнивать с целери так или иначе он будет грызть твой цпу и оперативу, и тоже если это станет проблемой придется ограничивать его потребление на уровне системы. в гошке же это можно сделать на уровне приложения
John
мне тут намедне скидывали замечательную статью про связь горутин, ос тредов и процессоров
https://rakyll.org/scheduler/
покури если интересно
Мерль
Мне кажется если у воркера нет состояния, то смысла в пуле в общем-то нет, накладные расходы на создание горутины очень малы.
Если хочется ограничить потребление ресурсов, то лучше использовать лимитер на создание конкурентных задач
🏁Александр
а что за лимитер?
Slava
я думаю неверно говорить, что гошные горутины могут заменить job tasks системы вроде celery
Slava
это немного ортогональные вещи
Slava
но конечно какие-то юзкейсы горутины могут покрыть
Slava
Мерль
а что за лимитер?
Что нибудь типа https://github.com/ninedraft/limiter
Впрочем он настолько простой, что его проще скопировать чем импортировать
Мерль
Или самому написать
🏁Александр
🏁Александр
хотя в принципе одно и тоже
Slava
Slava
или сискол
Andrei 🦉
но это не отменяет того, что горутина сама себя прерывает и отдает управление
Slava
так любой рантайм и работает =)
Заур
привет ребят
в mgo, как понял, в collection.update(select, update)
все документы найденные через select, полностью перезаписываются на параметры update так, что не остаётся других кей:валуе, кроме тех, что в update.
Тогда получается, что если я хочу чтобы в моей выборке менялись только указанные параметры, а остальные не трогались, мне надо получить выборку и вручную сохранять каждый измененный мной документ через collection.UpdateId?
Заур
Как-то это всё, мягко говоря, многословно получается
Slava
там же вроде есть модификаторы
Slava
типа установить поле
Slava
или прибавить
Slava
насколько я помню
Заур
В mgo вроде нет
func (c *Collection) UpdateAll(selector interface{}, update interface{}) (info *ChangeInfo, err error)
Roman
Anonymous
а кто то работал с jpeg + xmp?
как в jpeg заэмбедить метаданные?