На сервере в базе данных каждому треку соответствует один или несколько жанров. Таким образом оценка предпочтения жанра вычисляется как среднее значение оценок предпочтения всех соответстаующих треков, прослушанных пользователем. Для каждого трека в процессе обновления вначале выбирается жанр, вероятность выбора которого пропорциональна оценке предпочтения. Далее внутри жанра выбирается случайный трек.
А вот как раз и нет. Старые настолько надоели, что я всегда проматываю некогда любимые треки. Это относится и к топу песен исполнителя — оно все слушано-переслушано.
Это не проблема, поскольку после N (сейчас стоит 30) числа проигрываний трек автоматически удаляется, даже с высоким средним временем прослушивания. Более того, практика показывает, что даже с учётом эффекта, который вы упомянули, среднее время прослушивания (в пределах N проигрываний) очень хорошо коррелирует с музыкальными пристрастиями.
К сожалению, это проблемы хостинга файлов на Free Music Archive, который периодически валится. Обычно UX совсем другой. Очень жаль. Могу лишь посоветовать перезапустить приложение через минут 5. Ну или удалить, что, конечно же, проще.
Простите, я 5 минут ждал загрузки первого трека, причем я уже подумал что «оно» неработает
К сожалению, иногда подглючивает сам Free Music Archive (где физически хранятся файлы), это особенно заметно при первой загрузке музыки. В будущем возможно перенесу на свой сервер. Попробуйте перезапустить программу.
Какая у вас там умная логика незнаю, но нехватает кнопки «эта композиция ужасна, я больше никогда не хочу слушать её», сами придумайте короткое название кнопки
Такой кнопки нет и не будет. Но если вдруг у вас хватит терпения послушать некоторое время в несколько заходов, то, вероятно, начнёте замечать, что такого шлака становится всё меньше и меньше.
Получится, если размер кэша будет неограниченно расти. А в целом вы правы, старые треки звучат намного чаще новых. Это компенсируется тем, что старые всегда более любимые (прослушиваемые).
Не рекомендую `GORM` и подобные ему ORM. Закопаетесь в изучении нюансов маппинга их конструкций на нативный SQL, вместо того, чтобы писать SQL напрямую. Мне лично очень нравится `reform`, писал на нём три проекта, остался доволен.
Я когда-то тоже реализовывал авто-подсказки в Visual Studio с помощью libclang. Самым неприятным было столкнуться с недостаточной производительностью для набора текста в реальном времени. Пришлось реализовывать непростой конечный автомат, который асинхронно запускал libclang и сбрасывал результаты при превышении лимита времени или перемене фокуса ввода.
Такой кнопки нет и не будет. Но если вдруг у вас хватит терпения послушать некоторое время в несколько заходов, то, вероятно, начнёте замечать, что такого шлака становится всё меньше и меньше.
До этого ещё очень далеко.