В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.
Рубрика «templates»
Малоизвестные и интересные особенности C и C++
2024-01-12 в 16:40, admin, рубрики: C, C and C++, c++, c++11, C++14, c++17, exceptions, partial template specialization, templates, Virtual InheritanceПередача указателя на набор полей примитивных типов, расположенных в определённом порядке, - широко используемый паттерн. Так передаются указатели на структуры и объекты, массивы, файловые и сетевые буферы, данные в общей памяти и специальные типы (к примеру, массивы виртуальных функций), а отладчик, получив указатель на стек, может просматривать значения содержащихся в нём переменных.
Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortex M4
2019-12-24 в 15:00, admin, рубрики: c++, c++17, microcontroller, stm32, STM32F4, templates, микроконтроллер, Программирование, программирование микроконтроллеров, С++, шаблоны c++, шаблоны проектирования
Всем доброго здравия!
В преддверии Нового года хочу продолжить рассказывать про использование С++ на микроконтроллерах, на этот раз попытаюсь рассказать про использование шаблона Наблюдатель (но далее я буду называть его Издатель-Подписчик или просто Подписчик, такой вот каламбур), а также реализацию статической подписки на С++17 и преимущества этого подхода в некоторых приложениях.
10++ способов работать с аппаратными регистрами на С++ (на примере IAR и Cortex M)
2019-07-08 в 13:55, admin, рубрики: c++, cortex-m, cortex-m4, templates, микроконтроллеры, микроконтроллеры stm, Программирование, программирование микроконтроллеров, С++
Рис. И. Кийко
Всем доброго здравия!
Помните наверное бородатый анекдот, а может быть и правдивую историю про то, как студента спрашивали о способе измерить высоту здания с помощью барометра. Студент привел, по-моему около 20 или 30 способов, при этом не назвав прямого(через разницу давления), которого ожидал преподаватель.
Примерно в том же ключе я хочу продолжить обсуждение использования С++ для микроконтроллеров и рассмотреть способы как можно работать с регистрами используя С++. И хочу заметить, что для достижения безопасного обращения к регистрам простого пути не будет. Попытаюсь показать все плюсы и минусы способов. Если вы знаете еще способы, кидайте их в комментарии. Итак начнем:
Читать полностью »
Работа со строками на этапе компиляции в современном C++
2018-11-06 в 3:12, admin, рубрики: c++, compile-time, strings, templates, высокая производительность, ненормальное программирование, Программирование, С++, С++14
Если вы программируете на C++, то наверняка задавались вопросом почему нельзя сравнить два строковых литерала или выполнить их конкатенацию:
auto str = "hello" + "world"; // ошибка компиляции
if ("hello" < "world") { // компилируется, но работает не так, как ожидалось
// ...
}
Впрочем, как говорится, "нельзя, но если очень хочется, то можно". Ломать стереотипы будем под катом, причем прямо на этапе компиляции.
Как я создал «визард» для WordPress от своей глубокой лени
2018-11-02 в 7:42, admin, рубрики: css, handmade, html, javascript, php, templates, wizard, wordpress, информационные технологии, леньдвигательпрогрессаПривет всем. Все мы любим автоматизацию процессов в нашей жизни. Я также не стал исключением. Ведь лень двигатель прогресса, поэтому и пишу сей пост.
Начну сначала: На сегодняшний день я работаю QA (куа) тестером в компании TemplateMonster в отделе WordPress. Никогда не думал до этого, что от установок чистого WordPress движка (далее WP) для тестирования шаблонов, может начать тошнить. Особенно когда количество установок за день переваливает за 20. Вот однажды в один из таких дней и зародилась мысль сделать автоматизатор (Мастер, WIZARD) установки.
Многие кто работал c данным движком знают как осуществляется установка по умолчанию.
В данной статье будет рассмотрена установка на Локальный сервер — OpenServer.
- Для начала мы должны создать mysql базу данных с кодировкой — utf8_general_ci.
- Затем поместить содержимое архива, скачанного с официального сайта WP или репозитория на GitHub в папку на локальном сервере, где будет лежать Ваш сайт.
- Прописать в адресной строке локальный путь к данной папке где Вас встретит визард стандартной установки WP. На первом экране визарда необходимо выбрать язык установки. После чего ввести информацию для подключения к только что созданной базе данных. А именно:
- Имя базы данных mysql.
- Имя пользователя к базе.
- Пароль к ней.
- Сервер.
- Префикс, если это необходимо.
- Затем, если все прошло успешно в пункте выше, нас встретит второй экран визарда. Он попросит:
- Название будущего сайта.
- Имя пользователя.
- Пароль в панель администратора.
- А также email.
- После всех операций мы наконец-то попадаем на экран входа в админку.
Но я хотел отойти от этого всего и просто жмакнуть на кнопку — «сделать хорошо». На PHP до этого не кодил толком. Разве что в универе. И то, ради сдачи лабораторных работ оттачивал навыки копипаста.
Читать полностью »
Разработка под Android. Немного о быстрой работе со списками
2018-09-23 в 10:50, admin, рубрики: adapter, android, databinding, jetpack, jetpack sdk, kotlin, list, lists, recyclerview, template, templates, Проектирование и рефакторинг, разработка мобильных приложений, Разработка под androidВсем привет! Мои посты — желание помочь в работе с какими-то элементами Android. Если вы разработчик, который еще не сформировал для себя алгоритм для построения списков — вам может оказаться полезным почитать этот материал. В основном, я бы хотел предлагать готовые решения для разработки, раскрывая в ходе повествования какие-то мысли о том, как я до них докатился к этому пришел.
В этой статье:
- формируем несколько базовых классов и интерфейсов для работы с RecyclerView и RecyclerView.Adapter
- подключим одну библиотеку из Android Jetpack (по желанию, сначала без нее)
- для еще более быстрой разработки — вариант темплейта в конце статьи ;)
Создание шаблонов в IDE от Jetbrains
2018-06-21 в 13:50, admin, рубрики: css, golang, html, IDE, idea, intellij, intellij idea, java, javascript, live templates, python, template, templates, XML, ПрограммированиеВступление
Сегодня я хочу привести небольшой обзор-туториал темплейтов в ИСР от Jetbrains. Приведенные ниже примеры будут реализованы на Java в Intellij IDEA, но механизм создания одинаков и для других языков и продуктов компании. Думаю все программирующие в данной IDE пользовались встроенными шаблонами. Например когда вы пишете fori, нажимаете TAB или ENTER и у вас появляется цикл for в котором нужно указать имя переменной и условие, а остальной код генерируется за вас.
for (int i = 0; i < ; i++) {
}
Или же знакомый всем java-программистам sout -> System.out.println(). Так вот, в Intellij есть поддержка создания своих шаблонов кода. На удивление не нашёл практически никакой инфы на русском и довольно мало на английском(благо есть неплохая документация) когда наткнулся на эту фичу, хотя это сильно ускоряет и помогает в разработке. И сейчас когда дошли руки решил написать небольшую статью об этом. Возможно опытным программистам она мало чем поможет, они и сами смогут разобраться во всём или же уже давно это юзают, но для всех остальных считаю вполне подойдёт. Итак приступим.
Читать полностью »
MVP на стероидах: заставляем робота писать код за вас
2016-08-29 в 11:35, admin, рубрики: android, android development, moxy, mvp, templates, Блог компании REDMADROBOT, Проектирование и рефакторинг, разработка мобильных приложений, Разработка под androidВ статье «Moxy — реализация MVP под Android с щепоткой магии» мы рассказывали, как побороть проблему жизненного цикла и разделить код своего Android-проекта на слои. Однако MVP (даже при умной кодогенерации view state в Moxy) заставляет писать огромное количество лишнего кода (создавать связанные друг с другом классы и интерфейсы presenter и view). На самом деле эту работу за вас должен делать робот! :) Настало время еще сильнее уменьшить boilerplate при помощи кастомизации шаблонов Android Studio под Moxy.