Обновить
256K+

Linux *

Пишем под *nix

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

Локализация своих скриптов на BASH

Время на прочтение7 мин
Охват и читатели6.6K

Создание меню на BASH — задача сама по себе не сложная: "case тебе в руки и echo в спину". Решая её в очередной раз, мне захотелось добавить возможность отображать текст на других языках. Осталось решить, как сделать сам процесс локализации меню более удобным. Если оно большое, то решение "в лоб" превратит его в громоздкую копипасту. Здесь я хотел бы поделиться тем, как решил эту проблему для себя. Надеюсь, для кого то это будет небезынтересным.



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


Примечание:

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


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


Реализация будет состоять из:


  • буквенного кода языка
  • массива слов
  • преобразователя косвенных ссылок для обращения к массиву
  • обращения к элементам массива
  • создания меню

Теперь рассмотрим подробнее

Читать дальше →

Выявляем опечатки в проекте GTK 4 с помощью PVS-Studio

Время на прочтение16 мин
Охват и читатели2.1K

0793_GTK_4_continue_ru/image1.png


Возможно, вы уже читали недавнюю статью о процессе первого запуска PVS-Studio на примере проекта GTK 4 и о первичной фильтрации предупреждений. Теперь пришло время поработать с полученным отчётом более подробно. И как уже догадались наши постоянные читатели, предлагаю вашему вниманию статью с описанием найденных в коде ошибок.

Читать дальше →

Как я SCADA-систему на Linux переводил

Время на прочтение3 мин
Охват и читатели7.2K

В этой статье я бы хотел рассказать о том, что Windows проекты на Delphi возможно перевести на Linux в разумные сроки и с разумными трудозатратами. Что такое SCADA-система, рассказывать не буду, а перейду сразу к делу.

Runtime ядро SCADA работает под Windows в качестве сервиса. Функции стандартные «как у всех»: сбор, обработка, архивирование данных, передача данных в другие SCADA-системы по стандартным протоколам обмена. Визуализация только через Web. Runtime ядро SCADA написано на Delphi. Решено было адаптировать исходный код под  FreePascal/Lazarus, так чтобы код под Windows компилировался и в FreePascal и в Delphi, вторым этапом было допиливание проекта непосредственно на Linux машине и переделка его в демон. В FreePascal привлекала возможность компиляции как для x64, так и для плат Raspberry pi (архитектуры ARMv7, ARM64 (aarch64)).

Конфигуратор работает под Windows в виде графического приложения. Пока решено не переводить его на Linux, в крайнем случае можно запустить под Wine.

Теперь перейдем к Runtime и будем говорить о нём. В нём применяются разнообразные компоненты:

Читать далее

Результат интеграции Pine A64 и TRS-80 Model 100

Время на прочтение2 мин
Охват и читатели4.4K


В этой статье подводятся итоги установки компонентов одноплатного компьютера Pine A64 LTS SBC в корпус старинного компьютера TRS-80 Model 100. При этом подключается дополнительный дисплей, задействуется аппаратная клавиатура, и в целом в старое устройство вдохнули новую жизнь. Этому проекту было посвящено несколько статей, так что в случае интереса к материалу вашему вниманию будет предоставлен и их перевод. (прим.)
Читать дальше →

Немного о производительности снапшотов QEMU

Время на прочтение7 мин
Охват и читатели4.8K

В нашем грустном и печальном коронавирусном мире очень хочется смотреть на все таким же печальным взглядом. Ну и вот, так случилось, что приходит к нам с жалобой ооочень важный клиент. И говорит: “А у вас молоко убежало! Ваши снапшоты виртуальных машин работают ну очень медленно и печально.” В этом посте мы рассказываем, как наша команда справлялась с этой неприятностью.

Читать далее

Сегодня большинство Windows-игр отлично запускаются под Linux. Спасибо, Proton

Время на прочтение7 мин
Охват и читатели94K

Некоторые популярные игры, которые пока не внесены официально в белый список Steam для Linux, но получили много положительных отзывов в ProtonDB, то есть реально запускаются и хорошо работают

10 декабря 2020 года состоялся релиз долгожданной игры Cyberpunk 2077, а за день до этого вышла новая версия Proton 5.13-4 с поддержкой Cyberpunk 2077. То есть пользователи Linux смогли играть в Cyberpunk 2077 с первого же дня. Это наглядный пример, насколько великолепная ситуация сейчас с поддержкой игр на Linux-десктопах.

Если вам говорят, что Linux — отличная платформа для игр, то это уже не преувеличение! За такое положение вещей мы должны благодарить Proton.

Перехват и обработка событий в файловой системе Linux

Время на прочтение11 мин
Охват и читатели11K

В предыдущей статье мы рассмотрели сборку и установку пакета на Linux системах, в которой упомянули про Linux Kernel Module (LKM) и обещали раскрыть позднее подробности о пути к нему и его создании. Ну что ж, настало его время. LKM – мы выбираем тебя.

Читать далее

Опубликован стабильный релиз самодостаточных пакетов Flatpak 1.10.0

Время на прочтение4 мин
Охват и читатели5.9K

Отличные новости в понедельник, %username%. На днях была опубликована стабильная ветка инструментария Flatpak 1.10. Она предназначена для сборки самодостаточных пакетов, которые не привязаны к конкретным дистрибутивам Linux и выполняются в специальном контейнере, изолирующем приложение от системы.

Flatpack-пакеты гарантированно работают для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux и Ubuntu. Они также входят в репозиторий Fedora и поддерживаются штатным софтом управления приложениями GNOME. Под катом — подробнее о новинке и ее возможностях.
Читать дальше →

Вышел Wine 6.0: что нового?

Время на прочтение5 мин
Охват и читатели22K

С момента выхода Wine 5.0 прошел целый год, и разработчики представили стабильный релиз Wine 6.0. Обновлений много, всего в новой версии Wine более 8300 изменений. Главное, что стоит отметить, — поставка базовых модулей Wine в формате PE, бэкенд на основе графического API Vulkan для WineD3D, обновленная текстовая консоль, появление поддержки DirectShow и фреймворка Media Foundation.

На данный момент официально подтверждена нормальная работа 5049 Windows-приложений. С дополнительной настройкой Wine 6.0 позволяет запускать еще 4227 приложений. Работа некоторых из них нестабильна, но, в целом, под Wine работает гораздо больше 10 тысяч Windows-программ.
Читать дальше →

Быстрый туториал по установке и эксплуатации системы фильтрации IP-адресов CrowdSec v.1.0.x

Время на прочтение7 мин
Охват и читатели17K

Всем привет! Перед Новым годом мы выпустили большой апдейт нашего продукта — CrowdSec v.1.0.X, в котором содержатся значительные изменения по сравнению с предыдущей версией. Самое главное: был введен в эксплуатацию локальный REST API и проведены соответствующие архитектурные изменения. Как следствие, значительно упростился процесс создания баунсеров и повышена их устойчивость, при этом снизилось время на обслуживание системы. 

В этой статье вы найдете основные материалы о том, как был переделан CrowdSec и, в целом, ее можно рассматривать как User Guide для тех, кто собирается попробовать наш продукт на своих системах. 

Быстрый и приятный туториал далее

Alma, но не Mater: встречайте AlmaLinux, «наследника» CentOS 8

Время на прочтение2 мин
Охват и читатели30K
Источник

CloudLinux заявила, что в продолжение дистрибутива CentOS 8 будет создан новый под названием AlmaLinux. Компания заменила первоначальное придуманное название, чтобы уйти от несколько каламбурного Lenix: Lenix Linux выглядело не очень читаемо.
Читать дальше →

Давайте напишем командную оболочку Linux

Время на прочтение11 мин
Охват и читатели15K

Всем привет!

Хочу поделиться своим опытом написания собственной командной оболочки Linux используя Posix API. Усаживайтесь поудобнее.

Что должен уметь наша командная оболочка?

1. Запуск процессов в foreground и background режиме

2. Завершение background процессов

3. Поддержка перемещения по директориям

Читать далее

Микрохирургия ELF'а или «А что, так можно было?!»

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

Разбираемся в устройстве PE и рождественских ELF'ов, реверс-инжинирим runtime-библиотеку, портируем ассемблерный код, собираем и редактируем исполняемые файлы и периодически спрашиваем себя "А так можно было?".

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

Но обо всём по порядку

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

Клиент-серверный IPC на Python multiprocessing

Время на прочтение5 мин
Охват и читатели13K

Статья отражает личный опыт разработки CLI приложения для Linux.

В ней рассмотрен способ выполнения привилегированных системных вызовов процессом суперпользователя по запросам управляющей программы через строго описанный API.

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

Читать далее

Интригующие возможности С++ 20 для разработчиков встраиваемых систем

Время на прочтение5 мин
Охват и читатели14K

Изображение: Michel Dreher | Dreamstime.com

Вильям Вонг в статье «C++20 Serves Up Intriguing Embedded Features» рассказывает о новых функциональных возможностях С++20, которые будут интересны разработчикам встраиваемых систем.

Читать перевод

WSN-LTE шлюз на CC1310 и WP8548. Часть 1

Время на прочтение4 мин
Охват и читатели4.5K

Приветствую, Habr! В данной статье рассмотрен процесс разработки Wireless Sensor Network (WSN) шлюза для передачи данных от беспроводных датчиков на сервер через мобильную связь. В качестве начинки будем использовать Sub-1GHz SoC CC1310 и программируемый модуль WP8548 от Sierra Wireless. AirPrime WP8548 - это промышленный модуль LGA-239. Его беспроводной модем обеспечивает передачу данных в сетях HSPA, WCDMA, EDGE и GPRS, а также прием GPS сигнала.

Читать далее

Карантин для динамической памяти ядра Linux

Время на прочтение9 мин
Охват и читатели6.8K

2020 год. Повсюду карантин. И эта статья тоже про карантин, но он другого рода.


Я расскажу об экспериментах с карантином для динамической памяти ядра Linux. Это механизм безопасности, противодействующий использованию памяти после освобождения (use-after-free или UAF) в ядре Linux. Я также подведу итоги обсуждения моей патч-серии в списке рассылки ядра (Linux Kernel Mailing List, LKML).


image

Читать дальше →

Безопасные города без зоопарка

Время на прочтение8 мин
Охват и читатели16K
image

Ковид и его последствия подкосили фундамент ценностной пирамиды людей. Он ударил по самому важному — безопасности. В 21 веке бояться «простуды» несолидно, но приходится. И приходится находить эффективные решения в непрогнозируемом пространстве. Многие ли ваши планы 2020 сбылись? А смог ли хоть один риск-менеджер предсказать всемирный карантин? Не смог, но современные знания и технологии минимизировали, на наш взгляд, последствия новой эпидемиологической реальности.
Читать дальше →

Исполняемые PNG: запускаем изображения как программы

Время на прочтение6 мин
Охват и читатели12K

Это изображение и одновременно программа

Несколько недель назад я читал о PICO-8, выдуманной игровой консоли, обладающей большими ограничениями. Особо мой интерес привлёк новаторский способ распространения её игр — кодирование их изображение PNG. В него включается всё — код игры, ресурсы, вообще всё. Изображение может быть любым: скриншоты из игры, крутой арт или просто текст. Чтобы загрузить игру, нужно передать изображение на вход программы PICO-8, и можно начинать играть.

Это заставило меня задуматься: наверно, будет круто, если получится сделать то же самое с программами в Linux? Нет! Я понимаю, вы скажете, что это тупая идея, но я всё равно ею занялся, и ниже представлено описание одного из тупейших проектов, над которыми я работал в этом году.
Читать дальше →

Как готовить Cake, используя только Frosting

Время на прочтение4 мин
Охват и читатели4.3K

Итак, Cake. Многие слышали, многие хотели попробовать, но откладывали. Конечно, если ты все время работал на TeamCity или на Jenkins и продолжаешь, то зачем переизобретать то, что уже отлично работает? Люби свою жизнь и радуйся. Но вот, допустим, в твоей любимой жизни появился новый проект, новый дедлайн, минимум сторипойнтов до релиза, а опыта с новым сборщиком нет? Мне в этом случае и пригодился Cake.

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

На что похож Cake? Наверное, любой разработчик, не погрязший в мире .Net, найдет свою аналогию: gradle, gulp, golang make. Make-системы не откровение в 2020 году. Это всегда было удобно, а значит — нужно и правильно. Мир .Net долгое время был обделен такими средствами. Фактически был и есть до сих пор MSBuild, но у него есть очень-очень много недостатков. Основной - кто вообще умеет им пользоваться из рядовых разработчиков? И какова целесообразность его освоения? Какие-то базовые и нужные всем вещи явно проще делать на билд-сервере. Наверное, кому-то он и удобен, но я уверен, что значимая часть коммьюнити предпочтет MSBuild'у освоить новый билд-сервер. Один раз написать конфиг и забыть как страшный сон.

А что если бы существовала make-система с DSL на C#, автокомплитом и прочими фишками типизированного языка? Да, я про Cake. В частности сейчас пойдет разговор про библиотеку Cake.Frosting, являющуюся одним из раннеров make-системы.

Подробней про доступные раннеры можно прочитать тут: Cake Runners

С Frosting все привычно — самодокументирующийся Api с которым почти сразу находишь общий язык. Методы расширения, загружаемые из Nuget — на любой случай жизни, структура проекта, похожая на смесь тестов или бенчмарков и хоста Asp. Все решения угадываются сразу, все как дома.

Читать далее