Pull to refresh
11
0
Георгий Виноградов @ironsnake

User

Send message

Механическая видеостена с ядерным Ambilight на 2300 зон

Level of difficultyEasy
Reading time8 min
Views50K

Однажды я подбирал себе новый монитор и немного увлёкся — получилось чудище во всю стену из трёх телевизоров с ядерной 2318-зональной подсветкой 40 000 люмен на STM32.

Читaть далее
Total votes 112: ↑109 and ↓3+133
Comments136

Как мы тестируем системы микрофонов на STM32: опыт разработчиков устройств Яндекса

Reading time7 min
Views13K


Привет, я Геннадий «Крэйл» Круглов из команды аппаратных решений Яндекса.

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

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

Это кажется несложным только на первый взгляд. В этом материале я объясню, как мы решили задачу передачи звука с семи микрофонов с PDM-интерфейсом на компьютер через USB, с какими аппаратными и программными нюансами столкнулись и как их преодолели (спойлер: этот подход может быть адаптирован для матриц с числом микрофонов ≤ 8). В конце поста поделюсь ссылкой на стрим, где я показываю процесс разработки на микроконтроллере STM32, и расскажу о следующей серии.
Читать дальше →
Total votes 27: ↑24 and ↓3+32
Comments28

Как я собрал «умный» органайзер для электронных компонентов

Reading time13 min
Views28K
Привет. Я Александр Бурага, разработчик из команды роботов и беспилотных автомобилей Яндекса. Но сегодня речь пойдёт не о них, а о моём личном проекте, над которым тружусь дома.

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



Мне часто случается вооружаться паяльником — например, дорабатывать или монтировать отдельные радиоэлектронные блоки — с проблемой бессистемного хранения столкнулся и я. Под катом вас ждёт рассказ о том, как я пытаюсь решить её с помощью «умного» органайзера, который понимает речь и запоминает своё содержимое.
Читать дальше →
Total votes 52: ↑49 and ↓3+65
Comments110

Полезные консольные Linux утилиты

Reading time13 min
Views109K

В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Pentest утилиты, так как у них есть своя подборка.


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Читать дальше →
Total votes 96: ↑92 and ↓4+110
Comments110

Метеостанция на максималках

Reading time20 min
Views35K

Про метеостанцию на Хабре писали не раз и не два, и наверное не с десяток раз. И вот настало моё время. Решил с вами поделиться своей. 

Читать далее
Total votes 18: ↑16 and ↓2+22
Comments55

Использование локального .bashrc через ssh и консолидация истории выполнения команд

Reading time7 min
Views7.5K
Если вам приходится работать с большим количеством удаленных машин через ssh то возникает вопрос как унифицировать shell окружение на этих машинах. Копировать заранее .bashrc не очень удобно, а зачастую невозможно. Давайте рассмотрим вариант копирования непосредственно в процессе соединения:

[ -z "$PS1" ] && return

sshb() {
    scp ~/.bashrc ${1}:
    ssh $1
}

# the rest of the .bashrc
alias c=cat
...

Это очень наивный способ с несколькими очевидными недостатками:
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments23

Телепортация тонн данных в PostgreSQL

Reading time11 min
Views6K
Сегодня я поделюсь некоторыми полезными архитектурными решениями, которые возникли в процессе развития нашего инструмента массового анализа производительности серверов PostgeSQL, и которые помогают нам сейчас «умещать» полноценный мониторинг и анализ более тысячи хостов в то же «железо», которого сначала едва хватало для одной сотни.


Intro


Напомню некоторые вводные:

  • мы строим сервис, который получает информацию из логов серверов PostgreSQL
  • собирая логи, мы хотим что-то с ними делать (парсить, анализировать, запрашивать дополнительную информацию) в режиме онлайн
  • все собранное и «наанализированное» надо куда-то сохранить

Именно про последний пункт — как все это можно доставить в PostgreSQL-хранилище, и поговорим. В нашем случае таких данных кратно больше, чем исходных — статистика нагрузки в разрезе конкретного приложения и шаблона плана, потребление ресурсов и вычисление производных проблем с точностью до отдельного узла плана, мониторинг блокировок и многое другое.
Более полно о принципах работы сервиса можно посмотреть в видео доклада и прочитать в статье «Массовая оптимизация запросов PostgreSQL».
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments8

PostgreSQL Antipatterns: работаем с отрезками в «кровавом энтерпрайзе»

Reading time6 min
Views9.1K
В различных бизнес-приложениях регулярно возникает необходимость решить какую-либо задачу с отрезками/интервалами. Самое сложное в них — понять, что это именно одна из таких задач.


Как правило, они отчаянно маскируются, и даже у нас в СБИС их найти можно в абсолютно разных сферах управления предприятием: контроле рабочего времени, оценке загрузки линий АТС или даже в бухгалтерском учете.
«Отличие enterprise [решения] от всего остального — он всегда идёт от запросов бизнеса и решает какую-то бизнес-задачу.» [src]
Вот и давайте посмотрим, какие именно прикладные задачи и как можно решить с помощью PostgreSQL и сократить время анализа данных с нескольких секунд на бизнес-логике до десятков миллисекунд, умея эффективно применять следующие алгоритмы непосредственно внутри SQL-запроса:

  • поиск отрезков, пересекающих точку/интервал
  • слияние отрезков по максимальному перекрытию
  • подсчет количества отрезков в каждой точке
Читать дальше →
Total votes 23: ↑22 and ↓1+27
Comments2

2 SIM для дачного роутера — это много или мало?

Reading time6 min
Views41K
В прошлом году я проводил тесты 3G/4G роутеров для загородного дома и эта тема показалась многим интересна. После тестов я даже один роутер встроил в свой автомобиль, чтобы иметь стабильный доступ в Интернет в пути, но всё же наиболее важным мне показалась стабильность доступа в сеть дома. В конце прошлого года я обратил внимание, что на рынке появились российские разработки двухсимочных 3G/4G роутеров. И это не просто поделки на базе USB модемов, а полноценное устройство на базе Linux-машины. Я обзавелся им, потестировал месяц и сегодня решил поделиться результатами своих наблюдений. По традиции, сделал видео для тех, кто не любит читать.

Total votes 13: ↑12 and ↓1+19
Comments50

Как спроектировать корпус для прибора. Полное руководство

Reading time16 min
Views74K
От идеи до серийного производства: подробно об этапах разработки и о технологиях производства корпусов — факты, примеры из практики, фото. Если вам нужен корпус для прибора, обязательно прочитайте.

image
Изучая рунет, я не смог найти ни одной статьи, которая описывала бы ВСЕ этапы разработки и производства корпуса устройства.

Ни одной. Всё, что есть в интернете, касается лишь одного или двух аспектов этого процесса. Ну например: давайте набросаем корпус и распечатаем на 3D-принтере. Или купим типовой и насверлим в нём отверстий. Хотя на Хабре и есть пара материалов, но они тоже не так полны информацией, как могли бы быть.

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

Как спроектировать корпус — схема работы


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

Разработка корпуса — процесс, разбитый на несколько обязательных этапов. Это даже обсуждать не буду: проверено много раз. Даже если вы не собираетесь связываться с «большим» производством (например, если планируете делать устройство только для себя), всё равно лучше бы вам соблюдать правильную последовательность этапов.

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

Вот схема, по которой мы пойдем:
Читать дальше →
Total votes 149: ↑149 and ↓0+149
Comments69

Телефонные мошенники. Действие второе, в котором я срываюсь и бегу до ближайшего банкомата

Reading time8 min
Views134K


Итак, по реакции публики я увидел, что первое действие вполне «зашло», поэтому продолжу. Общий хронометраж моих разговоров составил (по «действиям»): 7:10, 18:23, 42:14, 3:51. Непродолжительность финального фрагмента связана с тем, что я понял, что с той стороны находятся исключительно непробиваемые личности. Я мог бы еще часами «ходить» по городу, но мои силы уже были на исходе. Поэтому я сознался в содеянном сам и попрощался.

Положив трубку после разговора с «лже-Дмитрием» я ожидал продолжения банкета на следующий день. Но нет, господа были весьма нетерпеливы и перезвонили мне почти сразу же. Чуток поломав свою легенду.
Читать дальше →
Total votes 126: ↑117 and ↓9+108
Comments331

Что показывает вольтметр, или математика розетки

Reading time7 min
Views116K


О чем эта статья


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

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

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

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

Кому не интересно читать про интегралы, ГОСТы и фазы — могут сразу переходить к заключению.
Читать дальше →
Total votes 138: ↑135 and ↓3+132
Comments161

Опыт создания сборок Linux под одноплатники с поддержкой обновлений

Reading time9 min
Views29K
image

Введение


На данный момент, на рынке представлен большой ассортимент одноплатников на любой вкус по приемлемой цене.

Как правило, различные сборки от производителей, предназначены для оценки платформы и являются отправной точкой нового проекта, поэтому не всегда подходят под конкретные задачи. В задачах где требуется высокая надежность, перед разработчиком встает вопрос, как доработать дистрибутив и потом не поплатиться за это полной переработкой образа и системы обновления.
Читать дальше →
Total votes 82: ↑82 and ↓0+82
Comments65

pg_stat_statements + pg_stat_activity + loq_query = pg_ash?

Reading time10 min
Views3.6K
В качестве короткого дополнения к статье Попытка создать аналог ASH для PostgreSQL.

Задача


Необходимо связать историю представлений pg_stat_statemenets, pg_stat_activity. В результате, используя историю планов выполнения из сервисной таблицы log_query, можно получить очень много полезной информации, для использования в процессе решения инцидентов производительности и оптимизации запросов.
Предупреждение.
В связи с новизной темы и незавершением периода тестирования, статья может содержать ошибки. Критика и замечания всячески приветствуются и ожидаются.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments7

Попытка создать аналог ASH для PostgreSQL

Reading time23 min
Views7K

Постановка задачи


Для оптимизации запросов PostgreSQL, очень требуется возможность анализировать историю активности, в частности – ожидания, блокировки, статистика таблиц.

Имеющиеся возможности


Инструмент анализа исторической нагрузки или «AWR для Postgres»: очень интересное решение, но, нет истории pg_stat_activity и pg_locks.

Расширение pgsentinel :
"Вся накопленная информация хранится только в оперативной памяти, а потребляемый объём памяти регулируется количеством последних хранимых записей.

Добавляется поле queryid — тот самый queryid из расширения pg_stat_statements (требуется предварительная установка).
"

Это конечно сильно бы помогло, но самая неприятность именно первый пункт “Вся накопленная информация хранится только в оперативной памяти ”, т.е. имеем место импакт на целевую базу. К тому, же нет истории блокировок и статистики таблиц. Т.е. решение вообще говоря неполное: “Готового пакета для установки пока нет. Предлагается скачать исходники и собрать библиотеку самостоятельно. Предварительно требуется установить «devel»-пакет для своего сервера и в переменную PATH прописать путь до pg_config.”.

В общем – возни много, а в случае серьезных продакшн баз, может быть, и не будет возможности что-то делать с сервером. Нужно опять, придумывать, что-то свое.

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

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments6

Разбираемся с латинскими сокращениями и фразами в английском языке

Reading time6 min
Views64K


Полтора года назад, читая работы про уязвимости Meltdown и Spectre, я поймал себя на том, что не очень понимаю разницу между сокращениями i.e. и e.g. Т.е. по контексту вроде бы понятно, но потом вроде бы как-то и не совсем то. В результате я тогда сделал себе небольшую шпаргалку именно по этим сокращениям, чтобы не путаться. И тогда же появилась идея этой статьи.


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

Читать дальше →
Total votes 143: ↑142 and ↓1+141
Comments72

Процедурная генерация планет

Reading time19 min
Views38K

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

Читать дальше →
Total votes 96: ↑94 and ↓2+92
Comments17

Генерация подземелий в Diablo 1

Reading time15 min
Views54K
image

Diablo 1 — это классический roguelike 1996 года в жанре hack and slash. Это была одна из первых успешных попыток познакомить широкие массы с roguelike, которые до этого имели нишевую графику в виде ASCII-арта. Игра породила несколько сиквелов и множество имитаций. Она известна своей тёмной, мрачной атмосферой, сгущающейся по мере спуска игрока в подземелья, располагающиеся под городом Тристрам. Это была одна из первых для меня игр с процедурной генерацией карт, и возможность генерации столь правдоподобных уровней просто потрясла меня.

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

Благодарю Дэвида Бревика и команду Blizard North за создание такой потрясающей игры, а также galaxyhaxz и команду Devilution за их удивительную работу по восстановлению читаемого исходного кода проекта.
Читать дальше →
Total votes 75: ↑75 and ↓0+75
Comments29

Минимум один трюк Vim, про который вы не знали

Reading time10 min
Views35K
Я уже восемь лет работаю в Vim и постоянно открываю что-то новое. Принято считать это достоинством Vim. Как по мне, так это недостаток открытости: куча скрытых функций спрятаны слишком глубоко.

Вот говорят о красоте модального редактирования и текстовых объектах, но мне кажется, что суть Vim не в этом. Vim — это лоскутное одеяло из подсистем, под завязку забитых дополнительными инструментами. Только в обычном режиме редактирования более сотни комбинаций клавиш! Такая плотность инструментария в значительной степени объясняет, почему Vim настолько полезен. Если «показать все теги для ключевого слова» — это просто g], то этой командой будут пользоваться гораздо чаще.

В системах с недостатком открытости приходится полагаться на руководства. Но для Vim их не так уж много. Есть статьи для новичков, такие как ciw (не путать с CIA, мануалом ЦРУ по Vim) и тому подобное. И есть статьи экспертов, которые погружаются в подсистемы. Но никто на самом деле не говорит об этих особых трюках, которые заставляют воскликнуть: чёрт побери, как мне это было нужно в течение последних шести лет!
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments16

Пеленгатор на дополненной реальности

Reading time5 min
Views27K

image(скриншот или фото)


Когда я только начинал инженерную деятельность разработкой пеленгаторов, в головах опытных товарищей, называемых нами, молодыми, за глаза "дедами", бродила мечта о “пеленгаторе на пупке”. “Это — говорили они — такой маленький пеленгатор, который можно носить с собой и пеленговать украдкой. Вот, дескать, нам приходится таскать на себе такие тяжести на крышу и обратно (хотя таскала, конечно, молодежь), а они, молодежь, никак не разработают такую вещь”. Смотря на стоящие на столе огромные железяки, мы считали их немного не в себе.


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


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


Ужасный рок! Но я осмотрелся и увидел, что пеленгаторы могут быть нужны обычным людям. Это давало надежду!

Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments87

Information

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