Pull to refresh
3
0.1
Send message

Конвертация MIDI-времени в такты и доли

Level of difficultyEasy
Reading time12 min
Views2.9K

Представьте: вы создаёте новый шедевр в любимой DAW, вставляете в проект MIDI-файл, редактор показывает, что ноты в нём имеют восьмую длительность. Не обращая на это внимания, вы продолжаете творить. Но, постойте. А как DAW, собственно, понимает, что ноты в файле восьмые?

В статье попробуем разобраться, как времена в MIDI-файле соотносятся с главным форматом времени при работе с музыкой – тактами и долями. Результатом наших исследований будет законченный алгоритм на C#.

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments0

Четыре концепции в проектировании, способствующие повышению качества аудио вещей (AoT)

Level of difficultyEasy
Reading time4 min
Views1K

Ниже представлен перевод статьи, опубликованной в EDN.

Интернет вещей (IoT) - это не одноколейный конь, он воплощает в себе широкий спектр вариантов использования. Одно из ответвлений, Audio of Things или AoT, охватывает аудиотехнологии, такие как голосовое управление, связь, воспроизведение и восприятие, а также их развивающиеся отношения с интеллектуальными устройствами и машинами.

Этот термин был придуман DSP Concepts, дизайн-центром, который предоставляет производителям микросхем и OEM-производителям рабочие процессы в режиме реального времени для встраивания звуковых и голосовых функций в проекты с поддержкой звука. Компания утверждает, что ее строительные блоки AoT не зависят от процессора и полностью настраиваются.

По словам Саймона Форреста, главного технологического аналитика Futuresource Consulting, Audio of Things в настоящее время является постоянно расширяющейся предпосылкой из-за глобального спроса на продукты, ориентированные на аудио. “Адресный рынок аудиопродукции в 2021 году составит чуть менее 3,5 миллиардов устройств, из которых 2,1 миллиарда интегрированы в обработку голоса”.

Читать далее
Total votes 5: ↑1 and ↓4-3
Comments2

Python на колёсах

Reading time7 min
Views121K
Инфраструктура системы пакетов для Python долго подвергалась критике как от разработчиков, так и от системных администраторов. Долгое время даже само комьюнити не могло прийти к соглашению, какие именно инструменты использовать в каждом конкретном случае. Уже существуют distutils, setuptools, distribute, distutils2 в качестве базовых механизмов распространения и virtualenv, buildout, easy_install и pip в качестве высокоуровневых инструментов управления всем этим беспорядком.

До setuptools основным форматом распространения были исходные файлы или некоторые бинарные MSI-дистрибутивы для Windows. Под Linux были изначально сломанный bdist_dumb и bdist_rpm, который работал только на системах, основанных на Red Hat. Но даже bdist_rpm работал недостаточно хорошо для того, чтобы люди начали его использовать.

Несколько лет назад PJE попытался исправить эту проблему, предоставив смесь из setuptools и pkg_resources для улучшения distutils и добавления метаданных в Python-пакеты. В дополнение к этому он написал утилиту easy_install для их установки. По причине отсутствия формата распространения, поддерживающего метаданные, был предоставлен формат 'яиц' [egg].

Python eggs – обычные zip-архивы, содержащие python-пакет и необходимые метаданные. Хотя многие люди, вероятно, никогда намеренно не собирали egg'и, их формат метаданных до сих пор жив-здоров. И все разворачивают свои проекты с использованием setuptools.

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

Потом прошло еще немного времени, и отказ от бинарных пакетов стал доставлять неудобства. Люди всё больше и больше стали деплоить на облачные сервера, а необходимость перекомпиляции C-шных библиотек на каждой машине не слишком радует. Так как 'яйца' на тот момент были малопонятны (я так полагаю), их переделали в новых PEP-ах, и назвали 'колёсами' [wheels].
Читать дальше →
Total votes 44: ↑40 and ↓4+36
Comments38

Алгоритмы LZW, LZ77 и LZ78

Reading time8 min
Views154K

Хочется продолжить свою предыдущую тему об алгоритмах сжатия. В этот раз я расскажу об алгоритме LZW и немного об его родственниках алгоритмах LZ77 и LZ78.

Алгоритм LZW


Алгоритм Лемпеля — Зива — Велча (Lempel-Ziv-Welch, LZW) — это универсальный алгоритм сжатия данных без потерь.
Читать дальше →
Total votes 72: ↑65 and ↓7+58
Comments15

Заблуждения программистов относительно времени

Reading time3 min
Views90K
За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

На самом деле, я повидал так много заблуждений, которые оставляют след в чужих (и моих собственных) программах, что посчитал полезным составить список самых частых проблем.
Читать дальше →
Total votes 241: ↑218 and ↓23+195
Comments216

Заблуждения программистов о времени

Reading time12 min
Views74K

Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел»

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

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

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

Попытки собрать заблуждения про время и часовые пояса на Хабре уже были шесть и десять лет назад. Но без контрпримеров не так интересно.

Заблуждение 1. В сутках 24 часа или 86 400 секунд


Иногда и кое-где стрелки часов переводят, создавая сутки длиной в 23 и 25 часов — всё очевидно. Будет неплохо углубиться в случаи поэкзотичней.
Читать дальше →
Total votes 152: ↑145 and ↓7+177
Comments313

Настройка аутентификации JWT в новом проекте Django

Reading time28 min
Views93K

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

Читать далее
Total votes 7: ↑6 and ↓1+10
Comments13

Витая пара в современных сетях

Reading time5 min
Views25K


Мы, специалисты «Мальтима Телеком», продолжаем публиковать справочные материалы по телеком-оборудованию и комплектующим в помощь специалистам. На этот раз речь пойдёт о витой паре, поставками которой мы в том числе занимаемся. Этот товар проходит входной контроль в России: часть партии тестируется тремя разными сертифицирующими тестерами, которые показывают всю картину по кабелю. Если хотя бы один тестер выявляет несоответствие, кабель в продажу не запускается.
Читать дальше →
Total votes 18: ↑13 and ↓5+8
Comments7

Разнообразие версий Microsoft SQL Server и какая из них последняя?

Reading time71 min
Views88K

В свое время из-за немного громоздкой политики по выпуску обновлений для Microsoft SQL Server путался какой же из дистриубтивов нужно установить и откуда его скачать. Углубившись в данную тематику, в интернете нашел замечательные систематизирующие ресусры, которые отвечали на мои вопросы (они приведены в начале статьи).


Надеюсь собранная информация будет полезна не только мне.


Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments14

Сварка оптических волокон. Часть 1: кабели и их разделка, оптический инструмент, муфты и кроссы, коннекторы и адаптеры

Reading time25 min
Views587K

Волокна заряжены в сварочный аппарат

Здравствуйте, читатели Хабра! Все слышали про оптические волокна и кабели. Нет нужды рассказывать, где и для чего используется оптика. Многие из вас сталкиваются с ней по работе, кто-то разрабатывает магистральные сети, кто-то работает с оптическими мультиплексорами. Однако я не встретил рассказа про оптические кабели, муфты, кроссы, про саму технологию сращивания оптических волокон и кабелей. Я — спайщик оптических волокон, и в этом (первом своём) посте хотел бы рассказать и показать вам, как всё это происходит, а также часто буду в своём рассказе отвлекаться на прочие смежные с этим вещи. Опираться буду в основном на свой опыт, так что я вполне допускаю, что кто-то скажет «это не совсем правильно», «вот тут неканонично».
Материала получилось много, поэтому возникла необходимость разбить топик на части.
В этой первой части вы прочтёте про устройство и разделку кабеля, про оптический инструмент, про подготовку волокон к сварке. В других частях, если тема окажется вам интересной, я расскажу про методы и покажу на видео сам процесс сращивания самих оптических волокон, про основы и некоторые нюансы измерений на оптике, коснусь темы сварочных аппаратов и рефлектометров и других измерительных приборов, покажу рабочие места спайщика (крыши, подвалы, чердаки, люки и прочие поля с офисами), расскажу немного про крепёж кабелей, про схемы распайки, про размещение оборудования в телекоммуникационных стойках и ящиках. Это наверняка пригодится тем, кто собирается стать спайщиком. Всё это я сдобрил большим количеством картинок (заранее извиняюсь за paint-качество) и фотографий.
Осторожно, много картинок и текста.

Часть 2 здесь.
Читать дальше →
Total votes 340: ↑337 and ↓3+334
Comments128

Основы архитектуры IIS, или запросопровод для ASP.NET

Reading time20 min
Views208K



В прошлом году мне пришлось отсобеседовать около 10-15 кандидатов на должность веб-программиста на ASP.NET средней квалификации. В качестве вопросов «на засыпку», или «со звёздочкой», я просил рассказать, что происходит с HTTP-запросом от момента его поступления на 80-й порт сервера до передачи управления коду aspx-страницы. Статистика была удручающей: ни один из кандидатов не смог выдать хоть что-нибудь внятное. И этому есть своё объяснение: ни в MSDN с technet, ни на специализированном ресурсе iis.net, ни в книгах a-la «ASP.NET для профессионалов», ни в блогах данной теме не уделяется должного внимания – информацию приходится собирать чуть ли не по крупицам. Я даже знаю людей, которые решили написать свой собственный веб-сервер (Игорь, Георгий, привет!), чтобы не разбираться в работе IIS. Единственная толковая статья – «Introduction to IIS Architectures» Риган Темплин (Reagan Templin). Но и она остаётся на периферии интересов аспнетчиков.

Хотя мне лично уже не так интересны чисто технические вопросы, я решил собрать в кучу свой накопленный опыт, раскопать на просторах Сети любопытные детали и передать сие сакральное знание массам, пока оно ещё не устарело. Сразу оговорюсь, что статья ориентирована в большей степени на IIS 7.x, иногда будут ответвления про 6-ку. С 8-й версией в работе не сталкивался, поэтому решил обойти её в этой статье стороной. Но, уверен, читатель без труда разберётся с восьмёркой, освоив изложенный ниже материал.
Познать...
Total votes 71: ↑59 and ↓12+47
Comments9

История PCI — на пути к светлому будущему накопителей

Reading time4 min
Views46K


Современная революция систем хранения данных невозможна без развития интерфейсов, с помощью которых диски подключаются к системе. Одним из главных «героев» этого фронта сейчас является шина PCI Express. Скоростные накопители в наше время работают с интерфейсом PCIe Gen2 x4, обеспечивая скорость до 20 Гб/с, но так было далеко не всегда.
Читать дальше →
Total votes 81: ↑77 and ↓4+73
Comments37

MOXA Nport — взгляд изнутри

Reading time6 min
Views26K
Серверы сбора данных по последовательным портам MOXA Nport и им подобные — в настоящее время являются стандартом де факто в области построения систем передающих или принимающих данные через интерфейсы RS-232,RS-485 и RS-422.

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

Все, что может генерировать данные или управляться удаленно и имеет интерфейс RS-232, RS-485 и RS-422 — работает через данные преобразователи.

Общий смысл их использования — обычно заключается в следующем: пробросить интерфейсы RS-232,RS-485 и RS-422 через существующую локальную сеть, подключить устройство или прибор имеющий один из последовательных интерфейсов к ПК (серверу, SCADA) через Ethernet, подключится к прибору имеющему последовательный интерфейс через Internet для удаленного управления и т.п.

Цены на данные преобразователи не сильно высоки, младшие модели можно взять за 100-200$. Но учитывая что на любом автоматизированном производстве таких устройств может быть установлено сотни а то и тысячи — вырисовывается довольно лакомый кусочек для отечественных «импортозамещальщиков».

Им то я сегодня и попытаюсь помочь.

Что будем делать?

Во первых — разберемся в теории, как оно устроено внутри.

Во вторых — вычленим минимальный функционал для запуска работы в режиме Real Com Mode (то есть по сути для проброса виртуального COM порта до устройства через Ethernet).

В третьих — ради интереса разберем протокол поиска и конфигурирования устройства через утилиту NPort Administration Suite. Получим полное понимание, как создать pin-to-pin аналог железки, которую можно воткнуть вместо существующей MOXA Nport при этом получив полную поддержку со стороны родного ПО и драйвера.

Ну и на последок — попробуем посчитать, сколько индусов писало код прошивки MOXA.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments19

Как сгенерировать L3 network map

Reading time7 min
Views15K

Всем привет.

Многие из вас читали статью «Как создавать понятные логические (L3) схемы сети», после которой возникало непреодолимое желание задокументировать своё сетевое хозяйство. Два-три подхода, потом легко удавалось договориться с собой что изменения будут внесены в конце недели, месяца и т.д. По прошествии некоторого количества времени приходило понимание, что точечными изменениями уже не обойтись — надо так много двигать и компоновать, что проще всё сделать заново.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments12

Сравнительный обзор медиаконвертеров

Reading time7 min
Views14K


При общении с Клиентами, приходится часто слышать вопрос «А чем ваше оборудование отличается от аналогичного от фирмы “X“?». И в один из разов я всерьез задумался над вопросом «А и вправду, чем?» В этой статье я решил досконально сравнить медиаковертер Modultech с его безымянным аналогом (для краткости назовем его NO NAME) в форме классической распаковки девайсов на You-Tube.
Читать дальше →
Total votes 9: ↑3 and ↓60
Comments28

156 Run команд

Reading time4 min
Views8.5K
Надеюсь, что ни для кого не секрет, что в Windows есть возможность выполнять Run команды посредством вызова диалога Пуск-> Выполнить или используя горячие клавиши Win + R.
Это удобно для запуска приложений, к которым вы либо иначе доступ и не получите, либо получите, пройдя по папкам с большим уровнем вложенности (например для установки и удаления программы вам нужно зайти в Пуск -> Панель управления -> Установка и удаление или просто выполнить команду appwiz.cpl).

Поэтому, для того, чтобы ускорить работу за компьютером привожу список из 156 команды, которые вы можете выполнить из Run диалога. Особенно актуально это будет для системных администраторов:

access.cpl — специальные возможности
accwiz — мастер специальных возможностей
hdwwiz.cpl — мастер установки оборудования
appwiz.cpl — установка и удаление программ
control admintools — администрирование
acrobat — Adobe Acrobat
acrodist — Adobe Designer
acrodist — Adobe Distiller
imageready — Adobe ImageReady
photoshop — Adobe Photoshop
wuaucpl.cpl — автоматическое обновление
fsquirt — мастер передачи файлов через блютус
calc — калькулятор
certmgr.msc — сертификаты
charmap — таблица символов
chkdsk — проверка дисков
clipbrd — папка обмена
cmd — консоль
dcomcnfg — службы компонентов
compmgmt.msc — управление компьютером
Читать дальше →
Total votes 101: ↑77 and ↓24+53
Comments33

ModLook — сканер регистров ModBus. Отмечаем 20-летие программы

Reading time2 min
Views22K
Сегодня я бы хотел рассказать о программе, с помощью которой я начинал изучать протокол ModBus и ПЛК. Я ей пользуюсь до сих пор, и лично видел её в использовании у нескольких наладчиков. Если кому-то интересна история её создания или исходники прошу под кат.

image
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments9

Как устроена экосистема полупроводниковой индустрии

Reading time8 min
Views58K
В прошлом году выходило много статей на темы, связанные с полупроводниковой индустрией: нехватка чипов, американский закон CHIPS, зависимость от Тайваня и TSMC, роль Китая, и т.д.



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

Экосистема полупроводниковой индустрии


На наших глазах абсолютно всё переходит в цифровой вид. Полупроводниковые устройства – чипы, обрабатывающие цифровую информацию – проникли почти всюду. Они в компьютерах, автомобилях, бытовой технике, медицинском оборудовании, и т.п. В этом году компании из полупроводниковой индустрии планируют продать чипов на $600 млрд.
Читать дальше →
Total votes 60: ↑57 and ↓3+73
Comments66

Django Gmap v3 Widget — геолокация с поиском, сохранение координат и адреса в JSONField

Reading time6 min
Views10K
Привет. Была поставлена задача реализовать геолокацию (google maps v3) для пользователей в одном из проектов на django, хочу поделиться своим решением.

Необходимый функционал:

  1. Вывод карты с маркером текущего положения, возможность перемещать маркер (dragged), ставить по click событию
  2. Поиск по адресу (autocomplete)
  3. Сохранение как координат, так и самого адреса (если он имеет место быть)

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments2

Туториал по uplift моделированию: метрики. Часть 3

Reading time9 min
Views35K

В предыдущих туториалах (часть 1, часть 2) мы изучали методы, моделирующие uplift. Это величина, которая оценивает размер влияния на клиента, если мы взаимодействуем с ним. Например, отправляем смс или пуш уведомление. Давайте обсудим: как измерять качество uplift моделей?

Читать про uplift метрики
Total votes 6: ↑5 and ↓1+6
Comments0

Information

Rating
3,312-th
Registered
Activity

Specialization

Backend Developer, Web Developer
Git
SQL
Python
Django