heavycharged
господа, задачу пересечения множеств сейчас на что лучше всего положить? в кратце, примерно так: есть юзеры, они лайкают песни (фотки, да что угодно, у чего есть ID), нужно найти всех юзеров, которые лайкают те же песни что и я, исключить те, что есть у меня (по тем, которым нашли пересечений), и пересчитать их между собой (чтобы отсортировать по количеству совпадений). я так понимаю, что SQL с этим справится, но может архитектурно есть какие-то инструменты, которые под это дело лучше подходят?
Slava
я думаю специализированная графовая база данных может быть более удобна
Slava
возможно там даже есть встроенные алгоритмы кластеризаций
Slava
с другой стороны, ничего не мешает вам сделать это самому
🏁Александр
циклом!
🏁Александр
🙂
heavycharged
редис можно, да, правда пока не знаю как там множества пересекать, разве что получать сырые данные, а потом обрабатывать их и сортировать уже в Go. графовые базы тоже можно, но на практике не юзал их. надо будет глянуть и взять потестить что-то. свое костылить, вряд ли это будет лучше/производительней/быстрей уже готового. всем спасибо за инфу, пойду просветлятся у гугла.
Yuri
Привет, скажите набуя и как использовать структуры в контексте роутингов и оберток запросов?
Yuri
Если ткнете на пример буду благодарен и пойду копать
Sergey
Подскажите появилась ли какая нибудь система сборки для Go? Я пока что использую только glide, но хотелось бы чего-то на подобии gradle из java.
Vladislav
Подскажите появилась ли какая нибудь система сборки для Go? Я пока что использую только glide, но хотелось бы чего-то на подобии gradle из java.
Ну вам управление зависимостей или систему сборки надо? Для управлением зависимостей куча всего есть. Для сборки можно, например, please.build использовать.
ainu
А зачем оно вообще нужно расскажите непросвящённому
ainu
Go build чем не устроил
ainu
Или тут речь про ci - автосборка при прохождении теста?
Vladislav
Нужно, например, флаги поставить.
Mikhail
Изучая Go решил знания сразу применить на практике. Задачу поставил себе такую: автоматизировать процесс установки Go и настройки переменных окружения, так же автоматизировать процесс обновления Go. Хотелось бы услышать критику по коду. P.S: Возможно кому то пригодится эта утилитка. https://github.com/meehalkoff/goin
Mikhail
1) нафига ты .vscode закоммитил? 2) утилита установки го на го? Unzip.zip прям
1. Хз, нуб наверное) 2. Там есть готовые бинарники в release
Васильев Виктор
А зачем автоматизировать крайне редкие вещи? Но вообще в любом случае для твоего опыта полезно, молодец)
Mikhail
А зачем автоматизировать крайне редкие вещи? Но вообще в любом случае для твоего опыта полезно, молодец)
Иногда приходится переустанавливать систему (все ще не выбрал любимый дистр), а морочиться с установкой Go каждый раз лениво. Спасибо)
🏁Александр
1. Хз, нуб наверное) 2. Там есть готовые бинарники в release
код main принято класть в cmd/имябинарника/main.go
Васильев Виктор
Так а чего там мочится, все делается за 5 минут ровно)
🏁Александр
ибо на проект может быть больше 1 бинарнкиа 🙂
.
Не понимаю зачем писать на русском комментарии и ридми
.
Сразу ограничивааешь круг тех, кому это может быть полезно
🏁Александр
и выдери остальные классы в отдельный пакет
🏁Александр
не надо все класть main
🏁Александр
у меня локальные библиотеки, лежат в /shared/libname/
🏁Александр
ну это специфические обертки для проекта
🏁Александр
например там есть /shared/config /shared/responce
Vladislav
А почему не /config и т.д.?
🏁Александр
потому что в корне сырков не должно быть, иначе мусора много
🏁Александр
у меня есть cmd shared vendor
🏁Александр
далее все разложено уже внутри
🏁Александр
вы забываете что в проекте еще лежат всякие деплой конфиги, документация, редми
🏁Александр
от пакетных менеджеров файлы, дополнительные ресурсы
🏁Александр
тесты двух видов...
🏁Александр
сертификаты https и прочее
Vladislav
2 на пакетный менеджер, ридми, ci. сертификаты зачем?
Vladislav
Т.е. в корне кода нет ?
🏁Александр
потому что сборка проекта автоматическая, на приватном облаке
🏁Александр
в корне кода нету
Vladislav
Ага. И go get его нельзя?
🏁Александр
нет нельщя
🏁Александр
развертывание "интерпайз" проектов, это целая история.
🏁Александр
там куча зависимостей, шаманство с облаками и прочее
Vladislav
потому что сборка проекта автоматическая, на приватном облаке
Так а сертификаты при сборке как участвуют?
🏁Александр
ну там наш тестовый ездит, кому надо берут 🙂
🏁Александр
для поднятия https сервера
Oleksandr
ребята, подскажите - что я делаю неправильно; я хочу хранить подобные инстансы в массиве и обрабатывать их в циклах единичные инстансы работают, и даже вывод коллекции работает; но стоит мне пытаться обращаться к полям в цикле - получаю undefined нагуглить как правильно хранить подобные инстансы пока не получается
Oleksandr
type AbstractAnimal struct { Name string Gender bool } type Rabbit struct { AbstractAnimal Speed float64 } type Snake struct { AbstractAnimal Len float64 } func main() { r := Rabbit{AbstractAnimal{Name:"Bunny", Gender: true},12} s := Snake{AbstractAnimal{Name:"Kaa", Gender: false}, 50} fmt.Println(r.Name) //Bunny fmt.Println(s.Name) //Kaa animals := []interface{}{r,s} fmt.Println(animals) //[{{Bunny true} 12} {{Kaa false} 50}] for _,animal := range animals{ fmt.Println(animal.Name) } }
Aleksandr
демку на playground сделай
Oleksandr
https://play.golang.org/p/wlLIhDef6aR
Nurzhan
Нужен явный type assertion
Nurzhan
У тебя итерация по пустым интерфейсам
Nurzhan
И компилятор ничего об этом не знает
Nurzhan
Можешь превратить абстракт анимал в интерфейс в методами наверное
Nurzhan
И будет у тебя массив interface Abstract Animal с Name() и прочими методами
Nurzhan
Хз как лучше
Oleksandr
ну вот вопрос именно как лучше это вроде достаточно классическая задача для разработки - использовать преимущества полиморфизма длоя единства интерфейсов но как это делается в go не могу понять; сейчас попробую сделать основу на interface; спасибо
🏁Александр
вот такой трюк подучите 🙂
🏁Александр
называется это "Type switches"
Oleksandr
но это же неудобно - я хочу создавать новых "зверей" без модификации "ядра"
Nurzhan
А что ты хочешь с ними сделать в цикле?