И это всё МОЁ

Задача: определить ширину текста (в колонках) перед его выводом на линуксовый терминал.


Планирую определить ширину строки как сумму ширин входящих в строку символов.

Каждый символ может занимать 0, 1 или 2 знакоместа:



  • 0 - непечатаемые кодепоинты, а также кодепоинты, добавляющие какую-нибудь закорючку к предыдущему символу

  • 1 - обычные символы, напр, латинские или русские буквы

  • 2 - напр, китайские иероглифы, занимающие два знакоместа


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


Как отличить символы обычной ширины от двойной ширины, я нашёл: нужно посмотреть свойство EastAsianWidth в Unicode Character Database


А как понять, что символ нулевой ширины (т.е., не увеличивает ширину строки)?

Будет ли достаточно смотреть только на название категории символа без учёта доп. свойств символа?


Список всех категорий


C  = "Other",
Cc = "Control",
Cf = "Format",
Cn = "Unassigned",
Co = "Private_Use",
Cs = "Surrogate",
L = "Letter",
LC = "Cased_Letter",
Ll = "Lowercase_Letter",
Lm = "Modifier_Letter",
Lo = "Other_Letter",
Lt = "Titlecase_Letter",
Lu = "Uppercase_Letter",
M = "Mark",
Mc = "Spacing_Mark",
Me = "Enclosing_Mark",
Mn = "Nonspacing_Mark",
N = "Number",
Nd = "Decimal_Number",
Nl = "Letter_Number",
No = "Other_Number",
P = "Punctuation",
Pc = "Connector_Punctuation",
Pd = "Dash_Punctuation",
Pe = "Close_Punctuation",
Pf = "Final_Punctuation",
Pi = "Initial_Punctuation",
Po = "Other_Punctuation",
Ps = "Open_Punctuation",
S = "Symbol",
Sc = "Currency_Symbol",
Sk = "Modifier_Symbol",
Sm = "Math_Symbol",
So = "Other_Symbol",
Z = "Separator",
Zl = "Line_Separator",
Zp = "Paragraph_Separator",
Zs = "Space_Separator",


Состав категорий









 ,








И это всё МОЁ

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








 








И это всё МОЁ

Здравствуйте. Появилась проблема. Не могу через восстановить бекап на другом сервере через клонзилу, и там и там диски по 1 тб но виртуальный диск с промокса чуть больше, потому другой сервер не может его корректно записать.


Нужно уменьшить виртуальный диск с 1тб до 900гб. Прочитал тонны материала ничего не понял. Помогите )


Нашёл один способ, нужно конвертировать qcow2 в формат raw после сжать и заново конвертировать в qcow2. Но ни команд ни подробной инструкции не нашёл.









 








И это всё МОЁ

Навернулась мышь из комплекта. С хвостатой на ноутбуке неудобно. Купил самую дешманскую из беспроводных мышей, что были. Удивительно, но вот того странного глюка, про который писал в Две проблемы с Genius SlimStar 8008 (беспроводные мышь+клавиатура) не наблюдается. Еще у меня самый фиговый (в смысле работы на нем оптических мышек) стол. Эта на нем работает. А еще у этой мыши реально три DPI: 800, 1200 и 1600. Зачем 800, пока не знаю уже знаю, в MegaGlest пошерудил чуток, а 1600 в Гимпе распробую.

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

С мышью из комплекта теперь ясно и просто. То ли модель дрянь, то ли экземпляр. Или, все же, комплект в принципе не работает нормально?..

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

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

P.S. До сравнительно недавнего времени думал, что проводная клава по тому же определению глючить и тормозить не может. Однако, встречаются. Возможно, их по тайному заказу рептилоидов специально делают.








 , ,








И это всё МОЁ

Хочу записывать mp4 из webrtc стрима. Проблема в том, что кодировщик chrome почему то слишком часто (с каждым IDR) посылает ещё и SPS\PPS пакеты. Парсил и сравнивал эти SPS\PPS, они все одинаковые (за исключением битов выравнивания в конце rbsp_alignment_zero_bit). Разрешение в потоке идет постоянное, не изменяется

Вот пример двух SPS https://www.diffchecker.com/rABX2dvT


Смотрел другие видео, везде SPS посылается один, в начале видео. В моем же случае они сыпятся с каждым IDR

Вот примерный порядок NAL (вырезал nal_unit_type=1, т.к. их слишком много)

nal_unit_type     00111 = 7 (SPS)
nal_unit_type 01000 = 8 (PPS)
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5 (IDR)
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7
nal_unit_type 01000 = 8
nal_unit_type 00101 = 5
nal_unit_type 00111 = 7

Последовательность такая SPS PPS IDR, SPS PPS IDR, SPS PPS IDR... Ничего не понимаю, зачем слать каждый раз SPS, если он не меняется. Что ещё может меняться в стриме, что заставляет кодировщик слать эти SPS?

Не охота пока дебажить хром, может кто подскажет куда копать )








 , ,








И это всё МОЁ

!Ъ: Разработка OpenJDK переведена на Git и GitHub


Кто там остался из релевантных на ртути? Mozilla Firefox и SDL2?









 , , , ,








И это всё МОЁ

Второй раз за последние годы сталкиваюсь с тем, что в какой-то момент неуловимо ломается форматирование в MATE. Прошлый раз дело было в Mint непомню какой версии, сейчас Debian stable. В принципе, понятно что notification-area-applet ломается на тэге <a>, которого он не знает, но в какой момент это происходит и как чинить?..
Т.е., долгое время всё отображается нормально, потом вдруг форматирование начинает спотыкаться на <a>. Причем, я даже не помню как оно было до того - вообще дропался текст внутри тэга или же рисовалась ссылка. Кому не сложно - гляньте у себя.

notify-send -u critical -i dialog-information "Hello" "<i>italic</i> <b>bold</b> Worldsudo dmesg\nLorem"

Нормальное уведомление выглядит вот так

notify-send -u critical -i dialog-information "Hello" "<i>italic</i> <b>bold</b> Worldsudo dmesg\nLorem <a href=\"www.ru\">test</a>";

Поломанное уведомление выглядит вот так

В принципе, не могу сказать что это особо жить мешает, но слегка по глазам бьет, когда из WhatsApp или Telegram сообщение приходит








 , ,








И это всё МОЁ

в протобуферной структуре Foo имеется поле-структура bar типа Bar с repeated полем, и, возможно поэтому для установки этого поля bar протобуф предлагает только метод set_allocated_bar(), который требует указатель на структуру Bar. Метода set_bar() просто нет.

Как выделить память для bar_ и скопировать все из bar не распаковывая bar:

void myfunct(const myproto::Bar & bar) {
myproto::Foo foo;

myproto::Bar * bar_;
// выделить память как?
bar_ = … // скопировать все из bar как?
foo.set_allocated_bar(bar_);


}

P.S. а как вы работаете с repited полями? может я не правильно понял протобуф.








 ,








И это всё МОЁ

На мониторе непонятные полосы, перезагрузка только по кнопке выключения


часть journalctl


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


такая беда при установке любого ДМ. СтартХ стартует нормально.


PS: как столько текста скрыть под спойлер?









 ,








И это всё МОЁ

На ПК делается достаточно просто:

# Файл out.raw может быть FIFO.
# Захватить звук в файл:
pacat --record -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor > out.raw

# Воспроизвести файл с захваченным звуком:
play -t raw -r 44.1k -e signed-integer -b 16 -c 2 out.raw

# Конвертировать файл с захваченным звуком в формат wav:
sox -t raw -r 44100 -e signed-integer -L -b 16 -c 2 out.raw out.wav

Сейчас нужно сделать что-то подобное на моём LibreElec (запущен на Raspberry Pi).

Очень важно захватить то, что воспроизводится на HDMI (если вообще возможно - Line-in) и передать звуковые данные, например, через FIFO или пайп в конвеер и/или по SSH.

Найти устройство через pactl и pacmd не получилось.

Попытки захватить звук определённого клиента (пробовал по аналогии с этим ) так же не получилось. Клиент определяется так:

Client #1
Driver: protocol-native.c
Owner Module: 0
Properties:
application.name = "KodiDriver"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "33"
application.process.id = "786"
application.process.user = "root"
application.process.host = "Kodi"
application.process.binary = "kodi.bin"
application.language = "C"
window.x11.display = ":0.0"
application.process.machine_id = "70f5b9605a53e61719a3a9c55caf6b36"


Подскажите, как правильно захватить звук.








 , , ,








И это всё МОЁ

Напечатал приложение в Android studio с использованием внешней библиотеки jogl, запустил. На андроиде приложение вылетает с ошибкой libgluegen-rt.so not found. Приложение написано на Java. Искал решение нашел что надо поместить либу сошную в src/jniLib/libgluegen-rt.so не помогло, видимо мало кто доходил до этого шага. Есть ли у кого опыт с этой библиотекой опыт или какой либо другой, тоже внешней думаю будет аналогично. На сайте jogamp нет примеров, а только описание методов. Убогая документация что сказать.









 ,








И это всё МОЁ
$ eix deadbeef
* media-sound/deadbeef
Available versions: ~1.8.4 {aac alsa cdda converter cover dts ffmpeg flac +hotkeys lastfm mp3 musepack nls notify nullout opus oss pulseaudio shellexec +supereq threads vorbis}
Homepage: deadbeef.sourceforge.io/
Description: DeaDBeeF is a modular audio player similar to foobar2000



Из тех, кто пользовался ранее, можете сравнить по возможностям с бинарной версией от разработчика?









 ,








И это всё МОЁ

Собственно, требования весьма взаимоисключающие: 32, а лучше 64 гига оперативной памяти, 13-14’, легкий чтобы можно было взять в командировку.


Островная клавиатура с коротким ходом клавиш для меня норм и предпочтительнее, как и pgup/pgdown по Fn+стрелки.
Отдельный плюс, если металлический корпус, на который идет теплоотвод (чтобы при запуске моделирования/компиляйтунга локально, можно было положить кирпич из чугуния и «увеличить» время работы в турбобусте, как сейчас иногда делаю со своим envy 13).


Пока смотрю в сторону Dell XPS 13 9300, хотя цена кусается.









 , ,








И это всё МОЁ
Выпущена версия 0.9.1 библиотеки libmdbx (MDBX) с реализацией высокопроизводительной, компактной встраиваемой базы данных класса ключ-значение. Код libmdbx распространяется под лицензией OpenLDAP Public License.



И это всё МОЁ

Сценарий:
1) запускаем nmtui, подключаемся к wi-fi
2) запускаем любое графическое приложение, получаем вот такую ошибку

yura@localhost ~ $ firefox-bin
No protocol specified
Error: cannot open display: :0

Как чинить? С nmcli аналогично. Баг не воспроизводится, если, например, сначала подключаться к сети, а потом запускать иксы. Чинится пока что перезапуском иксов.








 ,








И это всё МОЁ

Eсть скрипт на Питоне, который пытается проверить, существует ли заданном почтовом сервисе/сервере аккаунт catchall. Cервер может быть любым - хоть gmail, хоть Postfix Васи Пупкина. То есть, скрипт будет пробовать подрубиться к серверу и притвориться пользователем, который будет пытаться залогиниться.


Насколько я знаю, проверить существует ли catchall нельзя:




  • catchall - это username с пустой строкой и такой username не пройдёт в процессе логина.




  • даже если бы он прошёл как валидный (пустая строка), то не факт вообще что catchall-у можно логиниться на этом сервере. Не все ведь пользователи могут логиниться.




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


В данном случае, нужна проверка именно на catchall.









 , ,








И это всё МОЁ

Хочу себе caterpillar colorado. Размер знаю, но в локальных магазинах дорого. Где можно заказать в юса или в ес обувь?









 ,








И это всё МОЁ

Почему считается, что ни KDE ни XFCE нет под восьмую шапку?
Вот же они, родненькие:


# yum grouplist
Updating Subscription Management repositories.
Last metadata expiration check: 0:03:06 ago on Wed 30 Sep 2020 06:18:02 PM MSK.
Available Environment Groups:
Server with GUI
Server
Workstation
KDE Plasma Workspaces
Virtualization Host
Custom Operating System
Installed Environment Groups:
Minimal Install
Available Groups:
RPM Development Tools
Container Management
.NET Core Development
Graphical Administration Tools
Network Servers
Headless Management
Scientific Support
Smart Card Support
System Tools
Development Tools
Security Tools
Legacy UNIX Compatibility
GNOME Desktop Environment
Hardware Support
Fedora Packager
Xfce
Games and Entertainment
Graphical Internet
KDE (K Desktop Environment)
Sound and Video


Что не так то? Помню было нытье на много страниц в разных темах.









 , ,








И это всё МОЁ

здрасьте здрасьте люди добрые
помогите пожалуйста разобраться с типами данных в Haskell


main::IO()
data T= M String |G String

let p= M "hi"

компилятор выдает ошибку
помогите разобраться








 








И это всё МОЁ

@K50, вопрос по сабжу какие за последние 5-7 лет самые ремонтопригодные ноуты с нормальным качеством корпуса?


Коррелирует ли ремонтопригодность с поколением процессора Интел?









 , , , ,