Category: Linux

17
Янв
2022

Как можно практиковаться на чистом С или какие создавать свои проекты?

Занимаюсь самообучением программирования, на данный момент это чистый С, для последующего перехода на С++. Для собственного развития, для создания портфолио, для возможного последующего входа на стажировку или вакансию – нужно самим делать…

15
Янв
2022

-Как пользователям запустить одновременно одно и тоже же джава приложение в линукс через x2go?

Дано:
убунту 20, два пользователя, доступ к xfce графическому рабочему столу через x2go (грубо говоря аналог xrdp), установлена джава 17, установлено джава приложение (оно есть прямо в списке в системе, удобно для юзера).
Проблема:
Пользов…

13
Янв
2022

Удалить из текста указанное число пробелов C

Необходимо удалить из текстового файла указанное число пробелом, с перезаписью в другой файл и счётчиком, сколько удалений было произведено. Выполнение происходит в среде alt linux через компилятор GCC. Привожу пример кода:
#include <st…

13
Янв
2022

Почему не удаляет очередь?

Я только недавно начал разбираться с темой очередей сообщений и вот наткнулся на проблему, связанную с обработкой сигналов:
почему во время обработки сигнала SIGRTMIN+1 родительский процесс не удаляет очередь qid?
Извините за польский, дум…

13
Янв
2022

Как правильно иcпользовать семафоры в программе?

Я только недавно начал разбираться с этой темой и вот наткнулся на проблему:
как правильно в этом коде использовать семафоры, чтобы избежать ошибки (błąd blokowania semafora = ошибка блокировки семафора)?
Я полагаю, что дело просто в том, …

12
Янв
2022

Как запустить selenium webdriver на vps?

Есть файл index.js, который с помощью selenium работает с браузером. Он должен в консоли отображать данные, которые спарсил, но сейчас он просто зависает. Тоесть скрипт запускается, но не может спарсить данные, потому что это VPS и там нет…

11
Янв
2022

TTF_OpenFont: Error writing to datastream

SDL2_ttf инициализирована, сам SDL2 тоже работает, но вот шрифт никак не хочет грузит. Файлы со шрифтами распологал и в рабочей папке и вне её. Доступ к файлам дан. И сам шрифт указатель на шрифт инциализировал через nullptr, а потом загру…

07
Янв
2022

Python 3 – Как просканировать папку /tmp, найти в ней файлы, которые начинаются с "x" и удалить их?

Я делаю программу для очистки кеша / мусора.
Она будет удалять всё, что начинается с:
1) Папки ".com.google.Chrome."
2) Файлы "config-err"
3) Папка "mintUpdate"
4) Файлы-изображения "xapp-tmp-"
5) Па…

02
Янв
2022

Raspbian Lite / Raspberry Pi 4. Какие зависимости нужно установить, для создания окон с Python?

Установлена консольная (не настольная) верстя операционной системы. Не хочется ради нескольких окон на Python, которые нужны, устанавливать настольную версию операционки, которая будет отнимать как я понимаю ресурсы. Какие зависимости, и …

31
Дек
2021

Почему после высылания сигнала SIGCONT не работает сигнал SIGSTOP?

Столкнулся с интересным поведением в своей программе:
если остановить процессы с помощью сигнала SIGRTMIN+2, а потом возобновить при помощи SIGCONT, то впоследствии на очередное высылание сигнала SIGRTMIN+2 процессы уже не реагируют. Полаг…

28
Дек
2021

Как определить размер нестандартного файла /dev/urandom?

В общем пишу проект по операционным системам на C.
Есть код, который считывает информацию из файла и передаёт её дальше в обработку.
Так вот информацию из /dev/urandom он читает нормально, но неопределённо долго.
Дело в том, что у меня код…

28
Дек
2021

Evolution Linux

Есть ли способ прочитать письмо из Evolution, допустим из outlook можно средствами dot net, если что то подобное в Linux?
Python например, или другой любой способ.
Моя задача: Поймать письмо от определенного отправителя, распарсить и помес…

22
Дек
2021

Профессия «Разработка на Go»

За год научитесь создавать приложения, безопасные и масштабируемые сервисы на современном языке от Google.
— Читать дальше «Профессия «Разработка на Go»»

20
Дек
2021

Курс «Python для пентестера»

Изучите тонкости работы с языком программирования Python и его использование в сфере кибербезопасности. Максимум практики и поддержка инструктора при выполнении заданий.
— Читать дальше «Курс «Python для пентестера»»

18
Дек
2021

Взаимодействие с свёнутыми(неактивными) окнами с возможностью параллельной работы с другими окнами в python

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

08
Дек
2021

cron + php + linux +symphony не срабатывает команда из крона которая должна дергать симфони

Коллеги доброе время суток.
Подскажите.
Есть команда php
‘php /home/dev/Desktop/TestDontTach/SymphonyII/isconnect/isconnect/bin/console datatransfer:api:fileControll’
фаил с проэктом находиться по пути
Desktop/TestDontTach/SymphonyII/iscon…

05
Дек
2021

Как привязать Crontab к пользовательской сессии?

У меня программка с графикой, хочу ее запучкать ее при загрзки устройства. Программа при загрузке включается но граику не выводит, я так думаю что она не понимет куда выводить изображение. Как мне заставить ее выводить GUI на экран. Из кон…

02
Дек
2021

Как эмулировать нажатие клавиши в Linux в режиме ядра?

Пишу драйвер мыши, позволяющий имитировать нажатия клавиш клавиатуры с помощью точек и тире. Но те способы, которые удалось найти на форумах(и понять), используют средства пространства пользователя, т.е. мне не подходят. Можете подсказать,…

30
Ноя
2021

Linux cron bash

Есть сервер php поднятый локально. (Скажу заранее в bash синтаксисе я слабоват)
Нужно что бы крон каждые 5 минут вводил в консоль следующе
cd "путь до сервера"
консольная команда
Спустя 5 минут повтор
Вот например
1)cd "/hom…

23
Ноя
2021

🐧 Тест для новичков: какой дистрибутив Linux выбрать?

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

23
Ноя
2021

«Чёрная пятница» в Skillfactory

Скидка 55 % на курс «Python-разработчик» и курс «Soft Skills для Digital-менеджеров» в подарок при покупке. Освойте Python с нуля и начните новую карьеру с позиции Junior-разработчика уже через 3 месяца обучения.
— Читать дальше ««Чёрная пятница» в Ski…

17
Ноя
2021

Unable to handle kernel paging request at virtual address

Пытаюсь заставить работать +- новый драйвер на старом кернеле (3.4.113)…всё вроде шло хорошо до момента проверки инжекта пакетов…после инжекта кернел ложится…вот кусочек лога
[ 66.546989] Unable to handle kernel paging request at v…

04
Ноя
2021

Warning: implicit declaration of function

Изучаю утилиту make в Linux. Есть 4 файла в котором две функции, главная функция и Makefile(скриншоты ниже). При вызове утилиты make, появляется сообщение Warning: implicit declaration of function. Из-за чего это и что нужно исправить или …

01
Ноя
2021

Что на самом деле входит в структуру MTU в Linux?

Всем привет, устанавливая MTU в Linux, мы ограничиваем пакеты на отправку и получение, но что входит в это ограничение, в контексте структуры фрейма? Игнорируется ли размер Ethernet Header? При тестировнии, а точнее с помощью команды &quot…

26
Окт
2021

🐧 Почему Linux не пользуется популярностью на десктопе и как это исправить?

Рассмотрим недостатки и проблемы Linux, не дающие свободной ОС завоевать популярность у простых пользователей на десктопах (настольных компьютерах). Также расскажем о возможных стратегиях их решения.

Начиная с 2018 года, 500 самых высокопроизводительных систем в мире управляются операционными системами на основе ядра GNU/Linux. Смартфоны с Android доминируют на рынке мобильных устройств, а 90% облачной инфраструктуры также работает на Linux.

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

Если вас интересует история развития операционных систем, рекомендуем прочитать статью: «Разбираем операционные системы по косточкам: как всё начиналось?»

Проблемы…

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


Недостаточно хорошая аппаратная поддержка

К сожалению, многие производители оборудования до сих пор не разрабатывают драйверы под Linux для своих продуктов. Порой в ядре GNU/Linux возникают регрессии, когда какое-то оборудование по необъяснимым причинам перестает работать в новых версиях.

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

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

Сложности с заменой привычных приложений для Windows

Это больная тема для многих, поскольку сторонники Linux будут охотно указывать на замечательные альтернативы, которые могут быть приемлемыми. Нужен Adobe Photoshop? Используйте GIMP. Нужен Microsoft Office? Используйте LibreOffice. Для обычных пользователей эти альтернативы могут работать, и работать хорошо. Однако многие привыкли к интерфейсам проприетарных продуктов Adobe, Microsoft и прочих. К тому же ряд платных функций, которые они предоставляют, могут быть реально необходимы профессионалам.

Зоопарк дистрибутивов затрудняет выбор

По состоянию на октябрь 2021 года DistroWatch насчитывает 252 активных дистрибутивов Linux. Эта фрагментация усложняет установку программного обеспечения, вынуждая пользователей полагаться на предварительно скомпилированные пакеты из репозиториев для конкретных дистрибутивов, которые имеют ограниченный выбор приложений и обычно отстают от последних выпусков. Обилие дистрибутивов также может создать проблему выбора, которая, впрочем, легко решается вдумчивым подходом к выбору или простой переустановкой не понравившейся ОС.


Непривычная структура каталогов

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

К тому же в Linux есть ограничение на 255 байтов для имен файлов и каталогов, что может привести к проблемам копирования при использовании разных ОС.

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

Сложности с интерфейсом

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

Разработчики часто жалуются на отсутствие в X.org «высокоуровневого, стабильного, разумного и стандартизированного API» для создания приложений с графическим интерфейсом.

Сложности с системой управления пакетами

Многие новички в Linux начинают с Ubuntu и его производных, вроде Linux Mint. В терминале или в командной строке эти пользователи будут изучать системы управления пакетами dpkg и apt (advanced packaging tool) и столкнутся с пакетами формата deb, но существует множество других менеджеров, вроде YUM и Pacman, а также форматов, вроде rpm. Эти менеджеры пакетов используют совершенно разные команды, что может сбивать с толку.

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

Отсутствие игр

Не секрет, что под Linux выходит намного меньше игр, чем под другие платформы. Это, вероятно, не самая большая проблема системы, но она сильно расстраивает заядлых геймеров. Особенно это относится к играм класса AAA.

В Linux не хватает поддержки plug-and-play для множества устройств ввода, таких как джойстики и рули. Нет универсального приложения с графическим интерфейсом, которое реализует экранный HUD с использованием ЦП, графического процессора, оперативной памяти, FPS и синхронизации кадров.

…и решения

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

Железо и драйверы

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

Лайфхак для домашних пользователей
Если вы еще не купили настольный компьютер, моноблок или ноутбук, выбирайте среди моделей с предустановленной ОС Linux. Дистрибутив может быть любым: при необходимости вы легко установите понравившийся, и все железо гарантированно заведется из коробки.


Программное обеспечение

Список программного обеспечения для Linux постоянно расширяется, но если вы привыкли к продуктам Adobe, не можете нормально работать без 3ds Max или AutoCAD, или не готовы осваивать альтернативные приложения, вроде GIMP, KDEnlive или Blender, то Linux – не ваш выбор.

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

Лайфхак для домашних пользователей
В последние годы получили распространение т.н. переносимые или бинарно-независимые приложения для Linux. Эти универсальные решения для любого дистрибутива упрощают сборку, распространение и поддержку программных продуктов. На сайтах разработчиков стороннего (в основном проприетарного) ПО часто можно скачать Appimage для Linux – собранный со всеми зависимостями и готовый к запуску файл-образ. Еще один популярный вариант – созданная в Canonical система управления универсальными пакетами Snappy с репозиторием для любых дистрибутивов Snapcraft.io. Альтернативное решение – система Flatpak и репозиторий Flathub.

В репозитории Canonical есть, например, официальные клиенты Spotify и 1Password
В репозитории Canonical есть, например, официальные клиенты Spotify и 1Password

В обоих случаях скачанные приложения запускаются в изолированной песочнице, а единственный их недостаток – приличный размер. Стоит отметить, что в репозитории Canonical универсальных приложений гораздо больше, а у аккаунтов многих крупных разработчиков есть статус верифицированных. Выбор системы также определяется ее поддержкой из коробки в графическом менеджере пакетов вашего дистрибутива: скажем, в Ubuntu можно кликом мышки ставить пакеты snap, а в Linux Mint – flatpak (из Flathub).

Установленные пакеты snap, верифицированные издатели отмечены зеленой галочкой
Установленные пакеты snap, верифицированные издатели отмечены зеленой галочкой

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

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

Зоопарк дистрибутивов и окружений рабочего стола – это хорошо

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

Если вы новичок в Linux, можно использовать специальные инструменты: например, тест distrochooser или подбор по критериям на distrowatch. Также стоит ознакомиться со сравнительной таблицей дистрибутивов в Википедии. Раньше новичкам рекомендовали тот дистрибутив, который предпочитает ближайший к ним гуру, но те времена давно прошли.

Для комфортной работы в Linux стоит также выбрать одно из популярных окружений рабочего стола (Desktop Environment или DE):

Выбор дистрибутива и выбор DE – это один процесс. Отличным вариантом будет Ubuntu LTS (с длительным сроком поддержки), другие *ubuntu (Kubuntu, Xubuntu и т.д.) или одна из вариаций Linux Mint. Все зависит от того, какое окружение рабочего стола вам нравится. Стоит также присмотреться к дистрибутивам Fedora и OpenSUSE.


Игры и Linux

Самый простой способ поиграть во что-то, что не запускается в Linux – виртуальная машина с Windows или компьютер с двумя ОС на борту. Загрузчик GRUB позволяет установить Linux второй системой, не отказываясь от винды. Есть и более простые решения, вроде приложений, которые позволяют запускать в Linux созданные для Windows игры. Среди них стоит отметить следующие:

Еще один вариант – установить Steam для Linux.

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

Не смотрите на недостатки

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

Назовем лишь некоторые:

  • Это бесплатно. Установив Linux, вы больше не будете заморачиваться с покупкой лицензий на ПО (если сами не захотите).
  • Гибкость. Хотите использовать Debian с рабочим столом Xfce и приложениями из стека GNOME? Пожалуйста. Хотите установить стороннее ПО из исходников? Запросто. Хотите удалить рабочий стол? Не вопрос. Как было написано в руководстве по Debian: «Не бойтесь пересобирать ядро. Это забавно и полезно».
  • Безопасность. Нельзя сказать, что Linux по умолчанию является самой безопасной системой, но тут включается два фактора. Во-первых под Linux намного меньше вирусов чем под Windows, а имеющиеся очень сложно запустить: то версия библиотек им не подходит, то компилятор не тот – вечно возникают какие-то проблемы. Во-вторых, благодаря гибкости вы можете настроить порты, политики пользователей, права, бекап и вообще все в соответствии с собственными потребностями, защитив себя от проблем с безопасностью данных.
  • Производительность. Приложения для Linux обычно менее требовательны к ресурсам по сравнению с аналогами для Windows, поэтому если у вас слабый компьютер, вы наверняка заметите значительный прирост быстродействия. Более того, Linux с легковесным DE может дать вторую жизнь машине, которую Microsoft советует выбросить на помойку.
  • Опыт. Если вы работаете в ИТ, знание основ работы с Linux вам явно не помешает, а для системных администраторов это и вовсе беспроигрышный вариант. Стоит выбрать настольную версию серверных дистрибутивов, которые используются в вашей компании (или наиболее близкий к ним вариант).

Подведем итоги: если вы действительно нуждаетесь в профессиональном проприетарном ПО, часто используете специфическое железо или вы заядлый геймер, стоит несколько раз подумать, прежде чем ставить Linux или установить его второй системой для изучения. Если вы консерватор, не хотите привыкать к новому интерфейсу и изучать консоль, возможно Linux вам просто не нужен. В остальных случаях это довольно неплохим выбор. Удачи в изучении новой ОС!

Если у вас есть собственный опыт использования Linux на десктопе, поделитесь им в комментариях.

***
Больше полезной информации вы найдете на нашем телеграм-канале «Библиотека программиста».