Как стать автором
Обновить
150.68

Разработка под Linux *

Пишем под *nix

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

РТУ МИРЭА совместно с АО НИЦ и Ассоциацией РУСИБ приглашает всех, интересующихся Инфобезом, с 7 апреля по 31 мая принять участие в гибридном хакатоне NeedForFWSpeed на самое быстрое ПО межсетевого экрана и побороться за призовой фонд 0,6 млн рублей.

Все конкурсанты будут использовать одинаковые аппаратные платформы и одинаковые датасеты. Так что старт у всех будет с одной линии.

В качестве аппаратной платформы всем предлагается RPi CM4 MilkV с процессором архитектуры RISC V – мы стойкие сторонники OpenSource.

Зато нет никаких ограничений на ПО. Можно взять абсолютно стандартную сборку *nix и пойти с ней. Можно хорошенько пооптимизировать iptables/nftables, сетевые драйверы и настройки IP-стека и получить прирост производительности. В придачу можно поотключать в ОС и всё лишнее, можно собрать свою кастомную сборку и много чего ещё.

Можно взять и операционку полегче, ОС РВ или Нейтрино, и попытаться получить выигрыш за их счёт. Можно вообще написать свой код, взяв за основу исходники IP-стека, так сказать, BareMetal в чистом виде.

По условиям соревнований не важно, сколько человек в команде, один или пять, какой у Вас возраст и образование, какой опыт работы и какой стек технологий – значение имеет только СКОРОСТЬ РАБОТЫ МЕЖСЕТЕВОГО ЭКРАНА. Никаких взвешенных коэффициентов, призов зрительских симпатий и симпатий жюри. От жюри нужно будет одно – подписать итоговый протокол.

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

Все подробности и регистрация на сайте https://securitygc.ru

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

 

PS ... и да, среди нас есть фанаты ленты Need For Speed, и скорость межсетевого экрана нам тоже очень нужна.

Теги:
+3
Комментарии7

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

Однако вложенная виртуализация на KVM требует аппаратной поддержки и обычно отключается облачным провайдером из соображений безопасности. Кроме того, текущая архитектура вложенной виртуализации включает сложные и дорогостоящие переходы между гипервизором L0 и гипервизором L1.

Ant Group (Alibaba) представила новый фреймворк виртуализации, построенный на основе гипервизора KVM, который не требует использования аппаратно-ускоренных технологий виртуализации. Этот фреймворк представляет собой PV-решение (паравиртуализацию) для KVM, позволяющее запускать ВМ в публичном облаке без поддержки вложенной виртуализации.

https://www.phoronix.com/news/PVM-Hypervisor-Linux-RFC

Эта штука отлично работает с песочницей firecracker https://github.com/avkcode/firecracker-sandbox.
То есть можно хосте с отключенной аппаратной поддержкой в безопасном окружении запускать тысячи ВМ.

Теги:
+4
Комментарии0

🗓 14.03.1994 - Выпущeн пepвый cтaбильный peлиз Linux 1.0.0 [вехи_истории]

🗓 14.03.1994 - Выпущeн пepвый cтaбильный peлиз Linux 1.0.0
🗓 14.03.1994 - Выпущeн пepвый cтaбильный peлиз Linux 1.0.0

В этот день был выпущен первый стабильный релиз операционной системы Linux версии 1.0.0. Этот момент стал важной вехой в истории открытого программного обеспечения, поскольку Linux начал завоевывать популярность как надежная и гибкая операционная система.

Разработчиком ядра Linux является Линус Торвальдс, который начал работу над проектом в 1991 году. Первоначально это был экспериментальный проект, но благодаря поддержке сообщества он быстро развивался. Версия 1.0.0 включала 176 000 строк кода и поддерживала архитектуру x86, работу в многозадачном режиме и сетевые соединения. С тех пор Linux стал основой для множества дистрибутивов и широко применяется в серверах, мобильных устройствах (Android), суперкомпьютерах и встроенных системах.

💙 Интересно? Ставим лайк - и будем готовить историю про Linux)

📼 А знаете ли вы, что в основе Android лежит ядро Linux?
Удивительная история Android! Вы этого НЕ ЗНАЛИ
YouTube | VkVideo

Теги:
+7
Комментарии0

Хабр, привет!

Приглашаем на митап о карьере в Linux🐧.

19 марта эксперты компании и приглашенный гость — блогер Константин Дипеж (DeusOps) — обсудят профессиональный путь Linux-специалиста.

— как безболезненно «вкатиться» в Linux

— с чем откликаться на вакансию

— какие вопросы задают на техническом интервью

— как расти профессионально после оффера

— как развиваться в DevOps и не только

Приглашаем Linux-специалистов, которые видят зоны роста и хотят выйти на новый уровень профессиональной экспертизы

Во время дискуссии можно будет задать вопросы спикерам. За лучшие – обещаем мерч;)

Встреча пройдет онлайн, 19 марта в 18:00 (мск). Подробности и регистрация на сайте.

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

Хочу поделиться своим максимально ненужным проектом на Python, под названием flexpasm.

Это билдер кода для FASM под Linux. Работает ограниченно, но вроде-бы работает.

Проект, лично для меня, интересный.

Установить эту библиотеку можно через PyPi:

from flexpasm import ASMProgram
from flexpasm.constants import LinuxInterrupts
from flexpasm.instructions.registers import get_registers
from flexpasm.instructions.segments import Label
from flexpasm.mnemonics import IntMnemonic, MovMnemonic, XorMnemonic
from flexpasm.settings import Settings


def main():
    settings = Settings(
        title="Example ASM Program",
        author="alexeev-prog",
        filename="example.asm",
        mode="64",
    )
    asmprogram = ASMProgram(settings, __name__)
    regs = get_registers(settings.mode)

    start_lbl = Label("start")

    start_lbl.add_instruction(MovMnemonic(regs.AX, 4))
    start_lbl.add_instruction(MovMnemonic(regs.CX, "message"))
    start_lbl.add_instruction(MovMnemonic(regs.DX, "message_size"))
    start_lbl.add_instruction(IntMnemonic(LinuxInterrupts.SYSCALL))
    start_lbl.add_instruction(MovMnemonic(regs.AX, 1))
    start_lbl.add_instruction(XorMnemonic(regs.BX, regs.BX))
    start_lbl.add_instruction(IntMnemonic(LinuxInterrupts.SYSCALL))

    asmprogram.add_label(start_lbl)
    asmprogram.main_rws.add_string("message", "Hello, World!")

    asmprogram.save_code()
    # asmprogram.restore_backup()


if __name__ == "__main__":
    main()
$ fasm example.asm example
$ ld example -o example
$ ./example

Hello, World!

А сам код генерируется такой:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Author: alexeev-prog                                                                                               ;;
;; Example ASM Program                                                                                                ;;
;; Program generated by FLEXPASM (github.com/alexeev-pro/flexpasm)                                                    ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

format ELF64 executable 3;                      ; ELF64 EXECUTABLE
entry start                                     ; Set Start Entry


;; Segment readable executable in FASM is a directive for defining a section of code with readable and executable attributes.
segment readable executable

start:                                          ; Label start with 7 commands
    MOV RAX, 4                                      ; Loading 4 value into RAX register.
    MOV RCX, message                                ; Loading message value into RCX register.
    MOV RDX, message_size                           ; Loading message_size value into RDX register.
    INT 128                                         ; Call software interrupt 128: SYSCALL
    MOV RAX, 1                                      ; Loading 1 value into RAX register.
    MOV RBX, RBX                                    ; Exclusive OR operation RBX and RBX using XOR
    INT 128                                         ; Call software interrupt 128: SYSCALL


;; Segment readable writeable in FASM is a definition of a segment of program data codes, where the attributes readable (the contents of the segment can be read) and writeable (program commands can both read codes and change their values) are specified for it.
segment readable writeable

message db 'Hello, World!', 0xA                 ; Var message (string)
message_size = $-message                        ; Var message (string) length

Я его написал довольно давно, вот решил поделиться. Может кому-то пригодится. Если есть баги - создавайте PR и Issue, буду рад)

github.com/alexeev-prog/flexpasm

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Работаю в большом проекте состоящем из более чем сотни динамически подгружаемых библиотек. OracleLinux, QtCreator, Qt, C++. Испытывал большие неудобства при загрузке приложения в режиме отладки с большим количеством точек останова (на 10 штуках старт с 30 секунд увеличивался до 2 минут). Казалось бы очевидное, но закономерность замедления обнаружилась не сразу.

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

Для своего проекта отлаживаемые модули перемещаю в начало загрузки (мое приложение делает это конфигурацией), скорость запуска в отладке теперь примерно одинаковая вне зависимости от разумного количества установленных точек останова.

Возможно, я озвучил очевидность. Но мне, работая в данном окружении и в большой команде достаточно давно, это озарение снизошло не сразу. Я и не сильно боролся с этим до недавних пор, сильное замедление произошло не так давно при переходе с Qt4 на Qt5 (у нас вынужденное legacy).

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Улучшил песочницу Firecracker для того, чтобы было удобнее собирать кастомное ядро Linux, например для того, чтобы оптимизировать его под K8s или базы данных.

kernel
kernel

Даже такой проект как Linux над которым работают не только энтузиасты, но и тысячи инженеров в компаниях, чей бизнес построен на open source, можно улучшить с точки зрения CI/CD и релизного цикла. По крайней мере я вижу пространство для улучшения. Это только начало.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Возвращаясь к заметке «Время собирать ядро» – возникает вопрос «как это мониторить?». Традиционные системы мониторинга типа Zabbix или Prometheus слишком громоздки для легковесных ВМок, которые должны подниматься и тушится меньше чем за секунду.
Можно, просто написать своего агента, который будет запускаться вместе с ВМ и парсить /proc/vmstat и /proc//(cmdline|stat|io):

Usage of /tmp/go-build1413422386/b001/exe/procmon:
  -P	Display output in a pretty table format (shorthand for -pretty)
  -filter string
    	Filter processes by label (e.g., 'wal writer')
  -http string
    	Serve process information over HTTP on the specified port (e.g., ':8080')
  -interval int
    	Polling interval in seconds (default 1)
  -output string
    	Output file (default: stdout)
  -pretty
    	Display output in a pretty table format (use -P as shorthand)

Добавляем опцию html и можно раздавать поток с метриками в csv. Метрики достаточно заскрейпить с помощью victoriametrics или prometheus. С помощью filter можно на стороне агента ограничить сбор метрик для какого конкретного сервиса, например PG. Получается облегченная версия node экспортера prometheus. Микроэкспортер для микроВМ.

go run procmon.go -P -http :8080
2025-02-24T18:36:35Z,21416,8536,sshd: [accepted]  ,1122,45,0,0,0
2025-02-24T18:36:35Z,21446,21396,go run procmon.go -P -http :8080 ,256516044,135107883,25313280,143409152,139264
2025-02-24T18:36:35Z,220,2,,0,0,0,0,0
2025-02-24T18:36:35Z,222,2,,252394,0,507904,0,0
2025-02-24T18:36:35Z,22968,21446,/tmp/go-build513569549/b001/exe/procmon -P -http :8080 ,36669,56998,0,0,0
2025-02-24T18:36:35Z,23,2,,0,0,0,0,0
Technology
Technology
Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Разработчик под ником madprops предложил способ для быстрого поиска команд в терминале

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

  • : ✅;./utils/check.sh

  • : ⚡;./scripts/tag.py

  • : 📚;./scripts/makedocs.sh

Обратите внимание на двоеточия и точки с запятой. Значки не являются частью команды, они ничего не делают. Но теперь ваше зрение очень быстро распознает нужный элемент. Вместо иконок можно использовать текст, который можно легко отфильтровать позже», — пояснил madprops.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Такое ощущение что SCAP/OpenSCAP и security compliance в целом застряли в начале 2000-ых. Везде xml и xsd, какие-то обскурные утилиты для которых нет руководства. Вся эта отрасль очень нуждается в автоматизации и хорошей документации.

Не нашел для ubuntu репозитория с профилями OVAL, поэтому пришлось собрать из исходников.

OVAL
OVAL

Понадобится несколько зависимостей:

sudo apt-get install git cmake make python3 python3-lxml python3-jinja2 python3-yaml

Клонируем репозиторий:

git clone https://github.com/ComplianceAsCode/content.git
cd content/

Копируем полученный профиль:

rm CMakeCache.txt
cd build
cmake ../

Копируем полученный профиль:

make -j4 generate-ssg-ubuntu2204-oval.xml

Копируем полученный профиль:

cp ssg-ubuntu2204-oval.xml /usr/share/xml/scap/ssg/content/

Запускаем сканирование:

oscap info /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-oval.xml
Document type: OVAL Definitions
OVAL version: 5.11
Generated: 2025-02-13T21:56:16
Imported: 2025-02-14T00:57:48

Запускаем сканирование:

oscap oval eval --results oval-results.xml /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-oval.xml

Генерируем html репорт:

oscap oval generate report oval-results.xml > oval-report.html
Теги:
Рейтинг0
Комментарии1

Учимся в сетевые интерфейсы на Linux: руководство по netlink

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

Следующая остановка — пакет iproute2. Iproute распространяется под GNU GPL 2, так что я скачал исходники, собрал их и начал разбираться в коде на C. Чтобы проще понимать логику, я удалял некоторые участки кода, в которые при вызове моей функции программа не входила. Затем пересобирал программу и продолжал изучение и трассировку. Так я понял общий принцип обработки пакетов и сделал обработку пары дополнительных параметров. Но оставалось еще много других условий.

В какой-то момент я вспомнил про утилиту strace: с ней стало проще изучать код и ориентироваться в нем. Strace позволяла увидеть финальный этап работы функции и все ее параметры. Решая свои задачи, я копировал и адаптировал код из iproute. Я не особо вникал во внутреннее устройство протокола, но с каждым этапом разработки это становилось все сложнее и сложнее.

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

О том, как с помощью netlink узнать, что именно делает система при настройке сетевых интерфейсов и как обрабатывать ее команды, читайте в статье Тимура Аммаева.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии1

Как и зачем дублировать Intel NTB Gen3 в QEMU

Системным программистам в YADRO нужно было «обмануть» драйвер в Linux: он не должен «знать», что работает в эмуляции. 

Для этого ведущий инженер Никита приступил к созданию виртуального двойника Intel NTB Gen3 в QEMU, документации к которому в открытом доступе нет. Реализованная модель позволяет производить разработку и тестирование протоколов более высокого уровня, а также выполнять их качественное сравнение.

PCIe NTB не позволяет увидеть адресное пространство, которое принадлежит к подключенному по NTB соседнему устройству. Вкратце он работает так:

  • перенаправляет трафик PCIe между шинами как мост,

  • CPU рассматривает мост как конечное устройство,

  • CPU не «видит» все устройства на «другой» стороне, как правило, другая сторона — это другой компьютер.

Упрощенное представление PCIe NTB
Упрощенное представление PCIe NTB

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

В работе с PCI BAR необходимо обеспечить прозрачное использование Linux-драйвера Intel NTB для оптимального взаимодействия с оборудованием, которое мы эмулируем. Еще одна задача — разработать новые транспорты, которые работают поверх эмуляции: RPMSG, Virtio/Vhost, NTRDMA и другие. Также одна модель помогла найти ошибки в инициализации драйвера.

Никита подробно описывает тернистый путь создания виртуального двойника Intel NTB Gen3 в статье →

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Праздничный unixporn: python vim ide в контейнере

В разработке на python, особенно в DS/ML проектах, мы все сталкиваемся со сложной схемой зависимостей на специфичной аппаратной платформе. Зачастую, вести разработку удобно в том окружении, в котором в последствии запускается приложение.

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

У меня был некоторый шаблон Dockerfile с добавкой vim с плагинами который кочует из проекта в проект и я решил поделиться с вами этой наработкой.

С Новым годом!

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

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

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

Linux под Hyper-V, overhead со знаком минус?

Неоднократно приходилось переходить с Linux на самой машине к той же версии и на той же машине, но развернутой в виртуалке в Windows. И часто замечал, что Linux в Hyper-V работает более “отзывчиво” по части GUI (vscode, chrome, firefox и т.п.). Но это были именно субъективные ощущения, особо не заострял на этом внимание предполагая, что улучшения происходят из-за каких-либо аппаратных интерфейсов, для которых Hyper-V предоставляет стандартные реализации. 

Недавно решил обновить рабочий компьютер, и перед тем как выбрать какая ОСь будет основной, провел небольшой тест на сколько “тормозней” Linux в Hyperv-V. 

Список оборудования и ПО:

  • Ноутбук Acer Aspire 7, Intel(R) Core(TM) i5-10300H CPU @ 2.50GHz, RAM 20.0 GB

  • ОС Linux Mint 21.3 Virginia 64-bit, Kernel Linux 5.15.0-130-generic x86_64

  • ОС Windows 10 Enterprise LTSC 21H2 (build 19044.5247)

  • В качестве теста выбрана сборка проекта OpenWrt.

Сценарий теста:

  1. Linux на ноутбуке:

    1. Устанавливаем Linux на ноутбук.

    2. Клонируем OpenWrt и запускаем последовательно команды:

      1. git clone -b openwrt-23.05 https://github.com/openwrt/openwrt.git

      2. cd openwrt/

      3. ./scripts/feeds update -a

      4. ./scripts/feeds install -a

      5. make menuconfig #выбираем Target System (Qualcomm Atheros IPQ807x)

      6. make -j8 download #download отдельной командой, чтобы не зависеть от сети при тесте.

      7. time make -j8

  1. Linux в Hyper-V:

    1. Устанавливаем Windows 10 LTSC на ноут. 

    2. Включаем поддержку Hyper-V.

    3. Устанавливаем Linux под Hyper-V.

    4. В настройках виртуалки, установить кол-во CPU равным 8, выделить RAM 8-18 GB.

    5. Далее выполняем те же действия, что и в пп. 1.2.

Вывод time после сборки OpenWrt:

  • Linux на ноутбуке:

    • попытка №1

      • real    30m37,765s

    • попытка №2

      • real    29m18,569s

  • Linux в Hyper-V:

    • попытка №1

      • real    27m12,136s

    • попытка №2

      • real    27m36,395s

Получается, что Linux в Hyper-V работает немного быстрей? Странно это, и по хорошему нужно проверять еще. Но на данном этапе меня устраивает, что могу две ОСи одновременно использовать и есть уверенность что нет дополнительных проседаний в производительности.

Так же попробовал в виртуалке установить Ubuntu 24.04 и Linux Mint 22 Cinnamon, их время было такое,real  30m59,630s и 30m37,765s соответственно.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии3

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

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

Быстрая работа такой связки приятна при разработке/отладке и очень важна при массовом прогоне автотестов в CI. Как оптимизировать обмен прерываниями и какой подход к организации IQI вам подойдет — узнаете из статьи. А еще разберемся c:

  • устройством QEMU под капотом,

  • реализацией модели и драйвера,

  • добавлением прерываний MSI-X,

  • результатами замеров.

На бонус: десяток полезных материалов для изучения.

Теги:
Всего голосов 6: ↑5 и ↓1+5
Комментарии0

Linux: панель для KDE 6

Я просто оставлю это здесь, может, кому-нибудь пригодится.

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

Под "готова" я имею в виду, что система справляется со своими задачами в довольно жёстких условиях: на моём безвентиляторном мини-ПК с HiDPI дисплеем крутится Андроид Студия, эмуляторы различных устройств и операционных систем и прочие инструменты разработчика. Согласитесь, что это показатель.

Внешний вид темы по умолчанию (Бриз) меня в целом устраивает, а вот нижняя ("южная") панель не нравится. Поэтому тема делает две вещи:

  1. Устанавливает тёмный (в моём случае прозрачный) фон всей панели и границу сверху.

  2. Переносит индикаторы запуска приложений (подчёркивание) вниз.

За первый пункт отвечает файл widgets/panel-background.svg, за второй - widgets/tasks.svg.

Размытие фона под панелью (как на снимке экрана) включено по умолчанию.

Оба файла можно легко редактировать в обычном текстовом редакторе.

Вот ссылка на Гитхаб: https://github.com/vladpen/kde-south-panel

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Этого не найдешь в документации к Xilinx Zynq

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

Изучили все нюансы на практике за вас, реализовав проект запуска Embedded Linux на Hard- и Soft-процессорах Xilinx Zynq. Пойдем по этапам:

  1. Разработаем проект программируемой логики.

  2. Соберем операционную систему.

  3. Запустим ОС и верифицируем проект.

В качестве бонуса: запустим ОС Soft-CPU на эмуляторе QEMU и разработаем bare-metal приложение в обход IDE Vitis.

Ради чего все это стоит затевать
Ради чего все это стоит затевать

Теги:
Всего голосов 9: ↑9 и ↓0+12
Комментарии0

Ничего необычного, просто на считыватели для карт оплаты на турникете заканчивается место.

Теги:
Всего голосов 10: ↑9 и ↓1+9
Комментарии5

Подтверждена совместимость BPM-системы «Первая Форма» с «РЕД ОС»

ВРМ‑система «Первая Форма» стабильно работает на российской операционной системе РЕД ОС 8, а также на мобильной платформе РЕД ОС М. Совместимость продуктов позволяет автоматизировать бизнес‑процессы организаций, обеспечивая их выполнение на отечественной ИТ‑инфраструктуре. Чтобы повысить уровень защиты данных, поддерживается двухфакторная аутентификация и интеграция со смарт‑картами.

РЕД ОС — операционная система семейства Linux, предназначенная для серверов и рабочих станций. Она обладает сертификацией ФСТЭК России, что делает её подходящей для задач с повышенными требованиями к безопасности.

«Первая Форма» — набор инструментов для автоматизации документооборота, управления проектами, CRM, В2В2С‑решений и корпоративных коммуникаций, занимает лидирующую позицию среди российских low‑code решений для управления бизнесом.

Оба решения входят в реестр отечественного ПО Минцифры.

Подтверждена совместимость BPM-системы «Первая Форма» с «РЕД ОС»
Подтверждена совместимость BPM-системы «Первая Форма» с «РЕД ОС»

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

LanguageSwitcher (Дополнение к прошлому посту)

Теперь LanguageSwitcher можно скачать в виде .exe файла и запустить его без лишней мороки (для тех кто переживает, что ваши данные под угрозой всё еще есть скрипт в исходном виде).

Также теперь Language Switcher можно установить и на Linux в виде скрипта

Все нюансы и подробности описаны в репозитории

Теги:
Всего голосов 3: ↑3 и ↓0+6
Комментарии4
1
23 ...