LINUX.ORG.RU

Избранные сообщения AX

GNOME против Unix-way

Форум — Talks

Доброго дня вам, ЛОРчане!

Что такое этот мифический «Unix-way»? Вероятно, однозначно на этот вопрос не ответит никто, т.к. каждый понимает под данным термином что-то своё, и определение не имеет чётких границ. Поэтому для установления общего базиса в данной теме предлагаю заглянуть в Wikipedia. Кроме трёх базовых понятий о программах делающих что-то одно, работающих вместе и использующих текст (Malcolm Douglas McIlroy), там есть такие мысли, как:

  • «Избегайте пользовательских интерфейсов, ограничивающих возможности пользователя по взаимодействию с системой» - Mike Gancarz
  • «Позвольте пользователю настраивать окружение» - Mike Gancarz
  • «Правило прозрачности: Разрабатывайте прозрачные программы для облегчения последующего пересмотра и отладки» - Eric S. Raymond


С настраиваемостью и GNOME, думаю, давно всё понятно. Разработчики явно решили, что многообразие опций напугает пользователя. А что с прозрачностью? На мой взгляд, неоспоримым преимуществом систем GNU/Linux по сравнению с Windows и macOS является то, что в случае поломки пользователь может разобраться в её причинах прямо здесь, на месте. Либо, если ему интересно, может узнать что и как устроено внутри. Пользователь GNU/Linux в праве ожидать от программ ясных и подробных логов, тогда как в Windows чаще можно увидеть «Произошла ошибка 0xBADS0F1. Обратитесь к системному администратору». Я уже как-то писал на ЛОРе, что GNOME развивается в сторону от прозрачности системы. Проблема заключалась в отображении грустного смайлика (выглядит это вот так) вместо нормального сообщения об ошибке, и это сообщение показывал не «обновлятор» Ubuntu, а GNOME. Самое стрёмное тут это невозможность отказаться от завершения сеанса. Т.е. другие программы могут вполне работать, но поверх их висит окно, которое блокирует весь ввод. Я сам так же попадал в подобную ситуацию, когда пользовался QEMU. При том не было даже никакой ошибки, просто QEMU захватил ввод, я решил переключиться на другую виртуальную консоль (Ctrl+Alt+F3) и обратно, а GNOME почему-то решил, что ему стало плохо. После этого я с воплями убежал на KDE. Это было не единственным примером, а скорее, последней каплей. До этого я ещё стойко терпел выпиливания функционала. Достаточно сравнить диалоги выбора файлов в GNOME и KDE - вполне наглядный пример.

И вот, некоторое время назад мне опять понадобилось писать ПО с использованием GTK. К слову, к самому GTK я пока отношусь положительно. Достаточно неплохой тулкит, нормальная идея с GObject introspection и привязками к другим языкам. Хотя уже закрадываются сомнения... Раньше я уже использовал Glade, чтобы нарисовать интерфейс. Местами плевался от него, но в целом ничего. А сейчас решил попробовать GNOME Builder. Запустил, открыл в нём пример приложения (одна из причин зачем ставил - потыкать разные примеры в одном месте, а не собирать их по GitHub, документация разработчика для GTK как-то не очень). Builder попросил поставить некоторые SDK. По названиям я предполагаю, что это делается через Flatpak. Хотя не факт. В общем, у него это не получилось. Да, ошибки в ПО встречаются, этого не избежать. Где нормальное сообщение об ошибке? Почему вместо него вот это. Конечно, я нагуглю и разберусь, что там случилось. Но, почему? Это ведь уже не текстовый редактор, где «важно» (хотя на самом деле не важно и даже вредно, пользователь должен знать) не напугать неподготовленного пользователя обилием опций и сообщениями с подробностями. Это IDE для разработчика. Всё, что тут можно сделать - нажать на кнопку, которая убирает пункт из списка. Зато есть удобное меню-гамбургер, а там есть пункт «Generate support log». Ура? Нет, это было бы слишком просто. В логе нет ничего по теме ошибки. В окне с «Failed to install» даже текст нельзя выделись и скопировать. Казалось бы, при разработке интерфейса надо просто поставить галочку «Selectable». Мелочь, но сколько раздражения доставляет. Вообще, что мешало в интерфейс выдать сразу какую-то внутреннюю ошибку? Ведь она там есть. Место закончилось или прав не хватило? Запустить Builder через sudo? Или что? Хоть бы errno показывали...

По итогу всего написанного выше, вангую, из GNOME побегут не только пользователи, которых лишили опций и настроек, но и разработчики сторонних приложений, т.к. создатели GNOME из нормальной среды времён второй версии устроили какой-то мирок с розовыми очками, где только они сами и могут обитать.

 , , , ,

ls-h ()

systemd NMI: не виноватая я, снова!

Форум — Talks

https://imgur.com/a/bRRAzTw

Снова и снова и снова читаю то же самое. Сколько можно????

 , ,

Jetty ()

Статья: Устройство подсистемы TTY

Форум — Talks

Опубликовал статью, посвященную устройству подсистемы TTY.

Подсистема TTY — одна из ключевых особенностей Unix и Unix-подобных операционных систем.

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

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

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

>> Подробности

 ,

wandrien ()

USA vs UK

Форум — Talks

Какой вариант английского стоит изучать в наше время? Какой из них лучше?

 

scanner ()

Рекурсия: почему GCC такой тупой?

Форум — Talks

Столкнулся тут в работе с такой фишкой GCC: он ничего не имеет против бесконечных рекурсий:

#include <stdio.h>

int f()
{
    return f();
}

int main()
{
    printf("%d\n", f());
}

clang выдает ворнинг. Про компиляторы более надежных ЯП, чем С и С++ я даже молчу.

 ,

seiken ()

CRUXSTRAP: в мире полезных утилит прибыло, оцените

Форум — Talks

По аналогии с debootstrap, pacstrap, не найдя аналога для своего уютненького CRUX, решил заняться написанием сей утилиты. Приглашаю к тестированию.

Если у вас CRUX, она у вас будет работать из коробки (на самом деле нет). Если у вас другой дистрибутив, то вам в любом случае необходимо подготовить среду для развёртывания КРАКСИКОВ. Это как ФИКСИКИ, только КРАКСИКИ. :3

  • Сохраняем эту портянку кода в ./cruxstrap (Внимание! Объявление: ищу хостинг).
  • Скачиваем CRUX, последнюю версию, например отсюда: http://ftp.morpheus.net/pub/linux/crux/latest/iso/crux-3.5.iso
  • # mkdir /mnt/crux-install
  • # mount crux-3.5.iso /mnt/crux-install — монтируем образ
  • # cp -r /mnt/crux-install/crux/core . — копируем порты, это установочные пакеты. Они нужны, чтобы КРАКСИКИ могли плодиться.
  • # tar -C /tmp -x -f core/pkgutils/pkgutils#*.pkg.tar.xz usr/bin/pkgadd - извлекаем pkgadd, необходимый для работы скрипта.
  • Всё готово, вы великолепны!

Запускать так:

# mkdir chroot/
# cruxstrap --pkgadd /tmp/usr/bin/pkgadd chroot/ core/

Где, chroot/ — это директория, куда будет установлен CRUX, core/ — это директория с пакетами, которые будут установлены. Если у вас CRUX, указывать путь до pkgadd и вообще извлекать его не нужно.

TODO: реализовать установку не всех подряд пакетов из директории, а возможность указывать их списком # cruxstrap chroot /usr/ports bash linux linux-firmware ...

#!/bin/bash

panic() {
	if [ -d "$TMP" ]; then
		rm -rf $TMP 2>/dev/null
	fi
	exit ${1:1}
}

got_cmdline() {
	while [ "$1" ]; do
		case "$1" in
			-pa|--pkgadd) shift ; PKGADD_BIN="$1" ;;
			-v|--version) echo "`basename $CRUXSTRAP_COMMAND` $CRUXSTRAP_VERSION" ; exit 0 ;;
			-h|--help) got_help ; exit 0 ;;
			*)
				if [ -z "$CHROOT_DIR" ]; then
					CHROOT_DIR="$1"
					shift
					continue
				fi
				if [ -z "$MIRROR_DIR" ]; then
					MIRROR_DIR="$1"
					shift
					continue
				fi
				TO_INSTALL+=($1)
				shift
				;;
		esac
	done
}

search_in() {
	for obj in $1/*; do
		if [ -f "$obj" ]; then
			case "$obj" in
				*.pkg.tar.gz) echo $obj ;;
				*.pkg.tar.bz2) echo $obj ;;
				*.pkg.tar.xz) echo $obj ;;
				*.pkg.tar.zstd) echo $obj ;;
			esac
		elif [ -d "$obj" ]; then
			search_in $obj
		fi
	done
}

search_for() {
	# TODO
	echo
}

got_help() {
	echo "usage: `basename $CRUXSTRAP_COMMAND` [options] new_chroot_dir/ /ports_dir [package ...]"
	echo "options:"
	echo "  -pa,  --pkgadd              set path to pkgadd [/usr/bin/pkgadd]"
	echo "  -v,   --version             print version and exit"
	echo "  -h,   --help                print help and exit"
}

main() {
	PKGADD_BIN="/usr/bin/pkgadd"
	CHROOT_DIR=""
	MIRROR_DIR=""
	TO_INSTALL=()

	got_cmdline "$@"

	if [ ! -n "$CHROOT_DIR" ] || [ ! -n "$MIRROR_DIR" ]; then
		got_help
		exit 0
	fi

	if [ ! -x "$PKGADD_BIN" ]; then
		echo "Can't find $PKGADD_BIN, try add: --pkgadd ./pkgadd"
		panic
	fi

	if [ ! -d "$CHROOT_DIR" ]; then
		echo "'$CHROOT_DIR' is not directory."
		panic
	fi

	if [ ! -d "$MIRROR_DIR" ]; then
		echo "'$MIRROR_DIR' is not directory."
		panic
	fi

	if [ ! -z "$TO_INSTALL" ]; then
		SEARCH_FOR=$TO_INSTALL
		TO_INSTALL=()
		for pkg in ${SEARCH_FOR[@]}; do
			TO_INSTALL+=($(search_for $MIRROR_DIR $pkg))
		done
	else
		TO_INSTALL=($(search_in $MIRROR_DIR))
	fi

	if [ ! -n "$TO_INSTALL" ]; then
		echo "Nothing to do. Check for $MIRROR_DIR dir."
		panic
	fi

	for db in $CHROOT_DIR/var/lib/pkg{,/db}; do
		case "$db" in
			*/var/lib/pkg) install -d $db ;;
			*/var/lib/pkg/db) touch $db ;;
		esac
		if [ $? = 0 ]; then
			echo Database connected: $db
		else
			echo Unable to connect: $db
			panic
		fi
	done

	for pkg in ${TO_INSTALL[@]}; do
		echo -n "Installing ${pkg##*/} ..."
		$PKGADD_BIN --root $CHROOT_DIR $pkg 2>&1 >$TMP/log
		if [ "$?" = "0" ]; then
			echo " OK"
		else
			echo " ERROR"
			cat $TMP/log
		fi
	done
}

trap "panic" INT HUP QUIT TERM EXIT

readonly CRUXSTRAP_COMMAND="$0"
readonly CRUXSTRAP_VERSION="0.1"

TMP="$(mktemp -d)"

main "$@"

Картинка для привлечения внимания.

Напоследок, дисклеймер, зачем это не нужно. В данный момент я разворачиваю куда более грандиозную систему по автоматизации сборки образов для виртуальных (и не только) машин. CRUXSTRAP лишь вершина, оно создаёт ванильный, это важно, chroot, который затем упаковывается в squashfs. Рядом с ним кладётся другой squashfs, в котором лежат только настройки системы (при загрузке системы настройки ложатся «поверх» через overlay). Вся эта порнография упаковывается в общий initramfs, которые вместе с vmlinuz по итогу отдаются по сети (PXE) на любые устройства в сети.

Всё это именуется общими названиями: [default], [internet-gateway], [mailer-daemon]... При загрузке DHCPD + TFTP отдают GRUB2, который пытается загрузить grub.cfg глядя на MAC-адрес:

set default=0
set timeout=0

set menu_color_highlight=white/dark-gray
set menu_color_normal=black/light-gray
set color_normal=light-blue/blue

regexp --set=1:m1 --set=2:m2 --set=3:m3 --set=4:m4 --set=5:m5 --set=6:m6 '^([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})' "$net_pxe_mac"
set mac="${m1}-${m2}-${m3}-${m4}-${m5}-${m6}"

source /os/mac-$mac/grub.cfg

if [ "$default" = "0" ]; then
	source /os/pxe-default/grub.cfg
fi

Если конфигурации с таким MAC не предусмотрено, отдаётся /os/pxe-default. Просто делаем ln -sf pxe-internet-gateway mac-52-54-00-12-34-56, и теперь вместо /os/pxe-default машина с этим адресом пройдёт по симлинку и получит конфигурацию /os/pxe-internet-gateway. grub.cfg:

set default="pxe-internet-gateway"

menuentry "Configuration [internet-gateway] for ${net_pxe_ip} (${net_pxe_mac})" --id=pxe-internet-gateway --unrestricted {
	linux /os/pxe-internet-gateway/vmlinuz
	initrd /os/pxe-internet-gateway/initrd
}

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

В случае поломки софта или атаки хакеров, ты нажимаешь кнопочку Reset или ПОПРОБУЙТЕ ВЫКЛЮЧИТЬ И СНОВА ВКЛЮЧИТЬ, система загружается по сети с нуля, как ни в чём небывало.

В случае поломки железа, ты даже не заморачиваешься, включаешь в сеть другую железку, меняешь её аки лампочку в цоколе, и всего-навсего прописываешь ln -sf новый MAC, чтобы теперь эта железка выполняла такую-то роль в сети. И всё. А представьте, если вы создадите систему которая масштабируется by-design. Загружается и автоматически становится частью чего-то, нодой. Один раз настроил у себя ОС для неё, и только и успевай подключать новые железки! Уххх. :D

Вся настройка, всех хостов лежит на твоей стороне. Структура:

/var/tftpboot/os/mac-00-00-00-00-00-00 -> /var/tftpboot/os/pxe-default
/var/tftpboot/os/mac-52-54-00-12-34-56 -> /var/tftpboot/os/pxe-internet-gateway

/var/tftpboot/os/pxe-default/grub.cfg

/var/tftpboot/os/pxe-default/vmlinuz
/var/tftpboot/os/pxe-default/initrd

/var/tftpboot/os/pxe-default/packages
/var/tftpboot/os/pxe-default/packages/bash#5.0.17-1.pkg.tar.xz -> /usr/ports/core/bash/bash#5.0.17-1.pkg.tar.xz
/var/tftpboot/os/pxe-default/packages/linux#5.6.7-1.pkg.tar.gz -> /root/ports/linux/linux#5.6.7-1.pkg.tar.gz
...

/var/tftpboot/os/pxe-default/persistent
/var/tftpboot/os/pxe-default/persistent/etc
/var/tftpboot/os/pxe-default/persistent/etc/rc.conf
/var/tftpboot/os/pxe-default/persistent/etc/ssh
/var/tftpboot/os/pxe-default/persistent/etc/ssh/sshd_config

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

И не важно, это может быть не CRUX, а любой другой дистрибутив, собранный в chroot: он точно так же будет упакован в squashfs, со своими настройками, и будет загружаться по сети со своим ядром.

P.S.: А чём вы занимаетесь на карантине?

 , ,

Spoofing ()

ВИDный «десктоп» без Systemd

Галерея — Скриншоты

Я вас категорически приветствую!

Дело было вечером, делать было нечего. Как говорится, когда коту нечего делать... Вот и я от безделья решил, преисполненный чьими-то «горячими» чувствами к Systemd (нечего было на ночь ЛОР читать!), что-то с этим сделать. Сделал. Накатил Artix (тот же Arch, только система инициализации на выбор и os-prober не «завёлся»), поставил нужное мне ПО:

  • ядро Zen, ибо привычка под «арчем» ставить — в этом ядре встроен нужный «стиму» фикс;
  • runit, ибо OpenRC не такой экзотический (отсюда и тег «хочется странного»), плюс, команды для sv мне понравились больше;
  • KDE, ибо «искаропки» нормально отображает что GTK-, что Qt-приложения, плюс это окружение мне нравится своей настраиваемостью;
  • браузеры Firefox и Chromium, офисный пакет Libreoffice, проигрыватель VLC — понятно, зачем, Tor Browser — для просмотра порно ссылок в VK, ибо в Житомире его блокируют, а в модификации для «Сталкера» сыграть хочется;
  • PHP, Apache для игр с «бэкендом» (скоро сервер на работе поднимать будут, готовлюсь), Java для Minecraft-а и написания прикладных программ.
  • GIMP для редактирования скриншотов, Krita для рисования анимешных девочек в стиле Джоджо (правда, мышкой как-то паршиво рисуется, буду копить деньги на планшет со стилусом). «Пруфов» рисунков не будет, я стесняюсь;
  • Т.к. Network Manager-а нету по-умолчанию, использую connman. Брат жив, зависимости пока не наблюдаю. Зато есть Pulseaudio, и работает звук точно так же, как и в «арче» (не хорошо и не плохо, встроенная «звуковуха» с «пульсой» работает и всё тут).

И знаете что? А всё то же самое! Работает так же, потребляет памяти так же, если не больше (пруф — 540-580МБ в «простое», с Systemd то же самое). Код точно так же пишется, ЛОР точно так же открывается, прон всё так же смотрится... Единственное различие — это уже вышеупомянутый connman, да символические ссылки вместо systemctl enable servicename. Я даже и не заметил толком разницы с Arch-ем, да и, думаю, любой другой любитель «свежачка» тоже преспокойно может пересесть с одного дистрибутива на другой (при условии прочитывания соответствующей «вики»). Шутка ли — за исключением других репозиториев, пакеты все одни и те же (кроме Systemd-зависимых, ваш КО), менеджер пакетов тот же, даже AUR работает (пруф в роли Tor Browser оттуда)!

Даже не знаю, почему оно так. Может, дело в «потанцевале» связки «R52600+RX570», которая безупречно работает даже с GNOME 3? Может, runit не такой уж и хороший выбор в качестве системы инициализации? Или же наоборот, Systemd достиг той точки, когда обычный пользователь может преспокойно пользоваться любым дистрибутивом с ним и не париться?

В общем, месяцок-другой посижу, если какие интересные нюансы или баги обнаружу — уведомлю общественность.

>>> Просмотр (1920x1080, 269 Kb)

 , , , ,

Korchevatel ()

Как ни крути, а глобальное потепление - рулез.

Форум — Science & Engineering

На просторах интеренета попалось некоторое количество интересных вещиц:

Простая и наглядная, сугубо научная иллюстрация - https://climate.nasa.gov/climate_resources/3/graphic-warmer-earth-greener-north/

Канадцы тайно радуются глобальному потеплению: https://www.businessinsider.com/why-canada-secretly-loves-climate-change-2017-5

Холод убивает в 20 раз больше людей чем жара: https://www.sciencedaily.com/releases/2015/05/150520193831.htm

и т.п.

TL;DR: При дальнейшем ковырянии в гугле выяснилось, что глобальное потепление, вызванное парниковым эффектом, если таковое вообще происходит, это, на самом деле вовсе не проблема, а решение. Решение большинства проблем человечества и природы в чистом виде.

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

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

Суммируя парниковый эффект и глобальное потепление им вызванное, получаем примерно следующее: Сейчас среднегодовая температура воздуха в Москве примерно +5 градусов, а сезонный размах колебаний температуры от -20 до +30. Эколожцы стращают, что если среднегодовая температура поднимется на 10 градусов, то все сразу сдохнут летом от жары в +40, гроб, гроб, кладбище. И вот тут-то надо эколожцам по ручонкам-то настучать. Ведь это может случится только в том случае, если орбита Земли станет ближе к Солнцу при сохранении текущего климата, что определённо не наш случай. Нас-то пугают парниковым эффектом. А в случае роста среднегодовой температуры из-за парникового эффекта всё будет совершенно иначе (см. про эоцен ниже) - количество энергии от Солнца не изменится, а средняя температура планеты возрастёт из-за уменьшения градиента температуры от экватора к полюсам. Кроме того, уменьшатся сезонные, и суточные колебания. В итоге получим, например, вместо колебаний -20 - +30 и средней +5, среднюю +15 и размах +5 - +25. Т.е. летом может стать даже немного прохладнее, а вот долбаной зимы уже не будет.

Тропики: «Всё сгорит, будут раскалённые пустыни.» Нет. Для тропиков вообще мало что изменится. Прямо сейчас суточные колебания температуры в тропиках около 10 градусов, а сезонные и того меньше. Потому что в тропиках парниковый эффект уже присутствует по полной программе, просто он локальный. Там где парникового эффекта в этих широтах нету, расположены, внезапно, пустыни, с суточными колебаниями темпартур аж в 50 градусов. Так что если парниковый эффект станет глобальным, то для тропиков почти ничего не изменится. А вот пустыни превратятся в тропики.

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

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

Почему же эколожцы так противятся глобальному потеплению? А вот тут вылезает интересная ситуация. Из-за потепления и смягчения климата огромные, мёртвые нынче территории станут пригодны для жизни, от Таймыра до Антарктиды, включая пустыни у экватора, причём не только для жизни, а для хорошей жизни, с богатым земледелием, отсутствием затрат на обогрев жилищ, добычу пресной воды и т.д. Это может кардинально изменить политический расклад в мире, да и вообще в корне решить кучу проблем, на которых сейчас наживаются транснациональные корпорации.

Для нашей страны глобальное потепление тоже сулит огромные выгоды.

Что человечество потеряет в результате? А ничего особенного. Несколько городов станут Венецией, ну может вымрут несколько видов заточенных на жизнь в экстремальных условиях. По сравнению с плюсами в виде новых огромных пригодных для жизни территорий и расширением многообразия природы - это ничтожные потери.

Итак, на самом деле эколожцы борются против того, чтобы наша планета действительно стала зелёной. Они против того, чтобы половина Земли перестала быть необитаемой. Они категорически против того, чтобы климат на Земле стал комфортным для людей и природы везде, а не только в местах проживания золотого миллиарда.

В общем, Грета стала выглядеть ещё мерзее.

ЗЫ: Эколожествующей школоте и хипстоте с горящими пердаками, притворно требующей научного пруфца в бессилии что-либо возразить:

https://advances.sciencemag.org/content/5/9/eaax1874

https://www.pnas.org/content/pnas/115/6/1174.full.pdf

https://www.pnas.org/content/pnas/102/42/14964.full.pdf Тут приведены не только среднегодовые темпаратуры эоцена для Европы, но и средние температуры самого холодного и самого жаркого месяца. Можно легко убедиться, что парниковый эффект приводит к резкому снижению сезонных колебаний температуры.

https://es.ucsc.edu/~jzachos/pubs/Tierney_etal_2017_NatGeosci.pdf

Насчёт «затопления». Площадь территории Антарктиды находящейся над уровнем моря в эоцене была на 25% больше нынешней.

https://www.sciencedirect.com/science/article/pii/S0031018219304845

+ ещё масса научных исследований климата эоцена элементарно находящихся в гуглях по запросу «eocene climate». Пруфцов того, что климат станет только лучше от глобального потепления вызванного парниковым эффектом - хоть жопом ешь. Было бы желание с ними ознакомиться.

 , ,

Stanson ()

очередной not-a-bug

Форум — Talks

Копипаста в опеннета

В системном менеджере systemd выявлена уязвимость (CVE-2020-1712), которая потенциально позволяет добиться выполнения своего кода с повышенными привилегиями через отправку специально оформленного запроса по шине DBus. Проблема исправлена в тестовом выпуске systemd 245-rc1 (решающие проблему патчи: 1, 2, 3). Уязвимость устранена в дистрибутивах Ubuntu, Fedora, RHEL (проявляется в RHEL 8, но не затрагивает RHEL 7), CentOS и SUSE/openSUSE, но на момент написания новости остаётся неисправленной в Debian и Arch Linux.

Уязвимость вызвана обращением к уже освобождённой области памяти (use-after-free), возникающем при асинхронном выполнении запросов к Polkit во время обработки DBus-сообщений. Некоторые DBus-интерфейсы используют кэш для хранения объектов на короткое время и очищают элементы кэша как только шина DBus освободится для обработки других запросов. Если обработчик DBus-метода использует bus_verify_polkit_async(), ему возможно потребуется ожидать завершения действия в Polkit. После готовности Polkit обработчик вызывается повторно и обращается к уже ранее распределённым в памяти данным. Если запрос к Polkit выполняется слишком долго, то элементы в кэше успевают очистится до того, как обработчик DBus-метода будет вызван второй раз.

Из сервисов, позволяющих эксплуатировать уязвимость, отмечается systemd-machined, который предоставляет DBus API org.freedesktop.machine1.Image.Clone, приводящий к временном сохранению данных в кэше и асинхронному обращению к Polkit. Интерфейс org.freedesktop.machine1.Image.Clone доступен всем непривилегированным пользователям системы, которые могут инициировать крах сервисов systemd или потенциально добиться выполнения кода с правами root (прототип эксплоита пока не продемонстрирован). Код, позволяющий эксплуатировать уязвимость, был добавлен в systemd-machined в 2015 году в версии systemd 220 (в RHEL 7.x используется systemd 219).

 ,

TheAnonymous ()

Кто помнит, а чё, всё так и было? Статейка о тырнете начала нулевых

Форум — Talks

Subj

Я, хоть и жил в Мск в 2003-2005, интернета у меня не было. Только на работе, и я стремался в нём лазить. До того и после - в общем всё плохо у меня с тырнетом было, до 2009 г.

 , ,

tiinn ()

Живу в деревне, пришли бабы

Форум — Talks

Может кто знает как завести гусеничный трактор? Если что, хозяина закрыли и связи с ним нет. Я сам линуксоид до мозга костей и поэтому людям всегда помогаю. Опять же бабы, с маникюром и в колготках.

 ,

Uncle_Bobby ()

systemd опять не виноват (Успешная подмена пакетов)

Форум — Talks

«Успешная подмена пакетов продемонстрирована для туннелей, создаваемых при помощи OpenVPN, WireGuard и IKEv2/IPSec. Для IPv4 атака возможна в случае перевода rp_filter в режим „Loose“ (sysctl net.ipv4.conf.all.rp_filter = 2). Изначально в большинстве систем применялся режим „Strict“, но начиная с systemd 240 режим работы по умолчанию был заменён на „Loose“ и данное изменение отразилось в настройках по умолчанию многих дистрибутивов Linux.»

http://www.opennet.ru/opennews/art.shtml?num=51986

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

Выпуск systemd 244 (комментарий)

из release notes:

The "net.ipv4.conf.all.rp_filter" sysctl will now be set to 2 by 
          default. This effectively switches the RFC3704 Reverse Path
          filtering from Strict mode to Loose mode. 
          This is more appropriate for hosts that have multiple links with 
          routes to the same networks (e.g. a client with a Wi-Fi and Ethernet 
          both connected to the internet).

 ,

crypt ()

Линукс ядро не может мягко обрабатывать ситуации с нехваткой памяти

Форум — Talks

На Reddit уже почти полтысячи комментариев по поводу проблемы в Линукс ядре: оно не может мягко обрабатывать ситуации с нехваткой памяти.

Оригинальное сообщение в LKML:

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

Шаги:

1) Загружаемся с параметром mem=4G
2) Выключаем поддержку swap (sudo swapoff -a)
3) Запускаем любой веб браузер, например, Chrome/Chromium или/и Firefox
4) Начинаем открывать вкладки с сайтами и смотрим как уменьшается объём свободной памяти

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

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

Я почти уверен, что можно поменять некоторые параметры sysctl, чтобы избежать подобную ситуацию, но что-то подсказывает, что это можно сделать по умолчанию для всех, потому что нетехнические пользователи, столкнувшись с такой проблемой, просто откажутся от использования Линукс и им будет не того, чтобы искать решения в Google.

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

Подробности

Перемещено Shaman007 из linux-general

 , , ,

anonymous ()

Августовские стихи об ядерной консоли с локалью KOI8-R

Форум — Talks

Сабж:

Ты думаешь, что всё, что завязал,
Что больше в консоль не вернёшься,
Что в окнах тех командною строкой
Уж как-нибудь да обойдёшься,...

Но дни летят, проходят мимо байты,
И в дверь стучит она,
Показывая текстом в lynx'е сайты,
И та оконная среда в момент, стремглав, обречена.

Чем ядерней, чернее та консоль,
Тем юзеру привольнее живётся,
Долой от юникодов боль,
А KOI8 пусть скорее приживётся.
PS.
5d00000004ffffffffffffffff006828560bf70827f0fa94f1f028e33c4e3920e3c1ff381c612291829a6c5a3e978e43b9945f6658125bde5f4a2612f957d939de745a7bc1e22575ac41598cccd89dec333c98387b6201379e6197a4646965fff77e869197aa9794d371c7a13478eafb521f10fa93408a9a4e3303e691758bff742dc000

 ,

saahriktu ()

Большой июльский ребус от saahriktu

Форум — Talks

Собственно, сабж:

program prg201907;
{$codepage UTF8}
uses cwstring, math;
var
	s1: UnicodeString = 'Як-строитель чудит набирая звонком от плейера юрко "WAVE FULL OF 8 RUSTY CHECKED MULTIPLEX IMAGES!", однако.';
	s2: UnicodeString = '';
	indx: Integer;

function getdata1(x: Integer): Integer;
begin
	case (x) of
	$0, $2f: getdata1 := Floor64(1.340425531914894 * x + 1);
	$1, $12, $14, $1c, $23, $25, $33, $38, $3e, $45, $47, $4d: getdata1 := $d;
	$2, $a, $1a, $1e, $20: getdata1 := $1e;
	$3..$4: getdata1 := $1d + x;
	$5, $9, $19: getdata1 := $14;
	$6, $8: getdata1 := Floor64($1d - $5 * x / $2);
	$7, $10: getdata1 := $19;
	$b, $d: getdata1 := $10 + x;
	$c, $f: getdata1 := Floor64(7 * x / $3 - $7);
	$e, $15, $51: getdata1 := $1a;
	$11, $21, $50: getdata1 := $b;
	$13, $1f: getdata1 := $4;
	$16, $17: getdata1 := $94 - $6 * x;
	$18, $1b: getdata1 := $c * x - $11a;
	$1d, $22, $27, $2c: if x < $27 then getdata1 := $9 * x - $103
	                    else getdata1 := $9 * x - $120;
	$24, $46: getdata1 := $8;
	$26, $5a: getdata1 := $4e;
	$28, $35, $59: getdata1 := $5c;
	$29, $31: getdata1 := $42;
	$2a, $30: getdata1 := $3;
	$2b, $4b, $58: getdata1 := $44;
	$2d, $5c: getdata1 := $45;
	$2e, $49, $5b: getdata1 := $47;
	$32, $37, $3d: getdata1 := $64;
	$34, $39: getdata1 := $1c9 - $7 * x;
	$36, $40, $43, $55, $56: getdata1 := $36;
	$3a, $3b: getdata1 := $ab - $2 * x;
	$3c, $4c: getdata1 := $52;
	$3f, $42: getdata1 := Floor64($168 - $d * x / $3);
	$41, $54: getdata1 := $46;
	$44, $48: getdata1 := Floor64($f * x / $2 - $1c2);
	$4a, $4e: getdata1 := Floor64($a17 / $2 - $41 * x / $4);
	$4f, $52: getdata1 := x - $40;
	$53, $57: getdata1 := Floor64($8fd / $4 - $17 * x / $4);
	else getdata1 := -1;
	end;
end;

function getdata2(x: Integer): Integer;
begin
	case (x) of
	$0..$7, $9..$a, $c..$1d, $1f..$20, $22..$33, $35..$5c: getdata2 := $1;
	$8, $34: getdata2 := $4;
	$b, $1e, $21: getdata2 := $2;
	else getdata2 := -1;
	end;
end;

begin
	for indx := $0 to $2c do s2 := s2 + copy(s1, getdata1(indx), getdata2(indx));
	s2 := s2 + chr($a);
	for indx := $2d to $53 do s2 := s2 + copy(s1, getdata1(indx), getdata2(indx));
	s2 := s2 + chr($a) + chr($a);
	for indx := $54 to $5c do s2 := s2 + copy(s1, getdata1(indx), getdata2(indx));
	writeln(s2);
end.
Эта программа на Free Pascal'е выводит текст в UTF-8.

Суть ребуса: какой конкретно текст в UTF-8 выводит эта программа?

 

saahriktu ()

Нищебродских SSD накопителей тред

Форум — Talks

Сап!

Скажите, кто покупал в последнее время всякие SANDISK или ADATA, или даже не знаю, тысячи их... они уже достаточно надежны, чтобы например послужить лет 5 в офисном ПК или ноутбуке?

Я посмотрел на ценники, более чем приемлемые, при этом наработка на отказ 2-3 миллиона часов...

Вообще что имеется ввиду, да и бог с ним, в общем напишите свои горестные истории когда вы поплатились за экономию в $100, или наоборот...

 

Shulman ()

Повышение отзывчивости в GNOME on Wayland

Форум — Talks

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

В общем, в GNOME приняли merge request с добавлением новой экспериментальной опции для GNOME Shell в Wayland-сессию: rt-scheduler. Эта опция, как можно догадаться из названия, приоритизирует процесс Mutter — оконного композитора в GNOME — до работы в реальном времени, потенциально убирая неприятные зависания, которые могут быть вызваны фоновыми программами.

Аналогичную инициативу предложил проект KDE в 2017 году: статья на английском с подробным описанием.

Для тестирования опции потребуется нестабильный GNOME, который есть, например, в Fedora Rawhide. Для этого нужно:

  • сделать sudo setcap CAP_SYS_NICE=+ep /usr/bin/gnome-shell;
  • открыть dconf Editor и в /org/gnome/mutter/experimental-features вписать ['rt-scheduler'];
  • перезапустить GNOME-сессию.

В Fedora Silverblue такого сделать не получится из-за R/O файловой системы. Для тестирования можно выполнить rpm-ostree usroverlay, сделав файловую систему R/W до следующей перезагрузки.

 , , , ,

commagray ()

systemd готов к ноутбукам если уметь его побороть

Форум — Talks

Сабж. Мне сейчас это удалось.

Итак, что пришлось бороть:

  • systemd-logind почему-то начинает считать, что я, якобы, постоянно схлопываю ноутбук, и сразу же начинает суспендиться. Замаскировал таргеты и поправил ему конфиг, чтобы игнорировал.
  • По каким-то причинам systemd считает, что у юнита xdm периодически заканчивается таймаут. И systemd внезапно перезапускает xdm. Пришлось подправить юнит прописав туда бесконечный таймаут.

Теперь всё работает нормально.

 , ,

saahriktu ()

ГНОМЭ!

Форум — Talks

И Nautilus. Давно пользуюсь, но всё хуже и хуже...

Почему в корень надо ходить через «Other locations -> Computer»?
А если зайти в директорию, которая находится внутри домашней, то из пути сверху корень пропадает. При этом нет кнопки «Наверх», а есть только «Назад» и «Вперёд». Экономия места? Тогда почему кнопки прокрутки пути висят всегда, даже если путь влезает? Где логика? Её нет, её съел HIG.

Как нормально ходить вверх? Да, можно нажимать Alt+⇧. Но это неудобно делать одной рукой. Правда это давнишнее «удобство», но всё же. Shortcuts можно посмотреть в меню «Files -> Keyboard Shortcuts», но там ничего нельзя поменять. А ведь когда-то давно, когда в GTK приложениях были нормальные меню сверху, для любого можно было менять Shortcuts для любого пункта. О самом меню ещё позже...

Как получить контекстное меню для текущей директории, если она отображается в виде списка и её контент доходит до края окна? Между столбцами щёлкнуть нельзя. Никакого способа я не нагуглил.

Раньше была быстрая навигация по содержимому директории. Можно было напечатать начало названия файла и сразу перейти к нему. А теперь запускается убогий поиск.

Очень убогий поиск. Есть выбор параметров поиска «Full text» и «File name», при этом одна строка ввода. Как тут искать, если текст внутри файла и имя искомого файла не одно и тоже?

Nautilus тупит. Вечно какие-то проблемы с обновлением содержимого директории если в неё происходит запись другой программой. Когда обновляет, а когда надо вручную. И это я про локальную директорию говорю. Иногда он тупит ещё прикольнее: открываю директорию с тремя файлами, он показывает только два и надпись «Loading...» внизу.

Странности в отображении файлов. Для символьных ссылок на файлы .so не показывается значок символьной ссылки. Для директорий и для других файлов - показывается. Что за прикол?

Меню. Это относится не только к Nautilus, но и к другим приложениям. Что за изнасилование идеи глобального меню? Меню типа macOS можно понять и оправдать лёгкостью попадания мышкой по пунктам, т.к. мышку можно просто толкнуть до края экрана. Тут же всё меню поделено на две части: сверху в панельке и в гамбургере внутри окна. Очень удобно! Пока не нажмёшь, не видно где какие пункты. В macOS есть поиск по пунктам меню, раньше в Unity такое тоже было. Зачем выпилили удобную вещь? Ах, да! Пункты меню же тоже все выпилили. Меню-гамбургер отвратительное! При открытии подменю оно открывается не рядом с родительским, а вместо. И быстро пробежаться по пунктам уже не получится.

Диалоги прибитые к родительским окнам. Какой HIG-онатик это придумал? Как во время открытого диалога, например, посмотреть что-то в основном окне приложения?

 ,

ls-h ()

Кратко о том, почему питон - идеальный язык программирования

Форум — Talks
>>> a = 2
>>> b = 2
>>> a is b
True
>>> a = -3
>>> b = -3
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
>>> 2 + 2
4
>>> import ctypes
>>> ctypes.memmove(id(2), id(3), object.__sizeof__(2))
94302108986496
>>> 2 + 2
6
>>> 

 , ,

Deleted ()