Pull to refresh
13
0
Владимир @cmex

User

Send message

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

Reading time8 min
Views29K

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


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


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


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


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

Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments67

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

Reading time4 min
Views64K

О протоколе DALI


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


Total votes 21: ↑20 and ↓1+19
Comments25

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

Reading time5 min
Views28K

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. В процессе мне пришлось решить несколько сопутствующих проблем. Об этом я рассажу под катом.

Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments33

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

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


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

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

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

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

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

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

Reading time3 min
Views36K

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


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


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


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

Прототип:


Читать дальше →
Total votes 32: ↑22 and ↓10+12
Comments86

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

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



Как это работает, подробности под катом.
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments226

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

Reading time5 min
Views8.5K
Предыдущая статья цикла

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

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

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

Reading time9 min
Views81K

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

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

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

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

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

Reading time4 min
Views44K


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

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

Reading time4 min
Views45K

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


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

Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments36

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

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

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

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

Reading time2 min
Views99K
Я уже несколько раз писал о том, что по неизвестным причинам в китайских интернет-магазинах нет хороших светодиодных лампочек. Совсем нет.

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

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

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



Читать дальше →
Total votes 140: ↑137 and ↓3+134
Comments379

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

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

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



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

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

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

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

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

Reading time5 min
Views33K

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


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

Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments15

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

Reading time8 min
Views119K


Современный автомобиль это не только средство передвижения, но и продвинутый гаджет с мультимедийными функциями и электронной системой управления агрегатами и кучей датчиков. Многие автопроизводители предлагают функции ассистентов движения, помощников при парковке, мониторинга и управления авто с телефона. Это возможно благодаря использованию в авто 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

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

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

Reading time14 min
Views12K


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

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

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

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

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

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

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

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

Reading time6 min
Views27K


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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity