• Некоторые идеи написания искуственного интелекта для шахмат

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

    image

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

      image

      Logstalgia скорее порадует разработчиков и системных администраторов, которые много времени проводят на «заднем дворе» сайтов, но сам результат работы программы очень красив и видео будет интересно посмотреть всем. Данная программа визуализирует работу веб-сервера Apache используя log-файлы. По ссылке видео, а саму программу можно скачать по здесь.
    • Извлечение фактов

        Задача извлечения информации из текста сама по себе не нова: в этом направлении проделано довольно много работы как со стороны крупных компаний aka Яndex и Google, так и со стороны независимых разработчиков. Однако, говорить о том, что данная задача окончательно решена, увы, не приходится. В этой статье я хочу немного упорядочить свои знания по данному вопросу, поверхностно разобрав наработки, с которыми мне недавно пришлось столкнуться.
        Читать дальше →
      • Незаметная смерть распознавания речи

          Предполагалось, что когда компьютер научится понимать человеческую речь, мы быстро сможем создать искусственный интеллект. Но точность систем распознавания речи достигла своего пика в 1999 году и с тех пор застыла на месте. Академические тесты 2006 года констатируют факт: системы общего профиля так и не преодолели уровень 80%, тогда как у человека этот показатель составляет 96-98%.

          Профессор Роберт Фортнер из Media Research Institute считает, что создатели систем распознавания речи окончательно зашли в тупик. Программисты сделали всё что смогли, и у них не получилось. Спустя несколько десятилетий они поняли, что человеческая речь — не просто набор звуков. Акустический сигнал не несёт достаточно информации для распознавания текста.
          Читать дальше →
        • Краткий обзор популярных нейронных сетей

            К написанию этой статьи меня побудила большая распространенность некоторых заблуждений на тему искусственных нейронных сетей (ИНС), особенно в области представлений о том, что они могут и чего не могут, ну и хотелось бы знать, насколько вопросы ИНС вообще актуальны здесь, стоит ли что-либо обсудить подробнее.

            Я хочу рассмотреть несколько известных архитектур ИНС, привести наиболее общие (в следствие чего не всегда абсолютно точные) сведения об их устройстве, описать их сильные и слабые стороны, а также обрисовать перспективы.

            Начну с классики.

            Читать дальше →
          • Обзор торговых роботов

              Привет, хабралюди! Все мы знаем про Forex, может даже кто-нибудь из Вас и пытался (или до сих пор пытается) на нём играть заработать на жизнь, пиво, телефон, машину, стартап (нужное подчеркнуть). Но в нашей жизни полностью уделить все время торговле на валютном рынке, практически не реально и в следствии чего появились автоматические торговые эксперты.
              В данном посте я расскажу о некоторых платных советниках, которые я покупал и использовал на реальном счете. Все графики и цифры взяты из личного опыта и никаким образом не отношусь к разработчикам советников.
              Так что предлагается выбрать «красную» или «синюю» таблетку :)

              Синяя таблетка...
            • Тоби Сегаран «Программируем коллективный разум»

                Знаете, люблю я книжки про всякие интересные алгоритмы, и вот недавно попалась еще одна такая книжка.

                Книга «Программируем коллективный разум» в основном посвящена алгоритмам классификации и кластеризации, хотя есть главы, посвященные другим темам вроде создания собственного поисковика, генетическим алгоритмам и генетическому программированию. Почти все описанные алгоритмы применяются в духе Web 2.0, используя анализ поведения пользователей на разных сайтах, которые предоставляют свой API. Но что особенно приятно удивило, так это то, что все примеры написаны на языке Python.


                Вот какие алгоритмы описываются в книге:


                • Коллаборативная фильтрация. Или, говоря человечески языком, алгоритмы, которые могут рекомендовать вам какие-то покупки, сайты или музыку в зависимости от оценок, которые вы поставили другим подобным вещам. По таким алгоритмам работает навязывание покупок в интернет-магазинах или подбор музыки на last.fm. В конце главы приводится пример, который будет рекомендовать вам ссылки из сервиса del.icio.us.
                • Алгоритмы группировки (кластеризации). Создаваемый пример анализирует RSS-каналы блогов и пытается их автоматически разделить на группы в виде дерева в зависимости от частоты слов, которые попадаются в блоге. Заодно Сегаран рассказывает как можно сделать так, чтобы названия блогов расположились на плоскости кучками в зависимости от их близости в плане рассматриваемых тем.
                • Отдельная глава посвящена построению поисковиков – созданию паука и, самое главное, рассматриваются алгоритмы ранжирования ссылок, в том числе и с учетом ссылок страниц друг на друга, создавая, таким образом, аналог Google PageRank. Еще интересно, что в этой же главе есть пример, где для выдачи наиболее релевантных ссылок используется нейронная сеть, которая обучается по мере того как пользователь щелкает на понравившиеся ему ссылки.

                Читать дальше →
              • Распознавание изображений. Алгоритм Eigenface

                  Введение



                  Я продолжаю серию статей посвящённую тематике pattern recognition, computer vision и machine learning. Сегодня я вам представляю обзор алгоритма, который носит название eigenface.



                  В основе алгоритма лежит использование фундаментальных статистических характеристик: средних (мат. ожидание) и ковариационной матрицы; использование метода главных компонент. Мы также коснёмся таких понятий линейной алгебры, как собственные значения (eigenvalues) и собственные вектора (eigenvectors) (wiki: ru, eng). И вдобавок, поработаем в многомерном пространстве.
                  Как бы страшно всё это не звучало, данный алгоритм, пожалуй, является одним из самых простых рассмотренных мною, его реализация не превышает нескольких десятков строк, в тоже время он показывает неплохие результаты в ряде задач.

                  Мне не страшно.
                • Новый социализм: Глобальное общество коллективистов идет в онлайн

                    image

                    Месяц назад наткнулся на понравившуюся мне статью, а на днях зарегистрировался на Хабре. Вот и решил первым своим постом сделать ее перевод. Сильно не судите, перевод довольно вольный, английский изучал только в школе (школу закончил 9 лет назад, высшее образование ни как не связанно с лингвистикой). Статья довольно объемная, но от этого не менее интересная.


                    Билл Гейтс однажды смеялся над сторонниками открытых исходников, произнося наихудший эпитет, который капиталист может сказать. Эти люди, по его словам, являются «новые, современного вида коммунисты», и эта злая сила стремится уничтожить монополистический уклад, который помогает поддерживать американскую мечту. Гейтс был неправ: Open Source фанатики больше похожи сторонников борцов за свободную волю чем на сторонников коммунизма. Тем не менее, существует некоторая правда в его утверждение. Безумная, глобальная спешка подключения каждого человека друг к другу, все это время, тихонько, порождала пересмотренный вариант социализма.
                    Читать дальше →
                  • Поспешай медленно или Что такое «Медленные медиа»

                      image

                      Эпиграфом к этому небольшому рассуждению о новом концепте медиа-ресурсов может быть всем надоевшая поговорка «тише едешь — дальше будешь» или менее затертая «поспешай медленно». Все дело в том, что несколько месяцев назад в Германии был создан и опубликован так называемый «Манифест медленных медиа». Это манифест послужил толчком для утверджения новой концепции медиа, что весьма сильно потревожило западные СМИ.

                      Круги по воде начинают проявляться и у нас, так что спешу ознакомить хабра-сообщество с данной темой. Возможно, некоторые из вас и читали уже «Манифест», причем в оригинале, и если это так, приглашаю присоединиться к обсуждению.

                      Читать дальше →
                    • Развитие образного мышления

                        image

                        Пламенный привет, дорогие хабравчане!

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

                        • Translation
                        • Tutorial

                        Разрабатывая приложения, мы постоянно сталкиваемся с новыми подходами, языками и концептами. И постоянно мы мечемся в сомнениях «смогу ли я быть на волне, оставаться конкурентоспособным, учитывая все изменения и тренды?». Давайте задумаемся на мгновение, вспомнив фразу из моего любимого фильма «Касабланка» — в любви законов новых нет — так создан свет.

                        Все, что касается любви, применимо и к коду. Новых законов в коде нет. Если вы четко понимаете основные идеи разработки, вы способны максимально быстро адаптироваться к новым подходам. В этой статье я расскажу вам о трех основных принципах, которые, наряду с другими, позволяют регулировать сложность разработки. Я поделюсь своим видением вопроса, которое, надеюсь, поможет вам в повседневной работе.
                        Читать дальше →
                      • CSS кнопки с помощью псевдо-элементов

                        • Translation
                        • Tutorial


                        Здравствуйте, друзья. За последний месяц я экспериментировал с псевдо-элементами, особенно, с их использованием в создании кнопок. Таким образом, удалось создать крутые эффекты, которые раньше можно было сделать только со спрайтами.

                        В этом уроке я покажу как создать кнопку с изюминкой, используя только якорный тег и мощь CSS.

                        Читать дальше →
                      • Все что вы хотели знать о мастерах операций, но боялись спросить


                          Большинство системных администраторов в своей корпоративной среде для обеспечения системы идентификации и доступа своих пользователей к ресурсам предприятия используют доменные службы Active Directory, которые смело можно назвать сердцем всей инфраструктуры предприятия. Как многие из вас знают, структура доменных служб в организациях может включать в себя как один, так и несколько лесов (набор доменов, включающих описание сетевой конфигурации и единственный экземпляр каталога), в зависимости от таких факторов как ограничение области доверительных отношений, полное разделение сетевых данных, получение административной изоляции. В свою очередь, каждый большой лес для упрощения администрирования и репликации данных должен разделяться на домены. В каждом домене для управления доменными службами и выполнения таких задач как проверка подлинности, запуск службы «Центр распределения ключей Kerberos» и управления доступом используются контроллеры домена. А для управления сетевым трафиком между офисами разрабатываются сайты.
                          Читать дальше →
                        • Как работает yield

                          • Translation
                          На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

                          Вот исходный вопрос:
                          Как используется ключевое слово yield в Python? Что оно делает?

                          Например, я пытаюсь понять этот код (**):
                          def _get_child_candidates(self, distance, min_dist, max_dist):
                              if self._leftchild and distance - max_dist < self._median:
                                  yield self._leftchild
                              if self._rightchild and distance + max_dist >= self._median:
                                  yield self._rightchild
                          

                          Вызывается он так:
                          result, candidates = list(), [self]
                          while candidates:
                              node = candidates.pop()
                              distance = node._get_dist(obj)
                              if distance <= max_dist and distance >= min_dist:
                                  result.extend(node._values)
                                  candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
                                  return result
                          


                          Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

                          ** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

                          Подробный и обстоятельный ответ
                        • Азартный способ повысить производительность в команде — Tree Poker

                            Tree Poker
                            В филиале одной крупной компании в России потребовалось отправить трех представителей на гей-парад в Европу. Как и ожидалось, желающих не нашлось. Решено было отправить руководителей подразделений, где ниже всего производительность труда. В последние недели до отправки производительность всего предприятия возросла в разы...

                            Реальная история, British American Tobacco
                            Традиционно, GTD относится больше к личному тайм-менеджменту и достижению личных целей. Хотя гораздо интереснее и сложнее достичь хорошей производительности в команде из нескольких людей. Как убедиться что все работают на полную, но в меру, каждый занимается нужным делом, причем таким чтобы соответствовало навыкам и способностям, да еще чтобы все были заинтересованы и мотивированы, и в целом команда достигала поставленных целей?.. Об этом написаны сотни книг, которые конечно полезны, но мы хотели бы поделиться довольно интересным, простым, азартным и эффективным способом повысить производительность в команде, который мы используем уже нескольно месяцев. Кому интересно — продолжаем…
                            Ставки сделаны, ставок больше нет!
                          • Принцип цикады и почему он важен для веб-дизайнеров

                            • Translation
                            Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

                            Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

                            Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
                            Читать дальше →
                          • Базовые рекомендации для повышения безопасности *nix веб-сервера

                            Вдохновившись статьей о поиске следов взлома, решил написать статью о предупреждении взлома и базовых шагах для сведения возможности взлома сервера к минимуму.
                            Все шаги крайне важны, и невозможно выделить самый-самый важный, либо второстепенный.
                            Данная статья не является пошаговой инструкцией, а лишь списком рекомендуемых шагов.
                            Читать дальше →
                          • Тёмная материя интернета

                              Иногда я открываю окно торрент-клиента и просто смотрю, как он раздает файлы… Это завораживает даже больше, чем дефрагментация или гейзеры и вулканы в трехлитровой банке с домашним квасом. Ведь я помогаю множеству незнакомых мне людей качать нужные им файлы. Мой домашний компьютер — маленький сервер, ресурсами которого я делюсь со всем интернетом. Наверное, похожие чувства побуждают тысячи добровольцев по всему миру участвовать в проектах вроде folding@home.

                              Ни один файловый сервер не справился бы с тем объемом раздачи, который обеспечивают миллионы маленьких компьютеров по всему миру, используя лишь небольшую часть своих ресурсов. Вот если бы я мог так же легко поделиться ресурсами с любым понравившимся мне сайтом! Если бы затраты на хостинг при росте аудитории росли не линейно, а логарифмически, за счет «добровольного ботнета» из компьютеров посетителей. Насколько меньше рекламы я бы увидел? Сколько интересных стартапов избавились бы от головной боли по поводу масштабирования? Сколько некоммерческих проектов могли бы перестать зависеть от благосклонности меценатов? И насколько труднее было бы кибергопникам или спецслужбам DDoS-ить такой сайт!
                              Читать дальше →