LINUX.ORG.RU

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

Минимальное окружение с CWM и lemonbar на OpenBSD

Галерея — Скриншоты
  • музыка - cmus
  • редактор - neovim с кучей плагинов
  • бар - lemonbar и программка на го (на ГХ не залил)
  • рыбка в терминале - свой же truefetch
  • часы - tock

 , , ,

peajack
()

Монитор 21:9 и субтитры

Форум — Desktop

Здравствуйте, у меня монитор 21:9 и к сожалению при запуске фильмов, сериалов - начинается mpv с прямоугольником в центре и с рамками внизу, вверху и слева, справа. Мне удалось решить эту проблему с помощью следующей команды: –panscan=1.0. Однако я предпочитаю смотреть в субтитрах, а они исчезают при применении этой команды.

Кто знает, подскажите, пожалуйста, как подогнать субтитры под масштаб монитора 21:9 и запустить контент на полный экран?

Перемещено Dimez из polls

 ,

Longard
()

Моя поделка

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

Тихо и незаметно экспериментирую с созданием среды визуального программирования.

На скриншоте виден прототип самой среды с функцией, вычисляющей числа Фибоначчи. Среда уже умеет транслировать схему в код на ванильном Haskell-е и выполнять его через ghci (его вывод показан на вкладке REPL). Сгенерированный код показан в отдельном окне.

Сам прототип написан на PySide6, схемы хранятся в PostgreSql. Для разработки использую WingIDE (на заднем плане), PgModeler и DBeaver.

P.S. Не нужно меня с метапрогом сравнивать. :)

 ,

Rodegast
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Статьи — Разработка
Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

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

( читать дальше... )

 , , ,

Reset
()

Lisp Asp .Net MVC

Форум — Development

C# официально устарел и отправляется в помойку, т.к. теперь веб-фреймворк Asp .Net Core MVC доступен из Common Lisp.

Можно так писать:

;; Asp.Net MVC controller
(define-dotnet-callable-class (example-controller
                               (:base-type . ControllerBase))
    ()
  ;; Echo the 'Hello' message to client
  (:method index :string ((name :string))
    (format nil "Hello~:[~;, ~:*~a~]!" name)))

https://github.com/Lovesan/bike/blob/master/examples/aspnet-mvc.lisp

На линуксе работает на SBCL и на CCL, проверял.

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

Также, пока bike не поддерживает аттрибуты, но это наверное добавлю позже.

Ну и с extension-методами пока не придумал что делать, пока их классы надо руками писать.

 , , , ,

lovesan
()

Arch c dwm

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

Моя рабочая станция. На скрине постановка из обоины

  • терминалы alacritty в кол-ве 3 штук;
  • neovim с говнокодом для скачивания красивых картинок на python;
  • удобный файловый менеджер lf;
  • dwm с flexipatch какой то степени свежести с патчами ниже:
#define BAR_AWESOMEBAR_PATCH 1
#define BAR_LAYOUTMENU_PATCH 1
#define BAR_LTSYMBOL_PATCH 1
#define BAR_STATUS_PATCH 1
#define BAR_SYSTRAY_PATCH 1
#define BAR_TAGS_PATCH 1
#define BAR_WINTITLE_PATCH 1
#define BAR_TITLE_LEFT_PAD_PATCH 1
#define BAR_ALPHA_PATCH 1
#define BAR_CENTEREDWINDOWNAME_PATCH 1
#define ALWAYSCENTER_PATCH 1
#define FOCUSONNETACTIVE_PATCH 1
#define PERTAG_PATCH 1
#define VANITYGAPS_PATCH 1
#define XRDB_PATCH 1
#define FLEXTILE_DELUXE_LAYOUT 1
#define TILE_LAYOUT 1
#define MONOCLE_LAYOUT 1

 ,

Noob_Linux
()

Осень, TDE и E16

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

Осенняя и не очень рабочая обстановка, очень косвенный закос в сторону BeOS.

Помесь из Trinity и E16.

Из софта:

  • термулятор эминала Konsole;
  • RPN-калькулятор Mathemagics;
  • Gkrellm;
  • XDecorations, рисующий опадающие листья.

 , , ,

pericles
()

MorphOS 3.15 или ответ на вопрос, что сделать с PPC-машиной

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

Собственно, для меня применение моего Mac Mini G4 существует только одно — и это MorphOS.

Все правильные ощущения (а местами и неправильные) от Амиги на месте. При этом система может дойти до гугла, лора и много чего еще (за счет вебкит-браузера).

Хочется вспомнить, что такое Amiga E — вперед, берешь PortablE и радуешься жизни, прямо как раньше, но только сейчас.

Понимаешь, что никакая система для тебя не может быть без частички UN*X — ixemul тут в комплекте (а это почти целое ядро BSD, работающее как процесс системы).

Из того, что приятно удивляет — подсистема 68к (JIT) работает настолько прозрачно, что твое приложение может даже не догадываться, использует оно библиотеки 68к или ppc, или оно само работает на 68к или PowerPC.

Весьма забавная система, чтобы вспомнить те времена, когда «Computing was fun»

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

 , ,

nihirash
()

Хочу начать изучать Rust, отговорите

Форум — Development

Пока что останавливает вот что:

  1. Слышал, что у Rust плохой компилятор, который выдаёт медленный код
  2. Размер конечных бинарей гораздо больше, чем у православной сишечки
  3. Полная зависимость от интернета
  4. Rust пропихивается в изначально сомнительные проекты (вроде systemd)
  5. UB замаскированы под unsafe

С 1 всё более-менее понятно - у сишки и крестов достаточно подобрать компилятор, чтобы было быстро, а у раста он один. А что с остальными пунктами? Можно ли уменьшить размер конечных бинарей?

 

LikeABoss
()

Оптимизация свёртки эрмитовской матрицы с вектором

Форум — Development

Привет ЛОР, я вам тут покушать принёс.

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

Но это была присказка.

А теперь сама сказка: как лучше всего сворачивать матрицы с параметрами? Как делать это быстро? Я написал простенький бенчмарк на плюсах, который генерит псевдослучайные данные; каждое событие представлено в виде эрмитовской матрицы, для бенча же вычисляется сумма - ln V^dag M V, V — комплексные параметры (тоже генерятся случайно, но только один раз).

Я потестил Eigen и boost на дремучем i7 860 без avx инструкций, получается как-то так:

Compiler flags: -O3 -ffast-math -I/usr/include/eigen3

Number of events: 1000000
************************* Matrix size 10x10 ************************
=== Eigen with fixed size matrix
	      - ln L =    -3.34078e+06 [n. u.]
	   Float size:               4 [Bytes] 
	  FCN duration:        240.944 [ms]
=== Eigen with fixed size matrix
	      - ln L =    -3.34073e+06 [n. u.]
	   Float size:               8 [Bytes] 
	  FCN duration:        378.355 [ms]
=== Eigen with dynamic size matrix
	      - ln L =    -3.34078e+06 [n. u.]
	   Float size:               4 [Bytes] 
	  FCN duration:        262.532 [ms]
=== Eigen with dynamic size matrix
	      - ln L =    -3.34073e+06 [n. u.]
	   Float size:               8 [Bytes] 
	  FCN duration:        398.018 [ms]
=== Boost hermitian matrix
	      - ln L =    -3.34078e+06 [n. u.]
	   Float size:               4 [Bytes] 
	  FCN duration:        654.639 [ms]
=== Boost hermitian matrix
	      - ln L =    -3.34073e+06 [n. u.]
	   Float size:               8 [Bytes] 
	  FCN duration:        662.562 [ms]
*************************  Matrix size 5x5 ************************
=== Eigen with fixed size matrix
	      - ln L =    -1.51895e+06 [n. u.]
	   Float size:               4 [Bytes] 
	  FCN duration:        242.141 [ms]
=== Eigen with fixed size matrix
	      - ln L =    -1.51894e+06 [n. u.]
	   Float size:               8 [Bytes] 
	  FCN duration:        380.236 [ms]
=== Eigen with dynamic size matrix
	      - ln L =    -1.51895e+06 [n. u.]
	   Float size:               4 [Bytes] 
	  FCN duration:        151.074 [ms]
=== Eigen with dynamic size matrix
	      - ln L =    -1.51894e+06 [n. u.]
	   Float size:               8 [Bytes] 
	  FCN duration:        169.722 [ms]
=== Boost hermitian matrix
	      - ln L =    -1.51895e+06 [n. u.]
	   Float size:               4 [Bytes] 
	  FCN duration:         204.22 [ms]
=== Boost hermitian matrix
	      - ln L =    -1.51894e+06 [n. u.]
	   Float size:               8 [Bytes] 
	  FCN duration:        205.454 [ms]

Как видите, буст начинает проигрывать при переходе от матриц 5x5 к 10x10. Однако я помню когда я гонял этот тест недели три назад на других (более новых) хостах, ситуация не была такой уж однозначной.

Я добавлю код теста в комментарии, авось уважаемая публика ткнёт меня носом в мои ошибки. cast @Siborgium @AntonI @byko3y

@WitcherGeralt @annerleen вы там какие-то бенчи гоняли и устраивали традиционный срач синих с красными, вот вам однопоточный тест для вполне себе реальной задачи.

 , числодробилки

luke
()

Чем пользуетесь из F-Droid?

Форум — Mobile

Собственно сабж. Третий андрофон. В первый раз ставил из него судоку. Во второй: блокнот. В этот раз: «Транзистор» для прослушивания радио.

А кто чем ещё пользуется?

 ,

AlexVR
()

Быстрые деревья

Форум — Development

Имеется структура данных: дерево из 100 тысяч узлов. Самая длинная ветвь — 50 тысяч. Число дочерних узлов не ограничено. Требуется быстро найти наинизшую общую вершину для примерно миллиарда пар узлов.

Для менее асимметричного дерева из 10 тысяч узлов и 20 миллионов пар я тупо построил список списков предков и сравнил для каждой пары. Но для большого дерева не хватит памяти.

Вопрос: есть ли готовая библиотека, способная быстро искать общую вершину?

 ,

question4
()

Структура данных для хранения коэффициентов многомерного полинома?

Форум — Development

Сабж. Есть полином от D параметров x_1,…x_D суммарной степени N. Его можно рассматривать как сумму членов x_1^{k1} x_2^{k2} … x_D^{kD}, sum k_i<=N. При каждом таком члене есть коэффициент типа double, нужна структура данных которая обеспечит эффективный доступ к коэффициенту если известен набор степеней k.

Число D известно в компайл-тайм, как правило D=2..4 но может быть и больше (скажем до 8ми). N известно в рантайм, N<256.

Можно смотреть на это как на структуру данных, которая должна реализовать угол D-мерной кубической сетки отрезанный плоскостью проходящей через ближайшие к нижнему левому углы вершины. Или как на результат возведения в степень N суммы D переменных (только там не мультиномиальные коэффициенты, с ними еще всякие пертурбации происходят).

Cтепени k хранятся в беззнаковом целом (4 или 8 байт), по байту на степень.

Сейчас это реализовано тупо, как std::map<uint32_t, double>, есть ощущение что доступ к этой штуке сильно тормозит. Другой крайностью будет просто создать массив из N^D даблов, но это противоречит моему чуйтству прекрасного - уж больно здоровый оверхед по памяти.

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

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

 ,

AntonI
()

Определение публичного 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
()

При перезагрузке мьютаться наушники

Форум — Desktop

Есть ноут, в который постоянно воткнуты наушники. Чиcтая alsa безо всякой пульсы. После перезагурзки в alsamixer с недавнего времени замьючен канал наушкников.

 
$ alsactl store 
alsactl: state_lock:125: file /var/lib/alsa/asound.state lock error: File exists

Хотя каталог /var/lib/alsa/ девственно пуст. Как починить?

 

LIKAN
()

Создание загрузочных образов boobstrap v1.0

Новости — Open Source
Группа Open Source

Хочу представить вашему вниманию фреймворк под названием boobstrap, написаный на POSIX shell, для создания загрузочных образов с дистрибутивами GNU/Linux. Фреймворк позволяет пройти весь пусть в три простых шага: от развёртывания системы в chroot, создания initramfs-образа включающего в себя систему из chroot, и в конечном счёте загрузочного ISO-образа. boobstrap включает в себя три утилиты mkbootstrap, mkinitramfs и mkbootisofs соответсвенно.

( читать дальше... )

>>> Получить исходный код

 

Spoofing
()

Релиз Ventoy 1.0.13

Новости — Open Source
Релиз Ventoy 1.0.13
Группа Open Source

Ventoy — это инструмент с открытым исходным кодом для создания загрузочного USB-накопителя для ISO-файлов. С ним вам не нужно форматировать диск снова и снова, вам просто нужно скопировать iso файл на USB диск и загрузить его. Вы можете скопировать несколько iso-файлов и выбрать необходимый в меню загрузки. Поддерживаются и Legacy BIOS, и UEFI режимы. Протестировано 260+ ISO-файлов (список).

В этом релизе:

  • Добавлена поддержка образов WinPE типа «N-в-одном»;

  • Добавлен плагин «menu_alias», позволяющий задать псевдоним для конкретного ISO-файла;

  • В плагине «theme» добавлена возможность задания режима дисплея;

  • Добавлен вызов меню загрузки с локального диска по клавише F4;

  • Добавлен режим отладки по клавише F5;

  • Обход ограничений, присущих некоторым Legacy BIOS;

  • Различные оптимизации и исправления ошибок, расширен список поддерживаемых ISO-файлов.

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

 , , ,

cocucka
()

Максимум ECC-памяти для X570

Форум — Linux-hardware

Собираю систему на Ryzen 9 3900X, материнская плата (предварительно) ASUS ROG Crosshair VIII Hero.

Формально в материнку можно воткнуть 128 Гб памяти, и есть поддержка Un-buffered ECC. С другой стороны, в продаже можно найти только планки по 16 Гб, типа Crucial CT16G4WFD8266 или Kingston KSM26ED8/16ME, заодно получаем и низкие частоты (2666 МГц), и латентность CL19. Хочется чего-то большего.

Есть ли здесь какие-то опции, которые я упускаю? Насколько успешно разгоняется память с ECC? Бывает ли ECC-память хотя бы на 2933 МГц?

 , ,

Zeta_Gundam
()

Red Hat ищет питонистов

Форум — Job

Red Hat ищет питонистов в Брно (Чехия) с релокацией. Сеньоров могут релоцировать в Испанию.

Резюме можно слать мне (abondarenko@gmail.com, me@andreybondarenko.com).

UPD: там сейчас 20(!) позиций открыто. Вилку не знаю, там слишком разный народ ищут. Наверное, от 2000 евро джуниору.

 , ,

Shaman007
()

Поиск работы за границей РФ: доступ из вашей страны запрещен и другие важные вещи

Форум — Job

Как вы знаете, в РФ есть довольно странное законодательство на счет персональных данных, в котором зарубежные рекрутеры не хотят разбираться. Со стороны это выглядит так, как будто вы пошли на сайт например Red Hat или IBM, а нажать кнопку «apply» вам не дали, вывесив текст о том, что законодательство вашей cтраны не позволяет обрабатывать персданные за границей.

ВАЖНО: эту заглушку не ставит работодатель, ее ставит рекрутер потому что так ему посоветовал МакКинзи или Прайс, которые так посоветовали потому что увидели некоторый риск для рекрутера. Никаких других прчин для этого нет, если вы зайдете на ту же страницу с IP любой европейской страны или США, то ваше резюме будет принято, рассмотрено, вам будут звонить на ваш российский номер телефона.

Важно понимать, что перетащить вас из страны в страну стоит некоторого количества сил и денег. Самостоятельно этого добиться трудно, для этого есть специальные агенства, у которых есть отработанные процедуры. Из этого есть 2 важных прямых следствия и одно косвеное: искать работу стоит в больших корпорациях/стартапах с деньгами, которым не горит вас нанять и для которых затраты на перевозку не критичны. Просто составьте таблицу больших фирм, чья продукция вам нравится, сходите на их раздел «Карьера» и попроситесь на все-все вакансии, которые вам подходят. Второе следствие: естественно все эти затраты кратно вернутся работодателю за первые ваши 2 года работы, так как бизнес - деятельность по извлечению прибыли и единственная причина вас нанять и тащить через пол мира - маржинальность вашей деятельности (местный попросит больше денег и не будет так держаться за место как вы за визу). Это нормально, считайте их затраты на ваше беспроблемное перемещение своей косвенной прибылью. Самостоятельно вы все равно потратите больше, можете потерпеть неудачу не зная точно важных формальностей. Косвенное следствие: с идущими работать в большую корпорацию посольство обращается значительно мягче, чем с идущими работать в новую или мутную фирму.

Прежде чем посылать CV в большую фирму, сходите на Linkedin/Facebook, пройдитесь там по знакомым и укажите их как референсы в резюме. Вы не поверите, сколько пользователей ЛОР, например, в Бренском Red Hat или IBM и с каким удовольствием они оставят о вас отзыв своему HR. Cпойлер: это возможные премии во многих конторах, так что не стесняйтесь спрашивать и просить рекомендации.

UPDATE из 2019. Теперь по крайней мере Red Hat заставляет формально аппаиться через российское представительство посте того, как зааплаился через VPN.

Перемещено Falcon-peregrinus из job

Перемещено Klymedy из talks

 , ,

Shaman007
()