• Как создать игровой ИИ: гайд для начинающих

    • Translation


    Наткнулся на интересный материал об искусственном интеллекте в играх. С объяснением базовых вещей про ИИ на простых примерах, а еще внутри много полезных инструментов и методов для его удобной разработки и проектирования. Как, где и когда их использовать — тоже есть.

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

    UPD. Извиняюсь, но собственный перевод этой статьи на Хабре уже делал PatientZero. Прочитать его вариант можно здесь, но почему-то статья прошла мимо меня (поиском пользовался, но что-то пошло не так). А так как пишу в блог, посвященный геймдеву, решил оставить свой вариант перевода для подписчиков (некоторые моменты у меня оформлены по-другому, некоторые — намеренно пропущены по совету разработчиков).
    Читать дальше →
  • Паттерн «Репозиторий». Основы и разъяснения

    • Translation
    • Tutorial
    Repository commonly refers to a storage location, often for safety or preservation.
    — Wikipedia

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

    Репозиторий как коллекция


    Вероятно, наиболее важным отличием репозиториев является то, что они представляют собой коллекции объектов. Они не описывают хранение в базах данных или кэширование или решение любой другой технической проблемы. Репозитории представляют коллекции. Как вы храните эти коллекции — это просто деталь реализации.

    Я хочу внести ясность в этот вопрос. Репозиторий — это коллекция. Коллекция, которая содержит сущности и может фильтровать и возвращать результат обратно в зависимости от требований вашего приложения. Где и как он хранит эти объекты является ДЕТАЛЬЮ РЕАЛИЗАЦИИ.

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



      Демонстрация программного продукта — как яркая конфетная обертка, привлекает и поглощает внимание пользователей. Поэтому написание демок — довольно часто встречающаяся задача. Но все ли демки одинаково полезны? И как сделать по-настоящему хорошую демку?
      Напиши свою хорошую демку
      • +28
      • 18.2k
      • 6
    • AngularJS + UI Router: проверка авторизации и прав доступа

      • Tutorial
      Если ваше приложение предполагает авторизацию пользователей и/или проверку прав доступа, то вам придется либо изобретать велосипед, либо гуглить в поисках подходящего решения. В принципе, я тоже это делал. В итоге я принял приемлемым для себя описанный ниже вариант.

      Предпосылки


      Информацию об авторизованном пользователе я решил хранить в sessionStorage, копируя её при запуске приложения в $rootScope. Также по рекомендации авторов UI Router я храню в $rootScope значения объекты $state и $stateParam, для удобного доступа. Информацию же о доступе к тому или иному состоянию можно передавать через блок data при описании самого состояния. Поскольку в моем приложении везде закрыт доступ, я решил идти от обратного и добавлять значение noLogin = true для состояний, которые не требуют авторизации, например страницы ввода логина, восстановления пароля или регистрации.
      Читать дальше →
    • Развитие правого полушария головного мозга или как я учился рисовать

      • Tutorial
      Сразу дискламер: я редко пишу посты на широкую аудиторию, и более правильного ресурса для этого текста в рамках моего кругозора не нашлось. Тем не менее, если кто-то найдет это интересным, значит не зря… Поехали.

      С чего все началось



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

        Настороженно отношусь к непрофильным топикам, но решил написать этот по следующим причинам:
        • У жонглирования есть своя теория — стройная и математически привлекательная!
        • Мы живем не только работой. Жонглирование — отличное развлечение и разминка после долгого сидения за компом.
        • В пятницу приятно немного расслабиться и почитать не очень серьезные статьи. К тому же, будет чем заняться на выходные, особенно если у вас не было определенных планов.

        Теория


        Утверждать, что жонглирование — это последовательность бросков, все равно, что сказать, что музыка — это просто последовательность нот. Нельзя назвать это неправдой, но любой, хоть немного знакомый с музыкальной теорией, возмутится последним определением — столь поверхностным и недалеким.
        Читать дальше →
      • Проект К28А или велосипед нового поколения

        Здравствуйте, многоуважаемые Хабровчане.

        В этой статье хочу рассказать про человека, который изобрел велосипед заново, как бы смешно это не звучало, и про то, как мы пытаемся организовать серийное производство этого велосипеда нового поколения.

        image
        Читать дальше →
      • 40 механик для социальных игр

        • Translation
        Разработчик игр Раф Костер (Raph Koster) составил всеобъемлющий список базовых правил, на которых основаны социальные отношения в играх (мультиплеер, параллельная игра и т.д.). Эти правила для разработчиков игры заменяют азбуку. Во многом они пересекаются с принципами игровой механики, которые уже обсуждались на Хабре.

        Раф Костер приобрёл известность как создатель дизайна Ultima Online и креативный директор проекта Star Wars Galaxies, после чего основал собственную студию.
        Читать дальше →
      • Удаленная работа на Бали (Индонезия)

          Привет всем!



          Данный пост посвящен длительной поездке для работы на Бали. Из него Вы узнаете о том, за сколько, как и когда можно и удобно находится с максимальным комфортом за человекоподобный прайс в месте, где работа через интернет никак не омрачается смогом от пожаров, аномальными перепадами температуры, звуками заведенного трактора и другими правовыми катаклизмами.
          Читать дальше →
        • Python под соусом Win64

            Что нужно сделать чтобы добавить модуль к питону на windows? Ну вариантов много, либо «easy_install», либо «setup.py install», либо из дистрибутива поставить, если таковой для тебя заботливо подготовили. Как правило, установка затруднений не вызывает.

            Однако бывают такие модули, которые требуется предварительно скампилить. И вот тут начинает рвать крышу. Вообще мне лениво что-то компилить, ибо это подразумевает установку студии, каких-то библиотек и прочая, но последний раз я так долго искал win64 дистриб для m2crypto, что решился на компиляцию.

            Нашел инструкцию, установил все требуемое добро и получил «Unable to find vcvarsall.bat». Честно говоря, очень хочется открутить руки школьнику, который написал код, ответственный за запуск этого батника. Я прописал путь к батнику в %path%, он запускается с консоли по имени, но сборка найти его не может — как так?

            Устав биться головой об клавиатуру, я погуглил еще немного, и чудо свершилось. Я не нашел как пофиксить баг с батником студии, но нашел нужный мне дистрибутив на этой страничке. Огромное спасибо Christoph Gohlke, который не поленился и скомпилил огромное количество модулей под x86 и x64.

            Мне тоже можете сказать спасибо, если кому пригодится данная ссылка.
            • –4
            • 629
            • 1
          • Спать мало, но правильно?

              Навеяно этим постом от юзера case. Пост не новый, и на главную он не попал.
              Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
              Читать дальше →
            • Получаем загранпаспорт через gosuslugi.ru (часть 2)

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

                Кроме сторонних файловых менеджеров в Mac OS X, которые довольно плохо интегрируются с системой и заменяют Finder (за исключением, пожалуй, Path Finder — он в этом плане довольно далеко продвинулся), можно прокачать обычный Finder :)

                Вот уже как пару месяцев существует TotalFinder — плагин для файндера, работающий через SIMBL, позволяющий немного расширить возможности файл-менеджера.

                К слову, автором этого плагина является человек, зарекомендовавший себя Visor'ом (Quake-like Terminal.app).

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

                Disclaimer


                Текст не претендует на истину в последней инстанции, описанное ниже основано на собственном опыте и рекомендациях людей с больше чем двадцати годами опыта в IT в США и Канаде.

                Анализ резюме рекрутером


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

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

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

                  Я достаточно часто сталкивался с подобным мнением и не придавал ему особого значения, но когда женский коллектив нашей организации поздравил программистов с 23-м февраля по доброму назвав их «космическими войсками», решил всё же расставить определенные акценты в данном вопросе, т.к. одна из моих профессий связана напрямую с психоанализом. Да и баш уже не молчит.

                  И что же них такого деформированного?
                • Что спросить работодателя на собеседовании, чтобы не попасть в болото

                    Большинство работодателей на собеседовании дадут вам возможность задать любые вопросы. Это отличный шанс определить, хорош ли работодатель и стоит ли на него работать. Одной из смертельных болезней для коллектива является имитация бурной деятельности (далее ИБД). Она возникает там, где руководство заключается не в координировании работ, а заменено формальным контролем, где коллектив топчется на месте, десятками лет не получая новых задач, где нет места вашему стремлению к новым технологиям, где вы не научитесь ничему новому. Интрига усиливается тем обстоятельством, что имитатор никогда не признается, что он лишь имитирует работу. Наоборот, он будет напускать на себя и свою деятельность важность. Лишь когда вы поваритесь в коллективе годик, вы поймёте, что не надо было сюда идти, что вы просто теряете время. Но есть несколько простых признаков, по которым можно легко вычислить болезнь. О них эта заметка.
                    Читать дальше →
                  • Теперь Google Analytics работает Асинхронно

                      Новый код выглядит вот так:
                      var _gaq = _gaq || [];
                      _gaq.push(['_setAccount', 'UA-XXXXX-X']);
                      _gaq.push(['_trackPageview']);

                      (function() {
                       var ga = document.createElement('script');
                       ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
                         'http://www') + '.google-analytics.com/ga.js';
                       ga.setAttribute('async', 'true');
                       document.documentElement.firstChild.appendChild(ga);
                      })();

                      Это значит, что гугл.аналитикс больше не замедлит загрузку вашего сайта :)
                      UPD: То есть, он скачивал свой 24кб ga.js во время загрузки страницы, теперь он это может делать после…
                      Но после первой загрузки, он обычно закэширован и на всех остальных сайтах используется один и тот же :)

                      Материалы по теме:
                      Под катом бонус, код для русских поисковиков
                    • Запасаемся на зиму

                        Книги — пища для мозгов программиста. А художественные — десерт. Хорошая книга — как вкусное блюдо, которое хочется дочитать растянув удовольствие, испробовать снова и снова. Но есть куча книг, которые мы еще не нюхали и, возможно, никогда не попробуем, потому что нам их не посоветовали несколько человек.

                        У каждого есть одна-две любимые книги, которые могут понравится другим, поделитесь пожалуйста, заразите. Думаю многим будет интересно поставить в очередь «к прочтению» несколько новых. Давайте устроим «дегустацию» книг в формате: одна книга — один комментарий. Чтобы другие могли добавить в избранное (и оценить, и обсудить) каждую книгу по отдельности.

                        Читать дальше →
                      • Активация Windows

                          Винда релизится только раз в году, а убунта два раза. 2:1 — пингвин выйграл.

                          image

                          Близится час Х, в связи с чем решил посмотреть, что предлагают нам пираты для решения проблем с операционной системой.
                          Читать дальше →