Pull to refresh
149
0
Дмитрий Завалишин @dzavalishin

Архитектор

Send message

Простейший аттенюатор для аудиокарты

Reading time 5 min
Views 48K
В любительской радиотехнике, а именно в области проектирования усилителей низкой (звуковой) частоты, очень удобно использовать для измерений компьютер.
Профессиональные измерительные приборы стоят немалых денег, тогда как аудиокарта имеется почти в любом домашнем компьютере. В совокупности с доступным и разнообразным ПО мы получаем удобный инструмент для снятия всех основных характеристик: АЧХ (амплитудно-частотная характеристика), THD (уровень гармонических искажений), соотношение сигнал/шум и спектрограмму.



Единственным неудобством оказывается слишком чувствительный вход аудиокарты,
на который нельзя подать сигнал, превышающий напряжение 0.5-1.5 вольта.
И здесь на помощь приходит аттенюатор.

Его можно (и нужно) собрать самостоятельно. Ничего хитрого в этом опыте нет, но для тех, кто делает первые шаги в усилителестроении, материал будет полезным.
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Comments 48

На что способен КриптоПро JCP? Туториал по валидации отсоединенной электронной подписи

Level of difficulty Medium
Reading time 8 min
Views 5.2K

Привет, Хабр!

Меня зовут Вадим, я Java-разработчик SimbirSoft. В этой статье я расскажу, как на одном из проектов мы реализовали возможность валидации электронной подписи с помощью КриптоПро JCP. Этот фреймворк оказался хорошей альтернативой КриптоПро SVS после того, как последний попал под санкции Microsoft. Впоследствии на других подобных проектах я убедился в том, что решение рабочее и наиболее подходящее под бизнес-цели заказчиков. Прежде всего это банки, нанимающие организации и другие юрлица, где ведется электронный документооборот.

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 5

Создание сервиса авторизации через систему ЕСИА

Level of difficulty Medium
Reading time 18 min
Views 6.8K

Всем привет. Меня зовут Динис, я старший разработчик в БФТ-Холдинге.

В данной статье приведен план по созданию сервиса авторизации через систему ЕСИА. Тема будет интересна тем, кто внедряет такой сервис для своего приложения. В статье я собрал ключевые выдержки из документации с частями кода, а весь код вы можете найти в конце статьи по ссылке на GitHub.

Что такое ЕСИА?

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

Читать далее
Total votes 10: ↑9 and ↓1 +8
Comments 14

Портирование — дело тонкое: проверка Far Manager под Linux

Reading time 12 min
Views 19K
Одним из популярных файловых менеджеров в среде Microsoft Windows является Far Manager, принявший эстафету у Norton Commander, созданной еще для DOS. Far Manager позволяет облегчить работу с файловой системой (создание, редактирование, просмотр, копирование, перемещение, поиск, удаление файлов), а также расширяет стандартный функционал (работа с сетью, архивами, резервными копиями и т.д.). Недавно была произведена работа по портированию Far Manager на Linux, и на текущий момент была выпущена альфа-версия. Команда PVS-Studio не могла обойти стороной данное событие и решила проверить качество адаптированного кода.
Picture 24
Читать дальше →
Total votes 55: ↑50 and ↓5 +45
Comments 69

Регистрация глобальных нажатий клавиш с использованием JNA

Reading time 15 min
Views 11K
Здравствуйте, в этой статье я расскажу вам как регистрировать глобальные нажатия клавиш из Java под Windows, Linux, BSD и Mac OSX с использованием отличной библиотеки JNA.

Для чего нужен JNA


Java с десктопом дружит сложно, для некоторых вещей нужно писать мосты для взаимодействия с операционной системой. Одной из таких функциональностей являются глобальные хоткеи, весьма популярные в аудио плеерах, когда даже в скрытом состоянии программой можно управлять с помощью определенных сочетаний клавиш или медиа-кнопок. На помощь приходит JNA — надстройка над jni и libffi для вызова нативных библиотек, она поддерживает почти все популярные платформы, разрабатывается уже долгое время и весьма стабильна.

Для джавы уже есть несколько достаточно стабильных библиотек для всех платформ: JIntelliType для Windows, которая даже поддерживает медиа-кнопки, JXGrabKey для систем Linux, и ossuport-connector для Mac OSX. Однако, все они используют jni, имеют разный интерфейс, и с библиотеками на jni не всегда удобно работать, потому что нужно прописывать пути к нативным библиотекам, разбираться с разрядностью системы и пр. Плюс это будет интересным упражнением по использованию JNA, потому что эту задачу можно сделать полностью на java достаточно малыми усилиями и получить легко поддерживаемый кроссплатформенный код.
Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Comments 11

Круги ада с GitHub Actions (строим CI/CD pipeline для Java-проекта)

Reading time 14 min
Views 36K


Мне частенько приходится строить пайплайн для сборки проектов на Java. Иногда это опенсорс, иногда нет. Недавно я решил попробовать перенести часть своих репозиториев с Travis-CI и TeamCity на GitHub Actions, и вот что из этого получилось.
Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Comments 13

Программирование&Музыка: понимаем и пишем VSTi синтезатор на C# WPF. Часть 1

Reading time 26 min
Views 49K

Занимаясь музыкальным творчеством, я часто делаю аранжировки и записи на компьютере — используя кучу всяких VST плагинов и инструментов. Стыдно признаться — я никогда не понимал, как "накручивают" звуки в синтезаторах. Программирование позволило мне написать свой синтезатор, "пропустить через себя" процесс создания звука.


Я планирую несколько статей, в которых будет пошагово рассказано, как написать свой VST плагин/инструмент: программирование осциллятора, частотного фильтра, различных эффектов и модуляции параметров. Упор будет сделан на практику, объяснение программисту простым языком, как же все это работает. Теорию (суровые выводы и доказательства) обойдем стороной (естественно, будут ссылки на статьи и книги).


Обычно плагины пишутся на C++ (кроссплатформенность, возможность эффективно реализовать алгоритмы), но я решил выбрать более подходящий для меня язык — C#; сфокусироваться на изучении самого синтезатора, алгоритмов, а не технических деталей программирования. Для создания красивого интерфейса я использовал WPF. Возможность использования архитектуры .NET дала возможность библиотека-обертка VST. NET.


Ниже представлен обзорный ролик моего простого синтезатора, полученных интересных звучаний.



Предстоит нелегкий путь, если вы готовы — добро пожаловать под кат.


Total votes 55: ↑54 and ↓1 +53
Comments 20

Как перестать разговаривать с людьми и собрать свой первый синтезатор

Reading time 12 min
Views 20K

Жизнь в 2021 не стала легче. Ледники всё ещё тают, границы закрыты, биткоин дорожает, а просмотров у любого челленджа в Тиктоке больше чем у всех видео с канала NASA вместе взятых. Что делать технарю, чтобы почувствовать себя уютнее в постоянно меняющемся мире где в новостях пишут что Земля снова плоская, а коллеги у кулера всерьёз обсуждают программирование микроконтроллеров на JavaScript?

Выход есть: зимой пора сделать то о чём вы давно мечтали, но не знали с какой стороны подступиться — собрать свой первый синтезатор. Я собрал 10 штук и сейчас расскажу с чего можно начать.

Читать далее
Total votes 32: ↑30 and ↓2 +28
Comments 15

Первые тесты инженерной версии процессора Эльбрус-16С

Reading time 10 min
Views 62K

Первые тесты процессора Эльбрус-16С. Появилась возможность протестировать инженерный процессор Эльбрус-16С и сравнить его со своим предшественником Эльбрус-8СВ.

Читать далее
Total votes 89: ↑87 and ↓2 +85
Comments 291

Избавляемся от ConcurrentModificationException

Reading time 4 min
Views 104K
Как известно, ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта гадость, когда мы пытаемся модифицировать коллекцию во время итерирования по ней. Как обычно, это имеет исторические корни: коллекции и итераторы появились в Java 1.2, в те времена избежать явного использования итератора при обходе коллекции было никак нельзя, так что предложение менять коллекцию посредством методов итератора не выглядело совсем ужасным:

Iterator iterator = collection.iterator();

while (iterator.hasNext()) {
    Object element = iterator.next();
    if (iDontLikeThisElement(element)) {
         iterator.remove();
    }
}
Читать дальше →
Total votes 16: ↑10 and ↓6 +4
Comments 26

Строим камеру Вильсона и обнаруживаем космические лучи у себя дома

Reading time 3 min
Views 39K
Камера Вильсона (она же туманная камера) — один из первых в истории приборов для регистрации следов (треков) заряженных частиц. Принцип действия камеры использует явление конденсации перенасыщенного пара: при появлении в среде перенасыщенного пара каких-либо центров конденсации на них образуются мелкие капли жидкости. Эти капли достигают значительных размеров и могут быть сфотографированы. Источник исследуемых частиц может располагаться либо внутри камеры, либо вне её (в этом случае частицы залетают через прозрачное для них окно).



Очень странно думать о том, что нас постоянно бомбардируют крохотные частицы, движущиеся со скоростью света. Хотите увидеть свидетельство их существования? Смотрите видео. Не верите видео, или просто хотите увидеть следы в испарениях собственными глазами – продолжайте читать эту инструкцию.
Total votes 38: ↑34 and ↓4 +30
Comments 18

Углубляясь в Graphics2D

Reading time 32 min
Views 76K
Добрый день, Хабражители!

Сегодня я опять постараюсь привлечь Ваше внимание к некоторым сторонам и тонкостям работы с графикой в Java. Я уже кратко описал в предыдущей статье некоторые доступные средства и способы создания компонентов и UI, но это лишь вершина айсберга. Именно поэтому я хочу уделить отдельное внимание (и статью) именно работе с графикой. Естественно имеется в виду Graphics2D – Java 3D это большая отдельная тема (возможно о ней еще пойдет речь в дальнейшем, но не сегодня).

Итак, из предыдущей статьи Вам уже должны быть известны некоторые основы построения компонентов — постараемся расширить эти знания.

Начнем с того, что если рассматривать любой компонент с точки зрения MVC – он состоит из 3ех частей:
Model – модель, которая хранит в себе данные о состоянии компонента и на основе которой строится внешний вид
View – непосредственно визуальное отображения компонента
Controller – отвечает за управление компонентом (события от клавиатуры, мыши и прочих устройств ввода)

Фактически, все стандартные компоненты Swing построены по паттерну MVC. К примеру в JButton — ButtonModel отвечает за поведение и состояние кнопки (Controller и Model), а ButtonUI в свою очередь за внешнее её представление (View). В итоге на долю самого класс JButton практически ничего не остаётся. Речь пойдет по большей части о реализации внешнего представления компонентов (View), и если уточнять — о Graphics2D, на основе которого, фактически, рисуется весь интерфейс.

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

Читать далее...
Total votes 82: ↑78 and ↓4 +74
Comments 71

Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»

Reading time 18 min
Views 42K


В этой статье я хочу рассказать об архитектуре советских программируемых микрокалькуляторов на примере калькулятора «Электроника МК-52» и как можно внедриться в его архитектуру.

Советские калькуляторы семейства "Электроника Б3-34" («Электроника МК-56», «Электроника МК-61» и «Электроника МК-52») были особенно популярны в СССР. Причиной этому была не только доступная цена в 65 рублей за МК-54, 85 рублей за МК-61 или 115 рублей за МК-52, но и развитой язык программирования. Это семейство калькуляторов стало де-факто стандартным для многочисленных пользователей. Огромное количество книг было посвящено программированию на этих машинках и публикацией готовых алгоритмов. Электроника МК-52 даже летала в космос на корабле Союз ТМ-7, где предполагалось его использование в качестве резервного на случай неисправности спускаемого навигационного оборудования. Даже в военно-морском флоте СССР калькулятор «Электроника МК-52» с блоком расширения памяти БРП «Астро» какое-то время был стандартным средством для навигационных расчетов.


Читать дальше →
Total votes 115: ↑115 and ↓0 +115
Comments 180

Внутренний мир Форманты П432

Reading time 17 min
Views 15K


История о том, как я неожиданно купил синтезатор, починил его, разобрался с тем, как он устроен, и написал эмулятор.
Читать дальше →
Total votes 83: ↑83 and ↓0 +83
Comments 16

RobotDyn наносит двойной удар: Mega + ESP8266

Reading time 14 min
Views 80K
RobotDyn Mega + ESP8266
Что делает разработчик в редкие часы досуга? Правильно, просматривает прайсы железячных магазинов. Выдалась свободная минутка и я решил полистать странички популярных интернет-магазинов — скукота, ничего интересного, всё это мы уже видели… и тут неожиданно мой взгляд падает на очередную Mega. Ба! да это не простая Мега, а совмещённая со всеми любимым ESP8266, да ещё заботливо снабжённая переключателями для совместной работы двух контроллеров — проводного (при помощи Ethernet Shield) со множеством GPIO и Wi-Fi для беспроводной связи.

Неплохо! Подумал я и вспомнил про AMS — туда же можно установить два сервера — проводной и беспроводной и связать их в одну систему — ESP8266 получит 54 цифровых и 16 аналоговых пинов, а Mega получит беспроводное управление по Wi-Fi и все плюшки ESP8266. Давненько мне не попадалась такая интересная плата.

— Здравствуйте! У вас есть плата Mega + ESP8266?
— Есть, но у нас только одна осталась.
— Почему только одна?
— Остальные разобрали.
— Зарезервируйте её, пожалуйста, для меня.
Читать дальше →
Total votes 36: ↑33 and ↓3 +30
Comments 45

Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть третья, ПО и G-code

Reading time 7 min
Views 39K
В этой статье хотелось бы рассказать о необходимом в работе ПО, а заодно дать маленькую вводную по g-коду. Опять прошу простить непрофессионала, могу что-то упустить, а в чем-то быть неточным. С другой стороны, все описанное в моих статьях — исключительно личный опыт, и он точно работает в приближенных к офисно-гаражно-домашним условиях на простых китайских фрезерах с ЧПУ.
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 19

Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть вторая, инструмент и приспособления

Reading time 7 min
Views 37K
На днях устыдили меня, мол ругаюсь на дилетантов, а сам ничего хорошего не пишу, а обещал ажно «цикл статей». Пришлось достать старый черновик и доработать. Для забывших — первая часть про выбор станка тут.

Предположим, что Вы определились с моделью фрезера, провели первичные переговоры с поставщиком и начали морально готовиться к покупке. Что еще понадобится для начала работы?

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

— Режущий инструмент — фрезы/граверы и боры
— Дополнительные цанги к шпинделю
— Крепеж для стола
— Систему изоляции и/или удаления стружки

И да, сразу оговорюсь: данная статья касается домашних фрезеров со шпинделями типа Kress или китайчонками с цангой Er11, поэтому во-первых предположим, что хвостовик фрезы у нас цилиндрический до 6 мм (у Кресса есть 8, но нормальной его работу с 8кой не назовешь — слабенький он таки), во-вторых, механический инструмент смысла не имеет — мощи не хватит, а в третьих, сверла-развертки-метчики-флайкаттеры недоступны, поскольку минимальная скорость — 6000 оборотов.
Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Comments 50

Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть первая — выбор станка

Reading time 5 min
Views 290K
Последнее время на хабре все чаще появляются топики, посвященные 3D-печати вообще и домашним 3D-принтерам в частности. И почти в каждом в комментариях вспыхивает холивар между романтиками, в жизни не видевшими 3D отпечатков, и практиками, единожды потрогавшими и разочаровавшимися. При этом вторые почему-то не приводят адекватных альтернативных технологий, комментарии носят либо чисто критический характер, либо предлагают заведомо более дорогие альтернативы. Тем не менее, достойная альтернатива есть — домашний фрезерный станок с ЧПУ.

Звучит удивительно, да? Как-то само слово станок в народе ассоциируется с производством, с отдельными помещениями и специально обученным персоналом. В действительности, существует большой класс ЧПУ-станков, рассчитанных на настольное использование в офисе и на малых производствах, а при желании — и дома. При этом цена маленьких ЧПУ-фрезеров приближается (чтобы не сказать равна) к реальной цене 3D-принтеров.

Жизнь сложилась так, что последний год с гаком я занимаюсь изготовлением литьевых форм для полиуретановых изделий на ЧПУ-фрезере. Поскольку до этого 10 лет оттрубил в IT ритейле, а образование не имеет никакого отношения ни к инжинирингу, ни к ЧПУ, осваивать технологии пришлось с нуля. За прошедший год я подрос с должности оператора-фрезеровщика до инженера-конструктора, а затем и до замдиректора по технологиям, моими стараниями ЧПУ-парк предприятия вырос с одинокого старенького роланда до 5 разнокалиберных станков. В связи с чем еще свеж и актуален опыт выбора, покупки, пусконаладки, тюнинга, эксплуатации и ремонта различных ЧПУ-станков.

И вот — решил поделиться опытом с сообществом. Я осознаю сам, и прошу принимать во внимание читателей, что я — самоучка без базового инженерного образования, все нижеизложенное основано исключительно на личном опыте.
Читать дальше →
Total votes 104: ↑98 and ↓6 +92
Comments 188

Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть четвертая. Общие понятия обработки

Reading time 6 min
Views 33K
Начав писать про стратегии обработки, я понял что творю «обезьяний набор» — пошаговое руководство даже не для чайников, а для идиотов, мои шаги повторить можно, сделать свои по образцу тоже, но понимания не добавляется. В свое время, когда я внезапно решил стать фрезеровщиком, имея в бэкграунде высшее медицинское, МБА и 10 лет компьютерного ритейла, мне было очень сложно продираться через терминологию и абсолютно новый понятийный аппарат.

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

image

Ниже — моя скромная попытка пробежаться по базовым понятиям фрезерной обработки с краткой расшифровкой. Терминологию я использовал русскую из делкамовских учебников, она может не совпадать с другими CAM программами, но я думаю тут уже интуиция и гугл спасут. Ну и как всегда, капелька личного опыта по обработке пластиков на хоббийных станках.
Читать дальше →
Total votes 63: ↑61 and ↓2 +59
Comments 52

Инициализация и работа интерпретатора байткода в JVM HotSpot под x86

Reading time 21 min
Views 6.1K

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

Читать дальше →
Total votes 32: ↑31 and ↓1 +30
Comments 6

Information

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