Если ваше хобби/DIY, как и моё, связано с компьютером, то на каком то этапе вам захочется использовать звук. Предлагаю поговорить о звуке и обменяться опытом. Конкретно говорить будем, про запись и воспроизведение звука на компьютере. Возьмем компьютер под управлением Linux, но и под Windows должно работать. Язык для программирования предпочитаю Python.
Разработка под Linux *
Пишем под *nix
Новости
Пишем аудио-разведчик своими руками
Было бы здорово иногда иметь под рукой программку, которая в наше отсутствие умеет записывать звук со встроенного микрофона нашего ноутбука и передавать его по сети на другой наш комьютер. А тот, в свою очередь, этот звук умел бы воспроизводить в режиме реального времени. Давай попробуем самостоятельно написать такую программу, тем более что это, как оказывается, не так уж и сложно.
Что мы в итоге хотим получить и какой алгоритм работы реализовать:
1. Сервер, который запускается на той машине, пространство вокруг которой мы хотим прослушивать. Он тихо ждёт, пока к нему не подключится клиент. Затем он открывает устройство записи звука, настроенное по умолчанию в системе, и начинает передавать аудио поток на машину клиента. При отключении клиента от сервера, звуковое устройство закрывается, чтобы не тратить ресурсы зря.
2. Клиент, который подключается к серверу и начинает принимать аудио поток и воспроизводить его в режиме реального времени. Для того, чтобы клиент мог правильно (в нужном формате) открыть устройство воспроизведения звука, он получает нужную мета информацию от сервера в Hello сообщении.
Алиасы в bash для быстрого набора команд Git
Командный интерпретатор bash позволяет задавать произвольные алиасы для разных команд и выражений. Алиасы не являются командами сами по себе, но им, как и командам, можно передавать аргументы. Алиасы позволяют сделать вызов громоздких команд очень простым, с легко запоминающимися названиями.
Использовать Git я привык исключительно из консоли, но на ввод длинных команд с разными аргументами тратится значительное количество времени. Поэтому я ввёл практику использования алиасов. Для безопасных команд я использовал короткие алиасы, которые по сути стали горячими клавишами, а для функциональных — простые короткие слова из состава команд Git. Если команда опасная, то можно сделать её в два слова, написанных через дефис, для исключения случайного ввода. На самом деле, использование алиасов для работы с Git широко практикуется, я решил лишь преподнести отдельный вариант подборки алиасов, которые для меня оказались очень удобными.
DIY VSCode плагин для Clojure
На энном году работы с использованием Clojure/Clojurescript в качестве основных языков разработки, я наконец-то дошел до стадии, когда «больше терперть уже нельзя», и написал таки свой плагин для этой цели. Это явилось результатом многолетних поисков, лишений и страданий. Как говаривал Мичурин: мы не можем ждать милостей от природы, взять их у нее – наша задача. Интересующихся прошу под кат.
Генерализованная изоляция адресного пространства
Обнаружение уязвимостей Meltdown и Spectre обратило всеобщее внимание на риски, связанные с совместным использованием общего адресного пространства. Даже не смотря на то, что есть специальные механизмы защиты, встроенные в железо, которые должны предотвращать доступ к конфиденциальным данным, очень часто эти уязвимости все равно удается использовать, чтобы эти данные вытащить. Поэтому вполне естественно, что первоначальные стратегии по снижению такого рода рисков включали в себя ограничение совместного использования адресных пространств, но это еще далеко не все, что здесь можно предпринять, и интерес к этой теме не угасает. И вот этот набор патчей, опубликованный Джунаидом Шахидом (Junaid Shahid) (содержащий работу Офира Вайса (Ofir Weisse) и вдохновленный более ранними патчами Александра Шартра (Alexandre Chartre)), как раз содержит то, что необходимо ядру для создания генерализованного механизма изоляции адресного пространства (address-space isolation — ASI).
Flutter for Desktop — новый подход к разработке приложений
Язык программирования Dart был изначально разработан как перспективная замена JavaScript в веб-приложениях (с поддержкой асинхронности, потоков, классической поддержки ООП и возможностью использования строгой типизации), но, к сожалению, в этом качестве он так и не достиг значительных успехов. Однако в дальнейшем компилятор Dart был доработан для других целевых платформ и наибольшего успеха достиг в сочетании с фреймворком Flutter как инструмент разработки высокопроизводительных мобильных приложений, создаваемых на основе реактивной модели. Но нужно отметить, что наряду с возможностями компиляции в целевые платформы Android и iOS (а также, разумеется, Web), Dart также может использоваться для создания приложений для операционных систем Windows, Linux и MacOS, что в сочетании с возможностями фреймворка Flutter и оптимизированных платформенных реализаций Flutter Engine и Embedder, представило новый путь к созданию нативных приложений с графическим интерфейсом. В этой статье мы рассмотрим возможности и особенности реализации desktop-приложений на Flutter и разберемся с механизмами интеграции внешних библиотек.
Пробрасывание LTO-1 стримера по iSCSI, проблемы и решения
Книга «Linux. Книга рецептов. 2-е изд.»
Карла Шрёдер (Carla Schroder) впервые села за компьютер в середине 1990-х годов. За годы, прошедшие с той поры, она работала системным и сетевым администратором в смешанных сетях Linux/Microsoft/Apple, журналистом и техническим писателем. Карла написала более 1000 руководств по Linux для различных изданий и в настоящее время пишет и поддерживает руководства для компании, производящей программное обеспечение для Linux корпоративного уровня. Она является автором книг Linux Cookbook (O’Reilly), Linux Networking Cookbook (O’Reilly) и The Book of Audacity (No Starch Press).
Запуск графических приложений в Docker
В основном, Docker привыкли использовать для запуска сервисов или процессов не предполагающих визуальной составляющей. Однако могут быть ситуации, когда в контейнере возникает необходимость открыть среду разработки и на месте продебажить один сервис или два сервиса, каждый в своем контейнере. В прошлой статье я писал, как запускать графические приложения в wsl, в текущей расскажу, как можно запустить разными способами в контейнере qtcreator. Аналогично можно будет поступить с любой средой разработки или программой.
Как начать писать программный код Си в ОС Linux (Руководство для совсем начинающих)
Этот материал рассчитан на людей, будущих программистов, которые только начинают разбираться в программировании под ОС Linux, или может быть долго были пользователями ОС Windows. Я попробую здесь показать прямое руководство к действию на примере ОС Ubuntu и тех простых инструментов, которые использовал некогда сам при изучении Си в процессе знакомства с Linux.
Два месяца работы и готово: что нового в ядре Linux 5.17
Источник картинки: OMG! Ubuntu!
Выхода нового ядра Linux ожидали многие, о чем можно судить хотя бы по количеству публикаций в технологических СМИ, предвкушавших новинки Linux 5.17. И, наконец, Линус Торвальдс представил новый релиз, опубликовав его 21 марта. Нового и хорошего действительно много, так что опробовать новую версию обязательно стоит, если вы этого еще не сделали.
Объём проделанной работы достаточно большой. Так, в новой версии приняли 14203 исправления от 1995 разработчиков. Общий размер патча составляет 37 МБ. Что касается изменений, то они затронули 11366 файлов, добавлено 506043 строк кода, удалено 250954 строк. Весьма значительная часть изменений в ядре, а это около 44%, связаны с драйверами устройств. Еще около 16% изменений имеют отношение к обновлению кода, имеющего отношение к аппаратным архитектурам, 15% — сетевой стек, 4 — файловые системы, ну и еще 4% изменений связаны с подсистемами ядра. О подробностях — ниже.
Как писать на Objective-C в Linux (с использованиям системы сборки CMake и автодополнением)
Запускаем Objective-C на Linux.
История: пишем скрипты на Go
Это история о том, как я попытался писать скрипты на языке Go. Здесь мы обсудим, когда вам может понадобиться скрипт на Go, какого поведения от него следует ожидать, а также рассмотрим его возможные реализации. В этой дискуссии мы глубоко обсудим скрипты, оболочку и шебанг-строки . Наконец, обсудим решения, обеспечивающие работоспособность скриптов на Go.
Разработка игры на Unity с нуля до релиза
Приветствую, Хабр! 👋
«Разработка игры с нуля до релиза» - это серии статей, где я покажу, как создать свою игру с самого нуля до публикации в Google Play и Itch.io на GNU\Linux 🐧
Python3 — ImportError: No module named 'cv2'
В заголовке известная ошибка python3.
Интерпретатор python2 импортирует opencv без ошибок при установке совместно с python3 в единой среде исполнения.
Краткая инструкция по локализации ошибки далее.
Кастомные Android-прошивки и всё, что с ними связано
Покупаешь новый смартфон и ходишь радостный пока опять новый кастом не накатил. Он и работает шустро, и игрушки идут лучше, уж побыстрее стока. Но тут прилетело OTA, ядро новое вышло, да и Magisk обновился уже — пора ставить апдейты и получать “бутлупы”. Да, от общего числа пользователей Android смартфонов доля тех, кто сидит на кастомах крайне мала. Однако, всё же людям приходят в голову странные мысли по типу: “А не прошить бы мне свой Xiaomi, что б летал как ракета”. По такому случаю статья, в которой рассказывается про кастомные Android прошивки от А до Я.
Как создать образ диска в Linux с несколькими разделами, не имея физического образца
Здравствуй дорогой читатель данного руководства. Меня зовут Андрей, и нет, я не алкоголик, а разработчик встраиваемых систем на базе Linux.
Данная статья является кратким руководством по созданию образа диска с несколькими разделами, куда можно было бы записать всякую всячину для передачи заказчику, а в дальнейшем и на производство.
Для чего это нужно? Все процессорные платы, разрабатываемые нашим предприятием, обладают слотом для sdcard и установленной на плате mmc. Загрузка системы производится либо с sd, либо c mmc. sd-карта является, как правило, временным решением, подкупает простотой установки. А mmc является постоянным решением, куда устанавливается уже финальное программное обеспечение. Переключение между способами загрузки осуществляется перемычками (джамперами на плате).
Tcl/tk: интегрированная среда разработки TKproE-2.30
Что же принципиально нового появилось в новой версии по сравнению с версией 2.20 помимо нового логотипа?
И еще немного про авто-тесты в QEMU
Привет, Хабр. Меня зовут Роман, я разработчик встраиваемых систем в Dannie и мы тут делаем умные камеры. По долгу службы, мне потребовалось завести эмуляцию прошивки для чипа из семейства MIPS. В рамках разработки проекта мы обозначили для себя задачу получения быстрой обратной связи при разработке ПО и прошивки. Для этого начали выстраивать CI/CD-цепочку с проверкой прошивки в эмуляторе. Одной из требуемых функций являлась возможность манипулировать окружением загрузчика (u-boot environment). В статье я расскажу что получилось и как из говна и палок завести авто-тесты прошивки в CI.
Вклад авторов
-
dlinyj 1035.6 -
Seleditor 640.0 -
Andrey2008 636.2 -
m1rko 537.2 -
maisvendoo 425.0 -
ru_vds 366.2 -
Bright_Translate 363.5 -
unxed 335.5 -
olegator99 335.0 -
temujin 331.0