• Оптимизируем шаг за шагом с компилятором Intel C++



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

      Итак, весь тернистый путь компиляции и оптимизации нашего приложения можно разбить на 7 шагов. Пошагали!
      Читать дальше →
      • +21
      • 17,9k
      • 3
    • R в качестве инструмента мониторинга цен

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

      Те, кто как то связан с продажами на конкурентном рынке, наверняка знают, что мониторинг конкурентов является важной задачей. Результаты используются для совершенно различных целей — от изменения локальных политик ценообразования и ведения ассортимента до составления стратегических планов развития компании. Автор решил попрактиковаться в решении данной задачи и промониторить одного из крупных ритейлеров электроники в России, чьим регулярным клиентом автор является. Что из этого вышло —
      далее под катом
    • Lock-free структуры данных. Concurrent maps: rehash, no rebuild


        Пройдем по следам C++ 2015 Russia далее.
        В предыдущей статье мы рассмотрели алгоритм для lock-free ordered list и на его основе сделали простейший lock-free hash map. У этого hash map есть недостаток: размер хеш-таблицы постоянен и не может быть изменен в процессе роста числа элементов в контейнере. Это не представляет проблемы, если мы заранее примерно представляем требуемый объем контейнера. А если нет?
        Читать дальше →
        • +34
        • 14,5k
        • 8
      • Детекторы углов

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

          • Введение
          • Свойства особых точек
          • Детекторы углов
            • Moravec
            • Harris
            • Shi-Tomasi
            • Förstner
            • SUSAN
            • Trajkovic
            • FAST
            • CSS
            • Детектор, основанный на глобальных и локальных свойствах кривизны
            • CPDA
          • Выводы



          Читать дальше →
        • Eggs.Variant — Часть I

          • Перевод
          На публикацию этого перевода меня сподвиг комментарий пользователя @encyclopedist к недавней статье «Фабричный метод без размещения в динамической памяти». Статья меня заинтересовала, но беглое гугление не выявило перевода. «Непорядок.» — подумал я — «Такая интересная статья по С++ и не переведена на русский язык. Надо бы исправить.»

          Оглавление
          1. Введение
          2. Проектирование
          3. Реализация

          4. О чём ещё не сказано


          Размышления о разработке Eggs.Variant — обобщённом типобезопасном размеченном объединении на C++11/14.

          Введение


          Объединение — это специальный тип класса, который в один момент времени может хранить только один из своих нестатических членов. Он занимает столько места, сколько требуется для размещения наибольшего из его членов.
          9 [class]/5 Объединение — это класс, определяемый с ключевым словом union; одновременно он может хранить только один из своих членов (9.5). [...]
          9.5 [class.union]/1 В объединении активным может быть только один из нестатических членов, то есть, в данный момент времени в объединении может храниться значение только одного из его нестатических членов. [...] Размер объединения достаточен для вмещения самого большого из его нестатических членов. Каждый нестатический член размещается в памяти так, словно он является единственным членом структуры. Все нестатические члены объекта объединения имеют одинаковый адрес.

          Оригинал
          9 [class]/5 A union is a class defined with the class-key union; it holds at most one data member at a time (9.5). [...]
          9.5 [class.union]/1 In a union, at most one of the non-static data members can be active at any time, that is, the value of at most one of the non-static data members can be stored in a union at any time. [...] The size of a union is sufficient to contain the largest of its non-static data members. Each non-static data member is allocated as if it were the sole member of a struct. All non-static data members of a union object have the same address.



          Читать дальше →
        • Идеальная передача и универсальные ссылки в C++

          • Перевод
          Недавно на isocpp.org была опубликована ссылка на статью Eli Bendersky «Perfect forwarding and universal references in C++». В этой небольшой статье есть простой ответ на простой вопрос — для решения каких задач и как нужно использовать rvalue-ссылки.
          Узнать этот ответ
        • Как найти работу в Германии


            Для всех, кто просил описать как искать работу программистом в Германии, а так же для тех, кто в комментариях бездоказательно писал, что Германия далеко не лучшее место для работы, ну и для всех интересующихся написан этот пост.
            Читать дальше →
          • Мир лицензий: разбираемся с GNU GPL


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

              UPD: опубликован перевод небольшого куска официального GPL FAQ habrahabr.ru/blogs/Dura_Lex/45878
              UPD2: скорректирован и переформулирован список совместимых лицензий

              Читать дальше →
            • Каррируем на C++

                Привет, хабр.

                Сидел я как-то вечером, ждал, пока соберется свежая ревизия clang, и смотрел на код одного своего проекта, в котором встречались не очень красивые вещи вроде
                std::transform (someContainer.begin (), someContainer.end (), std::back_inserter (otherContainer),
                    [this] (const SomeUglyAndLongType& item) { return HandleItem (item); });
                

                Зачем создавать целую лямбду, чтобы у функции двух аргументов (если, как пишут классики, this считать неявным нулевым аргументом) зафиксировать один из них? На каком-нибудь псевдохаскеле можно было бы просто написать что-то вроде
                map (handleItem this) someContainer

                Мапы, функторы и прочие монады сделаем как-нибудь в следующий раз, а вот вещи, напоминающие (handleItem this) можно попробовать научиться писать.

                Читать дальше →
              • Fitbit One — трекер физической активности

                  image
                  На Хабре уже были опубликованы обзоры некоторых трекеров физической активности: Nike Fuelband SE и Shine. Пришел черед немного рассказать про Fitbit One.

                  Трекер Fitbit One фиксирует, собирает и передает в облачный сервис:
                  • количество сожженых калорий,
                  • сделанных шагов,
                  • пройденных этажей,
                  • пройденные расстояния,
                  • продолжительность и качество сна.
                  • Функция беззвучный будильник в заданное время.


                  Я пользуюсь Fitbit One с декабря 2013 года. За это время он:
                  • был около двух десятков раз уронен на пол с высоты в в полтора метра,
                  • трижды потерян и найдет в гостиницах и кафе,
                  • постиран в кармане брюк (в чехле-прищепке) один раз.
                  • Не менее трех раз я умудрился наступить на него ногой в ботинке.
                  • Один раз я уронил трекер в лифтовую шахту, и он пролетел 13 этажей в свободном падении.
                  • После этого он пролежал двое суток в луже машинной смазки.


                  Не смотря на то, что мой Fitbit One прошел огонь, воду и Олимпийские игры, все это, трекер продолжает работать как ни в чем не бывало, и на нем практически ни царапинки.

                  Интересно? Добро пожаловать под кат.


                  UPD Утерянные трекеры фирмы Fitbit заменяют бесплатно!
                  трафик 10 мб