Как стать автором
Обновить
4
0.5

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

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

Стохастический язык программирования на основе алгоритмов Маркова

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

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →
Всего голосов 139: ↑139 и ↓0+139
Комментарии24

Промышленная автоматизация и создание своих производственных линий как перспективная сфера приложения усилий

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров11K
Картинка Jcomp, Freepik

Наблюдая за тем, как самодельщики разрабатывают 100500-й вариант NAS с резервным питанием, мне подумалось, что стоит поднять гораздо более интересную тему, которая позволяет раскрыть свои навыки, реализуя увлекательные проекты, и предоставляет поистине неисчерпаемый источник сложных инженерных вызовов. А ведь мы все любим такое, не так ли? ;-)

Речь в этой статье пойдёт о построении любительских систем автоматизации, ведь если оглянуться вокруг, то множество процессов могут быть легко автоматизированы людьми, имеющими даже минимальное знание программирования и чуть-чуть дружащих с руками. Второе в принципе под вопросом, так как можно всё требующееся смоделировать на компьютере в 3D, в инженерном CAD, после чего отдать на лазерную резку, сварку и т. д. Хотя, если вы это умеете, это весьма невредно для глубинного понимания процессов.
Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии24

Сколько получают российские разработчики: наше исследование

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров86K


У нас тут накопилось очень много цифр о состоянии российского IT, и мы решили их как-то оформить. Получилось 27 таблиц, но надеюсь, каждый сможет найти ту, которая ему релевантна.


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


Эта статья — с цифрами для разработчиков. Как до, так и после 21 сентября. Исследование по HR, менеджерам и дизайнерам выйдет позже, если этот пост вам понравится.

Читать дальше →
Всего голосов 111: ↑107 и ↓4+136
Комментарии253

Call Stack Logger — инструментирование функций как способ отслеживания потока выполнения программы

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

Доводилось ли вам когда-нибудь работать над C++ проектом с такой огромной кодовой базой, что понимание того, что на самом деле происходит во время выполнения программы, требует кучи времени и сил? Откуда и какие функции вызываются? Вам когда-нибудь поручали исправить баг в таком проекте, прилагая лишь логи, которые приближают вас к нахождению первопричины проблемы так же, как Моисей к земле обетованной? А попытки воспроизведения бага не дают вам никакой полезной информации? Если ваш ответ да – пожалуйста, присаживайтесь поудобнее.

Читать далее
Всего голосов 11: ↑9 и ↓2+9
Комментарии3

Настольная динамическая балансировка маховика

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

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

Раскрутить маховик
Всего голосов 36: ↑36 и ↓0+36
Комментарии81

Избавляемся от хлама: как превратить бесполезную тв-приставку в компьютер под Linux

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров43K

Дано: ненужная ТВ-приставка + острая потребность в компьютере с низким энергопотреблением под Linux. Почему бы не превратить одно в другое?

Читать далее
Всего голосов 66: ↑64 и ↓2+73
Комментарии30

С хорошим микроконтроллером и время летит быстро или осциллограф выходного дня

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

Некоторое время назад автор этих строк взялся разрабатывать компактный регистратор одно-полярного аналогового сигнала в пределах 3 вольт с максимально возможной скоростью считывания и минимально возможными затратами и размерами. В список минимально возможных затрат я вписал также и свою головную боль и выбрал хорошо знакомый мне STM32F303. Это, напомню, Cortex-M4 на 72 мегагерца от известной компании, со встроенными 12 разрядными, довольно шустрыми, аналого-цифровыми преобразователями (АЦП или ADC, кому как нравится) и с CAN интерфейсом на борту.


Таких небольших регистраторов требовалось несколько десятков. А наличие у микроконтроллера корпуса о 48-ми ногах вселяло надежду на то, что получится назвать этот считыватель компактным. Интерфейс CAN, с которым у меня уже тогда были хорошие отношения, давал мне возможность объединить весь этот джаз в достаточно удобной манере.


Скорость, с которой, в конце концов, все это заработало, оказалась вполне подходящей, чтобы заявить о работоспособности выбранного подхода. Удалось добиться пол микросекундного шага дискретизации. Головной боли и ассемблера избежать не удалось, но кто об этом сейчас вспоминает?


Однако, некоторый осадок остался. Осталась мысль, что, в отношении быстродействия, выжато было не все.


И вот, совсем недавно появляется серия STM32G4 с тактовой частотой до 170 мегагерц с вариантом в маленьком корпусе, и с почти такими же шустрыми АЦП на борту в количестве пяти штук. Надо было что-то делать.

Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии20

Радиотелефончик на смартфоне

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров21K
image

Немало воды утекло со времени публикации цикла про стриминг видео на Андроид устройствах, но вот ручки добрались и до аудио потоков. Не то, чтобы это была какая-то более заковыристая тема про сравнению с видео, даже наоборот, сложно придумать что-то проще, ибо Audio API не менялось, дай бог памяти, с 2012 года, если не раньше. И не стоило бы, ради этого пилить короткий пост, если бы не зудящая мысля — а на какое расстояние и каким образом можно передать сей аудио поток, если мы будем использовать для этого только два смартфона без всякой мобильной связи и внешних точек доступа.

Если вам интересно узнать, что из этого получилось, то прошу проследовать под кат…
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии65

Альфа-бета фильтр Калмана: фильтр «Hello, world!»

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров11K

В статье описана реализация альфа-бета фильтра Калмана, приведено подробное его описание и программный код -- всё написано для новичков в этой сфере для того, чтобы помочь им начать свой путь и не отпугнуть от дальнейшего изучения методов фильтрации.

Читать далее
Всего голосов 14: ↑13 и ↓1+15
Комментарии21

консоль в микроконтроллере с micro readline

Время на прочтение9 мин
Количество просмотров33K
Представляю вашему вниманию библиотеку microrl (on github), предназначенную для организации консольного интерфейса в разного рода встраиваемых железках на микроконтроллерах.

Зачем нам консоль в МК?


Текстовый консольный интерфейс обладает рядом преимуществ для встраиваемых систем, при всей своей мощи и простоте (ведь текст, в отличие от светодиода, говорит сам за себя!):
  • Требует относительно мало ресурсов МК, и минимум аппаратных затрат — последовательный интерфейс типа UART или любой другой имеющийся в МК, это может быть встроенный USB или внешний USB-Com адаптер или даже TCP если ваше микроконтроллер достаточно серьезный.
  • Удобно подключаться — достаточно терминала поддерживающего Com-port (putty для Windows или minicom для linux).
  • Удобно использовать — цветной вывод в терминал, поддержка авто-дополнений, горячих клавиш и истории ввода.
Читать дальше →
Всего голосов 89: ↑89 и ↓0+89
Комментарии31

Пишем терминальный сервер для микроконтроллера на С

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

Всем привет! В процессе работы над гексаподом AIWM я все чаще задумывался о каком-нибудь удобном интерфейсе для общения с ним. В результате тесной работы с Linux через терминал я подумал, а почему бы не использовать такой же интерфейс и в гексаподе? Я был очень удивлен, что по запросу "STM32 terminal" я не нашел готовых реализаций. Ну раз нет готовых, то напишем свою реализацию терминального сервера, которую можно использовать в микроконтроллерах. Сделаем это без использования динамической памяти и прочих опасных радостей.

Читать далее
Всего голосов 25: ↑24 и ↓1+33
Комментарии19

Как пнёшь, так и полетит. 3 приёма ускорения разработки в приборостроении

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

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

Об этом речь и пойдет.
Всего голосов 7: ↑7 и ↓0+7
Комментарии4

Конструктор для взрослых…

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

...и не только!

Это история о том, как я создал конструктор для решения повседневных проблем. Для меня он стал незаменимым помощником по жизни. Возможно, и вам придется по вкусу (древесины:))

В этой статье я познакомлю вас с этим простым, но очень функциональным изобретением.

Читать далее
Всего голосов 168: ↑162 и ↓6+190
Комментарии257

Припой припою рознь, или Несколько слов о флюсах

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

Общаясь сейчас со связистами на предмет «сообщите, кому какой припой нужен», получил достаточно типовой ответ — «хороший, чтобы всё паял». Углублённое обсуждение вопроса вынесло на поверхность несколько запомнившихся людям торговых марок — в первую очередь Asahi — но и только. Про флюсы и их различия сказано ничего не было.

Спектр задач по пайке при этом у связистов простирается от антенно-фидерного хозяйства (кабели, разъёмы), через аксессуары (зарядки, гарнитуры) и до ремонта собственно радиоаппаратуры (SMD-компоненты).

В связи с этим я не только провёл краткий ликбез и показал пару табличек, но и хочу написать про это здесь, чтобы потом было удобно давать ссылку :)

Итак: какие бывают флюсы в припоях, что лучше — ORL0 или ROM1 (я проверил гуглем, обе аббревиатуры на Хабре встречались 0 раз), где искать эту информацию и зачем вообще это надо.

Читать далее
Всего голосов 115: ↑107 и ↓8+125
Комментарии92

Интерфейсы и протоколы в IoT. Лекция первая

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

В этом году меня в очередной раз позвали в Московский институт электроники и математики (МИЭМ) НИУ ВШЭ читать студентам магистратуры (четвёртый курс на наши деньги) департамента электронной инженерии курс «Обеспечение взаимодействия элементов системы IoT, интерфейсы и протоколы».

Когда-то давно я уже читал вводный курс по программированию микроконтроллеров в МИРЭА, от лекций которого остались любезно сделанные вузом видеозаписи (от семинаров не осталось ничего, увы), потом — курс по Интрнету вещей (там было сочетание микроконтроллеров, их программирования и введения в специфику IoT-систем) уже в МИЭМ НИУ ВШЭ, от которого, увы, тоже не осталось никаких публично доступных материалов.

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

Надеюсь, разные рассказываемые вещи будут полезны не только моим студентам (ребята, но вы же понимаете, что в тексте будет просто в силу формата сказано меньше, чем голосом на лекциях?), которым не надо писать конспекты лекций, но и всем желающим. Например, не далее как сегодня вступал на Хабре в статье про протоколы питания в USB-C в дискуссию «зачем они так сделали» — а в прошлый вторник рассказывал студентам, какие на самом деле соображения могут лежать в основе выбора того или иного решения, и как раз на примере эволюции питания в USB.

Итак, поехали.

Читать далее
Всего голосов 26: ↑24 и ↓2+28
Комментарии19

Контроллер CH579. Начинаем работу и избавляемся от закрытой сетевой библиотеки

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


Сегодняшняя статья – не восклицание: «Смотрите, какой мне красивый проц попался». Это скорее просто упорядочивание накопленных сведений о конкретном процессоре CH579. Вдруг кому пригодится. Ну, и, если через годы мне потребуется, я сам буду восстанавливать знания по этой статье. Просто так получилось, что по проекту Заказчик велел освоить его… Это недорогой микроконтроллер на базе ядра Cortex M0. После освоения Заказчик же и сказал, что мы всё будем делать на китайском клоне STM32. Характеристики же самобытного CH579 он признал недостаточными.

Но с другой стороны… Сегодня эта микросхема стоит 120-150 рублей за штуку на Ali Express. А у неё имеется не только встроенный PHY для десятимегабитного Ethernet, но и всё для работы по BLE. По-моему, не самая плохая цена. Кажется, для Интернета вещей может пригодиться. Но это цены за микросхему. Макетки безобразно дороги.

Ещё на многих форумах народ возмущается, что сетевая библиотека для этого контроллера поставляется не в виде исходных кодов. Китайцы отвечают, что они не собираются ничего менять. Наш Заказчик тоже возмущался. Поэтому в статье я покажу, каким путём мы шли, чтобы сделать исходный код. Любой сможет повторить этот путь буквально за пару дней. Там скорее обидно, чем сложно.

В общем, сегодня мы пробежимся по работе с китайским контроллером CH579. Будет немного практических сведений и немного мемуаров, как пришлось вскрывать библиотеки.
Читать дальше →
Всего голосов 37: ↑36 и ↓1+46
Комментарии29

Запустится ли это в Doom? Калькулятор, работающий на демонах

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

Да


Десятки лет мы задавались вопросом: «Запустится ли на этом устройстве Doom?». Теперь мы наконец можем задать вопрос иначе: «Запустится ли этот код в Doom?»

В статье я продемонстрирую, что в Doom можно запускать любые конечные вычисления, если не учитывать ограничения размеров уровня. Я не доказал, что Doom полон по Тьюрингу (см. ниже).

Система отлично работает с «ванильным» релизом Doom 2 (v1.9) для MS-DOS. Никаких модов и тому подобного не требуется!

Я люблю подобные проекты. Меня вдохновляют эзотерические машины в других играх, например, в Minecraft и RollerCoaster Tycoon.
Читать дальше →
Всего голосов 64: ↑64 и ↓0+64
Комментарии16

Полупроницаемые мембраны: что, зачем, как изготавливаются

Время на прочтение10 мин
Количество просмотров14K
Картинка Pikisuperstar, Freepik

С момента изобретения технология получения чистой воды, носящая название «обратный осмос», получила широкое распространение ввиду своей малой энергозатратности и существенного превосходства над стандартными технологиями вроде выпаривания (по некоторым оценкам, в 10-15 раз).

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

Тем не менее, если мы обратимся за описанием технологии производства фильтрующего элемента к техническим даташитам компаний-производителей, то в них речь будет идти, по большей части, о физическом устройстве фильтрующего элемента, в то время как технология производства всегда будет прикрыта туманными фразами вроде «ноу-хау», «на основе собственной технологии» и т. д. и т. п.

Что, в общем-то, и понятно, люди борются за сохранность своего бизнеса :-)

Однако мы попробуем в общих чертах изучить, что представляет собой технология производства подобных фильтрующих элементов.
Читать дальше →
Всего голосов 52: ↑48 и ↓4+67
Комментарии47

Абсолютный поворотный энкодер с однодорожечным кодом Грея

Время на прочтение2 мин
Количество просмотров17K
В этом материале речь пойдёт о физической реализации абсолютного поворотного энкодера. Разрешение этого энкодера составляет 6 градусов, то есть — 60 шагов. Этого достаточно для того чтобы сделать на его основе часы. Здесь используется одношаговый код Грея.


Читать дальше →
Всего голосов 50: ↑48 и ↓2+66
Комментарии20

Две культуры программирования: почему обе из них важны?

Время на прочтение13 мин
Количество просмотров57K
Уже несколько лет я замечаю, что программисты и программистские инструменты делятся на две разные культуры:



Изначально я человек первой культуры и очень долгое время считал вторую несерьёзной. Пару-тройку лет назад я окончательно понял, что ошибался. Многие «старички» ошибаются в ту же сторону, а в последние годы ещё большее число людей ошибаются в обратную. Знакомство с соседней культурой и понимание, почему дела в ней делаются так, как там принято, превратит вас в лучшего разработчика.
Читать дальше →
Всего голосов 156: ↑138 и ↓18+154
Комментарии107

Информация

В рейтинге
1 818-й
Зарегистрирован
Активность