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

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

Пишем под *nix

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

Программирование на C в Linux на примере создания командной оболочки: часть 2

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

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

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

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

Читать далее
Всего голосов 24: ↑23 и ↓1+32
Комментарии11

Новости

Unix на работе. Часть вторая, программная

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

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

Из первых рук и на основе многолетней практики.

Читать далее
Всего голосов 32: ↑28 и ↓4+36
Комментарии96

Проблемы с Raspberry Pi 4 не дают выйти в бета-релиз Fedora 41. Но почему?

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

Fedora — один из самых известных дистрибутивов операционной системы GNU/Linux. Проект охватывает множество направлений, таких как мобильные устройства, облачные технологии и робототехника. Разработчики Fedora ежедневно решают задачи различной сложности: от управления IT‑инфраструктурой до программирования микроконтроллеров и создания роботов.

Несмотря на общий успех и популярность, почти каждый релиз Fedora не обходится без сложностей. Поддержка одноплатного компьютера Raspberry Pi 4 вновь стала источником проблем, что уже не впервые задерживает выход бета-версии.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+33
Комментарии8

Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 2

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

Представляю вашему вниманию вторую часть перевода статьи A guide to inter-process communication in Linux.

Первая часть перевода была посвящена общему введению в курс дела и механизму разделяемого хранилища (shared storage). В этой части будут рассмотрены механизмы каналов (именованных и неименованных) и очереди сообщений.

Приятного чтения!

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

Истории

Оптимизация Linux задерживается: ушел главный разработчик проекта Rust for Linux. Но почему?

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

Привет, Хабр! Это Даша Волкова из МТС Диджитал. Несколько дней назад стало известно, что Ведсон Алмейда Фильо (Wedson Almeida Filho), ключевой участник проекта Rust for Linux, решил уйти из команды. О своем решении он объявил неожиданно для многих представителей как самого проекта, так и Linux-сообщества. Теперь переход ОС на Rust замедлится. Что случилось?

Читать далее
Всего голосов 12: ↑9 и ↓3+11
Комментарии22

Unix на работе. Часть первая:  Качая железо

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

Открываю серию статей про повседневное использование Linux и *BSD-систем в качестве основной ОС для работы. Начнем с общих принципов и выбора подходящего оборудования.

Читать далее
Всего голосов 22: ↑16 и ↓6+15
Комментарии97

Программирование на C в Linux на примере создания своей командной оболочки

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

Привет, хабр! Язык программирования C — основополагающий, как я считаю. И его знать, нет, не обходимо, но довольно желательно. Большинство языков отсылают к C, и зная C (или C++) другой язык будет даваться намного легче.

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

В этом туториале я буду использовать компилятор CLANG, а не GCC, и расскажу его преимущества

Итак, для создания своего шелла на C для Linux вам понадобится простой советский копеечный...

Узнать
Всего голосов 26: ↑23 и ↓3+34
Комментарии42

Автоматизация сканирования открытых сетевых портов

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

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

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

Читать далее
Всего голосов 4: ↑4 и ↓0+7
Комментарии6

Все меняется: новые выпуски Ubuntu будут базироваться на свежайшей версии ядра, даже нестабильной

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

Привет, Хабр! Это Даша Волкова и новости из мира ИТ.

Компания Canonical, которая разрабатывает дистрибутив Ubuntu, пообещала формировать новые выпуски своей ОС на базе свежей версии ядра. Даже в том случае, если она еще не стабильна. Разработчики уверяют, что приняли такое решение в интересах пользователей и партнеров. Подробности — под катом.

Читать далее
Всего голосов 10: ↑9 и ↓1+16
Комментарии13

Python. Tkinter. В ожидании релиза 3.13

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

Работая нал проектом svgwidgets я активно использовал функционал tk busy, который появился в релизе Tcl/Tk 8.6.0. Мне стало интересно, а поддерживается ли этот функционал в Python-е, а точнее в Tkinter-е. Каково же было мое удивление узнать, что именно сейчас в Tkinter, который входит в состав Python версии 3.13, добавляется функционал tk busy, который давно включен в tcl/tk. Релиз Python 3.13 ожидается в октябре этого года. Мне показалось, что будет полезно рассказать о функционале tk busy, а точнее о новых методов для виджетах в Tkinter. Вот эти методы - tk_busy_hold(), tk_busy_configure(), tk_busy_cget(), tk_busy_forget() и tk_busy_current().

Командаy tk busy предоставляет простой способ блокировки виджета от действий пользователя.

Как работает методы блокировки tk_busy в Tkinter рассмотрим на примере. При этом будем использовать классические виджеты.
Но для начала пришлось собрать из исходных кодов Python-3.13.0rc1.tgz дистрибутив Python-а. Все это было мною проделано в Linux на Mageia release 9.
Итак, создадим некий графический интерфейс, в котором будет главное окно (mwin) размером 10 сантиметров на 6 сантиметров с виджетом панели (frame1), в которой будут размещены поле ввода данных (ent1) и кнопка (but1):

bash-5.2$ /usr/local/bin64/python3.13 Python 3.13.0rc1 (main, Aug 21 2024, 15:48:04) [GCC 12.3.0] on linux Type "help", "copyright", "credits" or "license" for more information.

Читать далее
Всего голосов 7: ↑6 и ↓1+7
Комментарии22

Как я пришёл к пониманию основ создания Live-дистрибутивов Linux, решив починить свой старый SSD

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


Был у меня старенький SSD объёмом 240 Гбайт от Kingston, который внезапно перестал работать, вообще перестал распознаваться в системе. Попробовал я подключить SSD к другому компьютеру, попробовал использовать как внешний диск, ничего не дало результата. Поэтому я купил новый, а этот разобрал.


Внешних признаков, указывающих на то, что SSD сгорел, я не заметил, а интуиция говорила: «Проблема программная». Выбрасывать диск не хотелось, поэтому он остался пылиться до «лучших» времён. И вот недавно захотелось попробовать его починить. К своему удивлению, я достаточно быстро нашёл необходимую статью на Хабре, где рассказывалось, как можно оживить SSD на том же контроллере, что и мой, отдельную тему на форуме Ru-Board, а также статью с подробной инструкцией, по ней я и восстановил свой SSD. Но кроме восстановленного SSD я еще приобрёл и закрепил знания по Linux, которые изложил в этой статье. Всем, кому интересно, добро пожаловать под кат.

Читать дальше →
Всего голосов 46: ↑46 и ↓0+63
Комментарии9

Из истории технологий: откуда взялся Unix

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

Сегодня многие полагают, что «Unix» и «Linux» — это одно и то же. Но по состоянию на 2024 год с большинством дистрибутивов, которые мы причисляем к «Unix» и «Linux» ситуация почти так и обстоит.

Но у Unix долгая история. Если у вас в распоряжении только известные сейчас системы Linux, то сложно размышлять о том «какова была ситуация на заре Unix», поскольку так много с тех пор изменилось.

Читать далее
Всего голосов 34: ↑28 и ↓6+34
Комментарии6

Как оптимизировать размер контейнерного образа в Docker

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

Введение


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

Я для сравнения покажу различные варианты Dockerfile, а в конце этой статьи приведу таблицу, в которой будет показано, образы какого размера получаются из каждого файла. Так вам будет проще оценить, каково влияние от каждого варианта оптимизации.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+11
Комментарии6

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

Made in China: вышел новый дистрибутив китайского Linux — Deepin 23

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

Привет, Хабр! Это Виктор Сергеев из МТС Диджитал. Сегодня поговорим о Deepin 23 — дистрибутиве Linux, 15 августа был опубликован релиз. Его особенность — фокус на развитии графического окружения Deepin Desktop, который называется Deepin 2Environment (DDE). Еще ОС выделяется наличием 40 собственных пользовательских приложений, включая музыкальный проигрыватель DMusic, видеоплеер DMovie, систему обмена сообщениями DTalk, инсталлятор и центр установки программ Deepin Software Center. Подробности о новинке и ее возможностях — под катом.

Читать далее
Всего голосов 7: ↑7 и ↓0+15
Комментарии8

Как извлечь данные из Linux с помощью C++ и Qt. На примере приложения с прогнозом погоды

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

Привет, Хабр! Меня зовут Михаил, я backend-разработчик в SimbirSoft. Хочу поделиться с вами опытом получения различной информации в ОС Linux для использования в своих целях.

Представьте, что нам нужно написать приложение «Погода», которое берёт из сети температуру, влажность и прочие параметры и отображает для пользователя. Было бы неплохо, чтобы оно само определяло, где мы находимся. Но как это сделать? Легко!

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

- навигационные данные (долготу, широту, высоту);

- сведения о сетевом соединении (название, тип, уровень сигнала Wi-Fi);

- заряд батареи;

- информацию о хранилище (сколько занято/сколько всего).                                                                  

Стек используемых технологий – C++ в связке с библиотекой Qt (5.12). Задача казалась довольно простой. Но первое впечатление очень часто обманчиво. Особенно в тех случаях, когда вам не приходилось решать подобные задачи. Но обо всём по порядку. Рассмотрим вывод разных видов информации.

👉 Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии6

Linux Pipes – медленные

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

Я пишу программу для сверхбыстрого кодирования/декодирования азбуки Морзе и использую pipe для передачи данных. При этом pipe работает очень медленно. Давайте разберемся почему.

Читать далее
Всего голосов 34: ↑34 и ↓0+42
Комментарии11

Logger C++

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

Этот проект представляет собой простую и гибкую библиотеку для логирования на C++. Библиотека поддерживает разные уровни логирования, форматирование сообщений и возможность записи логов в разные потоки.

Читать далее)
Всего голосов 11: ↑8 и ↓3+7
Комментарии23

Из истории ОС к дню Linux

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

В 1991 год произошли сразу два важных события, сыгравших огромную роль в развитии информационных технологий: 17 мая – день рождения Интернета, а 25 августа – день рождения Linux (один из четырёх).

Когда-то давно под каждый компьютер разрабатывались свои системы, пока не стало ясно - нужно делать операционную систему, менее зависимую от железа. В 1960-х появилась ОС UNIX, а в 1980-х берут начало Windows и UNIX-подобная система от Apple.

Сегодня предлагаем окунуться в историю операционных систем. А бонусом обсудим, почему Doom – это ОС. 

Читать далее
Всего голосов 26: ↑22 и ↓4+28
Комментарии15

Adwaita-swift: теперь можно писать приложения для GNOME на языке Swift

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

Язык программирования Swift наиболее широко применяется в разработке программного обеспечения для операционных систем от компании Apple. Но не так давно появилась заметка, в которой говорится, что теперь на этом языке можно писать программы, основанные на GTK4+Libadwaita.

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

Читать далее
Всего голосов 10: ↑10 и ↓0+15
Комментарии0

find + mkdir полны по Тьюрингу

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

Введение

Мы покажем, что система, имеющая лишь команды GNU find и mkdir, полна по Тьюрингу.

Хорошо известно, что команды sed и awk сами по себе полны по Тьюрингу, но мне не удалось найти информации о Тьюринг-полноте find + mkdir.

Доказательство основано на реализации таг-системы.

Мы по порядку рассмотрим реализацию цикла, FizzBuzz и таг-системы.

Читать далее
Всего голосов 52: ↑52 и ↓0+75
Комментарии21
1
23 ...