Довольно продолжительное время я веду учёт отсмотренного. Фильмы - на IMDB (сейчас
762 оценки), аниме - на mAL (почти
300 просмотрено, почти 450 оценок). Чтобы следить за свежаком в принципе хватает блогов. Для
фильмов - подписан на
ReleaseLog (с переводами раньше был подписан на новинки NNM-Club) плюс немножко рецензий. Из
анимешных постоянно читаю
Star Crossed (не помню где я его откопал, но к моему вкусу довольно близко) плюс новинки с
Random Curiosity (один из наиболее популярных блогов) и
Tenka Seiha (вкус практически противоположен моему, но много картинок и рано пишет). А какой-нибудь хороший сериальный блог кто из френдов посоветует? Только рецензии на новинки сериалов, никакие новости, анонсы и подробности личной жизни актёров/режиссёров не нужны.
Периодически наталкивался на всякие
рекомендательные сервисы.
Из анимешных понравился
Anime-Planet, там я откопал немало интересного, но он
заполняется людьми - т.е. ты сам пишешь что "посмотревшим это imho понравится ещё и вот это потому что ...", но это и ценно - можно почитать чем похоже, почему рекомендуют. Для фильмов как-то попробовал Flixster, пару-тройку стоящих фильмов даже откопал, но потом забросил (не помню почему). Наш имхонет... в своё время поставил там
аж 1143 оценок, но по-моему вообще ничего стоящего не нашёл. Впечатление осталось что поначалу (когда оценок не больше сотни) он ещё более-менее достойно работает, а потом начинает выдавать "среднюю температуру по больнице".
Вторая задача, которая у меня возникла - оценка фильмов, у которых ещё вообще
ни одной оценки на IMDB нет. Поскольку выбор при этом делается по актёрам/режиссёрам и ключевым словам сюжета - возникла идея это
автоматизировать. Простым скриптом из данных IMDB выкопал интересного и несмотренного больше, чем со всех предыдущих игр с рекомендательными сервисами вместе взятыми. Но скрипт получился жутко тормознутый, поэтому идею на какое-то время забросил.
Но поскольку лучший способ выучить язык программирования - писать на нём программы (c), на
Scala набросал небольшую
рекомендовалку на данных NNM-Club. К которой потом добавил байеса, и оказалось что оно вполне шустро работает. Даже слова отбирает хорошо (в мои попали: киберпанк, андроид, хакер, Gainax, Желязны, Yoko Kanno, Мамору Осии, Мотоко Кусанаги, Бибоп, Масамунэ, conscious). Понятно, что алгоритм я под себя и "затачивал", смотря всю статистику - где-то у половины пользователей отобранный список мне кажется "осмысленным", у половины - нет, но в осмысленности их оценок я не разбирался. Самое главное - при
1583 оценках попадающие в топ рекомендаций вещи вполне достойны. В анимешные попадали
Gintama,
Skip Beat и несколько старых достойных вещей. Ни то ни другое - "не моё", ибо не люблю 100+серийники и сёдзе, но обе вещи пошли просто залпом. Гинтама - вообще чудо, этакая
Урусей Яцура, где гаремную составляющую заменили на
Самурая Чамплу, а несносных пришельцев оставили.
my_xcalibur на днях
писал о кино-свежаках, и
The Uninvited на прошлой неделе как раз висел в топе рекомендуемого свежака, хотя я ещё не смотрел.
Впечатления от
Scala. Как уже писал
в твиттере, кодить на нём очень легко. И перловый "более чем один способ сделать это" есть, и гибкость лиспа (можно свои управляющие конструкции создавать). Лисп - вообще отдельная песня, ещё в школе я очень вдохновился небольшим двухтомником каких-то финнов, и долгое время считал лисп лучшим языком, хотя ничего серьёзного на нём не писал.
Приходит на ум фраза "сопротивление среды" для оценки языка - насколько он "сопротивляется" выражению идеи программиста. При этом и перловые козявки - $@#% - сопротивление, ибо в них путаешься, и скобки лиспа, и "многословность" java. Так вот Scala пока кажется языком с наименьшим сопротивлением. Второй большой плюс - статические типы, как-то так сложилось исторически что динамические языки (куда относятся и перл с лиспом) мне нравятся меньше. Всякие
OCaml не понравились т.к. они варятся в собственном соку, а Scala практически вообще без "сопротивления" взаимодействует с Java, как следствие - огромнейшее количество библиотек и фреймворков. Всё-таки Java занимает
#1 в индексе TIOBE. Scala там уже на 27 месте, в апреле была на 28-м.
100 из 1300 предложенных докладов JavaOne касаются Scala.
С другой стороны, всё имеет свою цену. Когда сравнивают скорость языков программирования, типа что Java не медленнее C++, Scala - не медленнее Java, имеется в виду что на них можно написать такой код, который будет работать быстро. Но это не будет код, "естественный" для этого языка. Простой пример: for. В Java, как и в C++, и C, это обёрнутый while: по сути for(a;b;c;)d = a;while(b){d;c}. В Scala же for фунциональный, безумно гибкий, но хотя for(i <- 0 until 10) делает тоже что и for(int i=0; i<10; i++), в работе он создаёт кучу объектов, не удивлюсь даже если оборачивает("box") int в объекты... Хотя писать "оптимально" циклами while там тоже можно.
Неизменяемые (immutable) типы данных для данной задачи - вообще смерть. Ибо при каждом добавлении объекта в Set/Map чуть ли не копируется всё содержимое. Даже стандартные mutable Set/Map оказались слишком расточительными: миллион [Int,Int] отжирает где-то от 46 до 60 мегабайт памяти, на x64 - вообще от 80 до 100. В результате пришлось писать свой CompactHashMap (Add:
выложил,
анонсировал. Add2:
вторая утечка в actors, Add3:
fixed), в котором оно заняло всего 16! По скорости - быстрее scala.collection.mutable.HashMap но медленнее java.util.HashMap.
В общем, вооружившись
декомпилятором, и покопавшись в том, что генерит scalac, можно сочетать скорость разработки (за счёт богатства языка), оптимизируя при этом те 20% кода, которые выполняются 80% времени (с опытом, поняв какие scala-конструкции во что выливаются, это будет совсем легко).