Обновить
256K+

Linux *

Пишем под *nix

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

Linux и TinyСC в браузере

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

Несмотря на то, что Clang in Browser довольно впечатляет, большинство существующих браузерных компиляторов все же находятся в экспериментальной стадии. Я же в этом проекте вместо портирования компилятора в WASM собираюсь пойти своим излюбленным путем – задействовать виртуальные машины. Этот способ не такой уж быстрый, особенно ввиду использования мной JS-эмулятора ЦПУ, но при этом все же позволяет добиться отличной производительности с помощью шустрого компилятора вроде Tiny С Compiler и кастомизированного Linux.
Читать дальше →

Микросервисы и неизбежная боль?

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

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

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

Читать далее

STM32MP1 запуск Ubuntu 22.04

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

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

Совсем недавно, компания Canonical, выпустила Ubuntu 22.04, "потыкав" ее на виртуалке, решил накатить апдейт на рабочий ноут, пока накатывались обновления, перебирал девкиты в полке, нашел запыленную STM32MP157c-DK2 отладучную платку от старого проекта, ну и подумал - почему бы и не попробовать запустить 22-ю убунту на этом CPU.

В интернете полно статей как собрать Yocto или Buildroot под данный процессор, но ни одной как собрать свой собственный дистрибутив, по крайней мере, я не встречал.

Читать далее

Язык-головоломка Marthue

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

Предлагаю читателям Хабра "эзотерический" язык программирования, обобщающий нормальные алгоритмы Маркова (НАМ) и полусистемы Акселя Туэ (semi-Thue systems). В языке есть возможность интерактивного ввода и вывода, выбора поиска замены подстрок с начала, конца строки или случайным образом, условного рекурсивного вызова одного блока подстановок из другого, а также условного перехода между блоками. Это позволяет совмещать подстановку строк с элементами императивного и даже функционального программирования, а также исследовать недетерминированные алгоритмы.

Интерпретатор написан под Линуксом на языке Common Lisp, который я считаю одним из самых мощных и удобных, в том числе для экспериментальногого программирования. При желании большого труда не составит переписать его на любом популярном языке: например, сделать онлайновую версию в Javascript. Просто для запуска программ Лисп знать практически не нужно: достаточно инсталлировать любую версию Common Lisp и ввести нужный файл парой простых функций. Скачать репозиторий интерпретатора Marthue можно здесь.

Читать далее

Как работать с Makefile-проектами в среде CLion

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

За последние несколько лет мне пришлось столкнуться с множеством вопросов, которые были сформулированы примерно так: "мой проект не открывается в среде CLion". В свою очередь, это приводило к необходимости из раза в раз объяснять разным людям примерно одно и то же. Статья имеет целью сохранить тот опыт, который был накоплен в процессе анализа десятков разных проектов. Предполагается, что официальная документация вам уже известна и не вызывает вопросов.

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

OpenVPN. Инструкция по применению

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

Виртуальные частные сети (VPN) давно вошли в повседневную жизнь. Множество технологий и реализаций сервиса приватных сетей (как для частного применения, так и для использования внутри периметра организаций), обеспечивающих определённый уровень безопасности, доступны для использования широкому кругу ИТ-специалистов.

Не смотря на обилие технологий, предлагаю остановиться на старом добром OpenVPN (в связке с EASY-RSA). Решение от Джеймса Йонана отличается гибкостью, функциональностью, надёжностью и непрерывностью разработки на протяжении приличного временного периода. Так сказать, мастодонт от мира VPN-решений.

Спойлер — ссылка на довольно функциональное решение (ничего особенного, чистый бэкэнд), написанное на bash некоторое время назад, ждёт вас в конце публикации (в виде github-репозитория под именем «openvpn_helper»), а здесь же уделю внимание общей структуре и некоторым аспектам использования набора скриптов и OpenVPN.

***

Список необходимых компонентов (используемая ОС — AlmaLinux 8):

1) OpenVPN 2.4.12;
2) EASY-RSA 3.0.8.

Читать далее

Мгновенные снепшоты postgres на tablespace и btrfs

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

Для работы бывает полезно иметь несколько копий одной реальной базы для экспериментов, фикстур или просто тестовых приложений. База растет и время копирования через разворачивание дампа или с помощью шаблона также возрастает до утомительных величин. Для решения этого кейса уже описаны варианты использования файловой системы с поддержкой CoW - Btrfs. В интернете находил  такие инструкции, они сводятся к тому, что делается снепшот всего сервера. И для работы второго "скопированного" нужно перегенерировать pid и сменить порт для предотвращения конфликтов. Этот способ довольно универсальный относительно конфигурации баз на сервере, но кажется имеет ограничение для неопределенного кол-ва параллельных снепшотов серверов.

В этой статье предлагаю свой вариант реализации снепшотов на одном экземпляре сервера postgres и одной базы, на произвольное кол-во копий.

Инструкция linux only, про поддержку CoW файловых систем на Windows не в курсе.

Читать далее

Как Linux заменит Windows в РФ

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

Нынешние реалии

С введением санкций возникли серьёзные трудности в развитии промышленности страны. Трудности возникшие в IT затрагивают самый широкий спектр технологий. Возьмём, казалось бы, самую простую сферу деятельности, ввод и обработку данных. В каждой больнице, в регистратуре, стоит ПК на котором запущена программа для первичного учёта пациентов. Операционист вводит необходимую информацию и даёт талон для посещения врача. На этом компьютере установлена ОС семейства Windows которую сейчас мы не можем сейчас купить. Другой случай. Программируемый логический контроллер который управляет, к примеру, котельной и запрограммированный в среде CodeSys работающей тоже под Windows. И таких примеров очень много.

Читать далее

Звук в DIY проектах

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

Если ваше хобби/DIY, как и моё, связано с компьютером, то на каком то этапе вам захочется использовать звук. Предлагаю поговорить о звуке и обменяться опытом. Конкретно говорить будем, про запись и воспроизведение звука на компьютере. Возьмем компьютер под управлением Linux, но и под Windows должно работать. Язык для программирования предпочитаю Python.

Читать далее если интересно

Пишем аудио-разведчик своими руками

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

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

Что мы в итоге хотим получить и какой алгоритм работы реализовать:

1. Сервер, который запускается на той машине, пространство вокруг которой мы хотим прослушивать. Он тихо ждёт, пока к нему не подключится клиент. Затем он открывает устройство записи звука, настроенное по умолчанию в системе, и начинает передавать аудио поток на машину клиента. При отключении клиента от сервера, звуковое устройство закрывается, чтобы не тратить ресурсы зря.

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

Читать далее

Алиасы в bash для быстрого набора команд Git

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

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

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

Читать далее

DIY VSCode плагин для Clojure

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

На энном году работы с использованием Clojure/Clojurescript в качестве основных языков разработки, я наконец-то дошел до стадии, когда «больше терперть уже нельзя», и написал таки свой плагин для этой цели. Это явилось результатом многолетних поисков, лишений и страданий. Как говаривал Мичурин: мы не можем ждать милостей от природы, взять их у нее – наша задача. Интересующихся прошу под кат.

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

Прямое подключение крохотного OLED-дисплея по HDMI

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

Есть у меня склонность к реализации глупых и бессмысленных проектов. Перед вами один из них, который появился в результате беседы, закончившейся словами: «Слушай, а ведь технически возможно…», — не вопрос, давай сделаем.
Читать дальше →

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

Генерализованная изоляция адресного пространства

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

Обнаружение уязвимостей Meltdown и Spectre обратило всеобщее внимание на риски, связанные с совместным использованием общего адресного пространства. Даже не смотря на то, что есть специальные механизмы защиты, встроенные в железо, которые должны предотвращать доступ к конфиденциальным данным, очень часто эти уязвимости все равно удается использовать, чтобы эти данные вытащить. Поэтому вполне естественно, что первоначальные стратегии по снижению такого рода рисков включали в себя ограничение совместного использования адресных пространств, но это еще далеко не все, что здесь можно предпринять, и интерес к этой теме не угасает. И вот этот набор патчей, опубликованный Джунаидом Шахидом (Junaid Shahid) (содержащий работу Офира Вайса (Ofir Weisse) и вдохновленный более ранними патчами Александра Шартра (Alexandre Chartre)), как раз содержит то, что необходимо ядру для создания генерализованного механизма изоляции адресного пространства (address-space isolation — ASI).

Читать далее

Flutter for Desktop — новый подход к разработке приложений

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

Язык программирования Dart был изначально разработан как перспективная замена JavaScript в веб-приложениях (с поддержкой асинхронности, потоков, классической поддержки ООП и возможностью использования строгой типизации), но, к сожалению, в этом качестве он так и не достиг значительных успехов. Однако в дальнейшем компилятор Dart был доработан для других целевых платформ и наибольшего успеха достиг в сочетании с фреймворком Flutter как инструмент разработки высокопроизводительных мобильных приложений, создаваемых на основе реактивной модели. Но нужно отметить, что наряду с возможностями компиляции в целевые платформы Android и iOS (а также, разумеется, Web), Dart также может использоваться для создания приложений для операционных систем Windows, Linux и MacOS, что в сочетании с возможностями фреймворка Flutter и оптимизированных платформенных реализаций Flutter Engine и Embedder, представило новый путь к созданию нативных приложений с графическим интерфейсом. В этой статье мы рассмотрим возможности и особенности реализации desktop-приложений на Flutter и разберемся с механизмами интеграции внешних библиотек.

Читать далее

Пробрасывание LTO-1 стримера по iSCSI, проблемы и решения

Время на прочтение11 мин
Охват и читатели4K
imageПосле просмотра серии видеороликов «Данные на магнитной ленте» от Макс “Fagear” Крюков. Захотелось себе приобрести, что-нибудь из стримеров. Требование было чтобы оно ещё работало, стоило не как крыло самолета. И было вполне годно не только чтобы проиграться. Порывшись на барахолках, был найден стример HP LTO-1, со SCSI контроллером и кучей картриджей небольшой юзаности. Подключил к компу, погонял стандартной XPшной прогой для бэкапов. Всё работает всё хорошо. Но выяснилась одна проблема, слоты PCI на материнке расположены так, что две PCI карты туда нормально не воткнуть. А убирать X-Fi не хотелось, к тому же SCSI контроллер греется, и желательно бы его охлаждать, а это лишний шум который не нужен. Было принято решение поставить стример в другой комп(благо ненужных комплектующих хватает). Поставить Linux, и пробросить стример по iSCSI. А уже включать по мере необходимости, или вообще держать там, где шума не слышно. Опыт работы с iSCSI был, всё должно было заработать без сучка и без задоринки.
Ага щас...

Книга «Linux. Книга рецептов. 2-е изд.»

Время на прочтение9 мин
Охват и читатели25K
image Привет, Хаброжители! Книга рецептов обучит начинающих пользователей и администраторов Linux управлять системой, используя как графические инструменты, так и командную строку. Независимо от того, используете ли вы Linux во встроенных или настольных системах, серверах, облачных или виртуальных средах, фундаментальные приемы одни. Цель книги — помочь вам быстро приступить к работе на простых и наглядных примерах. Карла Шредер приводит рецепты с объяснениями для конкретных ситуаций, а также ссылки для дополнительного изучения.

Карла Шрёдер (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

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

В основном, Docker привыкли использовать для запуска сервисов или процессов не предполагающих визуальной составляющей. Однако могут быть ситуации, когда в контейнере возникает необходимость открыть среду разработки и на месте продебажить один сервис или два сервиса, каждый в своем контейнере. В прошлой статье я писал, как запускать графические приложения в wsl, в текущей расскажу, как можно запустить разными способами в контейнере qtcreator. Аналогично можно будет поступить с любой средой разработки или программой.

Читать далее

Как начать писать программный код Си в ОС Linux (Руководство для совсем начинающих)

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

Этот материал рассчитан на людей, будущих программистов, которые только начинают разбираться в программировании под ОС Linux, или может быть долго были пользователями ОС Windows. Я попробую здесь показать прямое руководство к действию на примере ОС Ubuntu и тех простых инструментов, которые использовал некогда сам при изучении Си в процессе знакомства с Linux.

Читать далее

Два месяца работы и готово: что нового в ядре Linux 5.17

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

Источник картинки: OMG! Ubuntu!

Выхода нового ядра Linux ожидали многие, о чем можно судить хотя бы по количеству публикаций в технологических СМИ, предвкушавших новинки Linux 5.17. И, наконец, Линус Торвальдс представил новый релиз, опубликовав его 21 марта. Нового и хорошего действительно много, так что опробовать новую версию обязательно стоит, если вы этого еще не сделали.

Объём проделанной работы достаточно большой. Так, в новой версии приняли 14203 исправления от 1995 разработчиков. Общий размер патча составляет 37 МБ. Что касается изменений, то они затронули 11366 файлов, добавлено 506043 строк кода, удалено 250954 строк. Весьма значительная часть изменений в ядре, а это около 44%, связаны с драйверами устройств. Еще около 16% изменений имеют отношение к обновлению кода, имеющего отношение к аппаратным архитектурам, 15% — сетевой стек, 4 — файловые системы, ну и еще 4% изменений связаны с подсистемами ядра. О подробностях — ниже.
Читать дальше →