• Системы рекомендаций: искусственные имунные системы и эффект идиотипов

      Системы рекомендаций:
      Советы от машины
      Холодное начало
      Введение в гибридные системы
      — Искусственные имунные системы и эффект идиотипов


      Читая разные публикации про интеллектуальный анализ данных и системы рекомендаций я случайно наткнулся на один интереснейших подход к реализации таких систем. В его основе лежит концепция искусственной имунной системы (ИИС, Artificial immune system), согласно которой в компьютерной системе реализуются некоторые свойства имунной системы живых организмов, в том числе способность учиться и запоминать. В системах рекомендаций используется модель, которая описывает концентрацию антител, реагирующих на определенный антиген. Особенный интерес представляет так называемый эффект идиотипов (Idiotype), показывающий, что концентрация антител зависит не только от их сходства с антигеном, но и от сходств друг с другом.

      Для тех, кто не знаком с биологией, коротко объясню суть дела. Антиген — это вещества, которые при попадании в организм вызывают ответную реакцию имунной системы. В ответ она вырабатывает антитела, определенный класс белков, которые используются для идентификации и нейтрализации раздражителей. В нашем случае, антиген — это пользователь, а антитела — объекты, с которыми вы его сравниваете. Чтобы это легче было представить, предлагаю считать, что мы рассматриваем систему коллективной фильтрации, где антителами являются другие пользователи.
      Читать дальше →
      • +18
      • 1,7k
      • 8
    • Когда достигнут потолок зарплаты

        Хочу сразу предупредить, что несмотря на два экрана текста, в статье больше вопросов, чем ответов. Приглашаю обсудить вместе.

        Прошло 10 лет вашей программистской карьеры. Накоплен большой профессиональный опыт, изучен вагон языков и технологий. Но со временем горизонт только расширяется, и никогда не удастся сказать, что овладел всем. Чего не скажешь о финансовой стороне. Поясню.

        В 20-25 лет мы думаем в основном об интересной работе и мало обращаем внимания на растущую зарплату (а вначале карьеры она неизменно быстро растет). Однако, создав семью и родив детей, в той или иной мере начинает хотеться улучшения и в финансовой сфере. Безусловно, работать только ради денег глупо, но получать адекватную зарплату семейному человеку очень актуально. И мы начинаем уделять внимание карьере.

        Что такое карьера в сфере IT?
        Читать дальше →
      • Огнелис — твики и фишки

          Многие мои друзья пользуются Firefox и задают мне вопрос — а почему я пользуюсь Flock? Я им отвечаю — мне нравится, когда у меня в браузере без всяких телодвижений есть доступ до всего, что нужно. Тем не менее, «это все» поедает достаточный объем ОЗУ, не всегда юзабельно и требует «доводки». Как раз про доводку и пойдет речь ниже. Сразу же скажу, про pipeline писать не буду. Остальных опций хватает из about:config.

          Читать дальше →
        • On-line cервисы, создающие html, содержащий подсвеченный код, на основе оригинального кода

            Это может быть полезно людям, занимающимся генерацией информационного наполнения ресурсов и тем, кто это информационное наполнение верстает или просто добавляет с помощью некого интерфейса ресурса.
            Иногда при наполнении проекта информационным наполнением нужно привести на странице листинг скрипта или программы. И, естественно, возникает желание, что бы он был соответственно форматирован, подсвечен в соответствии с синтаксисом языка, да еще и строки нумеровались. Далее я привожу несколько ресурсов, которые в режиме online формируют нужный нам html на основе оригинального кода.

            Список не претендует на исчерпывающий. Я привел здесь только те ресурсы, которые смог найти и которые мне понравились.
            Читать дальше →
          • Системы рекоммендаций: советы от машины

              Системы рекомендаций:
              — Советы от машины
              Холодное начало
              Введение в гибридные системы
              искусственные имунные системы и эффект идиотипов


              Многие современные тенденции веб дизайна направлены на то, чтобы помочь пользователю лучше ориентироваться и по возможности облегчить выбор и принятие решений. Есть множество явных и неявных способов способов направлять и манипулировать поведением пользователя, фокусировать его внимание на нужных аспектах системы и влиять на принимаемые им решения. Но возможно ли, а главное, нужно ли избавить пользователя от необходимости выбора? Можно ли доверить часть решений автоматизированным системам рекомендаций?

              Краткое введение


              Хорошее и лаконичное определение системе рекомендаций дает Википедия:
              Системы рекомендаций — это особенный вид техники фильтрации информации стремящийся представлять информацию (фильмы, музыку, книги, изображения, веб сайты и тп), которая скорее всего заинтересует пользователя. Обычно система рекомендаций сравнивает профиль пользователя с какой-то справочной информацией и старается предсказать «рейтинг», который пользователь даст объекту, над которым он еще даже не думал.
              Читать дальше →
            • Системы рекоммендаций: введение в гибридные системы

                Системы рекомендаций:
                Советы от машины
                Холодное начало
                — Введение в гибридные системы
                искусственные имунные системы и эффект идиотипов


                Продолжим с того момента, на котором мы остановились в прошлый раз: мы рассмотрели несколько способов решения проблемы холодного начала, теперь я предлагаю рассмотреть другие проблемы систем рекомендаций (далее просто СР) и подумать, как разные типы СР могут дополнять друг-друга. Сразу оговорюсь, что я не буду подробно рассматривать способы решения той или иной проблемы. Цель этой статьи — лишь помочь разработчикам ориентироваться в разновидностях СР и в связанных с ними проблемах.

                Для начала все-таки придется дополнить классификацию СР. Przemyslaw Kazienko и Pawel Kolodziejski предложили разделить все СР на пять типов: статистические, коллективные, ассоциативные и информационные. Начнем с самых простых.
                Читать дальше →
              • Системы рекомендаций: холодное начало

                  Системы рекомендаций:
                  Советы от машины
                  — Холодное начало
                  Введение в гибридные системы
                  искусственные имунные системы и эффект идиотипов


                  Для успешного применения систем рекомендаций критически важно иметь большой объем справочных данных. Но что делать, если нужных данных совсем нет, или не достаточно? Такое состояние называется холодным началом (cold start). Например, на сайте зарегистрировался новый пользователь, и система еще ничего о нем не знает. Или в магазине появился новый товар, который никто никогда не покупал и не оценивал. Или совсем плохо, система только начала свою работу и данных у нее нет вообще. Посмотрим, что можно сделать в таких ситуациях.
                  Читать дальше →
                • Советы по фиксациям в SVN

                  • Перевод
                  Предлагаю перевод хорошей статьи с советами по выполнению фиксаций в хранилище. Оригинал написан для проекта T2, но практически все советы универсальны и легко применимы для любого другого проекта. А самое главное — они действительно полезны.

                  Upd: В названии статьи хоть и фигурирует SVN, но советы, изложенные в ней, подходят ко всем известным мне системам кондроля версий. Стоит так же заметить, что советы направлены в основном на командную разработку.

                  Читать дальше →
                • Обзор системной архитектуры социальной сети Campus.ru

                    Представляю Вашему вниманию обзор высокоуровневой системной архитектуры социальной сети www.campus.ru, разработки компании ООО «Креатив Медиа». На мой взгляд, данный материал интересен тем, что позволяет оценить применимость рассмотренных подходов и технологий в разработке интернет-ресурсов. По крайней мере, когда наша компания начинала проект «Кампус», мне очень не хватало подобной информации.
                    Дальше очень много букв
                  • Интерфейс для пополнения платежных систем в «Личном Кабинете QIWI»

                      На Хабре, да и на других интернет-ресурсах, много писалось о том, что существующая в «Личном Кабинете QIWI» система пополнения электронных платежных систем не удобна для пользователей. Особенное неудобство испытывали те, кто платил первый раз.

                      Многие пожелания и рекомендации были услышаны. В начале апреля интерфейс пополнения электронных платежных систем был изменен.
                      Читать дальше →
                    • Тюнинг nginx

                        Статья написана по материалам моего доклада на CodeCamp 2009.

                        Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

                        У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

                        Пришло время оптимизировать nginx...

                        Читать дальше →
                      • Amazon открывает новый сервис в облаках «Elastic MapReduce»

                          В дополнение к сервисам Amazon Elastic Compute Cloud (EC2) и Amazon Simple Storage Service (Amazon S3) компания Amazon сообщила об открытии нового сервиса Amazon Elastic MapReduce, который на данный момент пребывает в статусе беты.

                          Elastic MapReduce — вебсервис, который позволят с легкостью обрабатывать огромные количества разнообразных данных. Сервис основан на совместном использовании EC2 и S3, а также фреймворка Hadoop.

                          Подробности под катом
                        • Ускоряем выборку произвольных записей MySQL

                            Последнее время оживилась публика с вопросом случайной выборки из таблицы. Решений по оптимизации полно, и нового сейчас я вам наверное ничего не покажу, просто напомню про основные методы оптимизации — упрощение запроса и индексацию. Без предисловий про фриленсеров, сразу к делу ;)

                            Читать дальше →
                          • Жизнь во фрилансе глазами программиста

                              Вот уже два с половиной месяца как я занимаюсь фрилансом, за это время накопился опыт, которым хочу поделиться с общественностью.

                              Вход


                              Вначале нужно как можно большими способами давать знать о том, что вы ищете заказы: говорить знакомым, родственникам, бывшим коллегам, заказчикам бывших коллег, публиковать в социальных сетях, специализированных веб-сайтах. Я подал более двадцати заявок на таких сайтах, прежде чем сработала хотя бы одна. Пару недель это у вас займёт.

                              Трудности


                              Читать дальше →
                            • Хитрости с логированием в однопоточных неблокирующих серверах.

                                Хочу рассказать об очередном результате моих изысканий в области оптимизации производительности Web-серверов.
                                На этот раз речь пойдет об оптимизации сложного логирования в однопоточном неблокирующем вэб-сервере.
                                Читать дальше →
                              • Реальны ли высокопроизводительные Web-приложения на C++?

                                  В данный момент стоит вопрос о разработке высокопроизводительного веб-приложения, которое могло бы выдерживать миллионы хитов в день.
                                  Целевая нагрузка от 1000 хитов в секунду и выше (вплоть до заполнения гигабитного канала).

                                  Имел ли кто-либо из читателей опыт разработки веб-приложений на С++? Предлагаю обсудить сложности и ограничения.
                                  Подразумевается что приложение не будет иметь утечек памяти(и соответственно проблем со стабильностью), и 2-3-х кратное увеличение цены разработки по сравнению с PHP приемлимо.

                                  Какие варианты вижу я:
                                  Читать дальше →
                                • IPv6 для P2P

                                    IPv6 обычно ассоциируется с проблемой нехватки IPv4 адресов, о которой любит писать «желтая» пресса. Что со дня на день свободных адресов не останется и переход на IPv6 будет неизбежен. Скептики считают что проблема настолько же раздута, как в своё время «ошибка 2000», когда все боялись что после 1999 года наступит 1900 и случится техногенная катастрофа.

                                    Для большинства пользователей, действительно, пользы от IPv6 никакой. Какая разница, например, что заголовки пакетов более удобны для маршрутизатора? Но для P2P проблема NAT (за счёт чего IPv4-адреса так ещё и не закончились) реальна, т.к. для связи peer-to-peer (даже чтобы переслать файл через Jabber или ICQ) нужно чтобы хотя бы один из участников был доступен снаружи, т.е. имел реальный IP-адрес или хотя бы пробросил себе порт. Некоторые провайдеры предоставляют внешний адрес за отдельную плату, у некоторых такой возможности нет, и именно для NAT-страдальцев будет больше всего полезно использование IPv6.

                                    Также это будет полезно тем, у кого провайдер режет p2p-трафик. В России это (пока?) не так распространено, а за рубежом — далеко не редкость. IPv6 трафик (точнее, обёрнутый в обычные UDP пакеты) ими не режется. Еще это может помочь в ситуации, когда p2p-трафик блокируется корпоративным фаерволом, но настроить IPv6 через туннель можно.
                                    Читать дальше →
                                  • Обслуживание тысяч запросов в секунду на примере XBT Tracker

                                      Недавно проводили тест, результаты которого показали, что одно приложение обрабатывает 2000 запросов в секунду на скромном сервере, где это было не единственной нагрузкой. При этом результат каждого запроса записывается в 3-5 таблиц в MySQL. Честно говоря, меня такой результат удивил, поэтому решил поделиться с хабрасообществом описанием архитектуры этого приложения. Подобный подход применим от баннерных показов до чатов и микроблогов, надеюсь кому-нибудь покажется интересным.

                                      Во-первых, это приложение однопоточное. Всё делается одним процессом, работа с сокетами — неблокирующими epoll/select, никаких ожидающих ввода/вывода потоков (threads). С развитием HTTP, сначала появлением Keep-Alive, затем AJAX и набирающим популярность COMET, количество постоянных соединений с веб-сервером растёт, на нагруженных проектах измеряется тысячами и даже десятками тысяч, и если для каждого создавать свой поток (thread) со своим стеком и постоянно переключаться между ними — ресурсов сервера очень быстро не хватит.

                                      Второй ключевой момент — что один SELECT… WHERE pk in (k1, k2, ..., kN) выполняется быстрее, чем несколько SELECT… WHERE pk=… Выполняя работу с базой данных большими пачками можно уменьшить не только число запросов в секунду, но и общую нагрузку.
                                      Читать дальше →
                                    • WinRAR vs 7-zip

                                        Как я и обещал — расскажу о моих опытах с архиваторами. Для меня стало привычным использовать дома архиватор WinRAR, и я уже не задавался вопросом «а почему именно он» около двух лет. А тут вдруг при очередной чистке моего компьютера от нелицензионного софта я поставил себе 7-zip, убрав незарегистрированный WinRAR, который к тому же мне периодически напоминал о необходимости регистрации, чем очень надоедал.
                                        Читать дальше →
                                      • Рекомендательный сервис КиноЭстет

                                          КиноЭстет

                                          Хочу представить вам свой новый сервис — КиноЭстет. Предназначение сервиса — помочь пользователю выбрать фильм для просмотра.

                                          Краткая предыстория создания сервиса, и чем он отличается от других подобных сервисов:

                                          Однажды я бросил играть в WoW :)

                                          У меня появилось 4-6 часов свободного времени в сутки, которые, поначалу, я стал тратить на просмотр фильмов. Чтобы смотреть только лучшее и интересное, я начал пользоваться сервисами imhonet.ru и kinopoisk.ru.

                                          После того как я оценил около 200 фильмов на Имхонет, он перестал выдавать мне адекватные рекомендации, и мне совсем не хотелось смотреть то, что он предлагал. Туда ходить я перестал.

                                          Кинопоиском я пользовался подольше, пересмотрел все, что с наградами за последние несколько лет, пересмотрел все что imdb выше 8, дальше пошли неинтересные фильмы, в итоге, я перестал ходить и туда.

                                          Устные рекомендации друзей нравились мне больше всего, потому что это не заказные рецензии и не сухие оценки, а мнения людей, которых я знаю. Так и возникла идея, создать небольшой сайтик, на котором мы с друзьями будем писать, кто какой последний фильм смотрел, по мотивам форумных веток «А какой последний фильм Вы смотрели?», только с удобными механизмами поиска и отбора фильмов, при этом с максимально простым интерфейсом.
                                          Читать дальше →