• Chain of Responsibility на C++ variadic templates

    • Tutorial
    Речь пойдёт о таком простом, но часто используемом паттерне как chain of responsibility(цепочка ответственности). Суть паттерна в том, что для обработки какого либо события мы используем несколько обработчиков, каждый из которых принимает решение о том, что и когда передавать следующему. В сети есть масса примеров реализации на C++, но я хочу показать реализацию только на лямдба-выражениях. В этой реализации можно будет посмотреть немного уличной template-magic.
    Читать дальше →
  • Как не надо писать код

    image


    Готовы погрузиться с головой в дивный мир программирования? Хотите узнать как непредсказуемо могут повести себя несколько простых строк кода?


    Если ваш ответ "Да!" — добро пожаловать под кат.


    Вас будут ждать несколько занимательных задачек на С или С++.


    Правильный ответ с объяснением всегда будет спрятан под спойлером.


    Удачи!

    Читать дальше →
  • Использование платы Firefly-RK3288 Reload с SoC RockChip RK3288. Цифровой I2C термодатчик Microchip — MCP9808

      Firefly-RK3288 Reload


      Подбирая девелоперскую плату для опытов, выбор пал на достаточно навороченную модель от китайского производителя T-Chip. Реализуют продукцию они под маркой Firefly. Специализируются на платах с системами на чипе от RockChip. RK3288 — самое производительное 32-битное решение от этой китайской компании. SoC от RockChip и Allwinner выгодно отличаются от чипов Broadcom в RaspberryPi не только лучшими характеристиками, но и технологией производства — 28nm против 40nm. Но конечно и стоят в данном случае китайцы дороже. Ещё более крутую 64-битную систему RK3399 не выбрал, в том числе потому, что есть основания полагать, что она уже существенно горячее. В то время как RK3288 под нагрузкой не сильно греется, даже без использования каких-либо радиаторов.

      Страница продукта. Основные аппаратные параметры девайса: 4 ядра ARM Cortex-A17 1,8 ГГц (некоторые источники настаивают, что тут Cortex-A12 или A15, но это не особо важно), 2 ГБ DDR3 dual-channel, накопитель 16 ГБ eMMC, гигабитный Ethernet.

      Общий вид

      Покупал на Ebay, это оказалось чуть ли не единственным местом, где эти платы можно заказать в Россию. Интернет магазин самого китайского Firefly в Россию не высылает. Не высылает в Россию и Indiegogo. Что забавно, в списке стран для отправки, у этих странных людей якобы есть даже ныне не существующие государства :). Продавец с Ebay прислал плату в хорошей комплектации — плата, блок питания (нужен 12V 1,5A, прислали как и положено с запасом — 2A), платка с антенной, акриловые панели корпуса с крепежом. Адаптер правда под американскую розетку, но ведь все должны иметь походный переходник :).
      Читать дальше →
      • +12
      • 3,3k
      • 8
    • Колоночные СУБД против строчных, как насчет компромисса?


        Колоночные СУБД активно развивались в нулевых годах, на данный момент они нашли свою нишу и практически не конкурируют с традиционными, строчными системами. Под катом автор разбирается, возможно ли универсальное решение и насколько оно целесообразно.
        Читать дальше →
      • Отладочная плата STM32F4 в форм-факторе Raspberry Pi

          image Добрый день, уважаемые хабровчане! Хочу представить общественности мой проект — небольшая отладочная плата на базе STM32, но в форм-факторе Raspberry Pi. От других отладочных плат она отличается тем, что имеет совместимую с корпусами от Raspberry Pi геометрию и наличие ESP8266-модуля в качестве беспроводного модема. А также приятные дополнения в виде разъёма для micro-SD карты и стерео-усилителя. Для использования всего этого богатства я разработал высокоуровневую библиотеку и демонстрационную программу (на C++11). В статье я хочу подробно описать как аппаратную, так и программную части этого проекта.

          Читать дальше →
        • Бьёрн Страуструп: Проблема с программированием

          • Перевод
          image

          Статья 2006 года.

          Бьёрн Страуструп, изобретатель языка программирования C++, защищает свое наследие и рассказывает, что не так с большей частью программного кода.

          В 1980-х и 90-х годах Бьёрн Страуструп разработал и внедрил язык программирования C++, который популяризировал объектно-ориентированное программирование и повлиял на многие другие языки программирования, включая Java.

          C++ остается архетипическим «высокоуровневым» компьютерным языком (то есть языком, который сохраняет особенности естественного, человеческого языка), и он по-прежнему используется миллионами программистов. Многие из систем и приложений эры ПК и интернета были написаны на C++. Несмотря на это, язык остается спорным, во многом потому что его, как известно, трудно изучать и использовать, а также потому, что дизайн Страуструпа позволяет разработчикам допускать серьезные ошибки программирования в интересах сохранения их свободы.

          Страуструп, на протяжении многих лет работающий в AT&T Bell Labs, теперь является профессором компьютерных наук на факультете инженерии в Техасском университете A&M, недалеко от Хьюстона.

          Технологический обзор: почему большая часть программного обеспечения настолько плоха?

          Бьёрн Страуструп: Некоторые программы на самом деле довольно хороши по любым стандартам. Подумайте о Mars Rovers, Google и проекте “Геном человека”. Это качественное программное обеспечение! Пятнадцать лет назад большинство людей, и в частности большинство экспертов, сказали бы, что каждый из этих примеров невозможен. Наша технологическая цивилизация зависит от программного обеспечения, поэтому, если бы программное обеспечение было бы в действительности таким же плохим, как и его наихудшая репутация, большинство из нас уже были бы мертвы.
          Читать дальше →
        • Ой, у вас баннер убежал!

          Ну. И что?
          Реклама
        • Личный опыт: переход с низкоуровневой разработки на C к программированию на Java



            Статья отражает личный опыт автора – заядлого программиста микроконтроллеров, которому после многолетнего опыта микроконтроллерной разработки на языке С (и немного на С++) довелось участвовать в крупном Java-проекте по разработке ПО для ТВ-приставок под управлением Android. В ходе этого проекта удалось собрать заметки об интересных различиях языков Java и C/C++, оценить разные подходы к написанию программ. Статья не претендует на роль справочника, в ней не рассматривается эффективность и производительность Java-программ. Это скорее сборник личных наблюдений. Если не указано иное, то речь идет о версии Java SE 7.
            Читать дальше →
          • Двоичные вычисления для десятичной арифметики

              Продолжая исследовать проблему точности десятичных вычислений средствами двоичной арифметики, начатую в предыдущих постах [1,2,3,4], мне удалось разработать алгоритмы вычисления вещественных чисел, представленных в формате десятичных чисел с плавающей точкой, которые дают такой же точный результат, как если бы вычисления велись вручную.
              Читать дальше →
            • 10 советов для продуктивности в CLion, кроссплатформенной С/С++ IDE

              • Перевод
              Всем привет!

              До выпуска нашей первой группы курса «Разработчик C++» остались считанные дни. По итогам неплохо поработали напильником и надфилем над курсом: перекомпоновали домашние задания, обновили версию язык и ещё разное по мелочи. Ну, а пока продолжаем нашу традицию по интересным и полезным материалам.

              Поехали.

              Судя по собственному опыту разработки, многие разработчики C/C++ пренебрегают идеей, что IDE может сделать их работу продуктивней. Ведь что может быть лучше, чем простые и быстрые Vim или Emac. Что ж, позвольте продемонстрировать. Эти 10 советов CLion поднимут вас на новый уровень продуктивности, помогут сфокусироваться на важных и сложных задачах, в то время как IDE решит за вас рутинные задачи.

              Прежде чем начать, познакомимся с CLion, новой кроссплатформенной IDE для разработки на C и C++, созданной JetBrains. Она изначально поддерживает C и C++, включая стандарт C++11 (с некоторыми небольшими ограничениями), libc++ и Boost. Она корректно обрабатывает макросы и шаблоны, а также работает с GCC или Clang (при работе с Windows понадобится или MinGW/MinGW-w64, или Cygwin), GDB, как встроенный дебаггер, и CMake, как система сборки и проектная модель. В дополнении к C/C++ также можно пользоваться JavaScript, XML, HTML и CSS на том же уровне редактирования кода, используя, например, подсветку синтаксиса, анализ, автодополнение, навигацию и рефакторинг.

              Читать дальше →
            • Портируем код с Qt 1.0 на Qt 5.11

              • Перевод
              Недавно вышел Qt 5.11 и мне подумалось, что сейчас самое время обновить до него кое-какие мои проектики на Qt 1.0… Ладно, шучу :) На самом деле мне стало интересно, насколько хорошо за все эти годы развития фреймворка Qt нам удавалось сохранять обратную совместимость кода.

              Qt гарантирует совместимость на уровне кода и бинарников при обновлении между минорными версиями фреймворка (и мы серьёзно относимся к этому обещанию). Вы не должны переписывать (или даже перекомпилировать) свой код при переходе на другую минорную версию Qt. Однако переходы между мажорными версиями требовали от нас идти на некоторые жертвы ради прогресса. С релиза Qt 1.0 в 1996 году мы ломали совместимость кода четыре раза: в версиях 2.0, 3.0, 4.0 (ох, это было болезненно!) и 5.0.

              Мы старались даже в мажорных версиях сломать как можно меньше всего, но всё же это приходилось делать. Отсюда возникает вопрос: насколько сложно портировать приложение, написанное во времена Qt 1.0 до современного Qt 5.11?

              Для ответа на этот вопрос я взял пример кода, который поставлялся с документацией на Qt 1.0 и постарался собрать его с помощью Qt 5. Наши публичные архивы содержат изменения начиная с версии 1.41, так что мне пришлось изрядно покопаться в дрейнейшей истории, пройти через логи четырёх разных систем контроля версий… но это я уже отвлекаюсь. Проект, который я планирую собрать, называется «t14» — поскольку это иллюстрация к 14-ой (и последней) главе оригинального руководства.

              И вот, что мне пришлось проделать для его сборки.
              Читать дальше →
            Самое читаемое