• UNIGINE С++ School: бесплатный онлайн-курс для продвинутых

      В феврале мы запустили бесплатный онлайн-курс программирования на С++, рассчитанный на продвинутых разработчиков. Цели было в основном две — сделать так, чтобы в мире было больше хороших программистов, а заодно набрать себе пополнение в команду. Идея взлетела: участвовать в первом наборе захотело 185 человек из 57 городов и 8 стран. В курсанты попало 30 из них, но со словами «неинтересно» ушёл только 1. Остальные по итогам курса сообщили, что было в целом круто и они с пользой провели время.



      Обкатав всю затею и учебный процесс на начальном бета-наборе, мы решили повторить курс ещё раз. Набор уже во всю идёт, подать заявку можно до понедельника, 26 июня. Чему, как и кто учит — рассказываем внутри.
      Читать дальше →
    • Руководство по работе с Redux

      • Перевод
      • Tutorial
      Сегодня Redux — это одно из наиболее интересных явлений мира JavaScript. Он выделяется из сотни библиотек и фреймворков тем, что грамотно решает множество разных вопросов путем введения простой и предсказуемой модели состояний, уклоне на функциональное программирование и неизменяемые данные, предоставления компактного API. Что ещё нужно для счастья? Redux — библиотека очень маленькая, и выучить её API не сложно. Но у многих людей происходит своеобразный разрыв шаблона — небольшое количество компонентов и добровольные ограничения чистых функций и неизменяемых данных могут показаться неоправданным принуждением. Каким именно образом работать в таких условиях?

      В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
      Читать дальше →
    • 20 бесплатных утилит и 89 скриптов для мониторинга и управления базами данных

      Ты сидишь — база растёт, идёшь — база растёт, спишь, ешь или делаешь ещё много всего, а база всё растёт и растёт. Кто-то очень умный сказал, что единственное, что в нашей жизни постоянно — это изменения. Главное — правильно на них реагировать. Любая нештатная ситуация с базой данных происходит именно из-за таких изменений. К сожалению, не всегда есть возможность вложиться в расшитую золотом и усыпанную драгоценными камнями в 60 карат промышленную систему мониторинга. И это заставляет прибегнуть к бесплатным или условно-бесплатным решениям. В статье я собрал 20 бесплатных утилит от компании IDERA (и не только), которые могут некисло помочь закрыть некоторые вопросы с мониторингом и управлением MS SQL, MySQL и Oracle. Поехали!

      halyava_sir.jpg
      Впитать знания
    • Библиотека глубокого обучения Tensorflow

        Здравствуй, Хабр! Цикл статей по инструментам для обучения нейронных сетей продолжается обзором популярного фреймворка Tensorflow.


        Tensorflow (далее — TF) — довольно молодой фреймворк для глубокого машинного обучения, разрабатываемый в Google Brain. Долгое время фреймворк разрабатывался в закрытом режиме под названием DistBelief, но после глобального рефакторинга 9 ноября 2015 года был выпущен в open source. За год с небольшим TF дорос до версии 1.0, обрел интеграцию с keras, стал значительно быстрее и получил поддержку мобильных платформ. В последнее время фреймворк развивается еще и в сторону классических методов, и в некоторых частях интерфейса уже чем-то напоминает scikit-learn. До текущей версии интерфейс менялся активно и часто, но разработчики пообещали заморозить изменения в API. Мы будем рассматривать только Python API, хотя это не единственный вариант — также существуют интерфейсы для C++ и мобильных платформ.


        Читать дальше →
      • Как работает Passport.js

        • Tutorial

        PassportJS — это middleware для авторизации под node.js. Passport поддерживает авторизацию с помощью огромного количества сервисов, включая «ВКонтакте» и прочие твиттеры. Список сервисов можно просмотреть здесь. Я хочу немного рассказать о том, как работает этот middleware на примере самой обычной авторизации с помощью логина и пароля.

        Для самых нетерпеливых — готовый проект можно посмотреть здесь.
        Читать дальше →
      • Красивые формы для приёма банковских карт с CardInfo.js

          Всем кто верстал, верстает или будет верстать форму для приёма банковских карт дарю плагин CardInfo.js, с помощью которого можно сверстать вот такую форму:



          Плагин по номеру карты определяет один из 49 российских банков (потом и прочие страны добавлю), выдаёт вам логотип банка, цвета для фона, ссылку на сайт банка, определяет тип карты, его логотип и прочее. С этими данными делаете что хотите, верстаете любую форму.


          Поиграться с формой можно на демо странице. Код плагина и инструкции по установке на гитхабе.


          Под катом:


          • Пара слов о плагине;
          • Про базу банков, и почему их 49, а не 50;
          • Про логотипы банков;
          • Про логотипы типов;
          • Несколько моих вопросов к читателям;
          Читать дальше →
        • Как в «Додо Пицца» потеряли 8 миллионов за один час из-за технической ошибки, а потом вернули


            Историю нашумевшей технической ошибки «Додо Пиццы», партнера Яндекс.Кассы, нам рассказал системный архитектор компании Андрей Моревский — сразу передаю микрофон автору.


            Еду я в «Сапсане» на открытие первой в Санкт-Петербурге пиццерии «Додо», как вдруг получаю оповещение о множественных отменах оплаченных заказов. И не просто множественных — наша система за час умудрилась откатить якобы оплаченные заказы на 8 миллионов рублей!


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

            Улыбнемся вместе
          • OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

            • Tutorial


            Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья.


            Читать дальше →
          • Position-independent code (PIC) в разделяемых библиотеках

            • Перевод

            enter image description here


            Привет. Меня зовут Марко, и я системный программист в Badoo. Я очень люблю досконально разбираться в том, как работают те или иные вещи, и тонкости работы разделяемых библиотек в Linux не исключение. Я представляю вам перевод именно такого разбора. Приятного чтения.

            Читать дальше →
            • +65
            • 11,5k
            • 9
          • Как я сделал тестер-оптимизатор для нахождения прибыльных стратегий на Бирже — 2

            Multidimensional Space Trading Strategies
            Рис. 1. Оптимизация многомерного пространства алгоритмов торговых стратегий.

            Оптимизация торговых стратегий

            В процессе алгоритмической торговли постоянно возникает необходимость настройки параметров алгоритмов торговых стратегий. Сочетания всех возможных параметров превращается в большое многомерное пространство вариантов стратегий. Чтобы получить самые прибыльные и стабильные стратегии нужно исследовать это пространство и подобрать оптимальные параметры для торговли.
            Читать дальше →
          • Бесплатные геоинформационные решения QGIS и NextGIS

            image

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

            Год назад передо мною возникла задача нанести на карту для совместной работы несколько сот объектов, раскиданных по муниципальному району. Поэтому изначально искал веб-сервис, позволяющий отобразить мои данные на карте в Интернет, но позже изменил подход – оказалось, что полезные возможности от визуализации данных на карте возрастают на порядок, если использовать веб-сервисы совместно с десктопными решениями.
            Читать дальше →
          • Микросервисы (Microservices)

            От переводчика: некоторые скорее всего уже читали этот титанический труд от Мартина Фаулера и его коллеги Джеймса Льюиса, но я все же решил сделать перевод этой статьи. Тренд микросервисов набирает обороты в мире enterprise разработки, и эта статья является ценнейшим источником знаний, по сути выжимкой существующего опыта работы с ними.

            Термин «Microservice Architecture» получил распространение в последние несколько лет как описание способа дизайна приложений в виде набора независимо развертываемых сервисов. В то время как нет точного описания этого архитектурного стиля, существует некий общий набор характеристик: организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными.
            Читать дальше →
          • Каково это — быть разработчиком в России, когда тебе сорок

              Привет всем, я — сорокалетний программист-самоучка, а это моя история.

              Пару недель назад я наткнулся на график распределения людей, интересующихся технологиями, ИТ и программированием. И он заставил меня задуматься о моей карьере.



              Через каких-то 20 лет мне стукнет 60. И вероятность того, что я еще смогу заниматься тем, для чего был создан, составляет очень крошечную величину. Эти размышления привели меня туда, откуда все начиналось.

              Я дебютировал в роли разработчика программного обеспечения в 1990 году, через год после того, как мне на 14-тилетие родители подарили ПЭВМ «Микроша».
              Читать дальше →
            • Кэширование данных в web приложениях. Использование memcached

              • Tutorial


              Юрий Краснощек (Delphi LLC, Dell)


              Я немного расскажу вам про кэширование. Кэширование, в общем-то, не сильно интересно, берешь и кэшируешь, поэтому я еще расскажу про memcached, довольно интимные подробности.



              Про кэширование начнем с того, что просят вас разработать фабрику по производству омнониевых торсиометров. Это стандартная задача, главное делать скучное лицо и говорить: «Ну, мы применим типовую схему для разработки фабрики».
              Читать дальше →
              • +15
              • 19,2k
              • 6
            • Эффективный расчёт области видимости и линии взгляда в играх

              • Перевод
              image

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

              image

              Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
              Читать дальше →
            • Идиома Ranges

                image
                Идиома ranges — крайне удачное развитие итераторов. Она позволяет писать высокопроизводительный код, не выделяющий память, где это не надо, находясь на предельно высоком уровне абстракции. Кроме того делает библиотеки гораздо более универсальными, а их интерфейсы гибкими. Под катом краткое описание и практические примеры использования идиомы, тесты производительности, а так же сравнение с популярными реализациями итераторов в C++ и C#.
                Читать дальше →
              • «Во все тяжкие» или суровые реальности инди разработки Dark Forester

                image

                Я хочу сразу сказать, что в первой части будет мало о самой разработке, а больше именно истории, трудности, социальные аспекты, проблемы с которыми может столкнутся инди разработчик, а также я не могу не упомянуть Москву, покер и спорт — без которых эта история не была бы полной. Итак, прежде, чем я начну с легенды, для того чтобы немного заинтересовать читателя, за время разработки с 2013 года по 2015 год я потолстел на 22кг и превратился из спортивного парня в человека, который с трудом узнавал себя в зеркале, я выпивал в год около тысячи банок ред булла, все началось с одной-двух, сейчас уже бывает редко, чтобы я пил меньше трех. Я спал по пять, а то и четыре часа. В течении двух лет я вставал в будние дни в пять утра и ехал на работу в другой город на электричке, чтобы вечером оставалось время поработать над игрой. Я по глупости отказался от предложения в 250.000 евро на разработку игры. Вероятно итогом такой жизни стало тяжелое воспаление легких, суд с бывшим работодателем, а также серьезные проблемы со спиной из-за постоянно сидячего образа жизни. Ах ну и если этого мало, то я бросил университет и сам уволился с работы!

                Что ж поехали…
                Читать дальше →
              • Настройка сервера Quake Live — пошаговое руководство

                Quake 3, как много в этом звуке…


                За последние 16 лет, с момента выхода первой версии, q3 изменился не сильно. Не поймите неправильно — игра менялась. Развились и канули в лету турнирные моды (Привет, osp, cmpa — мы вас помним!), родился quake live в браузере, перебрался в steam. Чемпионатов стало меньше, игроков на серверах — тоже.

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

                Чего стоит только сервер minqlx, написанный на python, с поддержкой плагинов и кросс-серверной статистикой на qlstats.net, и огромный marketplace в стиме с дополнительными режимами игры, картами, звуками.

                И хоть серверов сейчас намного больше, чем игроков — данный очерк скорее претендует на демонстрацию возможностей, и не призывает их бездумно плодить. Но, если вы просто хотите свой небольшой сервер для игры с друзьями долгими зимними вечерами, и не знали с чего начать, или Вам просто интересно, как сейчас происходит процесс установки — добро пожаловать под кат!
                Читать дальше →
              • Вышел Riot.js 3.0

                  image22 ноября года сиего вышло обновление Riot.js — минималистичной библиотеки для создания веб-интерфейсов. Как пишут её авторы на главной странице своего сайта, Riot.js — это «Simple and elegant component-based UI library». И она действительно очень простая и элегантная.

                  Я большой поклонник данного изобретения. Оно не забивает мой мозг лишней логикой, правилами и принципами. Оно даёт мне очень простое API для создания вложенных друг в друга компонентов и даёт возможность в действительно короткие сроки реализовать то, что мне требуется.

                  Для меня программирование и API различных популярных библиотек всегда было чем-то похожим на математику. На основе чего работает вся математика? На основе чистых и минималистичных формул, доведённых до совершенства. За время существования этой науки человечество смогло довести различные сложнейшие идеи до коротких и чистых выражений. И примерно тем же самым занимаются и хорошие библиотеки и фреймворки в мире программирования. Они предоставляют инженерам ПО простой и понятный API для решения проблем. Все мы знаем jQuery с его короткими и лаконичными методами для работы в браузере и её девиз "write less, do more". Или, скажем, многие знают о такой замечательной библиотеке, как Sugar.js для добавления разумной порции сахарка вашим глобальным объектам JavaScript. И Riot.js — в точности об этом же, только на тему веб-компонентов с учётом всех последних тенденций в эволюции веб-технологий.
                  Читать дальше →