Pull to refresh
2
Karma
0
Rating
Roman Sorokin @r1000ru

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

  • Followers
  • Following 1
  • Posts
  • Comments

Пишем свой dependency free WebSocket сервер на Node.js

Node.JS *TypeScript *


Node.js — это популярный инструмент для построения клиент-серверных приложений. При правильном использовании, Node.js способен обрабатывать большое количество сетевых запросов, используя всего один поток. Несомненно, сетевой ввод — вывод является одной из сильнейших сторон этой платформы. Казалось бы, что используя Node.js для написания серверного кода приложения, активно использующего различные сетевые протоколы, разработчики должны знать, как эти протоколы работают, но зачастую это не так. Виной тому еще одна сильная сторона Node.js, это его пакетный менеджер NPM, в котором можно найти готовое решение практически под любую задачу. Используя готовые пакеты, мы упрощаем себе жизнь, переиспользуем код (и это правильно), но в то же время скрываем от себя, за ширмой библиотек, суть происходящих процессов. В этой статье мы постараемся разобраться в протоколе WebSocket, реализуя часть спецификации, не используя внешних зависимостей. Добро пожаловать под кат.

Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Views 8.4K
Comments 4

Равномерное перемещение объекта вдоль кривой

Game development *Algorithms *C# *Mathematics *Unity3D *
🔥 Technotext 2020


В процессе разработки игры в совершенно различных жанровых категориях может возникнуть потребность «запустить» какой-либо игровой объект вдоль гладкой кривой с постоянной или контролируемой скоростью, будь то грузовик, следующий из города А в город Б, выпущенная по хитрой траектории ракета, или самолет противника, выполняющий заложенный манёвр.

Наверное, каждый имеющий отношение к теме знает или, по крайней мере, слышал, про кривые Безье, B-сплайны, сплайны Эрмита и прочие интерполяционные и сглаживающие сплайны и совершенно правильно предложил бы использовать в описанной ситуации один из них, но не всё так просто, как хотелось бы.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views 9.9K
Comments 18

Введение в Traefik 2.0

DevOps *
Sandbox
🔥 Technotext 2020
Tutorial

Traefik — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями.


Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет:


  • обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах;
  • осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами;
  • обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети;
  • организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр).

В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов.


image

Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views 39K
Comments 29

Как рекрутинг автоматизируют, или почему HR-ы уходят на покой

Start-up development Personnel Management *Artificial Intelligence Remote work


Принимать решение о том, работать вам или нет, скоро будут роботы. И это уже происходит.

Сотни тысяч владельцев ресторанов и кафе в США сейчас готовятся к тому, чтобы снова открыться, как только снимут ограничения. Самая большая проблема — нанять обратно несколько миллионов сотрудников, которые не работали уже два месяца. Кто-то из них за это время нашел другую работу. Кто-то уехал из города, кто-то пошёл учиться. Как решить проблему такого глобального найма? Причём в ситуации, когда это происходит у миллионов разных бизнесов по всей стране?

Чтобы ускорить задачу, и при этом не подвергаться риску физического контакта во время пандемии, процесс найма, даже для таких работ, как повара, официанты, продавцы, горничные и водители, теперь почти полностью происходит онлайн. Тысячам компаний с этим процессом помогает стартап Workstream из Сан-Франциско. Он полностью автоматизировал найм персонала для почти пяти тысяч менеджеров — в том числе из Uber, Marriott, H&M, Amazon и McDonald's. Говорят, что это позволяет обработать в 4 раза больше заявок, быстро проверить сотрудников и сократить время до найма на 70%.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 2.5K
Comments 5

Моделирование меандровой инвертированной-F антенны – это просто

Development of communication systems *Manufacture and development of electronics *
Sandbox
Tutorial
Приветствую, эта статья посвящена моделированию меандровой инвертированной-F антенны (англ. Meander inverted-F antenna, MIFA) в программе Ansys HFSS. Пошаговая инструкция проектирования антенны. Сделай свою MIFA!


Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Views 8.5K
Comments 23

Базы данных в IIoT-платформе: как Mail.ru Cloud Solutions работают с петабайтами данных от множества устройств

Mail.ru Group corporate blog Database Administration *Data storage *IOT Tarantool *

Привет, я Андрей Сергеев, руководитель группы разработки IoT-решений в Mail.ru Cloud Solutions. Известно, что универсальной базы данных не существует. Особенно когда нужно построить платформу интернета вещей, способную обрабатывать миллионы событий от датчиков в секунду в режиме near real-time.

Наш продукт Mail.ru IoT Platform начинался с прототипа на базе Tarantool. Расскажу, какой путь мы прошли, с какими проблемами столкнулись и как их решали. А также покажу текущую архитектуру современной платформы индустриального интернета вещей. В статье поговорим:

  • о предъявляемых нами требованиях к базе данных, универсальном решении и CAP-теореме;
  • о том, является ли подход database + application server in one серебряной пулей;
  • об эволюции платформы и баз данных, используемых в ней;
  • о том, сколько у нас используется Tarantool’ов и как мы дошли до жизни такой.
Total votes 24: ↑23 and ↓1 +22
Views 3.8K
Comments 0

USB панель управления космическим кораблем своими руками

C *Programming microcontrollers *Astronautics DIY Games and game consoles
Tutorial

Здравствуйте, дорогие читатели!

Пришла мне тут одна идейка, а не собрать ли пульт управления космическим кораблем. На USB. С нативной поддержкой драйверов. Custom HID. Чтобы воткнул и всё работает, без всяких танцев и бубнов. В итоге, получился некий монструозный «геймпад» для космических симуляторов. В общем, судите сами.
Читать дальше →
Total votes 64: ↑63 and ↓1 +62
Views 19K
Comments 68

Оптимизация энергопотребления STM32: практическое руководство

Manufacture and development of electronics *Electronics for beginners
Привет, Хабр!

В сети довольно много статей про работу микроконтроллеров STM32 в энергоэффективных устройствах — как правило, это устройства на батарейном питании — однако среди них прискорбно мало разбирающих эту тему за пределами перечисления энергосберегающих режимов и команд SPL/HAL, их включающих (впрочем, та же претензия относится к подавляющему большинству статей про работу с STM32).

Тем временем, в связи с бурным развитием умных домов и всевозможного IoT тема становится всё более актуальной — в таких системах многие компоненты имеют батарейное питание, и при этом от них ожидаются годы непрерывной работы.

Восполнять данный пробел мы будем на примере STM32L1 — контроллера весьма популярного, достаточно экономичного и при этом имеющего некоторые специфические именно для этой серии проблемы. Практически всё сказанное будет также относиться к STM32L0 и STM32L4, ну и в части общих проблем и подходов — к другим контроллерам на ядрах Cortex-M.



Практический результат должен выглядеть примерно так, как на фотографии выше (и да, о применимости мультиметров и других средств измерения к подобным задачам тоже поговорим).
Читать дальше →
Total votes 95: ↑92 and ↓3 +89
Views 37K
Comments 95

STM32 bootloader DFU mode с использованием CubeMX. Инструкция пошаговая, step by step

Manufacture and development of electronics *
Sandbox
Итак, сочинение сего мандригала было сподвигнуто практически полным отсутствием пошаговой инструкции с использованием обычного инструментария предлагаемого STMicroelectronics.

Великое множество обнаруженных в сети bootloader-ов, иногда весьма занятных, к сожалению «заточены» под какой-либо конкретный кристалл.

Предлагаемый материал содержит процедуру использования пакета CubeMX, «загружалки» DfuSeDemo и утилиты подготовки прошивки Dfu file manager, т. е. Мы абстрагируем наши «хотелки» от железки, да простят меня гуру макроассемблера и даташита.
Читать дальше →
Total votes 37: ↑35 and ↓2 +33
Views 32K
Comments 28

DC/AC инвертор: принцип работы, схемотехника, встроенное ПО

Programming microcontrollers *Circuit design *Manufacture and development of electronics *Electronics for beginners
Sandbox
Импульсные преобразователи и силовая электроника в целом, всегда оставались чем-то сакральным для большинства любителей и профессионалов в области разработки электроники. В статье освещается пожалуй самая интересная тема в среде DIY-щиков и фанатов альтернативной энергетики — формирование синусоидального напряжения/тока из постоянного.

Думаю многие из вас наверняка видели рекламу, либо читали статьи, где была фраза «чистый синус». Вот именно о нем и пойдет речь, но не о маркетинговой составляющей, а о исключительно технической реализации. Я постараюсь максимально понятно рассказать о самих принципах работы, о стандартных (и не очень) схемотехнических решениях и самое главное — напишем и разберем ПО для микроконтроллера STM32, которое и сформирует нам необходимые сигналы.

Почему STM32? Да потому, что сейчас это самый популярный МК в СНГ: по ним много обучающей русскоязычной информации, есть куча примеров, а главное эти МК и средства отладки для них — очень дешевые. Скажу прямо — в коммерческом проекте я бы поставил только TMS320F28035 или подобный DSP из серии Piccolo от TI, но это уже совсем другая история.

Важно одно — STM32 позволяет стабильно управлять простыми «бытовыми» силовыми преобразователями от которых не зависит судьба мира работа какой-нибудь АЭС или ЦОДа.



Вот такую картину управляющих сигналов необходимо получить, чтобы превратить ток постоянный в переменный. И да — тут именно синус! Как в том фильме: «Видишь суслика? — Нет. — А он есть...»

Интересно узнать каким образом формируется синус? Хочется узнать как все-таки качают нефть киловатты энергии? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 65: ↑65 and ↓0 +65
Views 151K
Comments 259

Мигаем светодиодом в STM32 на ассемблере

Computer hardware
Sandbox
Некотрое время назад захотелось мне освоить ассемблер и после прочтения соответствующей литературы пришло время практики. Собственно о ней и пойдет дальше речь. Первое время я практиковался на Arduino Uno (Atmega328p), теперь решил двигаться дальше и взялся за STM32. В руки ко мне попала STM32F103C8 собственно на ней и будут проходить дальнейшие эксперименты.

Инструменты


Я использовал следующие инструменты:

  • Notepad++ — для написания кода
  • GNU Assembler — компилятор
  • STM32 ST-LINK Utility + ST-LINK V2 — для прошивки кода на микроконтроллер и отладки

Начало


Основная цель программирования на ассемблере для меня — это обучение. Так как никогда не знаешь где наткнешься на очередную интересную проблему, то было решено писать все с нуля. Первостепенной задачей было понять как работает вектор прерываний. В отличие от Atmega в STM32 вектор прерываний не содержит инструкций перехода:

jmp main

В нем прописываются конкретные адреса и во время прерывания процессор сам подставляет прописанный в векторе адрес в PC регистр. Вот пример моего вектора прерываний:

.org 0x00000000					
SP: .word STACKINIT				
RESET: .word main
NMI_HANDLER: .word nmi_fault
HARD_FAULT: .word hard_fault
MEMORY_FAULT: .word memory_fault
BUS_FAULT: .word bus_fault
USAGE_FAULT: .word usage_fault
.org 0x000000B0
TIMER2_INTERRUPT: .word timer2_interupt + 1

Хочу обратить внимание читателя, что первой строкой идет не reset вектор, а значения которым будет инициализироваться стэк. Сразу следом за ним идет reset вектор после которого следуют 5 обязательных векторов прерываний (NMI_HANDLER – USAGE_FAULT).
Читать дальше →
Total votes 23: ↑15 and ↓8 +7
Views 17K
Comments 18

CDC+MSC USB Composite Device на STM32 HAL

System Programming *Programming microcontrollers *
Tutorial
image

Мне хотелось бы верить, что хотя бы половина читателей может расшифровать хотя бы половину названия статьи :) Кто не в курсе — поясню. Мое устройство должно реализовывать сразу две USB функции:

  • Mass Storage Device (он же Mass Storage Class — MSC). Я хочу, чтобы мой девайс прикидывался обычной флешкой и отдавал файлики с данными, которые лежат на SD карте.
  • Другая функция это виртуальный COM порт (он же в терминологии USB называется Communication Device Class — CDC). Через этот канал у меня идет всякий дебажный вывод, который удобно смотреть обычным терминалом.

В большинстве примеров по работе с USB реализуется только один тип устройства — флешка, мышка, кастомное HID устройство или виртуальный COM порт. А вот найти вменяемое объяснение как реализовать хотя бы две функции одновременно оказалось не так просто. В своей статье я хотел бы восполнить этот пробел.

Я буду описывать создание композитного USB устройства на базе микроконтроллера STM32, но сам подход будет также применим и для других микроконтроллеров. В статье я детально разберу каждый из классов по отдельности, так и принцип построения композитных устройств. Но обо все по порядку.

Итак, поехали!
Читать дальше →
Total votes 60: ↑59 and ↓1 +58
Views 80K
Comments 54

Создание шейдеров

Game development *Image processing *WebGL *
Translation
Освоить создание графических шейдеров — это значит взять под свой контроль всю мощь видепроцессора с его тысячами параллельно работающих ядер. При таком способе программирования требуется другой образ мышления, но раскрытие его потенциала стоит потраченных усилий.

Практически в любой современной графической симуляции используется код, написанный для видеопроцессора: от реалистичных эффектов освещения в высокотехнологичных AAA-играх до двухмерных эффектов постпроцессинга и симуляции жидкостей.


Сцена из Minecraft, до и после добавления нескольких шейдеров.

Задача этого туториала


Иногда программирование шейдеров представляется загадочной чёрной магией и его часто понимают неправильно. Существует множество примеров кода, демонстрирующих создание невероятных эффектов, но в которых практически нет объяснений. В своём руководстве я хочу восполнить этот пробел. Я сосредоточусь в основном на базовых принципах создания и понимания кода шейдеров, чтобы вы смогли с лёгкостью настраивать, сочетать или писать свои собственные шейдеры с нуля!
Total votes 105: ↑105 and ↓0 +105
Views 143K
Comments 27

Избранные места из популярного учебника микроэлектроники на русском, который наконец-то выходит на бумаге

High performance *Assembler *Professional literature FPGA *Programming microcontrollers *
Год назад вышло бесплатное электронное издание на русском языке всеохватного вводного учебника Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера». Книга попала в струю, ее скачивания завалили британский сайт Imagination Technologies (дважды — 1, 2), после чего учебник стали использовать преподаватели московских МФТИ, МГТУ, питерского ИТМО, киевского КНУ, КПИ и других вузов. Интересной особенностью учебника является то, что его перевод на русский сделала группа энтузиастов: преподавателей российских и украинских университетов, русских сотрудников компаний в Silicon Valley (AMD, Synopsys, Apple, NVidia ...) и российских компаний (НИИСИ, МЦСТ, Модуль ...).

При этом, электронное издание Харрис-энд-Харрис сформатировано для планшета, и уже после первых скачиваний посыпались емейлы, когда же учебник будет и на бумаге. И вот час настал — Учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера» можно заказать на бумаге (выходит в новогоднюю ночь). В этом посте я покажу, чем этот учебник отличается от других. Бонус: фотки участников и участниц проекта!



Есть много учебников, которые хорошо вводят в цифровую логику на уровне триггеров и мультиплексоров, или в программирование готовых микроконтроллеров на ассемблере, или показывают красивые диаграммы процессорных конвейеров, или обучают синтаксису Verilog или VHDL. Но если учить скажем микроархитектуре без HDL, или если например пропускать уровни между триггером и программированием микроконтроллера, то получатся студенты, которые могут сдать экзамен и спорить умными словами в интернете, но ничего не могут сделать практически.

Учебник H&H решает эту проблему:
Total votes 47: ↑44 and ↓3 +41
Views 30K
Comments 39

Маленькие секреты трассировки плат с операционными и инструментальными усилителями

IOT Sound Electronics for beginners
Tutorial
При проектировании плат
Ничто не обходится так дёшево,
И не ценится так высоко,
Как правильная трассировка.



В век интернета вещей и доступности изготовления печатных плат, причём не только по ЛУТ технологии, их проектированием часто занимаются люди, вся деятельность которых связана с цифровой техникой.

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

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

Рекомендации очень просты и многим известны, тем не менее, как показала моя практика, далеко не всегда даже специалисты с опытом их придерживаются.
Бесплатные советы живут под катом
Total votes 38: ↑36 and ↓2 +34
Views 36K
Comments 88

Простой зарядник для 2S аккумуляторов на STM32F030

Energy and batteries Wearable electronics DIY
Скопилось какое-то количество 2S аккумуляторов разной емкости, которые требуется подзаряжать в «походных условиях» от 12 вольтовых батарей или USB. Решил сделать зарядник на микроконтроллере, заодно добавив функцию подзарядки телефона от этих же аккумуляторов (с помощью простейшего step-down преобразователя на MP1584EN). Схему пришлось переделывать в процессе, поэтому вид не особо презентабельный получился.

image
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Views 11K
Comments 31

Как стать профессиональным веб-разработчиком: практическое руководство

CMS *Website development *JavaScript *Java *HTML *
Translation
Tutorial

Дорога длинна и трудна, но интересна и полезна!

Статья задумывалась как практическое руководство для желающих стать профессиональным веб-разработчиком. Я уже более 20 лет пишу код для веба. Я ежедневно работаю с веб-разработчиками и помогаю им. В статье я опишу, что вам нужно выучить, когда вам нужно это выучить и где взять информацию (чаще всего даже бесплатно). Затем я дам совет по получению реального опыта, и что самое важное – по получению денег за написание кода.

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

Что нужно помнить:

1. Статью разрешается пролистывать

Руководство может помочь вам вне зависимости от вашего положения на дороге к профессиональной разработке. Прокрутите его к тому заголовку, который лучше всего описывает ваше сегодняшнее положение, и читайте оттуда. Если вы только начали этот путь, или пока размышляете об этом – последуйте совету Короля из «Алисы в стране чудес»:

Начните с начала, и продолжайте, пока не дойдёте до конца; и там уже остановитесь.
Читать дальше →
Total votes 49: ↑38 and ↓11 +27
Views 577K
Comments 129

Доработка выключателей Livolo для работы с малой нагрузкой

DIY
Еще о выключателях Ливоло.

Сенсорные радиоуправляемые выключатели Ливоло замечательны всем (ими можно прямо заменить обычный выключатель, они не требуют третьего провода, малым собственным потреблением, наличием радиоуправления, широким ассортиментом), кроме одного – плохо или совсем не работают с малой нагрузкой типа экономичных светодиодных ламп (менее 15 ватт) и с устройствами плавного зажигания ламп накаливания.

Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 35K
Comments 9

Выбираем актуальную экшн-камеру c разрешением 2-4к за 100$

Dronk.Ru corporate blog Gadgets Video equipment
За окном уже периодически мелькает летнее солнышко и вновь просыпается желание снимать какой-то экшн. Но технологии так быстро развиваются, что за 1 год у нас практически полностью обновилась линейка бюджетных экш-камер. В этом году на рынке недорогих камер сражаются Xiaomi, SjCam, GitUp, EKEN и даже Elephone, который вроде как только телефоны делал раньше. Но как же выбрать среди такого разнообразия? Предлагаю в первую очередь обратить внимание на реальную картинку, а во вторую очередь уже на технические характеристики.

image
Читать дальше →
Total votes 15: ↑11 and ↓4 +7
Views 73K
Comments 57

Переезжаем в Болгарию: 4 года в другой стране

Lumber room
Давно просили написать про мою жизнь в Болгарии, способы заработка и качества жизни. Прошло уже 4 года как я здесь, у меня сформировалось чёткое представление о стране и её особенностях, решил поделиться с сообществом.

Пляж в Созополе

Мой пост для тех, кто задумывается о переезде и пока не знает куда.
Преимущества и недостатки жития в Болгарии
Total votes 40: ↑39 and ↓1 +38
Views 35K
Comments 106

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity