Как стать автором
Обновить
13
0
Владимир @cmex

Пользователь

Отправить сообщение

Аналог std::vector из C++11 на чистом C89 и как я его писал

Время на прочтение8 мин
Количество просмотров30K

image
Жилой массив людей. Нет, серьёзно.


Холивары между ценителями Си и приверженцами его ублюдка сына в лице C++ начались ещё до моего рождения и прекратятся разве что после смерти обоих этих языков и меня заодно.


Адепты великого творения Кернигана-Ритчи до последней секунды рабочего дня готовы доказывать приспешникам Страуструпа аксиомы про вечность Си и его невероятную гибкость.
Те в ответ по-свойски советуют им лучше порадоваться рабочему дню, ведь он вот-вот окажется последним – двадцать первому веку кроссплатформенный ассемблер не нужен.
Распаляясь, сторонники Си приводят миллионы давно прошедших через голову навылет тезисов "почему Си лучше C++", при этом каждый раз подчёркивая, что второй все достоинства первого растерял ещё будучи в отцовской утробе, попутно утратив лик человеческий.
Обвиняемая сторона в обиде не остаётся и...


а хотя постойте, о чём это я.


Я люблю Си, уважаю C++ и не переношу холивары (честно). При этом я осознаю, что в Си действительно не хватает многого, и яркий тому пример – отсутствие удобной работы с данными. В C++ эту проблему во многом решает STL и свойства самого языка. На мой студенческий взгляд, здесь особо отличается всем знакомый std::vector. Если стало интересно, как я реализовал его аналог средствами C89 – прошу под кат.

Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии67

Управление светильниками по протоколу DALI с помощью Arduino

Время на прочтение4 мин
Количество просмотров64K

О протоколе DALI


DALI (Digital Addressable Lighting Interface) – протокол, предназначенный для управления осветительными приборами. Протокол был разработан австрийской компанией Tridonic и основан на манчестерском кодировании: каждый бит данных кодируется перепадом от низкого сигнала к высокому или наоборот.


Всего голосов 21: ↑20 и ↓1+19
Комментарии25

Visual C++ for Linux Development: Практика использования для Windows разработчиков

Время на прочтение5 мин
Количество просмотров28K

enter image description here


Так получилось, что за достаточно долгую карьеру Windows и Embedded разработчика судьба свела меня по серьезному с Linux всего лишь несколько месяцев назад. Нужно было написать не очень сложную консольную программу. На тот момент все мои знания о Linux были взяты из курса по операционным системам в вузе (10 лет назад). Но Stackoverflow, google и опыт позволили достаточно быстро справиться с задачей. В итоге все было написано в Visual Studio Code под Ubuntu 14.04. Правда, приложение под Linux являлось только лишь небольшим клиентом для Windows сервера. Поэтому результат не очень удовлетворял меня, так как был оторван от основного проекта в Visual Studio. И только сейчас я смог перенести код в основной проект с помощью Visual C++ for Linux Development. В процессе мне пришлось решить несколько сопутствующих проблем. Об этом я рассажу под катом.

Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии33

Шустрый, удобный и кроссплатформенный профилировщик C++ кода

Время на прочтение6 мин
Количество просмотров31K
Всем привет. Несколько месяцев назад мы вместе с victorzs решили сделать простой и удобный профилировщик c++ кода (подразумевается профилирование времени исполнения участков кода, функций).


Скриншот профилирования примера из SDK CryEngine

Существующие решения нам не подходили по ряду причин. Нам нужен был качественный профайлер, умеющий делать следующее:

  • Профилировать выбранные участки кода
  • Работать на нескольких платформах
  • Учитывать переключение контекста
  • Требовать минимальных дополнительных затрат памяти во время профилирования
  • Не накладывать дополнительных временных ограничений во время выполнения приложения. Согласитесь, если профилировщик будет работать дольше, чем профилиуремый кусочек кода, то можно сделать некорректные выводы.

В результате тщательной проработки появился на свет профайлер, умеющий делать всё вышеперечисленное, и даже больше!

Если вы хотите знать, сколько времени работает ваш код, и иметь при этом объективные доказательства — прошу под кат, где я покажу, как использовать профилировщик.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии42

Полезные устройства для дома: WiFi-розетка своими руками

Время на прочтение3 мин
Количество просмотров36K

Привет Geektimes! В статье хочу представить инструкцию по созданию WiFi-розетки.


Началось всё с того, что осенью наткнулся на WiFi-розетки в магазинах, подумал, что вроде ничего сложного, потом ознакомился с ESP8266 и понял, что готов сделать розетку сам.


Розетка будет состоять из:


  • Корпус;
  • ESP8266 12E с платой развязки питания;
  • Питание для ESP8266 от 220 Вольт;
  • Плата контроля 220 Вольт;
  • Контрольная панель (кнопка, led, порт RJ45 для прошивки).

Прототип:


Читать дальше →
Всего голосов 32: ↑22 и ↓10+12
Комментарии86

Обзор: карманный дозиметр нового поколения Atom Fast

Время на прочтение4 мин
Количество просмотров50K
Привет geektimes. Как человек, увлекающийся всякими гаджетами, я разумеется, имею дома дозиметр. Не из соображений радиофобии, а исключительно как интересный физический прибор, которым можно что-нибудь измерить. Давно была мысль попробовать новые дозиметры — сцинтиляционные, однако главное что останавливало, это цена. Наконец, под Новый год удачно совпали время, наличие денег и свободного времени, и в итоге Санта Клаус в лице сотрудника почты, принес мне небольшой сувенир и дозиметр Atom Fast.



Как это работает, подробности под катом.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии226

Сборка схем из биологических переключателей

Время на прочтение5 мин
Количество просмотров8.5K
Предыдущая статья цикла

Логика включения оперонов разных путей обмена веществ у кишечной палочки близка к элементам AND и OR. Поэтому на их основе можно сделать генную конструкцию, реализующую произвольную логическую схему (не слишком сложную). Существуют программы, например Cello, которые из описания логики на языке Verilog делают последовательность генной конструкции, реализующей эту логику.
image

Cложнее оказывается обратная задача: из последовательности природной ДНК получить описание логики ее регуляции. Начнем с простых случаев, где нет сложных петель обратных связей и интеграции множества сигналов на одном опероне. Почти вся регуляция генов кишечной палочки удовлетворяет этим условиям. Если взять все известные регуляторные связи между генами кишечной палочки и построить сеть из них, то можно подсчитать статистику «мотивов» этой сети (способов соединения элементов) и выделить самые часто используемые.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии18

Как ООО заплатить в 133 раза меньше налогов

Время на прочтение9 мин
Количество просмотров81K

Тема, которую сегодня хотелось бы осветить, довольно сложная и объёмная, поэтому пришлось потрудиться, чтобы представить её в более-менее наглядном и понятном виде. Те, кто доберётся до конца статьи, узнают ответ на вопрос в заголовке. Поверьте, там так оно и есть.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии12

О подключении и работе с текстовыми OLED-дисплеями Winstar

Время на прочтение9 мин
Количество просмотров43K
Строчные (или текстовые) дисплеи предназначены для выдачи текстовой информации в виде строк. Они бывают нескольких типов (прежде всего, ЖК или самосветящиеся OLED), и обычно в их маркировке присутствуют цифры 1202, 1602, 1204 или похожие, указывающие на количество строк (в примерах 2 или 4) и знаков в каждой строке (12 и 16). Есть и однострочные дисплеи такого типа, но мы в дальнейшем изложении ориентируемся на более употребляемые двухстрочные.

Определяющая часть таких дисплеев совместима по управлению с контроллером HD44780 (фирма Hitachi). Самые популярные (по крайней мере, в нашей стране) дисплеи этой разновидности выпускает фирма Winstar. Причем ЖК-разновидности (название начинается с букв WH, например, WH1602) один в один совместимы с системой команд HD44780, а OLED-типы (название начинается с WEH, например, WEH001602) имеют усовершенствованный контроллер WS0010. К сожалению, или к счастью — сейчас будем разбираться.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии36

HDMI-LVDS. От макета к релизу

Время на прочтение4 мин
Количество просмотров44K


Доброго времени суток! Вашему вниманию хочу предложить проект аппаратного конвертера HDMI‑LVDS построенный на микросхемах Texas Instruments. Статья была модифицирована и дополнена.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+52
Комментарии64

Поднимаем собственный репозиторий пакетов для Ubuntu (Debian)

Время на прочтение4 мин
Количество просмотров45K

В жизни любого развивающегося проекта рано или поздно (и лучше рано) наступает момент, когда эксплуатация многозначительно смотрит на разработку и предлагает оформить отношения. Дальнейшее развитие событий, как водится, зависит от обеих сторон. О плохом сегодня не будем, рассмотрим сразу случай, когда разработка готова использовать нехитрый инструментарий сборки пакетов, подготовленный для нее эксплуатацией (шаблоны debian/rules и debian/control, команды fakeroot, debuild, и так далее). Осталась самая малость: поднять для собранных пакетов собственный репозиторий.


Поскольку изучения интернетов внезапно показали, что тема, хоть и освещалась, и даже на Хабре, вряд ли может считаться внятно раскрытой, попробуем восполнить этот пробел.

Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии36

Как я написал систему визуализации для стенда

Время на прочтение9 мин
Количество просмотров10K
Во-первых, сначала надо сказать о том, что такое система визуализации внекабинного пространства самолета. Это программа, которая показывает то, что видит летчик, когда летит в самолете. При этом я не имею в виду приборов и вообще всего того, что находится внутри кабины — выше не зря употреблен термин «внекабинное пространство». Делать, конечно, приходится отчасти и приборы, но это отдельная, гораздо более простая задача, и о ней можно не говорить. В узком смысле «визуализацией» называется именно изображение внекабинного пространства, так что я буду говорить именно об этом.

Ниже дан пример того, что видит летчик в моей программе при взлете:
(Все примеры в дальнейшем как раз и взяты из реальных визуализационных кадров моей программы.)
Читать дальше →
Всего голосов 31: ↑19 и ↓12+7
Комментарии38

Ещё раз про китайские лампочки: всё очень плохо

Время на прочтение2 мин
Количество просмотров99K
Я уже несколько раз писал о том, что по неизвестным причинам в китайских интернет-магазинах нет хороших светодиодных лампочек. Совсем нет.

При этом почти все приличные светодиодные лампы, которые можно купить в России, производятся в том же самом Китае.

Однажды в комментариях к моей статье о плохих китайских лампочках-свечках один из комментаторов написал: «Я отцу взял эти 5w. В люстре у него 15 штук. Доволен выше крыши и ещё попросил 15 штук.»

Я не пожалел кровных пяти долларов и решил проверить, заказав две лампочки.



Читать дальше →
Всего голосов 140: ↑137 и ↓3+134
Комментарии379

Радикальное лечение аллергии: аллергенспецифическая иммунотерапия (АСИТ)

Время на прочтение11 мин
Количество просмотров123K
Приветствуем вас в блоге компании Tion! Внимание всем аллергикам: сегодня рассказываем, как провести с пользой время между аллергическими сезонами. Что такое АСИТ, как это работает и почему мы говорим об этом в ноябре, когда аллергический сезон уже давно закончился?

Для справки: радикальным называется лечение причин болезни, а не ее симптомов. И аллергенспецифическая иммунотерапия – основной (а по некоторым источникам и вовсе единственный) метод радикального лечения аллергии.



До этого писали про аллергенную пыльцу и ее мониторинг и механизм появления аллергической реакции. Советуем освежить память и еще раз проглядеть те статьи. Тогда будет легче читать эту.
Всего голосов 16: ↑15 и ↓1+14
Комментарии55

Знакомство и старт разработки на ПЛИС iCE40 от Lattice Semiconductor

Время на прочтение5 мин
Количество просмотров19K
Здравствуйте! Сегодня мы познакомимся с новым семейством дешевых и малопотребляющих ПЛИС от Lattice Semiconductor семейств iCE40LP/HX/LM, научимся работать с фирменным компилятором iCEcube2 и редактором кода Sublime Text 3, а также программировать чип на отладочной плате Lattice iCEstick с помощью прошивки, написанной на SystemVerilog.

Все будет сопровождаться подробными инструкциями и скриншотами.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии10

Принимаем электронную почту на Node.js

Время на прочтение5 мин
Количество просмотров33K

Электронная почта как и www появилась на заре Интернета, и несмотря на свою архаичность продолжает удерживать позиции одной из главных технологий сети. Тем временем разработчики не слишком-то ее ценят и используют в одностороннем порядке, указывая отправителем noreply. И в первую очередь это связано с трудоемкостью процесса обработки входящей корреспонденции.


Тем временем, хвала комьюнити Node.js, появились пакеты, которые позволяют принимать почту без боли и страданий – это smtp-server и mailparser. Давайте я покажу, как в пару десятков строк кода создать свой почтовый сервер с поддержкой SSL шифрования, фильтрацией спама с помощь spamassassin и прочими радостями.

Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии15

Хакаем CAN шину авто для голосового управления

Время на прочтение8 мин
Количество просмотров119K


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

Мой автомобиль Skoda Octavia 2011 г. в. не предлагает возможностей управления с телефона, поэтому я решил исправить этот недостаток, а заодно и добавить функцию голосового управления. В качестве шлюза между CAN шиной и телефоном я использую Raspberry Pi с шилдом CAN BUS и WiFi роутер TP-Link. Протокол общения агрегатов авто закрытый, и на все мои письма предоставить документацию протокола Volkswagen отвечал отказом. Поэтому единственный способ узнать, как общаются устройства в авто и научиться ими управлять является реверс-инжиниринг протокола CAN шины VW.

Я действовал поэтапно:

  1. Разработка CAN шилда для Raspberry Pi
  2. Установка ПО для работы с CAN шиной
  3. Подключение к CAN шине авто
  4. Разработка сниффера и изучение протокола CAN шины
  5. Разработка приложения для телефона
  6. Голосовое управление с помощью Homekit и Siri

В конце видео голосового управления стеклоподъемником.
Читать дальше →
Всего голосов 81: ↑81 и ↓0+81
Комментарии110

Как мы среду Arduino на 8051 натягивали, или ОС на один процесс

Время на прочтение14 мин
Количество просмотров12K


Летом 2016 мы выпустили в широкую продажу нашу новую плату для разработки Z-Wave устройств — Z-Uno. Это абсолютно новаторское устройство, аналогов которому в мире Z-Wave пока нет. Учитывая большое количество программерских фишек, я решил поделиться некоторыми решениями, используемыми в Z-Uno.

Если кратко, то мы сделали упрощенную кооперативную ОС на 1 процесс на микроконтроллере семейства 8051 с API подобным Arduino.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии24

Допустимые и недопустимые контакты металлов. Популярные метрические и дюймовые резьбы

Время на прочтение8 мин
Количество просмотров170K
Электронику часто называют наукой о контактах. Многие знают, что нельзя скручивать между собой медный и алюминиевый провода. Медная шина заземления или латунная стойка для платы плохо сочетаются с оцинкованными винтиками, купленными в ближайшем строительном супермаркете. Почему? Коррозия может уничтожить электрический контакт, и прибор перестанет работать. Если это защитное заземление корпуса, то прибор продолжит работу, но будет небезопасен. Голая алюминиевая деталь вообще может постепенно превратиться в прах, если к ней приложить даже низковольтное напряжение.

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

В советских ГОСТах было написано почти всё о допустимых контактах металлов, но если изучение чёрно-белых таблиц из 1000 ячеек мелким шрифтом утомляет, то правильный ответ на «медный» вопрос — нержавейка, либо никелированная сталь, из которой, кстати, и сделан почти весь «компьютерный» крепёж. В эпоху чёрно-белого телевидения были другие понятия об удобстве интерфейса, поэтому для уважаемых читателей (и для себя заодно) автор приготовил цветную шпаргалку.

И, раз уж зашла речь о металлообработке, заодно автор привёл таблицу с популярными в электронике резьбами и соответствующими свёрлами, отобрав из объёмных источников наиболее релевантное по тематике портала. Не все же здесь слесари и металлурги, экономьте своё время.
Читать дальше →
Всего голосов 55: ↑52 и ↓3+49
Комментарии77

Уходим глубже в Underground: история одного экстремального дизайна игры

Время на прочтение6 мин
Количество просмотров27K


Хорошо размахнувшись, инженер производил мощный удар кулаком сверху монитора. Раздавался треск и… монитор оживал! Тогда, 30 лет назад, когда в свои десять лет я посещал вечерние занятия школы юных программистов в университете, только инженер имел право так чинить мониторы. Только он знал, в какое место и с какой силой приложить компьютерную технику, чтобы она ожила и мы, дети, которым повезло попасть в школу программистов, продолжили, счастливые, писать свои строчки кода.
Посмотреть дизайн
Всего голосов 116: ↑116 и ↓0+116
Комментарии56
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность