heavycharged
господа, задачу пересечения множеств сейчас на что лучше всего положить? в кратце, примерно так: есть юзеры, они лайкают песни (фотки, да что угодно, у чего есть ID), нужно найти всех юзеров, которые лайкают те же песни что и я, исключить те, что есть у меня (по тем, которым нашли пересечений), и пересчитать их между собой (чтобы отсортировать по количеству совпадений).
я так понимаю, что SQL с этим справится, но может архитектурно есть какие-то инструменты, которые под это дело лучше подходят?
Slava
я думаю специализированная графовая база данных может быть более удобна
Slava
возможно там даже есть встроенные алгоритмы кластеризаций
Slava
с другой стороны, ничего не мешает вам сделать это самому
Quet
господа, задачу пересечения множеств сейчас на что лучше всего положить? в кратце, примерно так: есть юзеры, они лайкают песни (фотки, да что угодно, у чего есть ID), нужно найти всех юзеров, которые лайкают те же песни что и я, исключить те, что есть у меня (по тем, которым нашли пересечений), и пересчитать их между собой (чтобы отсортировать по количеству совпадений).
я так понимаю, что SQL с этим справится, но может архитектурно есть какие-то инструменты, которые под это дело лучше подходят?
redis ?
🏁Александр
циклом!
🏁Александр
🙂
Sergei
господа, задачу пересечения множеств сейчас на что лучше всего положить? в кратце, примерно так: есть юзеры, они лайкают песни (фотки, да что угодно, у чего есть ID), нужно найти всех юзеров, которые лайкают те же песни что и я, исключить те, что есть у меня (по тем, которым нашли пересечений), и пересчитать их между собой (чтобы отсортировать по количеству совпадений).
я так понимаю, что SQL с этим справится, но может архитектурно есть какие-то инструменты, которые под это дело лучше подходят?
например погуглить коллаборативную фильтрацию, выдача даже на русском дюже неплоха.
heavycharged
редис можно, да, правда пока не знаю как там множества пересекать, разве что получать сырые данные, а потом обрабатывать их и сортировать уже в Go.
графовые базы тоже можно, но на практике не юзал их. надо будет глянуть и взять потестить что-то.
свое костылить, вряд ли это будет лучше/производительней/быстрей уже готового.
всем спасибо за инфу, пойду просветлятся у гугла.
Quet
Chebyrash
🎉
господа, задачу пересечения множеств сейчас на что лучше всего положить? в кратце, примерно так: есть юзеры, они лайкают песни (фотки, да что угодно, у чего есть ID), нужно найти всех юзеров, которые лайкают те же песни что и я, исключить те, что есть у меня (по тем, которым нашли пересечений), и пересчитать их между собой (чтобы отсортировать по количеству совпадений).
я так понимаю, что SQL с этим справится, но может архитектурно есть какие-то инструменты, которые под это дело лучше подходят?
Тоже себе моск выношу этим, пока забил))
Zver
Yuri
Привет, скажите набуя и как использовать структуры в контексте роутингов и оберток запросов?
Мерль
Мерль
Yuri
Если ткнете на пример буду благодарен и пойду копать
Sergey
Подскажите появилась ли какая нибудь система сборки для Go? Я пока что использую только glide, но хотелось бы чего-то на подобии gradle из java.
G72K
ainu
А зачем оно вообще нужно расскажите непросвящённому
ainu
Go build чем не устроил
ainu
Или тут речь про ci - автосборка при прохождении теста?
Vladislav
Нужно, например, флаги поставить.
Mikhail
Изучая Go решил знания сразу применить на практике. Задачу поставил себе такую: автоматизировать процесс установки Go и настройки переменных окружения, так же автоматизировать процесс обновления Go.
Хотелось бы услышать критику по коду.
P.S: Возможно кому то пригодится эта утилитка.
https://github.com/meehalkoff/goin
Mike
Mikhail
Васильев Виктор
А зачем автоматизировать крайне редкие вещи? Но вообще в любом случае для твоего опыта полезно, молодец)
🏁Александр
Васильев Виктор
Так а чего там мочится, все делается за 5 минут ровно)
🏁Александр
ибо на проект может быть больше 1 бинарнкиа 🙂
.
Не понимаю зачем писать на русском комментарии и ридми
.
Сразу ограничивааешь круг тех, кому это может быть полезно
🏁Александр
и выдери остальные классы в отдельный пакет
🏁Александр
не надо все класть main
Mikhail
🏁Александр
у меня локальные библиотеки, лежат в /shared/libname/
Mikhail
Nikita
господа, задачу пересечения множеств сейчас на что лучше всего положить? в кратце, примерно так: есть юзеры, они лайкают песни (фотки, да что угодно, у чего есть ID), нужно найти всех юзеров, которые лайкают те же песни что и я, исключить те, что есть у меня (по тем, которым нашли пересечений), и пересчитать их между собой (чтобы отсортировать по количеству совпадений).
я так понимаю, что SQL с этим справится, но может архитектурно есть какие-то инструменты, которые под это дело лучше подходят?
Вообще изи это сделать одним запросом на sql, ничего там лишнего придумывать не надо
Vladislav
🏁Александр
ну это специфические обертки для проекта
🏁Александр
например там есть
/shared/config
/shared/responce
Vladislav
А почему не /config и т.д.?
🏁Александр
потому что в корне сырков не должно быть, иначе мусора много
🏁Александр
у меня есть
cmd
shared
vendor
🏁Александр
далее все разложено уже внутри
Vladislav
🏁Александр
вы забываете что в проекте еще лежат всякие деплой конфиги, документация, редми
🏁Александр
от пакетных менеджеров файлы, дополнительные ресурсы
🏁Александр
тесты двух видов...
🏁Александр
сертификаты 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
А что ты хочешь с ними сделать в цикле?
Anonymous