• Минимакс на примере игры в зайца и волков

      image Данная статья предназначена для разъяснения сути фундаментальных методов построения и оптимизации «искусственного интеллекта» для компьютерных игр (в основном антагонистических). На примере игры в зайца и волков будет рассмотрен алгоритм «Минимакс» и алгоритм его оптимизации «Альфа-бета отсечение». Помимо текстового описания, статья содержит иллюстрации, таблицы, исходники, и готовую кроссплатформенную игру с открытым кодом, в которой вы сможете посоревноваться с интеллектуальным агентом.
      Читать дальше →
    • Галлюцинируй как Трамп, или мини-анализ Рекуррентных Нейронных Сетей

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


        Читать дальше →
        • +18
        • 13.3k
        • 6
      • Google запустила бета-версию Cloud Spanner — СУБД поколения NewSQL



          Google открыла для всех бета-версию сервиса Cloud Spanner, глобально распределённой высокомасштабируемой мультиверсионной NewSQL БД с поддержкой распределённых транзакций.

          Несколько лет Google использовала этот сервис исключительно для внутренних нужд. На нём работают ключевые системы Google, в том числе AdWords и Google Play. Spanner — эволюционное развитие NoSQL-предшественника Google Bigtable. Сам же c Spanner относят к семейству NewSQL-решений, то есть оно сочетает в себе преимущества реляционных и нереляционных СУБД. Это ACID-транзакции и SQL-синтаксис традиционных СУБД без ущерба для горизонтального масштабирования и высокой доступности, присущих NoSQL.

          Исходя из опыта работы системы внутри компании, Google предлагает клиентам аптайм 99,9999% (шесть девяток, то есть максимум 31,5 секунды простоя в год), клиентские библиотеки с поддержкой Java, Go, Python, Node.js и др.
          Читать дальше →
        • Нейронные сети на JS. Создавая сеть с нуля

            КПДВ про нейронные сети


            Нейронные сети сейчас в тренде. Каждый день мы читаем про то, как они учатся писать комментарии в интернете, торговаться на рынках, обрабатывать фотографии. Список бесконечен. Когда я впервые посмотрел на масштаб кода, который приводит это в движение, я был напуган и хотел больше не видеть эти исходники.


            Но врожденные любознательность и энтузиазм довели меня до того, что я стал одним из разработчиков Synaptic — проекта фреймворка для построения нейронных сетей на JS с 3к+ звезд на GitHub. Сейчас мы с автором фреймворка занимаемся созданием Synaptic 2.0 с ускорением на GPU и WebWorker-ах и с поддержкой почти всех основных фич любого приличного NN-фреймворка.


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

            Читать дальше →
          • Взлом «админки» роутера

            • Tutorial
            *Здесь могло быть предупреждение о том, что не нужно пользоваться данной программой в преступных целях, но hydra это пишет перед каждым сеансом взлома*

            image

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


              Эта статья — некраткий конспект книги Роберта Чалдини «Психология убеждения». Будет полезна всем, кто имеет дело с людьми, продажами и бизнесом. Книга настолько полезна, что должна оказаться на полке каждого. Помимо того, что мы хотим влиять на окружающих, очень полезно знать, когда окружающие пытаются повлиять на нас. Внутри вы найдёте множество способов убеждения и, сразу после прочтения, будете с лёгкостью замечать, когда вами пытаются манипулировать.
              Читать дальше →
            • Будущее финансовых технологий в 9 графиках

                Мы в EXANTE активно следим за технологическими трендами в финансовой отрасли и хотим поделиться с вами в этом блоге тем, что кажется нам интересным.

                Финансовая отрасль активно меняется, и не все сумеют приспособиться к новой реальности. Можно выделить как минимум три области, где противостояние традиционных игроков и новичков будет наиболее жестким:

                • Розничные банки против банков, работающих только в интернете. Большая часть розничных услуг, которые предлагают классические банки, могут быть предоставлены по более низкой цене, а для качественного обслуживания вовсе не нужны дорогостоящие офисы.
                • Кредитные организации против p2p-кредитования. Площадки, выступающие посредниками для заемщиков и кредиторов, активно наступают на банковский сектор, предлагая более высокую доходность инвесторам и автоматизированное принятие решений для желающих получить кредит.
                • Портфельные управляющие против робо-консультантов. Робо-консультанты предлагают инвесторам меньшие комиссии, более низкий порог инвестиций и высокую доходность. К тому же автоматизированные стратегии не подвержены человеческому фактору и имеют прозрачную отчетность о ваших вложениях онлайн. Многие инвестиционные дома и банки не упускают тренд и активно внедряют автоматизированных консультантов для своих клиентов.

                Технологическая революция приходит практически во все сферы финансовой отрасли:

                • Розничные банковские услуги
                • Кредитование
                • Платежи и переводы
                • Управление активами
                • Рынки и биржи
                • Страхование
                • Блокчейн технологии

                Мы внимательно следим за трендами и хотим показать несколько графиков из презентации аналитической компании CB Insights, которая на основе анализа интернет-запросов выделила 9 наиболее горячих областей на стыке финансов и технологий. На графиках показано движение сравнительной популярности поисковых запросов в условных единицах (максимальное значение = 100 пунктов) за период с 2012 по 2016 годы.

                1. Финансовые и банковские чат-боты



                Читать дальше →
                • +15
                • 8.2k
                • 7
              • Навыки опытного программиста: Самые популярные советы начинающим

                  Быть программистом — это призвание? Возможно. Мы в 1cloud решили выяснить, как сами программисты оценивают свои достижения, какие качества считают неотъемлемыми в своей работе (вне зависимости от выбранного языка и специализации) и какие советы дают начинающим разработчикам.

                  Читать дальше →
                • Двусторонний binding данных с ECMAScript-2015 без Proxy

                  Привет, уважаемые читатели Хабра. Эта статья некое противопоставление недавно прочитанной мной статье «Односторонний binding данных с ECMAScript-2015 Proxy». Если вам интересно узнать, как же сделать двусторонний асинхронный биндинг без лишних структур в виде Proxy, то прошу под кат.
                  Читать дальше →
                • Я тут это… Трекалку для времени написал. За 628 минут

                    Привет, Друзья! Пару недель назад я подумал: «А можно ли использовать гугловые таблицы (Google Sheets), как простое и безопасное хранилище данных?». О, а еще мне давно хотелось написать трекалку времени.

                    И вот что получилось:

                    image
                    Код + Сайт

                    А деталей немножко под катом.
                  • Примеры кода с летней школы по Node.js и JavaScript в КПИ

                    • Tutorial

                    Товарищи инженеры, докладываю вам об успехах в подготовке научно-технических кадров в области программной инженерии на Факультете ИВТ в Киевском политехническом институте и публикую интересные примеры кода, которые были написаны для учебного курса, но будут, надеюсь, интересны и с практической точки зрения. Идея, внедрить JavaScript и Node.js в учебный процесс, вызревала у меня уже несколько лет. Но для освоения базовых вещей в программировании мне больше нравится C, чтобы люди прочувствовали машину, научились контролировать себя и свой код. А вот для прикладных задач, в которых уровень абстракции C уже не достаточно иллюстративен, мультипарадигменный и гибкий JavaScript прижился. При помощи мощного и простого API Node.js можно писать концептуальный код прямо на паре. Кроме того, знания JavaScript обязательно пригодятся на практике любому инженеру, работающему в ИТ. Часть кода, разработанного студентами курса, уже попала в серьезные Open Source проекты и это прекрасная практика, которую может повторить каждый, ведь лабораторные работы мы постепенно выкладываем на github и будем делать это и дальше, снабжая их методическими указаниями и не заботясь о том, что студенты будут списывать из форков, ведь все это нужно в первую очередь им самим. Эти материалы были использованы при подготовке порядка 300 студентов политехнического ВУЗа за 2015-2016 учебный год. Примеры я еще раз разложу по полочкам на летней школе, которая проходит с 9 по 26 августа 2016 года в Киеве, и расписание которой можно найти тут. Итак, переходим к самым показательным примерам кода.

                    Читать дальше →
                  • Эффективное использование Github


                      Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

                      Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


                      Содержание



                      Читать дальше →
                    • Az.js: JavaScript-библиотека для обработки текстов на русском языке

                        Как чуден и глубок русский курлык
                        Генератор постов

                        Обработка естественного языка (natural language processing, NLP) — тема, на мой взгляд, очень интересная. Во-первых, задачи тут чисто алгоритмические: на вход принимаем совершенно примитивный объект, строчку, а извлечь пытаемся вложенный в него смысл (ну или хотя бы частичку смысла). Во-вторых, необязательно быть профессиональным лингвистом, чтобы решать эти задачи: достаточно знать родной язык на более-менее приличном уровне и любить его.

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

                        Бессвязность текстов в нынешней версии «Генератора» вызвана тем, что на самом деле никакого анализа он производить не умеет. Просто в одних случаях «предсказывает» продолжение предложения по собранным биграммам, а в других — заменяет в готовом предложении некоторые слова на другие, которые заканчиваются похоже. Вот и вся начинка.

                        Конечно, хочется сделать что-нибудь поинтереснее. Беда в том, что модные сейчас нейросети не очень-то применимы здесь: им нужно много ресурсов, большую обучающую выборку, а в браузере у пользователя соцсети всего этого нет. Поэтому я решил изучить вопрос работы с текстами с помощью алгоритмов. К сожалению, готовых инструментов для работы с русским языком на JavaScript найти не удалось, и я решил сделать свой маленький велосипед.
                        Читать дальше →
                      • Повесть о создании классической RTS в домашних условиях с нуля + разбор основных этапов разработки (AI, сеть и т.д.)

                        image

                        В статье речь пойдет об одном очень не новом проекте, который создавался совсем в другое время и совсем в других условиях. Это моя старенькая RTS под названием Земля онимодов (Onimod land). Чтобы было сразу понятно, что она собой представляет, можно посмотреть коротенькое видео:
                        Читать дальше →
                      • Установка приложений в Caché с использованием проекций

                        • Tutorial

                        Здравствуйте. В этой статье будет описан еще один способ создания установщика для приложений в InterSystems Caché. Под приложениями здесь имеются в виду разные библиотеки или утилиты, которые могут быть добавлены или удалены из Caché всего одним действием. Если вы всё ещё пишете инструкции для пользователей по установке ваших приложений в Caché, состоящие более чем из одной строки — самое время это автоматизировать.
                        Читать дальше →
                      • Нечеткий поиск в словаре с универсальным автоматом Левенштейна. Часть 1



                        Нечеткий поиск строк является весьма дорогостоящей в смысле вычислительных ресурсов задачей, особенно если вам необходима высокая точность получаемых результатов. В статье описан алгоритм нечеткого поиска в словаре, который обеспечивает высокую скорость поиска при сохранении 100% точности и сравнительно низком потреблении памяти. Именно автомат Левенштейна позволил разработчикам Lucene повысить скорость нечеткого поиска на два порядка
                        Читать дальше →
                        • +49
                        • 48.2k
                        • 7
                      • У нас проблемы с промисами

                        • Translation
                        Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

                        У нас проблемы с промисами


                        Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

                        Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

                        — Многие из нас используют промисы без действительного их понимания.

                        Если вы мне не верите, решите такую задачку:

                        Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

                        doSomething().then(function () {
                          return doSomethingElse();
                        });
                        
                        doSomething().then(function () {
                          doSomethingElse();
                        });
                        
                        doSomething().then(doSomethingElse());
                        
                        doSomething().then(doSomethingElse);
                        

                        Узнайте решение задачи
                      • Создание синтезатора на JavaScript



                        Идея сделать браузерный синтезатор у меня появилась достаточно давно, ещё когда Audio API был в весьма зачаточном состоянии и практически единственным шансом извлечь звук из браузера (кроме воспроизведения готовых файлов) была генерация WAV с его последующей кодировкой в base64 и записью в аудио-тег. И если синтез и кодирование удавались без проблем (WAV формат довольно прост), то с потоковым аудио для музицирования в реальном времени всё было хуже и никакими ухищрениями не удавалось добиться бесшовной буферизации, в связи с чем идея и заглохла, так не успев родиться. За прошедшие годы браузеры в поддержке Audio API заметно прибавили, что в свою очередь вдохновило меня на новые эксперименты в этой области. В данной статье шаг за шагом описывается процесс создания браузерного синтезатора средствами HTML5, начиная с генерации простой синусоиды, продолжая коммутацией и модуляцией сигналов и заканчивая аудиоэффектами.
                        Читать дальше →
                        • +41
                        • 26.7k
                        • 9
                      • Хакатон на школе InterSystems 2015

                          InterSystems никогда раньше не проводила хакатонов. Школы собирали каждый год, тренировали, разбивали на команды, делали задания, различной продолжительности, но так это не называли. Но время идет. Не хотелось в очередной раз повторять одно и тоже. Хотелось чего-то нового.

                          Хакатонов, тех же.

                          Если уж мы собираем полсотни высокопрофессиональных программистов Caché почему бы не попытаться, разбив их на команды, создать нечто новое? Не все, скорее всего, согласятся участвовать и захотят программировать ночи напролет, но даже и малая часть, всего две-три команды вполне могут создать что-то стоящее. Даже если в итоге получится всего пара, но осмысленных проектов, то будем считать эксперимент успешным. (И забегая вперед, мы можем с удовлетворением констатировать, что получили больше чем «пару» достойных проектов)
                          Читать дальше →
                        • MongoDB от теории к практике. Руководство по установке кластера mongoDB

                               Доброго времени суток, уважаемые читатели. В этом посте я хотел бы описать несколько примеров развертки mongoDB, отличия между ними, принципы их работы. Однако больше всего хотелось бы поделиться с вами практическом опытом шардирования mongoDB. Если бы этот пост имел план, он бы выглядел скорее всего так:

                          1. Вступление. Кратко о масштабировании
                          2. Некоторые примеры развертки mongoDB и их описание
                          3. Шардинг mongoDB

                              Пункты 1 и 2 — теоретические, а номер 3 претендует на практическое руководство по поднятию кластера mongoDB и больше всего подойдет тем, кто столкнулся с этим в первый раз.
                          Читать дальше →