beldmit: (Программизм)
В Чехию я приехал с одним чемоданом, в который комп, естественно, не лез. Но лез ноутбук, на котором я и работал, пока не получил рабочее место от работодателя (тоже ноутбук, но с монитором и клавиатурой).

Когда Нина отправляла вещи из Москвы, свой комп она отправила, а мой — нет. Затрудняюсь сказать, чем и о чём я тогда думал. В итоге комп до меня доехал только примерно неделю назад. Без хвостов и WiFi. Хвост питания и мониторный хвост VGA я купил, потому что Display Port-а у меня на видеокарте нету.

USB Wi-Fi у меня был. Но при втыкании «корова доится, но не даёт молока» — сеть видится, но не соединяется. Вскрытие показало, что на 2.4 ГГц тут жизни нет. На 5 есть.

Купил адаптер D-Link AC600 в ближайшем магазине. У Нины на винде он не завёлся. Он, зараза, совмещён с USB-флешкой с собственным драйвером, которого нет на 10-ке. Драйвер надо поставить, а флешку — отмонтировать. При мигании питания это будет тот ещё квест, поскольку монитор держать при компе не планирую. Под линуксом, разумеется, драйвер потребовал сборки, то есть через этот квест придётся проходить при каждом апгрейде ядра. В общем, надо брать что-то проще и незатейливее.

Финальным аккордом был запуск Thunderbird через X forwarding. Сначала оно потребовало этот X forwarding явно включить. Потом стало мееееедленно показывать главное окно.

Пошёл гуглить. Увидел рекомендацию поиграть с шифрами (нафиг), использовать опцию -Y вместо -X для форвардинга (примерно ноль эмоций) и предложение включить компрессию потока (-С). Про компрессию на stackoverflow обещали, что она всё только затормозит, но внезапно она дала живительный эффект, и Thunderbird стал отображать письма за разумное время.

В общем, осталось купить какой-то более вменяемый WiFi-ный свисток, который не будет требовать umount-а для выполнения основной функции, и золотой ключик у меня в кармане. Снабжать комп индивидуальным монитором смысла, видимо, нет. Советы по тому, какой WiFi-свисток с поддержкой 5 ГГц подключить, приветствуются.
beldmit: (Манул)
Берём Debian и запускаем torbrowser-launcher последней версии из меню. Он скачивает свежую версию и молча закрывается.

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

Ставим gpg2. Скачивает, проверяет сигнатуру. И радостно обламывается с 32 байтами нечитаемого и некопируемого идентификатора кода ошибки, рассказом про устаревший ключ и предложением жаловаться на github разработчика.

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

Вишенка на торте - bad gateway на Флибусте, ради которой всё и затевалось :)
beldmit: (Программизм)
За что я люблю C, так это за невозможность прострелить себе ногу способом «не то имя переменной». Есть масса других, не менее романтических, но этого — нет. У Perl есть use strict и -wc, у Python приходится прикручивать внешние линтеры.

Тут пришлось немного попрограммировать на bash, и после толпы ошибок системы «забыл пробел перед скобкой» я нашёл утилиту shellcheck - линтер для shell-скриптов. Написан на хаскелле, но это я переживу.

Ловит глупые и не очень ошибки. Я его поставил из buster-backports и запускаю с -S warning (в более древних версиях этой опции нет), а то он слишком много говорит. Понимает несколько shell-овских диалектов.
beldmit: (Программизм)
Using gcc sanitisers to get a nasty bug fixed
К описанным в статье директивам компилятора и линкера должны прилагаться ещё и LD_PRELOAD соответствующих библиотек. Без них ничего не летает.

Differential fuzzing of cryptographic libraries
Вот до практического применения этой методологии у меня руки пока не дошли.

Post-Production Editing using Git
Немного git-овой магии про то, как привести коммиты в человеческий вид постфактум. Кое-что пробовал, но в git я на очень базовом уровне разбираюсь, к сожалению.
beldmit: (Программизм)
Самое дурацкое, что бывает в работающей инфраструктуре — Артефакт, Который Всегда Работал и Вдруг Перестал, оставленный Великими Древними в Тайном Месте.

Сегодня на поиск Тайного Места ушла половина рабочего дня у меня и примерно столько же времени у коллег. Тайное место было замаскировано: очень трудно сообразить, что /home/user и ~user — ни разу не одно и то же место.
beldmit: (Программизм)
Наконец-то я настроил при использовании grep из vim игнорировать .svn

set grepprg=grep\ -n\ --exclude=tags\ --exclude=TAGS\ --exclude-dir=.svn\ $*\ /dev/null

Собственно, переменную окружения GREP_OPTIONS, через которую я работал несколько лет, объявили deprecated (но пока не выпилили). А во всех советах игнорировали часть аргументов, в результате чего навигация по найденному из vim не работала. В таком виде - работает. Осталось .git туда же добавить, но это по необходимости.
beldmit: (Программизм)
... что в современных Linux-ах (точнее, видимо, в современной glibc) вместо fork() используется clone(). По крайней мере, на уровне системного вызова и выдачи strace, в которую я смотрел, не нашёл fork и ошибочно пришёл к выводу, что у меня программа работает в однопроцессном режиме. Однако нет.

Различия между ними тоже есть, clone() вроде как универсален для процессов и тредов, подробнее пока не читал.
beldmit: (Манул)
Поймал первую проблему от апгрейда на buster. Перестала цепляться электронная книга.

Диагностика

usb 4-3: new full-speed USB device number 21 using ohci-pci
usb 4-3: device not accepting address 21, error -62
usb 4-3: new full-speed USB device number 22 using ohci-pci
usb 4-3: device not accepting address 22, error -62
usb usb4-port3: unable to enumerate USB device

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

Update: похоже, книга. На линуксовом компе без апгрейда эффект тот же.
beldmit: (Программизм)
Невероятно. Апгрейд домашнего компа до buster с нулевого взгляда не сломал (так, чтобы фатально) вообще ничего. То есть какой-то пакет пришлось при апгрейде пнуть ногами, и всё.

В очередной раз куда-то поехали то ли шрифты, то ли шрифтовые настройки. Это переживу.
beldmit: (Программизм)
Скачал триал-версию компилятора от Intel. В своё время на криптокомовском коде он давал прирост производительности раза в два (без учёта асемблерных вставок, которые шансы выравнивали). Одновременно скачал компилятор от AMD и устроил недобенчмарк на том, что под руку попалось — машинка с AMD-шным процессором и машинка с Intel ATOM. Результат меня удивил.

Во-первых, разница между icc, aocc и gcc на новом хеше оказалась пренебрежимо малой, а на Intel-овом процессоре так даже в пользу gcc. Лёша Дегтярёв в своё время код оптимизировал неплохо.

Во-вторых, по подписи AMD-шный компилятор оказался быстрее процентов на 10 (на нашей арифметике), чем gcc, на обеих архитектурах, а Intel неожиданно отстал фатально даже от gcc на AMD-шных процессорах и пришёл ноздря в ноздрю c aocc на Intel-овом.

В-третьих, по шифру (который «старый» ГОСТ) AMD-шный компилятор быстрее gcc на 12% на AMD и примерно одинаков на Intel.

В-четвёртых, AMD-шный профайлер (который CodeXL) отказался показывать мне, что за код генерит AMD-шный компилятор, что отдельно смешно.

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

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

Update: Максим Дунин убедил меня, что скорее всего это эффект нового clang по сравнению с не новым gcc, но вопрос о целесообразности компилятора от Intel, пожалуй, закрыт.
beldmit: (Программизм)
У меня время от времени запускается достаточно долгая сборка. Я в это время, естественно, читаю что-то открытое в браузере, время от времени проверяя, как там процесс. Хочется минимизировать усилия по проверке, как там — то есть переключаться между окнами или рабочими местами не хочется, а вот подвести мышкой к свёрнутому окну и увидеть, бегут ли там строчки — вполне вариант.

Есть ли такая настройка?

Update: больше всего по описаниям на то, что я хочу, похож Dockbarx. Но под Mate он не работает.
beldmit: (Программизм)
Время от времени какое-нибудь поделие, основанное на autotools, прекрасно отрабатывает configure, но при запуске make внезапно требует конкретную версию кого-то из autotools. Номер версии может ни разу не биться с тем, что установлено в системе.

Мне это удалось обойти, когда я внимательно прочитал сгенерированный Makefile и посмотрел, для чего эти autotools нужны. Мне хватило сказать touch Makefile.in aclocal.m4, чтобы сборка перестал требовать automake-1.14 и aclocal-1.14. После этого все зависимости уже сгененированного Makefile оказались удовлетворёнными и сборка прекрасно собралась. Файлы, которым надо указать, что они на свете всех новее, определяются самостоятельно для каждой программы.

Update: Вот тут даётся объяснение, почему оно так и кто на ком стоит.
beldmit: (Программизм)
Есть софтина под Linux, которая желает ставиться в /opt.

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

Практически правильное решение — собрать первую софтину, запакетировать, поставить (нужен root), собирать вторую. Хочется обойтись без root-а. Возможно ли сие?

Update: FAKECHROOT_EXCLUDE_PATH=/usr:/tmp:/var:/bin:/dev:/proc:/lib fakechroot chroot `pwd`/sandbox

sandbox готовить по вкусу.

Стоит ли овчинка выделки, пока не понял.

Ansible

Oct. 18th, 2017 11:17 am
beldmit: (Программизм)
Решил попробовать хоть как-то освоить ansible. Не по доброй воле, а потому, что потребовалось разложить по двум десяткам машин новый SSH-ключ.

Создал директорию, создал сценарий, поставил ansible - не работает. В смысле, не видит список хостов.
Коллега проапгрейдил ansible на новую версию. Список хостов увиделся, сценарий не работает. С диагностикой

В общем, вчера тупо долбился об стену несколько часов. Сегодня запустил с повышенной verbosity, почитал внимательно и увидел, что причина диагностики
"module (copy) is missing interpreter line"

в том, что я обозвал свой сценарий так же, как и один из штатных плагинов ansible. В гугле такого варианта идиотизма пользователя не фигурирует, так что хозяйке на заметку.
beldmit: (Программизм)
Не то, чтобы в такую шальную погоду у меня были богатый выбор. Да ещё и Нина сбежала на игру, оставив детей мне. И в итоге, прочитав у [personal profile] vitus_wagner про то, что апгрейд на stretch у него прошёл гладко, я вдохновился и запустил апгрейд.

Ну да, апгрейд прошёл легко и непринуждённо, но после перезагрузки я увидел GUI, игнорирующий мышь и клавиатуру. Ок, гугль. Ага, несколько модулей. Ага, хрен. Ого, 2 часа. Пора спать.

Утром я осознал, что у меня ядро осталось аж с позапрошлого выпуска. А проапгрейдить его нельзя, потому что на партиции места нет. Вылез за болванками, записал LiveCD c GPartED, 4 часа двигал партиции, в итоге понял, что расширить раздел всё равно не получится. Долго архивировал домашнюю директорию. Ещё дольше копировал её на флешку, потому как забыл, что файлов больше 4Гб на FAT32 не бывает. Скопировал, запустил установку, ага, gnome3 работает, ого, как оно неудобно-то, да и тормозит, и глючит, ой блин, 2 часа, пора спать.

Утром попытался сделать 2 вещи. Заменить gdm3 на mate, а nouveau на проприетарные от nvidia. В общем, фиг, и проще переставить с нуля. Переставил, ушёл в гости, бросил детей на Надю, отмечавшую день рождения, вернулся, встретил Нину, скопировал настройки с бекапа. Заработало более-менее всё, и часть вещей, которые в gnome делались через задницу, типа добавления кнопок запуска на верхнююпанель, в mate делается интуитивно-понятным способом.

Из замеченного на бытовом уровне: переименованы сетевые интерфейсы (но судя по Debian Wiki, можно по-прежнему править /etc/network/interfaces). Новый openssl (1.1.0).

OpenSSH теперь по умолчанию игнорирует DSA-шные ключи, а он у меня почему-то был именно такой. Так что придётся сгенерировать новый, и непонятно – то ли генерить эллиптический в надежде на новые системы более-менее везде, то ли ограничиться длинным RSA.
beldmit: (Программизм)
Я тут сегодня наконец задолбался сражаться с отсутствием per-window keyboard layout из коробки в Gnome в jessie, и разобрался, как это делают. Прорываясь через тонны советов, работавших 3, 5, 7 и более лет назад.

Во-первых, как когда-то подсказал [livejournal.com profile] besm6, поставил kbdd.
Во-вторых, прописал его в гномовскую автозагрузку, создав файл ~/.config/autostart/kbdd.desktop следующего содержания:

[Desktop Entry]
Type=Application
Exec=/usr/bin/kbdd
Hidden=false
X-GNOME-Autostart-enabled=true
Name[ru_RU]=kbdd
Name=kbdd
Comment[ru_RU]=
Comment=

Прикапываю для себя, потому что потом хрен вспомню. ssh-add я таким макаром уже добавлял, кажется.
beldmit: (Программизм)
В рамках подарка ставил на ноутбук Acer acpire E15 Debian. Выбрал gdm в качестве Display manager, поставил, включил — Gnome не стартует. xinit запускается, так что дело не в X-ах. В логах ругань типа

llvm error: cannot select: intrinsic %llvm.x86.sse41.pblendvb debian.

В гугле информация, что эта ошибка в Debian должна быть исправлена.

В таком виде я вчера процесс прервал, а сегодня посмотрел, что ругается gnome-session. Снёс, заменил на mate-session-manager. Вместо gdm3 поставил kdm (возможно, это было избыточно). Заработало. Возможно, чище было бы переставить с нуля, выбрав MATE в качестве терминала изначально. Но учитывая, что адресат собирается программировать на python (точнее, его осваивать), думаю, пока хватит. Вид минималистический, браузер запускается, офис запускается, vim есть.
beldmit: (Манул)
Попробовал сегодня поработать с презентацией, сделанной в PowerPoint, из LibreOffice. Презентация примитивная, показывается на ура. А вот редактура выдала столько артефактов, что ждёт меня сегодня покупка честного виндового офиса и повторение процесса заново.

Можно, конечно, попробовать поставить версию 4.4 или даже 5, но не думаю, что это что-то изменит.
Я правильно понимаю, что репозитория под debian кроме родной нет?

Profile

beldmit: (Default)
Dmitry Belyavskiy

August 2025

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 11th, 2025 10:58 pm
Powered by Dreamwidth Studios