• Как программисту заработать на фондовом рынке, думая только о коде: Конкурс StockSharp и ITinvest



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

      Сегодня мы подробнее расскажем о том, как можно заработать на фондовом рынке, занимаясь только программированием, и не вкладывая собственных средств. Сделать это можно участвуя в специальном конкурсе разработчиков от проекта StockSharp и ITinvest.
      Читать дальше →
    • Побег из темницы типов. Реализуем работу с данными, тип которых определяется динамически

      • Tutorial


      Когда результат SQL-запроса влечет бесконечные приведения типов ко всевозможным вариантам типов полей. Когда код заполнен малопонятной логикой с гигантским перебором перегрузок по типам boost::variant. Когда не знаешь, как принять аргумент произвольного типа по RPC-протоколу. Тогда требуется механизм эмуляции динамической типизации в C++. Расширяемый и удобный, создающий понятный API. Такой, что не требует предопределенного списка типов и не заставляет работать с указателями на базовый класс. Такой механизм есть — нам поможет двойная диспетчеризация!
      Читать дальше →
    • Введение в дискретно-ориентированные многогранники для задачи определения столкновений



        Обнаружение столкновений (collision detection) виртуальных объектов является довольно значимой частью для задач визуализации.
        Читать дальше →
        • +34
        • 27,4k
        • 8
      • Полноценный веб-сайт на C++ и немного диванной аналитики

          Но зачем?
          Тут должна быть картинка про троллейбус

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

          Думаю, многим знакома такая разновидность веб-форумов, как имиджборды. Да-да, вы правильно поняли — именно на примере имиджборды я расскажу об опыте создания сайта на C++. Что же сподвигло меня заняться столь сомнительной пользы проектом? Левая пятка. В этом случае действительно никаких особых причин не было. Просто проснулся однажды утром и понял — хочу. Но это все лирика.

          На Хабре хватает статей о веб-сайтах на C++: например, с использованием FastCGI или CppCMS. Но все это — HelloWorld'ы и туториалы. Я же вам расскажу о полноценном (пусть и не идеальном с точки зрения архитектуры и чистоты кода) проекте, постараюсь осветить различные тонкости.
          Перейдем же к делу
        • Model-View в QML. Часть нулевая, вводная

            Одним из наиболее распространенных и эффективных приемов проектирования программ является использование шаблона программирования MVC (Model-View-Controller) — Модель-Представление-Контроль. MVC позволяет разделить части программы, отвечающие за хранение и доступ к данным, отображение данных и за взаимодействие с пользователем на отдельные слабо связанные модули. Подобное разделение ответственности упрощает структуру программы и позволяет вносить изменения в одну из этих частей не затрагивая остальные.

            Такой подход активно применяется в Qt, а в QML вообще является краеугольным камнем. Так что тем, кто изучает QML понимание принципов MVC будет совсем не лишним.

            Model-View в QML:
            1. Model-View в QML. Часть нулевая, вводная
            2. Model-View в QML. Часть первая: Представления на основе готовых компонентов
            3. Model-View в QML. Часть вторая: Кастомные представления
            4. Model-View в QML. Часть третья: Модели в QML и JavaScript
            5. Model-View в QML. Часть четвертая: C++-модели

            Читать дальше →
            • +18
            • 57,3k
            • 3
          • (Перевод) Введение в разработку C++ в UE4

              Часть 1. Введение. Создание класса и добавление свойств. Расширение класса С++ с помощью Blueprint.
              Часть 2. Классы геймплея. Структуры. Отражение (reflection) в Unreal. Object/Actor итераторы. Менеджер памяти и сборщик мусора.
              Часть 3. Префиксы в именах классов. Целочисленные типы. Типы контейнеров. Итераторы контейнеров. Цикл For-each, хеш-функции.
              Часть 4. Бонусная. Unreal Engine 4 для Unity разработчиков.

              image

              Эта статья является переводом части документации по UE4. Оригинальную статью вы можете найти пройдя по это ссылке.
              Далее
              • +40
              • 132k
              • 8
            • Вы неправильно пишете животных

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


                Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

                Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
                Читать дальше →
              • 10 советов по прототипированию в Sketch

                • Перевод


                Так как Sketch был создан специально для работы над мобильными и веб-интерфейсами, неудивительно что он стал одним из самых быстрых и гибких инструментов для прототипирования. Эти 10 советов сделают его еще более мощным средством.
                Читать дальше →
              • Автоматизация торговли акциями на ММВБ на примере терминала от Альфа Банка

                В свободное от работы время занимаюсь созданием торговых роботов. Тема финансовых рынков и автоматизации торгов меня интересует давно, и сегодня я рад поделиться примером создания простого робота на примере известного биржевого терминала от Альфа Банка.

                Предыстория


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

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

                • Tutorial

                Official translation (with a bit of polishing) is available here.




                Очередная вводная статья для начинающих программировать графику реального времени


                У меня когда-то возникла задача (быстро) визуализировать молекулы. Например, молекула может быть представлена просто как набор сфер навроде вот этого:



                Конкретно этот вирус состоит из примерно трёх миллионов атомов. Вы можете скачать его модель на замечательном сайте rcsb.org.

                Это отличный топик для обучения шейдерам.
                Читать дальше →
              • Лекции Технопарка. Геймдизайн от идеи до релиза

                • Tutorial


                Этот пост, как нетрудно догадаться, посвящен геймдизайну и разработке игр. Раньше я делал клиентские и браузерные игры, в том числе экшн Panzar. В Mail.Ru Group занимаюсь разработкой мобильных игр. Эта публикация задумана мной как некий мастер-класс по мотивам выступления в Технопарке, на котором я поделился своим опытом организации процесса построения геймдизайна. Несмотря на то, что часть материала в этой статье более актуальна для крупных компаний, я постарался учесть особенности проработки игрового дизайна в небольших студиях и начинающих командах разработки.
                Читать дальше →
              • Построение диаграмм и графов в Doxygen



                  Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

                  1. Документируем код эффективно при помощи Doxygen
                  2. Оформление документации в Doxygen
                  3. Построение диаграмм и графов в Doxygen

                  Она завершает цикл статей о системе документации Doxygen. На этот раз статья посвящена построению различных диаграмм и графов в Doxygen. В ней мы рассмотрим основные их виды, различные способы их настройки и оформления, а также приведём ряд примеров и советов по их использованию.
                  Читать дальше →
                  • +23
                  • 37,8k
                  • 2
                • Документируем код эффективно при помощи Doxygen

                  • Tutorial


                  Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

                  1. Документируем код эффективно при помощи Doxygen
                  2. Оформление документации в Doxygen
                  3. Построение диаграмм и графов в Doxygen

                  Это первая и основная статья из упомянутого цикла и она представляет собой введение в систему документирования исходных текстов Doxygen, которая на сегодняшний день, по имеющему основания заявлению разработчиков, стала фактически стандартом для документирования программного обеспечения, написанного на языке C++, а также получила пусть и менее широкое распространение и среди ряда других языков.

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

                    Никогда не думали, а что если паттерны ООП спроецировать на работу программистов?

                    Singleton-разработчик
                    Разработчик с bus-factor=1. Как правило, один из «старожилов» проекта, который приложил руку ко многим компонентам и только он знает как эти части работают вместе. Практически «невыпиливаемый» из проекта, либо без него все начинает «работать как-то не так». По любому вопросу «как оно работает» всегда отвечает «да мне проще самому запилить» и запиливает.
                    И еще несколько паттернов...
                  • REST сервис на C++: POCO+Angular TODO

                      POCO — кроссплатформенная open-source библиотека на С++ под Boost Software License: ru.wikipedia.org/wiki/POCO.
                      POCO имеет в своем составе средства для создания веб-сервисов c RESTful API.
                      В данной статье рассмотрено создание такого сервиса на примере TODO.

                      Читать дальше →
                      • +9
                      • 18,7k
                      • 4
                    • Оформление документации в Doxygen



                        Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

                        1. Документируем код эффективно при помощи Doxygen
                        2. Оформление документации в Doxygen
                        3. Построение диаграмм и графов в Doxygen

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

                        В данной статье я отвечу на этот вопрос. Для этого мы рассмотрим общие принципы оформления документации Doxygen, познакомимся с ними, и посмотрим на примерах, чего можно добиться, основываясь на них.
                        Читать дальше →
                        • +28
                        • 37,1k
                        • 1
                      • Указатели, ссылки и массивы в C и C++: точки над i

                        • Tutorial
                        В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.

                        Обозначения и предположения


                        • Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
                        • Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
                        • Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как int TYPE[2];
                        • Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как int TYPE, int *TYPE и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи;
                        • «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
                        • Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.


                        Указатели и ссылки


                        Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):

                        int x;
                        int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
                        int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель
                        

                        Читать дальше →
                      • Оптимизация ASP.NET — практические советы по работе с IIS

                        В данной публикации речь пойдёт о настройке важных параметров пула ASP.NET-приложений при вызове удалённых веб-сервисов и активной работе с сетью на стороне сервера через стандартные классы .NET.



                        Введение


                        Приходилось ли вам когда-нибудь самим настраивать производственные веб-сервера (production servers) под управлением ОС Windows Server 2008 R2/IIS 7.5 и выше? Для системных администраторов, имеющих большой опыт работы с IIS, скорее всего, это тривиальная задача, но вот для веб-разработчиков, которым по различным причинам порой приходится самим участвовать в настройке «боевых» серверов, данная информация может оказаться весьма полезной.

                        Итак, приступаем. Ускоряем сайт на ASP.NET — экономим деньги предприятия и нервы администратора.
                        Читать дальше →
                        • +24
                        • 67k
                        • 6
                      • Введение в .NET Core

                        • Перевод


                        На конференции connect(), мы объявили, что .NET Core будет выпущен полностью как программное обеспечение с открытым исходным кодом. В этой статье мы сделаем обзор .NET Core, расскажем, как мы собираемся его выпускать, как он соотносится с .NET Framework и что это все означает для кросс-платформенной разработки и разработки с открытым кодом.
                        Читать дальше →
                      • Защита игр и мобильных приложений от взлома для чайников (Unity, C#, Mono)

                        • Tutorial
                        Всем снова здравствуйте! Дошли руки написать крутую статью на весьма важную тему для разработчиков игр. Итак, поговорим о защите ваших драгоценных игр и приложений, которые вы пилите на Unity в надежде заработать на буханку хлеба, от взлома злобными школьниками. Почему школьниками? Потому что надежной на 100% защиты априори быть не может. И кто захочет, все равно взломает. Вопрос лишь в том, сколько времени и сил он на это потратит. И как любят шутить безопасники — терморектальный криптоанализ никто не отменял.

                        Итак, в статье я постараюсь максимально доступно рассказать о 3 аспектах (и конечно, предложу реализацию):
                        • защита данных приложения (сейвов)
                        • защита памяти приложения
                        • защита внутриигровых покупок (Google Play)

                        image
                        Читать дальше →