Все потоки
Поиск
Написать публикацию
Обновить
242.29

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Blueprint: удобный инструмент для создания UI на Gtk4

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.7K

Разметку для Gtk-приложений можно создавать несколькими способами. Это можно сделать при помощи средств самого языка программирования, на котором пишется программа. Или же применить визуальный конструктор, типа Cambalache, который, в свою очередь, создаст специальный ui-файл в формате XML.

Blueprint — это язык разметки, а также компилятор, специально созданный для приложений написанных на Gtk4.

Читать далее

Язык программирования Vala и где он используется. Создаем простое приложение для прослушивания радио

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров5.9K

Vala был разработан для более простой и быстрой разработки приложений с использованием библиотеки GTK. Этот язык уникален тем, что код при компиляции транслируется в код на языке C, а уже потом преобразуется в машинный. Благодаря этому скорость выполнения программы на Vala схожа со скоростью этой же программы на языке C, хотя работать с ним гораздо проще.

В этом посте я хотел бы привести примеры из собственного опыта создания программ на языке программирования Vala.

Читать далее

Дорожная карта навыков разработчика на C++

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров75K

Джеймс Гослинг как-то сказал, что Java — это C++, из которого убрали все пистолеты, ножи и дубинки, однако практика показывает, что «ножи и дубинки» становятся классным инструментом в руках опытных разработчиков. В общем, немалая часть проклятий в адрес C++ объясняется элементарным «вы просто не умеете его готовить». Мы в «Лаборатории Касперского» умеем готовить «плюсы» и поэтому любим их. C++ — низкоуровневый язык, который позволяет работать с железом и писать быстрый код и при этом содержит массу возможностей. В экосистеме «плюсов» куча проработанных паттернов, best practices и готовых библиотек под разные задачи. Язык динамично развивается — но сохраняет обратную совместимость. 

В этом посте мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в С++-разработке.

Отправляемся

Mediastreamer2. Применение Lua-машины в фильтрах

Время на прочтение13 мин
Количество просмотров982

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

Код программ данной главы можно скачать с Github по ссылке:

https://github.com/chetverovod/Mediastreamer2_LuaFilter

Приступим к практической реализации. Для этого можно вспомнить как создается новый фильтр, см. главу 4. В этой схеме источником звукового сигнала может быть либо сигнал с линейного входа звуковой платы (sound_card_read) либо генератор DTMFсигнала (dtmf_generator). Далее данные попадают на вход разрабатываемого Luaфильтра (lua_filter), который осуществляет их преобразование в соответствии с загруженным в него скриптом. Затем данные поступают на разветвитель (Tee), который из входного потока образует две копии, которые выдает на два выхода. Один из этих потоков поступает на регистратор (recorder) и на звуковую карту для воспроизведения (sound_card_write). Регистратор (*recorder*), он сохраняет их на диск в формате raw (wavфайл без заголовка). Таким образом мы сможем прослушать и записать результат работы Lua-фильтра.

Читать далее

Как ChatGPT помогла мне исправить баг в far2l, turbo и wxWidgets

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров10K

Работая над проектом far2l (порта Far Manager) для Linux, я наткнулся на один очень красивый баг, который в итоге удалось починить только с помощью нейросети ChatGPT. Причём баг оказался не столько в самом far2l, сколько в проекте кроссплатформенной UI библиотеки wxWidgets. Бесплатная версия ChatGPT (3.5) с задачей справиться не смогла, а вот платная (4) таки справилась. Сегодня поделюсь с вами рассказом о том, как это было.

Читать далее

C++, ping и traceroute

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров13K

Изучая сетевое программирование и имея в портфолио несколько проектиков на C++, связанных с сетевым программированием, я решил написать что-нубудь, что будет иметь реальное практическое применение.

Первое, что мне пришло в голову - утилита ping.

Читать далее

Руководство по Кросс-Платформенному Системному Программированию для UNIX и Windows: Уровень 1

Время на прочтение68 мин
Количество просмотров13K

С помощью этого учебного материала мы научимся писать кросс-платформенный код на Си, используя системные функции популярных ОС (Windows, Linux/Android, macOS и FreeBSD): управление файлами и файловый I/O, консольный I/O, пайпы (неименованные), запуск новых процессов. Мы напишем свои небольшие вспомогательные функции поверх низкоуровневого системного АПИ (API), для того чтобы наш основной код, используя эти функции, мог работать на любой ОС без изменений. Этот учебный материал — начального уровня. Я делю сложные вещи на части, чтобы примеры кода здесь не были слишком заумными для тех, кто только что начал программировать на Си. Мы обсудим различия между системными АПИ и разберёмся, как создать кросс-платформенный программный интерфейс, который скрывает все эти различия от пользователя этого интерфейса.

Читать далее

Когда один TCP-порт может быть поделён

Время на прочтение19 мин
Количество просмотров15K

Вы замечали, как простые вопросы иногда приводят к сложным вопросам? Сегодня мы попытаемся подступиться к одному из таких вопросов. Категория — наша любимая: сетевые аспекты Linux.

Читать далее

Компактный make для STM32 с USB

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров7.3K

Дата появления микроконтроллеров STM32, судя по datasheet, 2007 год, и с тех пор они признаны очень успешным и популярным чипом. Поэтому для них уже написано множество готовых примеров с поддержкой почти всех технологий как самим вендором так и комьюнити. Это и всевозможные USB устройства включая флешку и звуковую карту, и целочисленные варианты кодеков (WMA, Speex), и даже готовые сборки под ethernet с lwip стеком так же в наличии. В то время комьюнити пытается догнать вендора и написало библиотеку libopencm3, уже в отличии от оригинала, основанную на make, а не привязанную к среде. И в ней есть так же примеры с USB. И вот, на фоне всего этого я представил что STM32 ничем не сложнее меги, вооружившись таблицей разметки памяти с адресами регистров начинаю писать еще один вариант стандартной библиотеки для STM32. Гораздо более наивный, но зато компактный. Смыл был однозначно, я вообще считаю что если не понравился любой стандартный продукт, то это повод переписать его полностью, хотя вы можете со мной не согласиться.

Читать далее

Король умер. Да здравствует Nxs-backup v3.0

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5.5K

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

Читать далее

Как разработать драйвер Linux с нуля

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров27K
image

Недавно я занимался изучением IoT и, так как мне не хватало устройств, при попытках симулировать работу прошивки я часто сталкивался с неимением нужного /dev/xxx. Так что я стал задумываться, а могу ли написать драйвер самостоятельно, чтобы заставить прошивку работать. Независимо от того, насколько сложно это будет, и удастся ли воплотить такое намерение, в любом случае вы не пожалеете, если научитесь разрабатывать драйвер Linux с нуля.
Читать дальше →

Linux-порт Far Manager: новости весны 2023

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров28K

Обычно я пишу статьи об развитии проекта far2l — порта знаменитого Far Manager под Linux, MacOS и BSD (а теперь ещё и Haiku) раз в год. Но иногда случается так, что объем новостей на статью набирается быстрее. Недавно произошло сразу несколько важных событий, поэтому дожидаться конца года не буду, а опубликую самое интересное сразу.

Нас взяли в Debian!

Это, пожалуй, главная новость. К сожалению, в Bookworm мы попасть не успели, так что ждите нас в следующем выпуске, или в Ubuntu 23.10. Да, можно будет делать sudo apt install far2l, без всяких сложностей с ppa или самостоятельной сборкой!

Читать далее

Удивительное рядом. Как устроен буфер обмена в Windows и Linux

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров24K
Опенсорсная утилита CopyQ показывает содержимое буфера обмена на всех ОС и сохраняет историю

Буфер обмена — один из основных элементов GUI, но он сложен в реализации. Подводных камней настолько много, что вы больше никогда не сможете произнести слово «копипаст» с презрительным выражением. Есть тысячи приложений и форматов данных. Невозможно обеспечить полную конвертацию всего во всё.

В некоторых случаях данные вообще нигде не сохраняются по нажатию Ctrl+C. И по нажатию Ctrl+V будет возвращён NULL. Shit happens, как говорится…
Читать дальше →

Ближайшие события

Как создать аппаратный эмулятор CD-ROM без паяльника

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров18K

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

Существует множество решений, как можно установить операционную систему с ISO-образа без записи его на оптический носитель. Я уже затрагивал тему ISO-образов в моих статьях: «Раскрываем секреты загрузочных ISO-образов» и «Что вам нужно знать о внешних загрузочных дисках».

В этой статье я хочу рассказать о ещё одном способе, который, как оказывается, вшит в ядро Linux. Если ваш одноплатный компьютер имеет USB OTG-разъём, и на него возможна установка Linux, то вы c большой долей вероятности можете сделать из одноплатника аппаратный эмулятор привода оптических дисков.

Меня этот способ заинтересовал. Я проверил его сам и, получив положительный результат у себя, решил поделиться с вами.

Я сам узнал много интересного, систематизировал свои знания, поэтому надеюсь, что чтение будет познавательно и интересно для вас.
Читать дальше →

Особенности национального ПО: обзор РЕД ОС

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров37K

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

Именно поэтому было решено посвятить статью одному из таких продуктов. Речь пойдет о российской операционной системе РЕД ОС — дистрибутиве, построенном на базе ядра Linux и пакетной базе RPM. Со слов разработчиков дистрибутива, РЕД СОФТ опирается на опыт ведущих мировых сообществ Open Source и придерживается конвенций о наименовании пакетов и спецификации сборок.

Решающим фактором в выборе РЕД ОС является наличие свидетельства государственной регистрации программ ЭВМ и ее наличие в едином реестре российских программ.

В рамках статьи будет продемонстрировано развертывание простого Bitrix окружения на этой ОС, а именно развертывание стандартного LEMP (Linux, Nginx, MySQL, PHP) и установка дополнительных решений для работы проекта на данном дистрибутиве. Однако мы посчитали скучным описание установки стека LEMP только из родного репозитория, поэтому решили в рамках статьи развернуть СУБД MySQL 5.7, пакеты которой отсутствуют в репозиториях РЕД ОС. Как показывает наша практика, данная версия MySQL все еще остается одной из самых популярных для LEMP‑стек проектов.

Читать далее

Avalonia и котики и дизайн для разработчика

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.3K

В эпоху невероятной популярности ChatGPT и OpentAI все кинулись играть с их инструментами и использовать API в своих продуктах. Я был в общих рядах и сделал продукт для тех, кому затруднительно воспользоваться официальным сайтом ChatGPT. Но в этой статье речь пойдет не о восхитительных продуктах MS, а о создании интерфейса с котиками на основе этого продукта.

Итак, у нас стоит задача: создать десктопный чат с GTP3, которым будет удобно пользоваться человеку, далекому от пк.

Читать далее

KVM: Что такое Kernel-based Virtual Machine?

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров79K

Начнем с простого вопроса:

Что означает QEMU/KVM или QEMU-KVM?

Можно ответить - это QEMU + KVM или qemu-system, запущенный с kvm в качестве ускорителя. Но в какой-то степени это еще и анахронизм, так как с появлением KVM его разработчики для интеграции с QEMU поддерживали отдельный форк qemu-kvm, но начиная с QEMU версии 1.3 (декабрь 2012) все основные изменения из qemu-kvm были перенесены в главную ветку QEMU, а qemu-kvm объявлен устаревшим.

В разных дистрибутивах до сих пор еще можно встретить исполняемый файл qemu-kvm или просто kvm, но это лишь обертки над qemu-system:

exec qemu-system-x86_64 -enable-kvm "$@"

или симлинки:

/usr/bin/kvm -> qemu-system-x86_64

А в самом qemu существует проверка:

Читать далее

Как я заставил работать Netflix на Asahi Linux

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров5.9K

Год назад я купил макбук. Полгода назад macOS на нем сказала "ой, все", и он окирпичился. Я решил не переустанавливать систему, а попробовать Asahi Linux, и пока что не пожалел об этом. Хотя одна вещь все же раздражала — не работали Netflix и официальное приложение Spotify.

Если честно, Netflix мне не очень-то и нужен — у BitTorrent сейчас намного лучше UX. Но к Spotify я очень привязался, и предпочитаю интерфейс именно у официального клиента, хотя многим это и покажется странным. Но официального клиента Spotify для Linux на архитектуре aarch64 пока что не существует.

Итак, мы начинаем наш челлендж попробуй не нарушить DMCA 2023! Наша задача — понять, как смотреть Netflix на Asahi Linux, не обходя и не ломая DRM. (Без этого условия решения уместится в 280 знаков).

Читать далее

Колдовской NeoVIM. Часть пятая. «Окно в… редакторе. И фолды»

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров7.4K

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

Читать далее

Как настроить OpenVPN на Debian 11. Часть 1

Время на прочтение11 мин
Количество просмотров51K

Когда вы настраиваете удалённый доступ, важно не только предоставить всем сотрудникам подключение к нужным сервисам, но и позаботиться о безопасности. В этом помогает VPN — виртуальная частная сеть. VPN-сервер действует как единая точка входа: он аутентифицирует пользователей и создаёт зашифрованный туннель между их устройствами и частной сетью. А ещё он считается более гибким решением, чем, например, SSH Jump Server. 

Вы можете использовать платный VPN или создать и администрировать собственный. В этой статье разбираем, как настроить OpenVPN на Debian 11.

Читать далее

Вклад авторов