LINUX.ORG.RU

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

ngram-keylogger: написал велосипед для анализа эффективности моего кнопкодавства

 , , ,

Пришли мне Dumang DK6 Mini — две чумовые полу-клавиатуры, на которых можно размещать клавиши произвольным образом. Kinesis мой не заменит, ясное дело, но в жанре прототипирования плоских клав равных ей нет. А мне бы что-нибудь для планшетов-ноутов было бы интересно собрать.

Решил попробовать сделать какую-нибудь раскладку с аккордами на популярные буквокомбинации и слова и понял, что понятия не имею, что я вообще жму и в комбинации с чем. Одно ясно — статистика, набранная по худлиту, мне точно не подойдет, я ж не наборщик, я в шелле команды правлю да в виме бултыхаюсь. Кажется.

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

Наиболее удививший меня пример (в README есть еще):

Хотя бы буквы у меня соответствуют английской частотности (ETAOIN…)?

# ngram-keylogger query --limit=5 keypresses '[a-z]'
4.095611% | t
4.042651% | e
3.964975% | i
3.424778% | o
3.216467% | n

OK, сойдет. А заглавные?

# ngram-keylogger query --limit=5 keypresses '[A-Z]'
1.062741% | S
0.430745% | L
0.353070% | C
0.338947% | A
0.314232% | T

Че? Как так вышло, что каждое сотое совершаемое мной действие — набор заглавной S?

Так, после чего я ее печатаю?

# ngram-keylogger query --limit=5 bigrams '*' 'S' --renormalize
40.199336% | S     | S
18.272425% | L     | S
 7.641196% | space | S
 6.976744% | o     | S
 5.980066% | ...   | S

Зашибись, спамлю еще S, или печатаю LS или oS. Супер-естественно… S после паузы и пробел + S еще куда ни шло.

Итак, где я долблю по S?

# ngram-keylogger query --limit 3 --by-context bigrams 'S' 'S' --renormalize
90.082645% | term:vi:magit:nrm | S | S
 4.958678% | term:vi:magit:ins | S | S
 3.305785% | browser           | S | S

Ффух, и правда. S это stage hunk в vimagit, и я реально много его жму, когда просматриваю, что собрался коммитить. Дело закрыто.

Другие находки: самая популярная с большим отрывом триграмма nnn, неприлично малое отношение точек с запятой к двоеточиям, популярность git, непопулярность h и нижнего подчеркивания. И это только начало, а сколько еще открытий чудных…

Как вы составляете/оптимизируете раскладки? Есть советы, истории успеха? Xah Lee уже читал. Особенно интересно послушать пользователей chording-раскладок и прочих стенографистов-программистов; за пользователей QWERTY не переживаю — что им будет, они же в танке.

t184256
()

где вы берете эти ваши торренты?

 ,

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

Всяких подписок на иви и пр. у меня нет, да и то чего хочется посмотреть на них тоже нет (скажем хочется глянуть «день когда сотановилась» 1951 года или «через вселенную» по битлам).

Поставил себе ktorrent по старой памяти, пытаюсь закачать - большая часть торрентов нерабочая (нет никого на раздаче). Как это сейчас делается и делается ли вообще?

ЗЫ воткнул в телевизор флешку с .avi файлом - он сказал что такое показывать не умеет. Совсем опечалился, придется его как то цеплять к ноуту что ли…

AntonI
()

Удаление непечатаемых символов из переменной в bash

 ,

Задача: создать переменную из кириллицы рандомной длины. Далее эта переменная будет использована в качестве поля CN в subject.

Не придумал ничего лучше:

subj_gen=$( cat /dev/urandom | grep -aoe [абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] | tr -d '\n' | head -c $( shuf -i 1-10 -n1 ) ); subj_value="CN=$subj_gen"; echo $subj_value

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

На выходе получаю:

root@root:~# subj_gen=$( cat /dev/urandom | grep -aoe [абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] | tr -d '\n' | head -c $( shuf -i 1-10 -n1 ) ); subj_value="CN=$subj_gen"; echo $subj_value

CN=фвЯПШ

root@root:~#

root@root:~# subj_gen=$( cat /dev/urandom | grep -aoe [абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] | tr -d '\n' | head -c $( shuf -i 1-10 -n1 ) ); subj_value="CN=$subj_gen"; echo $subj_value

CN=Обэ▒

root@root:~#
root@root:~# cat $subj_value

cat: 'CN=Обэ'$'\320': No such file or directory

root@root:~#

Как видим, в первом случае мы получаем корректную переменную, во втором же в конец этой переменной добавляется непечатаемый символ. Если верить cat – это символ $.

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

Перемещено hobbit из general

Heart
()

Получить deb-пакет из исходников, чтобы все было по-взрослому

 , ,

Исходно проблема такая. Нужно в Ubuntu 22.04 поставить Slurm версии не менее 22.05. Предлагаемая в Ubuntu 22.04 версия Slurm меня не устраивает по причине отсутствия поддержки Cgroups v2, переключаться на v1 мне не хотелось бы. Смешивать пакеты из разных дистрибутивов, как я понимаю, не благословляется из-за конфликта зависимостей.

Возникла идея сделать свою сборку из исходников, но чтобы было все по-взрослому, прям как пакет из дистрибутива. Чтобы пакет учитывал особенности Ubuntu, были разные дополнительные вещи типа поддержки logrotate и другие тонкости о которых я даже не знаю. Для этого, видимо, нужны дополнительные файлы, которые делают Сопровождающие.

В Ubuntu 23.04 есть подходящая версия Slurm — 22.05.8. На сайте Ubuntu можно найти файлы: slurm-wlm_22.05.8-3.dsc, slurm-wlm_22.05.8.orig.tar.gz и slurm-wlm_22.05.8-3.debian.tar.xz. Это, я так понимаю, исходник и необходимые вспомогательные файлы. Теперь это надо как-то легким движение превратить в полноценный deb-пакет, но только для Ubuntu 22.04.

Это вообще реально? Как сделать? Какие могут быть проблемы?

zb2
()

Чем паролить флешку?

 

Умные учатся на чужих ошибках, дураки на своих, скупой дважды, такие как я…

В общем, как лучше «закрыть флешку» от потери?

shTigrits
()

VIM. Окончательное решение вопроса о мапе контрола на капс.

 , , ,

Сабж.

Все нагугленные решения какие-то половинчатые. Кто как делает? Есть решение чтоб и под иксами и под ssh?

$ nvim --version
NVIM 0.1.7
Build type: None
Compilation: /usr/bin/cc -g -O2 -fdebug-prefix-map=/build/neovim-wew7PE/neovim-0.1.7=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -DDISABLE_LOG -Wconversion -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1  -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wvla -fstack-protector-strong -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -DHAVE_CONFIG_H -D_GNU_SOURCE -I/build/neovim-wew7PE/neovim-0.1.7/build/config -I/build/neovim-wew7PE/neovim-0.1.7/src -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/build/neovim-wew7PE/neovim-0.1.7/build/src/nvim/auto -I/build/neovim-wew7PE/neovim-0.1.7/build/include
Скомпилирован  pkg-vim-maintainers@lists.alioth.debian.org

Optional features included (+) or not (-): +acl   +iconv    +jemalloc +tui      
For differences from Vim, see :help vim-differences

            общесистемный файл vimrc: "$VIM/sysinit.vim"
          значение $VIM по умолчанию: "/usr/share/nvim"

// мой мизинец скажет вам спасибо :)

pihter
()