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

Linux *

Пишем под *nix

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

Fullstack v2: учимся писать UI на Go

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

Меня зовут Илья Глухов.  Последние 7 лет я пишу на Go. Я люблю этот язык, а ещё люблю задаваться странными, на первый взгляд, вопросами. Например, как разные интересные штуки, которые мы пишем на Go взаимодействуют с пользователем? В классическом бэкенде мы при помощи RPC (Remote Procedure Call), протокола HTTP или разных очередей модифицируем поведение нашей программы. А что насчёт graphic UI? Он же из фронтенда? Или нам так только кажется? Давайте  создадим пользовательский интерфейс (UI) на Go. Выбор решений разнообразен: Gopherjs, gomobile, обёртки для Qt, GTK и много чего ещё. Но если мы хотим добиться кросс-платформенной совместимости для браузеров, мобильных устройств и десктопов, нам нужен универсальный UI. Давайте на практическом примере разберём как создать его на Go.

Читать далее

История оболочки Bash и чему она нас может научить

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

В этот день, практически в канун католического рождества, 23 декабря 1996 года, вышла оболочка Bash версии 2.0. Последний мажорный релиз на сегодня — это версия 5.3. Сейчас Bash встроена почти во все версии Linux и MacOS, а также заявлена как встроенный компонент Microsoft Windows.

Bash поставляется по умолчанию почти во всех дистрибутивах Linux и современных версиях MacOS и, как ожидается, вскоре он станет неотъемлемой частью Windows Terminal. Bash действительно повсюду и это не фигура речи. Как до этого дошло? В сегодняшней статье мы глубоко исследуем этот вопрос, задавая вопросы именно тем людям, которые причастны к разработке оболочек.

Читать далее

WireGuard и QUIC

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

Когда мы хотим защитить передаваемые данные, мы используем VPN. Но иногда хочется, чтобы и сам факт использования VPN, тоже был бы скрыт. Мы настолько переживаем за свои данные:)

Так как сейчас очень популярным стал WireGuard, он основан на UDP. А из популярных UDP протоколов, которые могут через себя прокачивать большой трафик, это QUIC. Это совмещение TCP и TLS, основанное на UDP. Поэтому естественной мыслью стала мимикрировать WireGuard трафик под QUIC трафик. Для этого пришлось изучить код WireGuard в ядре Linux. Код патча ядра Linux лежит на QUICWireGuard.

Читать далее

Зачем нужна диспетчеризация, или как «приготовить» SCADA на Linux

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

Множество инженерных систем, работающих на поддержание комфортных, или требуемых условий (температура и влажность воздуха, содержание СО2 и примесей, уровень освещенности, температура воды), время от времени выходят из строя, требуют технического обслуживания. Раньше дежурный инженер несколько раз за смену обходил все оборудование и проверял его исправность и режимы работы. Кому-то стало жарко в помещении - потопал менять уставку температуры на установке за тридевять земель. И так каждый раз. Если что-то выходило из строя, то узнавали об этом либо в очередной обход, либо от пострадавших.

Читать далее

20-летие Linux для десктопных систем (Часть 1)

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

Двадцать лет назад на меня снизошло озарение: Linux готов для десктопа.

(*смех аудитории*)

Я был одним из тех подростков, которых то и дело звали «починить» компьютер. Соседи, друзья, родственники. Да, такой вот подросток-ботан. Вы наверняка понимаете, о чём я. Но в итоге мне надоело устанавливать взломанные антивирусы и налаживать системы Microsoft Windows, избавляя RAM от вредоносов и оживляя тормозящие процессоры в компьютерах, мигающих светодиодами питания в мольбе облегчить их страдания.

Устав от такой неоплачиваемой работы техника поддержки Microsoft, я предлагал людям либо установить Linux с моим полным сопровождением, либо больше не обращаться ко мне с подобными проблемами.

И, к моему удивлению, некоторые это предложение принимали.
Читать дальше →

Сервер автоматизации СА-02м. Linux + Armbian, SCADA, «Умный дом» и вот это вот все…

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

Разработали серийный корпус, плату, воткнули туда одноплаточник на Linux + Armbian, установили MasterSCADA4D и давай автоматизировать вентиляцию, освещение и другое инженерное оборудование.

Читать далее

Обновление прошивки Toshiba NAS HDD под Linux

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

Я произвёл реверс-инжиниринг модуля обновления прошивки своего HDD Toshiba, чтобы иметь возможность обновлять её под Linux. Приведённые ниже команды должны работать, но используйте их на свой страх и риск:

$ wget https://www.canvio.jp/en/support/download/hdd/ot_ihdd/fw/ISFw.dat
$ grep -C2 MODELNAME ISFw.dat
 # ^
 # |___ здесь определяем нужное имя файла
$ wget https://www.canvio.jp/en/support/download/hdd/ot_ihdd/fw/sk060202.ftd
# hdparm --fwdownload-mode3 sk060202.ftd /dev/sdX

Предыстория


Недавно я приобрёл для своего NAS диск Toshiba HDWG480 HDD. Вот вывод команды hdparm -I /dev/XXX:

ATA device, with non-removable media
        Model Number:       TOSHIBA HDWG480
        Serial Number:      3430A00RFR0H
        Firmware Revision:  0601
        Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
        Used: unknown (minor revision code 0x006d)
        Supported: 10 9 8 7 6 5
        Likely used: 10
[...]

Как обычно, я хотел проверить, есть ли для него доступные обновления прошивки. На сайте Toshiba для моей модели приводится версия 0602.

К сожалению, и вполне ожидаемо, для пользователей Linux возможности обновления нет. Производитель предоставляет лишь «Internal Storage Firmware Update Utility» для Windows.

Сами файлы обновления также отсутствуют.
Читать дальше →

Управление пакетами в Emacs: Хороший, плохой, злой

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

Здравствуй читатель! Если ты пользователь редактора Emacs, то данная статья для тебя, в ином случае, можно проходить мимо, так как тема достаточно узкоспециализированная.

Меня зовут Вознесенский Михаил. Я являюсь руководителем группы разработки продукта RuPost в компании РуПост которая входит в состав Группы Астра (смотри не перепутай 😄).
В ходе своей деятельности я сталкивался со множеством текстовых редакторов/IDE и на данный момент остановился на Emacs. Не смотря на всю его мощь, у редактора имеется очень серьёзная проблема которая мешает нормальной продуктивной деятельности - управление расширениями.

В ходе своего исследования данного вопроса я наткнулся на статью за авторством Божидара Бацова (Bozhidar Batsov). Человек, который называет себя хакером и фанатиком Emacs, но так же является автором конфигурационного фреймворка Prelude.
Статья написана в далёком 2012 году, но остаётся актуальной и по сей день!

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

Читать далее

Todo-лист на максималках: разбираем архитектуру крупного приложения

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

В этой статье я покажу, как устроена многослойная архитектура крупного реактивного web-приложения, и особенности его запуска под Electron. Материал будет полезен, если вы планируете начать свою разработку, хотите попробовать себя в роли архитектора, вас не пугает Shared Workers, Service Workers или, в конце концов, вы хотите это попробовать или разобраться.

Читать далее

Сборка RPM-пакетов в ALT Linux: автоматизация с помощью GEAR

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

В первой части материала мы разобрали случай сборки простого rpm-пакета в ALT Linux. За пример брали набор файлов изображений и собирали стандартной утилитой rpmbuild.

В этом материале поговорим про сборку python-проекта специальным инструментом — GEAR. Этот инструмент разработала команда сообщества Альт для автоматизации процесса сборки.

Общими словами, GEAR — это удобная обвязка вокруг Git и rpmbuild. Достаточно в дополнение к spec-инструкции написать GEAR-правила формирования архива, полученного из git-репозитория.

Материал статьи может быть полезен при изучении темы сборки rpm-пакета инструментом gear-rpm в ОС «Альт».

Собрать пакет

История о том, как мы собирали разработчиков Nix в России и… собрали

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

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

Читать далее

Немного об отладке. Часть 2

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

Приветствую еще раз.

Это 2 часть небольшой статьи об отладчиках. В прошлой мы разобрали базу: инструкции + системные вызовы, написали свой отладчик, препарировали gdb и смотрели на отладку в высокоуровневых ЯП со своим рантаймом.

В этой мы посмотрим на процесс отладки в IDE изнутри, а потом пойдем еще глубже...

Путешествие на остальные 20 минут

Немного об отладке. Часть 1

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

Приветствую.

Вы когда нибудь отлаживали программы? Не врите, что нет. Благодаря отладчикам наши программы работают корректно (или хотя бы близко к этому).

Но вот знаете ли вы как отладка устроена: точки останова, шаги, бэктрейс, чтение переменных?

Нет или да - ответ не важен. Эта статья даст ответы на многие вопросы об отладке, которые вы, возможно, и не задавали себе.

В этой части рассмотрим ядро отладки, напишем свой собственный отладчик, рассмотрим реализацию gdb, а в конце посмотрим на отладку управляемых языков.

Путешествие на 20 минут

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

Российское 3D-ядро не только захабрено, но и продолжает жить

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

В конец уходящего года принято строить планы на будущее и подводить итоги. Поэтому есть повод оглянуться на 10 лет назад. Да, немного дальше, чем принято. И вспомнить про "Российское 3D-ядро", которое было выпущено и активно обсуждалось на Хабре в далеком 2013 году.

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

Давайте посмотрим, как себя чувствует геометрическое ядро - RGK (Russian Geometric Kernel) сегодня на рубеже 2024 - 2025 годов.

Читать далее

«Open source в России» — интервью с Алексеем Смирновым, председателем совета директоров «Базальт СПО»

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

На днях удалось пообщаться с Алексеем Владимировичем Смирновым, председателем совета директоров «Базальт СПО». Мы обсудили организационные компетенции, необходимые для распространения свободного программного обеспечения, роль государства в развитии данного направления и другие вопросы.

Читать далее

Автоматическая сборка snap пакетов в CI/CD

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

Автоматическая сборка snap-пакетов с помощью GitLab CI/CD и Docker

Статья посвящена автоматизации сборки snap-пакетов с использованием GitLab CI/CD и Docker. Рассматриваются шаги настройки пайплайнов для создания и публикации пакетов, а также примеры конфигурации файлов .gitlab-ci.yml и Dockerfile.

Читать далее

Linux: долгий путь к ленивому вытеснению

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

В настоящее время планировщик работы с ядрами ЦП, действующий в ядре Linux, предусматривает несколько режимов вытеснения. В этих режимах предлагается целый ряд компромиссов между временем отклика и пропускной способностью системы. Ещё в сентябре 2023 года развернулась дискуссия о работе планировщиков, в результате которой была выработана концепция «ленивого вытеснения». Данная концепция упрощает планирование задач в ядре, при этом улучшая результаты. Какое-то время эта работа протекала тихо, но затем ленивое вытеснение было заново реализовано Питером Зайлстрой в виде этой серии патчей. Притом, что сама концепция с виду работает хорошо, здесь ещё немало требуется доделывать.

Читать далее

Самые быстрые страусы: выбираем способ организовать обмен прерываниями между машинами QEMU c KVM и без

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

QEMU позволяет эмулировать работу не только одной отдельной машины, но и связывать несколько независимых машин между собой. Для организации такой связи их обычно объединяют в одну сеть, например с использованием virio-net-pci. Но виртуальный ethernet — не единственный способ, связь может быть и более близкой и плотной: общая память и mailbox, линии gpio и даже NTB.

Быстрая работа связанных QEMU машин приятна при разработке/отладке и очень важна при массовом прогоне автотестов в CI: нужна как высокая пропускная способность, так и низкая задержка передачи сообщения. Для одной из задач с коллегами из отдела системного программирования YADRO я оптимизировал часть такой связки, а именно — обмен прерываниями. В статье расскажу о дизайне нескольких подходов организации IQI, разберу внутреннее устройство QEMU и поделюсь, как оправдались наши ожидания. 

Читать далее

Про systemd и автозапуск десктопных приложений

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

После переезда на openSUSE 15.5 я столкнулся с некой странностью. Автозапускаемые после старта приложения стали падать при попытке перезапуска.

Читать далее

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: загружаем платформу и верифицируем проект

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

Здравствуй, Хабр! На связи вновь Павел Панкратов — ведущий инженер-программист дивизиона искусственного интеллекта YADRO. Мы добрались до финала моего повествования о параллельном запуске двух операционных систем на FPGA с процессорной подсистемой.

В этой статье мы запустим подготовленный проект и верифицируем его. А в качестве бонуса посмотрим на один из способов разработки ПО под Soft-CPU, минуя IDE Vitis. Плюс загрузим ОС Soft-CPU с помощью QEMU.

Читать далее

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