LINUX.ORG.RU

Сообщения omegatype

 

VirtualBox не работает на свежей установке ArchLinux

Форум — Desktop

Народ, подскажите, пожалуйста, создаю новую VM, нажимаю Start, диалоговое окно «Starting virtual machine …» появляется со вращающимся курсором и далее ничего не происходит, окно так и висит.

$ lsmod | grep vbox
vboxnetflt             40960  0
vboxnetadp             28672  0
vboxdrv               651264  3 vboxnetadp,vboxnetflt

Хост - свежий arch, DE, virtualbox, никаких изощрений в установке нет, дефолтные настройки, дефолтное ядро. Вируализация в BIOS включена. Пробовал разные конфигурации флагов на вкладке system в настройках VM - не помогает.

По строчке лога The machine is not mutable (state is Starting) толком ничего не нагуглил, есть идеи?

00:00:00.000257 main     VirtualBox XPCOM Server 7.0.8 r156879 linux.amd64 (Apr 18 2023 21:49:14) release log
00:00:00.000258 main     Log opened 2023-07-06T08:30:38.797655000Z
00:00:00.000258 main     Build Type: release
00:00:00.000259 main     OS Product: Linux
00:00:00.000259 main     OS Release: 6.4.1-arch2-1
00:00:00.000260 main     OS Version: #1 SMP PREEMPT_DYNAMIC Tue, 04 Jul 2023 08:39:40 +0000
00:00:00.000269 main     DMI Product Name: System Product Name
00:00:00.000271 main     DMI Product Version: System Version
00:00:00.000275 main     Firmware type: UEFI
00:00:00.000478 main     Secure Boot: Disabled
00:00:00.000490 main     Host RAM: 128554MB (125.5GB) total, 124309MB (121.3GB) available
00:00:00.000491 main     Executable: /usr/lib/virtualbox/VBoxSVC
00:00:00.000491 main     Process ID: 10152
00:00:00.000491 main     Package type: LINUX_64BITS_GENERIC (OSE)
00:00:00.001004 main     IPC socket path: /tmp/.vbox-evgeny-ipc/ipcd
00:00:00.104685 nspr-2   VirtualBox: object creation starts
00:00:00.105431 nspr-2   Home directory: '/home/evgeny/.config/VirtualBox'
00:00:00.111213 nspr-2   Successfully initialised host USB using sysfs
00:00:00.112305 nspr-2   HostDnsMonitor: initializing
00:00:00.112681 nspr-2   NAT: resolv.conf: nameserver 10.0.0.2
00:00:00.112719 nspr-2   NAT: resolv.conf: nameserver 10.10.0.2
00:00:00.112730 nspr-2   NAT: resolv.conf: nameserver 192.168.1.1
00:00:00.112754 nspr-2   HostDnsMonitor: updating information
00:00:00.113042 nspr-2   HostDnsMonitor: old information
00:00:00.113054 nspr-2     no server entries
00:00:00.113061 nspr-2     no domain set
00:00:00.113065 nspr-2     no search string entries
00:00:00.113069 nspr-2   HostDnsMonitor: new information
00:00:00.113074 nspr-2     server 1: 10.0.0.2
00:00:00.113079 nspr-2     server 2: 10.10.0.2
00:00:00.113084 nspr-2     server 3: 192.168.1.1
00:00:00.119717 nspr-2   VD: VDInit finished with VINF_SUCCESS
00:00:00.120163 nspr-2   ERROR [COM]: aRC=NS_ERROR_FAILURE (0x80004005) aIID={aac6c7cb-a371-4c58-ab51-0616896b2f2c} aComponent={SystemPropertiesWrap} aText={Cannot determine default Guest Additions ISO location. Most likely they are not available}, preserve=false aResultDetail=0
00:00:00.122470 nspr-2   VirtualBox: object created
00:00:00.394164 nspr-4   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:00.395955 nspr-4   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:00.429100 nspr-2   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:00.430403 nspr-2   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:00.789609 nspr-3   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:00.796206 nspr-3   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:05.964581 nspr-3   ERROR [COM]: aRC=NS_ERROR_FAILURE (0x80004005) aIID={aac6c7cb-a371-4c58-ab51-0616896b2f2c} aComponent={SystemPropertiesWrap} aText={Cannot determine default Guest Additions ISO location. Most likely they are not available}, preserve=false aResultDetail=0
00:00:21.871688 nspr-4   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:21.873104 nspr-4   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:21.873695 nspr-2   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:21.874945 nspr-2   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:32.859919 createBase Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:32.866725 createBase Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:32.869120 nspr-5   Saving settings file "/home/evgeny/VirtualBox VMs/test_vm_1/test_vm_1.vbox" with version "1.19-linux"
00:00:32.877514 nspr-5   Finished saving settings file "/home/evgeny/VirtualBox VMs/test_vm_1/test_vm_1.vbox"
00:00:32.877549 nspr-5   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:32.883268 nspr-5   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:32.884154 nspr-5   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:32.885565 nspr-5   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:32.886287 nspr-5   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:32.887696 nspr-5   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:32.887826 nspr-4   Saving settings file "/home/evgeny/VirtualBox VMs/test_vm_1/test_vm_1.vbox" with version "1.19-linux"
00:00:32.889309 nspr-4   Finished saving settings file "/home/evgeny/VirtualBox VMs/test_vm_1/test_vm_1.vbox"
00:00:32.896938 nspr-5   Saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:32.898180 nspr-5   Finished saving settings file "/home/evgeny/.config/VirtualBox/VirtualBox.xml"
00:00:33.228329 nspr-5   ERROR [COM]: aRC=VBOX_E_INVALID_VM_STATE (0x80bb0002) aIID={300763af-5d6b-46e6-aa96-273eac15538a} aComponent={MachineWrap} aText={The machine is not mutable (state is PoweredOff)}, preserve=false aResultDetail=0
00:00:35.046927 nspr-4   Launched VM: 2415930608 pid: 10258 (0x2812) frontend: GUI/Qt name: test_vm_1
00:00:35.058635 nspr-2   ERROR [COM]: aRC=VBOX_E_INVALID_VM_STATE (0x80bb0002) aIID={300763af-5d6b-46e6-aa96-273eac15538a} aComponent={MachineWrap} aText={The machine is not mutable (state is PoweredOff)}, preserve=false aResultDetail=0
00:00:35.265506 nspr-6   ERROR [COM]: aRC=VBOX_E_INVALID_VM_STATE (0x80bb0002) aIID={300763af-5d6b-46e6-aa96-273eac15538a} aComponent={MachineWrap} aText={The machine is not mutable (state is PoweredOff)}, preserve=false aResultDetail=0
00:00:35.495671 nspr-3   ERROR [COM]: aRC=VBOX_E_OBJECT_NOT_FOUND (0x80bb0001) aIID={70401eef-c8e9-466b-9660-45cb3e9979e4} aComponent={ExtPackManagerWrap} aText={No extension pack by the name 'Oracle VM VirtualBox Extension Pack' was found}, preserve=false aResultDetail=0
00:00:35.535056 nspr-6   ERROR [COM]: aRC=VBOX_E_IPRT_ERROR (0x80bb0005) aIID={300763af-5d6b-46e6-aa96-273eac15538a} aComponent={SessionMachine} aText={Saved screenshot data is not available (VERR_NOT_SUPPORTED)}, preserve=false aResultDetail=-37
00:00:35.559845 nspr-6   ERROR [COM]: aRC=VBOX_E_INVALID_VM_STATE (0x80bb0002) aIID={300763af-5d6b-46e6-aa96-273eac15538a} aComponent={MachineWrap} aText={The machine is not mutable (state is Starting)}, preserve=false aResultDetail=0
00:00:35.856290 nspr-2   ERROR [COM]: aRC=VBOX_E_INVALID_VM_STATE (0x80bb0002) aIID={300763af-5d6b-46e6-aa96-273eac15538a} aComponent={SessionMachine} aText={The machine is not mutable or saved (state is Starting)}, preserve=false aResultDetail=0
00:00:35.860936 nspr-2   Saving settings file "/home/evgeny/VirtualBox VMs/test_vm_1/test_vm_1.vbox" with version "1.19-linux"
00:00:35.873655 nspr-2   Finished saving settings file "/home/evgeny/VirtualBox VMs/test_vm_1/test_vm_1.vbox"
00:00:35.881007 nspr-7   ERROR [COM]: aRC=VBOX_E_INVALID_VM_STATE (0x80bb0002) aIID={300763af-5d6b-46e6-aa96-273eac15538a} aComponent={MachineWrap} aText={The machine is not mutable (state is Starting)}, preserve=false aResultDetail=0

 ,

omegatype
()

Как проще всего мониторить температуру HDD в Prometheus?

Форум — Admin

Собираю домашний NAS, хотел бы следить за температурой HDD. Поставил ubuntu, prometheus, node_exporter и graphana.

Загрузил полный дашборд с сайта графаны, но не обнаружил там показаний температуры HDD.

Однако дефолтный node_exporter отправляет данные в lm_sensors, и есть drivetemp, который позволяет подмешать выхлоп датчиков с hdd в sensors. Единственная проблема в том, что https://github.com/lm-sensors/lm-sensors/issues/230 sensors выдает аппаратные адреса дисков, а не идентификаторы, т.е. если потом перекоммутировать диски, то метрики превратятся в тыкву. Переименование через /etc/sensors.d/drivetemp.conf не работают.

Вопрос в теме - как проще всего не потерять информацию о привязке адреса в идентификатору диска (как его выдает hddtemp) и организовать сбор метрик? Костылить кастомный exporter?

 , , ,

omegatype
()

Покритикуйте сборку ПК

Форум — Talks

Предпочтения:

  • производительность в играх близка к топовой
  • воздушное охлаждение (с водяным опыта нет и при прочих равных условиях хотелось бы избежать)
  • более или менее проверенные и известные бренды (готов переплатить за бренд)
  • внешний вид важен только у корпуса, хотелось бы более или менее скромный вид

В настоящий момент рассматриваю: Покритикуйте сборку ПК (комментарий)

 

omegatype
()

Приложение для заставки фото-рамки

Форум — Talks

Подскажите способ, которым на мониторе машины под управлением ubuntu можно вывести фото/коллаж фото из заданной директории, меняющийся с некоторой частотой.

Возможно добавив туда время/погоду и курс валют?

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

Есть идеи?

 , ,

omegatype
()

Балансировка параметризованного pytest-а на основе априорных данных в xdist

Форум — Development

У меня есть тест в pytest, параметризованный примерно 30 значениями. И я заранее знаю, что некоторые параметры вычисляются дольше остальных. Если карта ляжет так, что два долгих теста лягут на один процесс, то получится что-то вроде:

Screenshot-20220603-112154.png

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

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

Можно формировать файлы рантаймом, конечно, но это как-то некрасиво, может кто что проще подскажет?

 , , ,

omegatype
()

Где вы храните схемы описания софта, подобные блок-схемам?

Форум — Talks

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

Где вы размещаете подобные схемы и в чем их рисуете?

Хотелось бы держать это близко к коду, чтобы оно не протухало.

Пока вариант Shinx + png + исходник этого png (в любом формате в котором человек его рисовал, например drawio или tikz или svg)

 , ,

omegatype
()

Почему не делают больше качественного DLC?

Форум — Talks

Кто тут из геймдева или сочувствующие?

Сколько в процентном отношении «стоит» создать для игры дизайн, движок\механики и сценарий?

Многие DLC выглядят как незначительные изменения в дизайне и механиках и значительные - в сценарии.

Вопрос: разве это не выгодно один раз разработать хороший дизайн и механики, и потом клепать (относительно более дешевые) DLC, каждая из которых будет полноценной главой игры - и продаваться?

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

Как пример игры, которая выглядит так, словно делает предложенный выше вариант приведу The Dark Pictures Anthology - хотел бы умышленно не обсуждать эту игру именно как игру (кому-то нравится, кому-то нет), но просто как принцип развития игры - они создают по игре в год (sic!) в стиле «тех же щей больше лей», а мне очень бы хотелось еще щей от ведьмака, dragon age, red alert 2, dishonored, elder skrolls, mass effect 2, kotor2.

 ,

omegatype
()

Порекомендуйте измеритель co2?

Форум — Talks

Просыпаюсь периодически ночью с ощущением «духоты» - перед сном проветриваем и такого ощущение в первой половине ночи нет. Читал в сети, что, возможно, комната наполняется co2 в течение 3-4 часов из-за плохой вентиляции. Хочется проверить эту гипотезу более или менее точным измерительным прибором.

Выбор вроде есть… https://mysku.ru/blog/aliexpress/82944.html https://zen.yandex.ru/media/breeeth/kak-vybrat-datchik-co2-5f9fc17e1f9f7379920c844d https://www.ixbt.com/live/topcompile/monitory-kachestva-vozduha-vybiraem-na-na-aliexpress.html https://habr.com/ru/company/dadget/blog/388405/

но эти статьи не дают впечатление comprehensive analysis, может кто подскажет на личном опыте какой датчик брать?

Самому делать не вариант, нужно готовое решение.

 ,

omegatype
()

Какой параметр autofs отвечает за время ожидания до отказа в чтении?

Форум — Desktop

Есть несколько нестабильных NFS share-ов, к которым хотелось бы обращаться, если они доступны.

Монтирую их automount-ом и затем читаю через dolphin, krusader и иногда firefox.

Проблема - как только шара отваливается, браузер и ФМ блокируются и ждут в статусе disk sleep. Ждут порядка нескольких минут или около того.

Вопрос: как сократить это время? Если шара отвалилась, пусть будет IO error в течение нескольких секунд.

Arch.

 , , ,

omegatype
()

Помогите победить конфигурацию apache под два сайта по HTTPS

Форум — Admin

На одном хосте расположились redmine и gitea, хотелось бы отдавать их оба через apache по HTTPS, одина по адресу https://www.MYSUPERHOST.fvds.ru/redmine, другой по https://www.MYSUPERHOST.fvds.ru/gitea. Есть сертификат от let’s encrypt.

  • redmine крутится при помощи плагина apache, кажется, fusion passanger.
  • gitea крутится своим собственным бинарём и слушает по http локальный порт 3000.

Пробую следующий конфиг, в результате redmine работает, но для gitea apache возвращает 404:


<VirtualHost *:80>

	ServerAdmin admin@example.com
	Servername MYSUPERHOST.fvds.ru
	RewriteEngine on
	RewriteCond %{SERVER_NAME} =www.MYSUPERHOST.fvds.ru [OR]
	RewriteCond %{SERVER_NAME} =MYSUPERHOST.fvds.ru
	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>


<IfModule mod_ssl.c>
	<VirtualHost *:443>

		ServerAdmin admin@example.com
		Servername MYSUPERHOST.fvds.ru
		DocumentRoot /var/www/html/

		<Location /redmine>
			RailsEnv production
			RackBaseURI /redmine
			Options -MultiViews
		</Location>


		Include /etc/letsencrypt/options-ssl-apache.conf
		ServerAlias www.MYSUPERHOST.fvds.ru
		SSLCertificateFile /etc/letsencrypt/live/MYSUPERHOST.fvds.ru/fullchain.pem
		SSLCertificateKeyFile /etc/letsencrypt/live/MYSUPERHOST.fvds.ru/privkey.pem
	</VirtualHost>

	<VirtualHost *:443>

		SSLProxyEngine On
		ProxyPreserveHost On
		ProxyRequests off

		<Proxy *>
		    Order allow,deny
		    Allow from all
		</Proxy>

		ProxyPass /gitea http://localhost:3000
		ProxyPassReverse /gitea http://localhost:3000


		Include /etc/letsencrypt/options-ssl-apache.conf
		ServerAlias www.MYSUPERHOST.fvds.ru
		SSLCertificateFile /etc/letsencrypt/live/MYSUPERHOST.fvds.ru/fullchain.pem
		SSLCertificateKeyFile /etc/letsencrypt/live/MYSUPERHOST.fvds.ru/privkey.pem
	</VirtualHost>

</IfModule>

 , , , ,

omegatype
()

Анализ соблюдения Stable Dependencies Principle (SDP) в Python

Форум — Development

Прочитал у Роберта Мартина в Чистой архитектуре о принципе SDP, сразу захотелось узнать - есть ли утилита на python, которая проанализирует исходники проекта и построит диаграмму зависимостей сущностей? Чтобы можно было наглядно определить самые критичные по количеству зависимостей сущности и обратить на них особое внимание при корректировке архитектуры?

 ,

omegatype
()

Безопасность Ubuntu на VDS

Форум — Talks

Подскажите, есть ли какой-то начальный нормальный мануал по безопасному развёртыванию ubuntu? Задача следующая - купить простой vds, накатить туда из образа хостера ubuntu и на ней redmine + passanger + apache + gitlab.

На локалхосте делается на раз, но теперь вопрос - нужны ли какие-то дополнительные телодвижения при условии, что всё это смотри «в большую сеть». Понятное дело, что ssh по ключу и никаких qwerty-паролей, но что-то помимо этого?

 , , ,

omegatype
()

Помогите настроить шрифты (особенно Courier New)

Форум — Desktop

Вот Courier New в mattermost https://pasteboard.co/JP2NAkZ.png, вот LOR https://pasteboard.co/JP2NFYm.png

Всё очень плохо - перебрал все значения hinting + галочка anti-aliasing и никак не рисуется лучше. Особенно Courier, это просто ужасно.

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

firefox, archlinux, kde

 , , ,

omegatype
()

Использовать VPN только для ресурсов её сети

Форум — Desktop

Подскажите как победить корпоративных администраторов при подключении к корпоративному VPN и заставить использовать VPN только для тех ресурсов, которые внутри VNP?

Дано:

  • Arch Linux
  • l2tp
  • KDE
  • NetworkManager

До подключения VPN:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp0s31f6
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6

После подключения VPN:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     50     0        0 ppp0
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp0s31f6
10.0.102.1      0.0.0.0         255.255.255.255 UH    50     0        0 ppp0
188.65.107.46   192.168.1.1     255.255.255.255 UGH   100    0        0 enp0s31f6
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6
192.168.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 enp0s31f6

При это весь интернет-трафик начинает маршрутизироваться через VPN:

traceroute google.com
traceroute to google.com (173.194.73.101), 30 hops max, 60 byte packets
 1  10.0.102.1 (10.0.102.1)  2.353 ms  3.085 ms  3.085 ms
 2  41.107.rekkon.ru (188.65.107.41)  5.219 ms  5.368 ms  5.549 ms
 3  10.80.202.9 (10.80.202.9)  3.287 ms  3.238 ms  3.262 ms
 4  rascom.inet2.ru (85.112.122.13)  3.301 ms  3.577 ms  3.596 ms
 5  google-gw.rascom.as20764.net (81.27.254.18)  3.740 ms  3.762 ms  3.710 ms
 6  108.170.250.99 (108.170.250.99)  4.665 ms  3.560 ms 108.170.250.146 (108.170.250.146)  2.847 ms
 7  216.239.50.132 (216.239.50.132)  18.863 ms 209.85.249.158 (209.85.249.158)  19.732 ms *

Если же в настройках NM поствить Use only for resources on this connection, то:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp0s31f6
10.0.102.1      0.0.0.0         255.255.255.255 UH    50     0        0 ppp0
188.65.107.46   192.168.1.1     255.255.255.255 UGH   100    0        0 enp0s31f6
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6
192.168.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 enp0s31f6

интернет-трафки начинает тормозить, но маршрутизироваться через локальное соединение, а корпоративные ресурсы отваливаются.

У меня есть подозрение, что это происходит из-за того, что DNS не работает. VPN подсовывает два сервера:

$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.2
nameserver 10.10.0.2
nameserver 192.168.1.1

До которых с текущей таблицей маршрутизации мы идём через локальную сеть, хотя должны использовать ppp0:

$ traceroute 10.0.0.2
traceroute to 10.0.0.2 (10.0.0.2), 30 hops max, 60 byte packets
 1  _gateway (192.168.1.1)  0.497 ms  0.468 ms  0.452 ms
 2  * * *

Итого вопрос: **как сказать NM «маршрутизируй полученные при VPN-соединении DNS-сервера через эту же самую VPN-сеть»?

Ну или же как-то иначе подойти к решению задачи?

 , , , ,

omegatype
()

Подскажите хороший корпус и плату формата mini-atx под домашний сервер?

Форум — Desktop

Основной критерий - побольше слотов под HDD и хорошее к ним охлаждение, чтобы выжать максимум из срока службы. К плате - честный гигабит для раздачи контента по DLNA.

Основная цель сервера - хостинг бекапов, хостинг фильмов и музыки для DLNA-клиентов + экспериментаторство.

 , , ,

omegatype
()

Запилить опрос про инструменты таймтрекинга в команде?

Форум — Talks

А какой инструмент у вас используют для учета времени, потраченного сотрудниками на ту или иную задачу? Мы рассматриваем gitlab, устраивает сейчас всем, кроме time tracking-а. Он там, с одной стороны как бы есть, но вменяемую таблицу типа «Иванов за неделю делал такие-то задачи и потратил на это столько-то времени».

И всё это в отчет, который можно и начальству показать, и самому проанализировать на предмет улучшения выхлопа команды.

 , , ,

omegatype
()

Определение публичного API в Python

Форум — Development

Есть библиотека на Python со множеством сущностей. Часть сущностей разработчик библиотеки считает приватными, а часть - публичными. Что значит «приватный» и «публичный» в контексте этого треда и моего вопроса:

  • Приватный = «я не предполагаю, что сторонние пользователи будут использовать эти интерфейсы, я не уверен в стабильности этого интерфейса, не хочу показывать его во вне и хочу зарезервировать за собой право менять интерфейс без предупреждения»
  • Публичный = «я предполагаю, что сторонние пользователи будут использовать эти интерфейсы, я буду стараться их не ломать, или, по крайней мере, ломать gracefully, например через deprecation warning-и, release note-ы или иные инструменты»

Теперь возникает технический и организационный вопрос, как выделить публичные интерфейсы, и тут есть варианты:

  1. Через соглашение об именовании приватных сущностей, например _my_variable или _MyClass. Плюсы:
  • Описано в PEP-8

Минусы:

  • По-умолчанию, я предполагаю свой класс «приватным» в контексте библиотеки, т.к. лучше сначала всё закрыть и запретить, и только потом разрешить/открыть малую часть. Это значит, что 90% моих классов, которые по сути приватны, будут начинаться с _? Код превратится в кашу!
  1. При помощи __all__ Плюсы:
  • Описано в PEP

Вопросы:

  • __all__ говорит «это можно импортировать», но не говорит, где импортировать - для внутреннего использования внутри библиотеки или для внешнего пользователем. Вариантом решения тут могло бы быть именование package, начиная с _, например:
mylib/__init__.py
mylib/_gears/__init__.py  # <-- тут __all__ = ['X']
mylib/mylib.py  # <-- тут from ._gears import X

и тогда код вида from mylib import Y будет явно публичным, но from mylib._gears import X - «ошибочным», т.к. мы явно залезаем в приватную часть либы.

Минусы/вопросы:

  • Так кто-то еще делает? Выглядит велосипедно немного?…
  1. Есть версия, что «The RealDefinition™ is that whatever we include in the docs is public, otherwise not.» Плюсы:
  • Просто и понятно

Минусы:

  • Требует документации
  • Недостаточно формально. Если с приватными пакетами можно явно сказать «у вас в импорте подчеркивание, сами виноваты», то тут надо «а где это описано в документации? вы уверены, что можете это импортировать? давайте читать доки…»

NOTE: другие языки или изменения языка программирования как способ решить задачу не рассматривается. Пожалуйста, не советуйте, этого! Это вопрос про Python.

 , , ,

omegatype
()

Помогите отладить freeze в Arch при старте VM в VirtualBox

Форум — Desktop

Хост - arch, гость - windows 7. Стартую гостевую ОС и буквально в течение минуты хост фризится - GUI не отвечает, alt+shift+f1-8 не переключают терминалы. В journalctl не вижу причины, может кто подскажет? Пробовал отключать pae\nx - не помогает, все-равно фриз.

Ох как не хочется даунгрейдить пакеты :(

journalctl –boot=-1 https://pastebin.ubuntu.com/p/Dc9pr4td7Q/

 , , ,

omegatype
()

Роутер для домашнего сервера

Форум — Talks

Народ, подскажите, имеется:

  • [LAN-подключение] два телевизора, по которым необходимо по DLNA смотреть HD и UHD соответственно
  • [LAN-подключение] PC-сервер, который это раздает + качает торренты на ~10 MBps
  • [LAN-подключение] PC-рабочая станция, (сёрфинг сети)
  • [WiFi-подключение] 4 мобильных устройств, которые смотрят you-tube и прочие video
  • возможность в будущем купить iptv-пакет

Возможность связать по LAN устройства уже есть, еще есть wi-fi роутер от xiaomi, но это все не тенет. Рассматриваю вариант купить некий машрутизатор, например, Mikrotik hEX PoE 5x10/100 Mbps USB RB960PGS, к которому уже подключить wi-fi точку по LAN.

Есть ли варианты роутеров без wifi, но с хорошей пропускной способностью на такие требования?

 , , ,

omegatype
()

VPN не работает если написать правило на polkit?

Форум — Desktop

Постоянно отваливается VPN в ubuntu, каждый раз при включении просит пароль. Нашел в сети рецепт со созданию правила polkit:

root@System-Product-Name:/etc/polkit-1/localauthority/50-local.d# cat 10-network-manager.pkla 
[Let user modify system settings for network]
Identity=unix-user:XXX
Action=org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.network-control
ResultAny=no
ResultInactive=no
ResultActive=yes

root@System-Product-Name:/etc/polkit-1/localauthority/50-local.d# pwd
/etc/polkit-1/localauthority/50-local.d
root@System-Product-Name:/etc/polkit-1/localauthority/50-local.d# 

Делаю systemctl restart polkit и VPN отказывается подключаться вообще (икона не реагирует, а слайдер в настройках переходит в положение вкл без вопросов но сети нет)

Кто-нибудь сталкивался? Ubuntu 20.04

 ,

omegatype
()

RSS подписка на новые темы