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

Код:
    int forkResult = 0;
    int aSocket = 0;
    
    do{
        aSocket = accept(listener, NULL, NULL);
        forkResult = fork();
        switch(forkResult){
            case -1:{
                printf("fork() err\n");
                break;
            }
            case 0:{
                server(aSocket);
                break;
            }
        }
    }while(forkResult>0);
Казазалось бы, что всё правильно - мы принимаем соединение, вызываем fork() и в ребёнке отправляем обрабатываться принятое соединение, а сами ждём следующее соединение. Но вот тут кроется одна маленькая неочиведность - закрытие сокета в ребёнке на самом деле не закрое сокет. Всё дело в том, что после вызова fork(), пораждается новый процесс у которого есть свой дескриптор на этот сокет. То есть на один и тот же сокет мы имеем 2 дескриптора: один в родителе, другой в ребёнке. Когда функция server() отработает и закроет сокет, то останется ещё один дескриптор(который в родителе) и сокет на самом деле не закроется. Чтоб сокет закрывался на самом деле, его нужно закрывать в обоих процессах.
Код:
    int forkResult = 0;
    int aSocket = 0;
    
    do{
        aSocket = accept(listener, NULL, NULL);
        forkResult = fork();
        switch(forkResult){
            case -1:{
                printf("fork() err\n");
                break;
            }
            case 0:{
                server(aSocket);
                break;
            }
            default:{
                close(aSocket);// закрываем сокет в родителе
            }
        }
    }while(forkResult>0);
Теперь сокет будет закрываться в родителе сразу же и останется всего один дескриптор - в ребёнке. Когда ребёнок закроет свой сокет, то на сокет не останется ни одного дескриптора и сокет будет закрыт по-настоящему.
2 Ответы
Нашёл CSS для включения прозрачности вкладок:
Открыть спойлер

Но это просто прозрачность, без размытия. Возможно ли размытие фона, или же FF не умеет?
18 Ответы
Разработчики отказались от поддержки метода хинтинга "hintfull", предлагая пользователям покупку HiDPI мониторов. Некоторые семейства шрифтов стали отображаться некорректно.

   

Перевод ответа разработчика (взят отсюда):

Цитата: >Я пытался использовать стили хинтинга отличные от hintfull, но только он даёт отображение шрифтов близкое к ClearType v2 в Windows 7, которое, по моему мнению, имеет наилучший рендеринг из всех существующих решений.

Цитата: Верно. Поэтому мы не стали поддерживать его больше. Вы можете попытаться привыкнуть к "мыльному" рендерингу или попытаться найти что-то еще. Вы же используете Open Source, понимаете?

HarfBuzz используется в окружениях, использующих GTK (Gnome Shell, MATE и т.д.).
8 Ответы
После некоторого времени на GNOME пытаться вернуться на KDE это какой-то ужас. Пробую Wayland сеанс, некоторые вещи будут Wayland-специфичные, но вцелом, это несущественно. Раньше Plasma версии 5 использовал, но давненько, и теперь ощущения совсем иные.

Центр настроек

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

Меню приложений

Категории до сих пор. Как их вырубить? Переключился на Dashboard. У него убогий дефолт с категориями опять, по-дефолту показывает последние запущенные. Переключить дефолт на показ всех приложений нельзя, но можно отключить категории последних запущенных, тогда будет показывать все по-дефолту. Но там компоновка ужасная. Разбито на группы по первой букве алфавита, в экран помещается всего ничего. Кстати, названия обрезанные (и эти люди ругают гном за это). Перенастроить это нельзя. Хваленная конфигугируемость KDE? Не в этом случае.

Кстати, понял почему поиск создает ощущение подтормаживания. В GNOME он работает как фильтр. То есть, с вводом каждого символа он отбрасывает приложения, которые не подходят. Здесь же поиск сначала ожидает ввода первых символов и в это время не показывает ничего, при продолжении ввода ситуация повторяется. В Launcher отзывчивость лучше, но все равно поведение похожее. Наверно, на регулярной основе я бы не смог пользоваться и тыкал бы в категории. А в GNOME это основной способ запуска приложений. Но вот еще, тут есть KRunner, который однако тоже не такой отзывчивый. Но он делает примерно то что делает поиск гнома, только вынесен отдельно и дотянуться до него сложнее, нежели нажать Win.

Еще в кедах обещали новую менюшку, которая должна быть лучше. Но пока ее нет. Дефолтный Launcher древность с появления четвертых кед, особо за это время не менялся, а начало берет еще с меню для третьих кед. Dashboard, кстати, напомирает какое-то древнее поделие из Ubuntu, которое было еще до Unity. Там тоже было так, с разбиением на категории.

Трей

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

Виджеты

Зачем они, не сильно понятно. Те, котороые на панели размещаются, как апплеты, еще ладно. На рабочем столе может полезна парочка информационных. А вообще практика такова, что на рабочем столе лучше не размещать виджеты. Но видимо тут хотят повторить привычный опыт Windows 7 (или я путаю с вистой), хотя я уже не помню в последнее время ни у одного пользователя винды виджеты. Это был чисто эксперимент. Неудачный эксперимент. Да и отсутствие виджетов на рабочем столе по-дефолту в Plasma тоже говорит не в их пользу. Но зато по в поставке идет куча виджетов, чтобы продемонстрировать, какой есть богатый их выбор, хоть они в основном и бесполезны.

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

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

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

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

Ну и на этом итог. Если в окружении рабочего стола само окружение страдает, то и зачем оно нужно?

Приложения

По прибложениям пробегусь кратко. Не разделяю идеи использования специфичных для DE приложений. В GNOME использую некоторые из KDE и не испытываю с этим каких-то проблем. Более того, все самые главные, основные и полезные приложения вообще независимы от DE.

Центр настроек уже упоминал, он перегруженный, в нем сложно ориентироваться.

Discover. Это вроде терпимо. По сравнению с тем говном, что GNOME Software, этот центр приложений выглядит даже юзабельным.

Dolphin. Вроде как тоже. На поиск нужно специально переключаться. А вот есть фильтр по текущему каталогу, удобно. И работает он именно так, как должен бы был работать поиск по меню приложений.

Konsole. Это наверно тоже хорошо. Такие приложения без регулярного использования сложно оценить. Но терминал как терминал. Поиск удобно сделан панелью, а не как в GNOME Terminal отдельным диалоговым окном.

KSysGuard. Обычный такой обозреватель ресурсов. Разве что иначе считает потребление, чем GNOME System Monitor. Из-за чего показывает меньше потребление для, хотя потребление больше. Так, после входа в систему показывате использование 0.51GiB (used 0.56GB), когда total-available получается 1.3GB, в гноме показывает как раз total - available, а не used, и считает в метрических гигабайтах 1.3GB. То есть, потребление двух сред примерно одинаковое, но пользователей KDE, которые изредка видят GNOME смущает.

Wayland

Вот в это время знакомства, плазма у меня даже не упала. Есть проблемы с масштабированием X-клиентов на HiDPI, оно просто апскейлит картинку. Некоторые изъяны присутствуют на промотре открытых окон или воркспейсов. В общем, оно наверно приближается к готовности.

Выводы

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

Ориентироваться в центре настроек сложно, он требует переработки. Настройки наверно больше служат оправданием для кед. Есть какое-то когнитивное искажение, когда настраиваешь сам, то в какой-то момент готов признать получившееся состояние неплохим, даже если оно так себе. Вот кажется ради этого KDE и перегружено настройками.

Приложения неплохие есть, в первую очередь Dolphin и Konsole. Наверно они должны неплохо сочетаться с LXQt, например.

Стек технологий условно свежий. Масштабируется под HiDPI, поддержка Wayland близка к готовности, Night Vision, поддержка MTP устройств, графических планшетов.

Вообще, даже понятно почему кдешники плюются от гнома, гномеру кеды оставляют примерно такое же впечатление. Два сильно разных окружения, формирующих разные привычки по использованию.
5 Ответы
Ubuntu Studio 20.04 будет последним релизом с Xfce, все последующие будут поставляться с KDE. Команда Ubuntu Studio отмечает, что в KDE инструменты гораздо лучше, чем в Xfce (Gwenview, Krita) и лучше поддержка графических планшетов Wacom.

https://ubuntustudio.org/2020/04/ubuntu-...-released/
1 Ответы
  • Добавлена утилита dsynth для создания собственных бинарных репозиториев dports
  • Множественные исправления багов
  • Продолжено улучшение поддержки DRM (Direct Rendering Manager)
  • Улучшены алгоритмы выделения и работы со страницами памяти, что позволило устранить или уменьшить глюки интерфейса/браузера при нехватке памяти

https://www.dragonflybsd.org/release58/
12 Ответы
0. Зачем?

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

0.5. Это уже было на многих сайтах

Было. Но обычно все те статьи уходили в крайности, чуть ли не до шапочки из фольги. Я же хочу описать отвязку от софта производителей и Google, без ухода в крайности.

1. Прошивка

Здесь есть три варианта:
  1. Прошить свободную прошивку/купить смартфон, поддерживающий свободную прошивку
  2. Купить смартфон без сервисов Google (к примеру Huawei P40, но китайские покупать нежелательно)
  3. Оставить стоковую прошивку

Сразу оговорюсь, что под свободной прошивкой подразумевается любая, собранная из исходников Android не производителем телефона (такие как LineageOS, Resurrection Remix и т.п.), а не только Replicant и подобные.

Теперь про варианты. Худший из всех - третий, из-за наличия мусора в системе. Второй вариант лучше, но производитель тоже может добавить мусор в систему, да и некоторые компоненты MicroG (NanoDroid) могут не работать (об этом далее). Самый лучший вариант - первый.

Дополнительным вариантом можно, к примеру, считать некоммерческие организации вроде /e/. Также есть LineageOS for microG - форк LineageOS со вшитым MicroG и готовыми патчами.

2. ROOT

Если планируете получать root, лучше использовать Magisk. Помимо управления правами он также имеет возможность установки различных модулей. Невероятно полезная иногда вещь.

3. Установка MicroG

Зачем вообще нужен MicroG? Это - свободная реализация сервисов Google. Требуется для корректной работы приложений, которые требуют сервисы гугла.

Вместо MicroG лучше взять NanoDroid - пакет MicroG с некоторыми исправлениями. Основные отличия:
  • Собран как priv-app (что решает проблемы с навигацией)
  • Более новая версия сервисов Google
  • Заменяет системный WebView на BromiteWebView (свободный форк хрома, ungoogled, но как пишут авторы, сложно проверить, насколько) с автоматической блокировкой рекламы
  • Поддержка покупок и микроплатежей в Play Store
  • NanoDroid имеет патчер для подмены подписи (качается отдельно, обязательно читайте содержимое спойлера ниже)

Про последний пункт: на некоторых прошивках (особенно китайских) NanoDroid может не установиться.

Открыть спойлер

Скачать последнюю версию архива можно отсюда.

Обязательно сделайте бэкап следующих приложений, т.к. иногда они по ошибке удаляются:
  • DeskClock (заменяется на OmniClock из архива)
  • messaging (заменяется на QKSMS из архива)
  • Gallery2 (замеяется на Simple Gallery из архива)
  • Camera (заменяется на Open Camera из архива)
  • Calendar (заменяется на Simple Calendar из архива)

Приложения заменяются только если в .nanodroid-setup включена установка приложений, в противном случае они просто удаляются.

На Android 9 и новее предварительно нужно вручную сделать деодексацию.

Открыть спойлер

После установки NanoDroid зайдите в настройки microG, выберите проверку работоспособности и прокликайте по пунктам. Некоторые пункты интерактивные (такие как "Система подменяет подписи").

Дополнительно почитать:
9 Ответы
Хотел купить Bluetooth-свисток, но купил нечто, пытающееся быть им.

Само устройство, единственное, что с ним было.

Как bluetooth оно нигде не отображается. Отображается как флешка. На флешке три MP3-файла по сотне мегабайт. Скопировать файлы не удаётся, либо же очень медленно. В одном из них в самом начале какой-то звуковой сигнал.

Вывод dmesg:
Код:
[14609.961417] usb-storage 1-5:1.0: USB Mass Storage device detected
[14609.961612] scsi host9: usb-storage 1-5:1.0
[14610.988469] scsi 9:0:0:0: Direct-Access     Generic  Masstorage       1.00 PQ: 0 ANSI: 2
[14610.988874] sd 9:0:0:0: Attached scsi generic sg2 type 0
[14610.989777] sd 9:0:0:0: [sdc] 4194880 512-byte logical blocks: (2.15 GB/2.00 GiB)
[14610.997377] sd 9:0:0:0: [sdc] Write Protect is off
[14610.997379] sd 9:0:0:0: [sdc] Mode Sense: 00 80 00 03
[14611.007380] sd 9:0:0:0: [sdc] Asking for cache data failed
[14611.007386] sd 9:0:0:0: [sdc] Assuming drive cache: write through
[14611.070489]  sdc:
[14611.087402] sd 9:0:0:0: [sdc] Attached SCSI removable disk
[14617.452176] sd 9:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[14617.452180] sd 9:0:0:0: [sdc] tag#0 Sense Key : Data Protect [current]
[14617.452184] sd 9:0:0:0: [sdc] tag#0 Add. Sense: Write protected
[14617.452187] sd 9:0:0:0: [sdc] tag#0 CDB: Write(10) 2a 00 00 00 00 00 00 00 01 00
[14617.452190] blk_update_request: critical target error, dev sdc, sector 0 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 0
[14617.452196] Buffer I/O error on dev sdc, logical block 0, lost sync page write

При этом на телефоне оно отображается так:
Открыть спойлер

Как вы думаете, что это? Я и сам не знаю. А пока заказал свисток на али, придётся ждать месяц.

Если удастся скопировать те файлы, то выложу их сюда.
Нет ответов
The Wayland Book, книга с описанием протокола и компонентов Wayland, стала доступна всем желающим. Раньше она была доступна только после оплаты, сейчас полностью бесплатна и под лицензией CC-BY-SA. На данный момент книга не завершена и дописывается.

https://wayland-book.com/
9 Ответы
В 2017 году Oracle анонсировала KTask - технологию, предназначенную для многопоточной загрузки. Она была протестирована на различных системах x86, и дала прирост от 6% до 49%, делая отложенный init быстрее на 63%-91%. Данные патчи для ядра позволяют откладывать инициализацию struct page, которая является бутылочным горлышком при загрузке ядра.

https://blogs.oracle.com/linux/ktask%3a-...ve-work-v2
https://lore.kernel.org/lkml/20200501010...localhost/