Search
Write a publication
Pull to refresh
48
0
Send message

Как сделать процессорный звук в Жигулях

Reading time8 min
Views44K

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


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


Под катом будет много схем и графиков.

Правила хорошего вкуса от Линуса Торвальдса. Делаем код быстрее, проще и понятнее

Reading time5 min
Views49K
«Вкус — это способность судить о прекрасном»
И. Кант

Дирк Хондел, один из тех, кто стоял у истоков Linux, однажды сказал о создателе Linux Линусе Торвальдсе: «Линус не только блестящий программист: у него хороший вкус. Торвальдс находит простые и разумные пути решения проблем, умеет всё «разложить по полочкам». Сложные вещи он делает простыми. По-моему, это и есть главное отличие превосходного программиста от просто хорошего».

image

В недавнем интервью, примерно на 14-й минуте, Линус Торвальдс коснулся темы «хорошего вкуса в программировании». Хороший вкус? Ведущий попросил его остановиться на этом подробнее, и Линус, пришедший не с пустыми руками, показал пару слайдов.
Читать дальше →

Интерфейс ADM – что такое «Тетрада»

Reading time5 min
Views9.9K
Интерфейс ADM это внутренний стандарт компании «Инструментальные Системы». Он определяет правила соединения субмодулей ADM и базовых модулей. Ключевым элементом интерфейса является ПЛИС ADM. Изначально использовались ПЛИС серий FLEX10K и Acex 1K фирмы Altera. В 2003 году начался переход на ПЛИС Xilinx. Используются практически все серии ПЛИС от Spartan 2E до Kintex Ultrascale. Базовым элементом проекта ПЛИС является «тетрада». Данная статья именно об этом.
Читать дальше →

Подключение АЦП к ПЛИС. Особенности, сложности, реализация

Reading time18 min
Views69K

Всем привет! В данной статье речь пойдет о подключении микросхем АЦП к кристаллам ПЛИС. Будут рассмотрены основные особенности соединения узлов схем, представлены современные АЦП и их характеристики. В статье будут даны практические советы по быстрому и правильному подключению АЦП к ПЛИС с минимальными временными затратами. Кроме того, речь пойдет о принципах подключения тех или иных АЦП, будет рассмотрен входной буфер ПЛИС и его базовые компоненты – триггеры, узлы задержки IODELAY, сериализаторы ISERDES и т.д. Более детально с примерами программного кода на языке VHDL будет проведен обзор основных элементов, требуемых для качественного приёма данных от АЦП. Это входной буфер, узел упаковки данных для одноканальных и многоканальных систем, модуль синхронизации и передачи данных на базе FIFO, узел программирования АЦП по интерфейсу SPI, узел синтеза частоты данных – MMCM/PLL. Также в статье будет представлен обзор законченных устройств (в стандарте FMC) от ведущих зарубежных и отечественных производителей аналоговых и цифровых схем. В конце статьи вы найдете ссылку на исходные коды универсального узла приёмника данных от многоканальных схем АЦП. Код простой и гибкий в конфигурировании, он представлен на языке VHDL и заточен на микросхемы ПЛИС Xilinx 7 серии и выше, но может быть применен и в других кристаллах ПЛИС.
Читать дальше →

Исследователи создали эксплоит для получения root-доступа к Android-смартфонам с помощью уязвимости Rowhammer

Reading time4 min
Views25K


Международная группа исследователей из Австрии, Нидерландов и США, информационной безопасности разработала атаку, позволяющую получить root-доступ к большому количеству Android-устройств, пишет издание Ars Tehnica. Для этого эксплуатируется техника Rowhammer, позволяющая осуществлять манипуляции с данными, хранящимися в ячейках памяти. При этом, ранее считалось, что атаки с использованием уязвимости Rowhammer имеют ограниченные перспективы реального применения — новый эксплойт демонстрирует, что ей подвержено гораздо больше устройств, чем предполагалось (включая и работающие на ARM-чипах).

Исследователи создали специальное приложение-эксплойт Drammer, которое не требует для работы никаких особенных прав и не использует никаких Android-уязвимостей. Атака осуществляется с помощью уязвимости аппаратного обеспечения — аналогично описанной техники Rowhammer он «простукивает» биты памяти устройства, изменяя важные данные. Это позволяет получать root-доступ к гаджетам производства компаний LG, Motorola, Samsung, OnePlus и, возможно, других вендоров.

Поднимаем Owncloud с нуля с динамическим IP и Let's Encrypt. Тысяча слонов!*

Reading time16 min
Views96K


Давно хотел написать целостный туториал по поднятию Owncloud в условиях домашнего сервера или небольшой компании до 500 пользователей. Owncloud — это прекрасный open-source проект, который позволяет на собственной инфраструктуре поднять свой вариант сервера синхронизации. По возможностям очень похож на Dropbox, а в чем-то его и превосходит. Огромный плюс — отсутствие ограничений по объемам хранения, полный контроль над сервером. Минусы тоже очевидны: вам самим придется следить за всем этим безобразием и беспокоиться о надежности сервера, валяющегося на антресолях или в шкафу.

Совсем недавно мне подвернулась задача по развертыванию Owncloud в домашне-боевых условиях. Я честно отработал свои два литра кошерного русского имперского стаута и решил поделиться своим опытом, собрав все воедино. Итак, сегодня мы рассмотрим:

  1. Развертывание актуального LEMP-stack
  2. HTTPS. Let's Encrypt для Nginx с автоматическим обновлением сертификата
  3. Конфигурирование Nginx для Owncloud
  4. Кэширование php-apcu
  5. Подключение внешнего основного хранилища по NFS
Читать дальше →

Опыт телефонного собеседования в Google, демонстрирующий несостоятельность процесса найма

Reading time7 min
Views73K
«Диагноз — не конец, а начало дела».
Мартин Х. Фишер.

Недавно я проходил телефонное собеседование с кадровиком из Google. Поскольку я соответствовал критериям на такое (добровольное) собеседование, но не смог пройти тест, в этом посте перечислены вопросы и предполагаемые ответы на них. Этот пост может оказаться полезным тем, кому в один прекрасный день позвонят из Гугла.

Для ясности: я начал заниматься программированием 37 лет назад (мне тогда было 11 лет) и постоянно занимаюсь этим. Кроме того, 24 года назад (мне было 24) я был назначен директором по исследованиям и развитию; с тех пор среди многих других работ мною были проведены НИОКР по наиболее ответственным частям проектов TWD — все они поставляются, как коммерческие продукты:


Представитель Гугла подчеркнул, что требуется как опыт управления, так и современного программирования (редкое сочетание). Но наличие более 20 лет опыта в первом и почти 40 лет во втором оказалось недостаточным — я не смог дать «правильные ответы». Означает ли это, что Гугл слишком высоко поднимает планку или что у его кадровиков самих не хватает знаний, которые они, как предполагается, должны оценивать?

Давайте посмотрим!
Читать дальше →

Выключатель Gira + Z-Wave. 4-кнопочный радио выключатель на базе Z-Uno

Reading time5 min
Views14K


Какие задачи решает радио выключатель:

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

На данный момент существуют Z-Wave выключатели на батарейках, например Z-Wave.Me Wall Controller, но эти выключатели идут с определенным дизайном клавиш. Если вы хотите использовать выключатели Legrand, Gira и др., то тут на помощь приходит Z-Wave плата Z-Uno.

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

River Raid на FPGA

Reading time4 min
Views15K
Еще не делали River Raid на FPGA? Ок, тогда я сделаю.


Совсем недавно FPGA для меня был черным ящиком, а Verilog казался вообще магией — ну как можно написать программу, по которой построится схема на логических элементах? Изучить это я планировал давно, но без реальной железки даже не хотел начинать.

Как стать супер-мега-про машинного обучения за 15 минут

Reading time3 min
Views34K
image

Недавно на Хабре проскакивал пост vfdev-5 о DIGITS. Давайте поподробнее разберёмся что это такое и с чём его едят. Если в двух словах. Это среда, которая позволяет решить 30-50% задачек машинного обучения на коленке в течении 5 минут. Без умения программировать. Ну, при наличии базы, конечно. И более-менее адекватной карточки от NVIDIA.
Читать дальше →

Транспондер DST40: принцип работы, история появления и взлома, а также немного практики по брутфорсу

Reading time17 min
Views34K
Давным-давно, ещё в девяностых годах прошлого века, набирающий обороты автомобильный рынок остро нуждался в появлении серьёзных противоугонных систем (далее по тексту — иммобилайзеров). Для автоугонщиков в те времена не было особых препятствий, мешавших завести двигатель механической копией ключа или даже совсем без ключа — простым замыканием проводов. Нужны были иммобилайзеры, способные значительно затруднить процесс старта двигателя и дальнейшего угона автомобиля без родного ключа зажигания.

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

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

Далее по тексту все картинки будут кликабельными, чтобы при желании их можно было детально рассмотреть.
Читать дальше →

Подключаем джойстик от Dendy к Raspberry pi

Reading time5 min
Views19K
Однажды, насмотревшись всяких «Пока все играют», мне тоже захотелось поиграть на своём Raspberry pi. Да не просто поиграть, а поиграть используя реальное устройство. Для чего в переходе метрополитена за 150 рублей был куплен джойстик от Денди (ну не от денди, а Симбас Юниор). Те, кому интересно, что из этого получилось, могут ткнуть мышкой по кнопке ниже. В конце статьи будет ссылка на пруф.

Читаем далее

Создание разделяемого хранилища на базе CEPH RBD и GFS2

Reading time8 min
Views17K
Большинство ПО кластерных систем предполагает наличие файловой системы доступной со всех узлов кластера. Эта файловая система используется для хранения ПО, данных, для организации работы некоторых кластерных подсистем и т.д. Требования на производительность такой FS могут сильно отличаться для разных задач, однако, чем она выше, тем считается, что кластер более устойчив и универсален. NFS сервер на мастер-узле является минимальным вариантом такой FS. Для больших кластеров NFS дополняется развертыванием LustreFS — высокопроизводительной специализированной распределенной файловой системы, использующей несколько серверов в качестве хранилища файлов и несколько метаинформационных серверов. Однако такая конфигурация обладает рядом свойств, которые сильно затрудняют работу с ней в случае, когда клиенты используют независимые виртуализированные кластера. В системе HPC HUB vSC для создания разделяемой FS используется широко известное решение CEPH и файловая система GFS2.
main
Читать дальше →

Изучаем С используя GDB

Reading time6 min
Views109K
Перевод статьи Аллана О’Доннелла Learning C with GDB.

Исходя из особенностей таких высокоуровневых языков, как Ruby, Scheme или Haskell, изучение C может быть сложной задачей. В придачу к преодолению таких низкоуровневых особенностей C, как ручное управление памятью и указатели, вы еще должны обходиться без REPL. Как только Вы привыкнете к исследовательскому программированию в REPL, иметь дело с циклом написал-скомпилировал-запустил будет для Вас небольшим разочарованием.

Недавно мне пришло в голову, что я мог бы использовать GDB как псевдо-REPL для C. Я поэкспериментировал, используя GDB как инструмент для изучения языка, а не просто для отладки, и оказалось, что это очень весело.
Читать дальше →

Нейронные сети для начинающих. Часть 1

Reading time7 min
Views1.6M
image

Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

Поэтому сейчас, когда я достаточно хорошо освоил нейронные сети и нашел огромное количество информации с разных иностранных порталов, я хотел бы поделиться этим с людьми в серии публикаций, где я соберу всю информацию, которая потребуется вам, если вы только начинаете знакомство с нейронными сетями. В этой статье, я не буду делать сильный акцент на Java и буду объяснять все на примерах, чтобы вы сами смогли перенести это на любой, нужный вам язык программирования. В последующих статьях, я расскажу о своем приложении, написанном под андроид, которое предсказывает движение акций или валюты. Иными словами, всех желающих окунуться в мир нейронных сетей и жаждущих простого и доступного изложения информации или просто тех, кто что-то не понял и хочет подтянуть, добро пожаловать под кат.
Читать дальше →

Для любителей ПЛИС-ов, ASIC-ов, архитектуры и микроархитектуры — еще про семинары и про конвейеры

Reading time3 min
Views7.6K
Коллеги: как вы возможно уже знаете, компания Imagination Technologies (известная как разработчик GPU внутри Apple iPhone + продолжатель культового проекта Стенфорд/MIPS) вместе с РОСНАНО+МИСиС+МГУ+МФТИ+МИЭТ в Москве, ИТМО в Питере и киевских активистов из КПИ и КГУ — проводит серию семинаров по разработке микросхем и программированию встроенных микропроцессоров. Самый ближайший из этих семинаров будет уже на следующей неделе (18-20 октября в Алма-Ате). В этом посте — текущее почасовое расписание семинаров и немножко эстетичных изображений конвейеров встроенных микропроцессорных ядер, о длине, максимальной частоте и энергопотреблении которых мы немножко поговорим во время семинаров.



Итак расписания:
Читать дальше →

Удаление Whitelist в bios ноутбуков на примере Lenovo X230

Reading time5 min
Views152K
Недавно понадобилось поставить новую wifi карточку стандарта ac в свой ноутбук Lenovo x230, в котором есть whitelist для wlan карточек. Ниже опишу свои изыскания по отключению whitelist'а.


Читать дальше →

Высшая математика командной строки — GNU Octave

Reading time6 min
Views46K

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


Специализированные математические программы, уровень студент+


  1. GNU Octave.
  2. Scilab.
  3. Maxima.
  4. R.
  5. Sage.

На первом месте в этом списке находится Octave, и это не случайность. Исследователи из Университета Мэриленда в США провели сравнительный анализ математических вычислений, используя MATLAB, Octave, SciLab и FreeMat в простом сценарии и в сложном. В первом случае решали систему линейных уравнений а в втором — конечно-разностную дискретизацию уравнения Пуассона в двухмерном пространстве. Основной вывод — GNU Octave справляется с задачами лучше остальных открытых математических пакетов, демонстрируя результат (страницы 23 и 25) сопоставимый с матлабовским.

Читать дальше →

Радиопередатчик на системной шине

Reading time2 min
Views18K
Некоторые компьютеры в целях безопасности специально изолированы от внешнего мира (air gap или физическая изоляция). У них отсутствует доступ в интернет, нет локальной сети, WiFi, Bluetooth, отключены даже USB-интерфейс и аудиокарта. Как же в таком случае передать информацию с этого компьютера?

Новая программа System Bus Radio решает проблему. Даже в такой ситуации с её помощью можно передавать радиосигнал.

Давайте проверим. Исходный код опубликован на Github. Компилируем (автор проверял на Apple MacBook Air).

gcc main.c -Wall -O2 -o main

Запускаем.

./main

В радиоприёмнике, настроенном на частоту 1580 кГц АМ, зазвучит песенка "Mary Had a Little Lamb" в бесконечном цикле.
Читать дальше →

О развязке питания с примерами

Reading time8 min
Views185K
Когда я участвовал в проведении конкурса 7400, я понял, что многим из представленных логических схем для надежной работы не хватает простейших защитных элементов. Одним из самых часто встречающихся недостатков конструкции было отсутствие блокировочных емкостей. Позже, прочитав статью о законе Мёрфи, я решил немного написать о развязке и блокировочных конденсаторах.
Читать дальше →

Information

Rating
9,612-th
Registered
Activity