LINUX.ORG.RU

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

Детский вопрос про DNS (systemd-resolve)

 , ,

Настраиваю подключение для eth0

auto lo
iface lo inet loopback

        iface eth0 inet static
                address 192.168.1.201
                netmask 255.255.255.0
                gateway 192.168.1.1
                dns-nameservers 192.168.1.1 8.8.8.8
        auto eth0

пробую ping 8.8.8.8 работает, а ping www.ya.ru - нет. понятно, что проблема в dns, но я ведь в настройе указал dns-nameservers.

Установлен systemd-resolve, если в настройке /etc/systemd/resolved.conf указать DNS=192.168.1.1 8.8.8.8, то все пингуется и по имени.

вопрос, почему dns, которые указаны в настройке сетевой карты игнорируются?

krendelw
()

Подскажите нормальную БД для которой существует неблокирующий сишный API

 , ,

Суть — доступ к базе в event-loop при большом количестве входящих http соединений — over 30k.

event-loop подразумевается на базе libuv.

cvv
()

Рабочий стол юриста

 , ,

Юристы, как водится, почти всегда сидят на оффтопике. Я не исключение, потому как очень многие вещи там делаются привычнее и быстрее, плюс ряд задач решается сильно быстрее (электронная подпись в их числе). А время - деньги. Однако я делаю шаги (аж с 2006 года) в сторону организации своего рабочего места полностью на Linux, потому как оффтопик последнее время меня не радует ни новостями, ни функционалом, ни багами. Если менять привычки, то не все ли равно - на новый оффтопик или на Linux?

В данный момент у меня установлена Xubuntu 18.04.3, тема Sierra-compact-light-solid-alt, значки McMojave-circle и plank в качестве дока. Шрифты везде Noto Sans Display.

Я сторонник здорового минимализма, хотя и люблю всякие спецэффекты. Xfce в этом плане меня покорил - есть все, что нужно, работает быстро, смотрится красиво. И да, это закос под Mac. Просто мне нравится и все тут.

Для работы я в основном использую либо LibreOffice, либо SoftMaker Office, в зависимости от того, как сложен документ или таблица. Совместимость с заказчиками меня мало волнует, т.к. итоговый документ как правило они открывают на Mac, а там оно почему-то даже в родном MS Office иногда едет по форматированию. Кроме того, ряд заказчиков использует Google Docs, в котором, на мой взгляд, управление форматированием сделано хуже некуда. Ну и на крайний случай всегда есть PDF, в котором ничего нигде не поедет и есть удобная функция комментирования, которая дает моим заказчикам ставить замечания тем или иным пунктам в документах.

Для работы с цифровой подписью у меня стоит КриптоАРМ ГОСТ, который вы можете увидеть в трее. Где-то в фоне крутится КриптоПро, который удачно подхватил мой Рутокен Лайт. Все это добро удалось настроить вместе с Chromium так, что я могу подписывать документы и на сайте арбитражных судов, судов общей юрисдикции, авторизовываться на госуслугах и подписывать файлы локально отсоединенной подписью. Единственное, что не работает - авторизация в личном кабинете ЮЛ на сайте ФНС. Тупо потому, что там при проверке выясняется, что у меня не Windows. А так бы и это работало. Что точно не работало бы - сайты ЭТП, где идет ориентация на подписание через ActiveX. Но я не занимаюсь торгами и слышал, что таких ЭТП становится все меньше.

Вопрос с кроссплатформенностью Консультанта Плюс я решил радикально - купив веб-версию. Она хоть и сильно урезана, даже в максимальной версии, но мне хватает.

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

mshewzov
()

Запускалка BMPN для скриптовой автоматизации?

 , , ,

В чём загвоздка: есть груда скриптов, связанных друг с другом событиями. Некоторые скрипты вызывают другие просто так, некоторые ждут, пока что-нибудь не появится (почтовое сообщение, например), некоторые запускаются через интервал времени X после завершения предыдущего. Есть логические ветвления, всё как в обычной BPMN-диаграмме.

Сейчас всё сделано на «кроне», т.е. выполняется по каким-то не всегда понятным законам по расписанию периодически. Как это всё взаимосвязано, какими событиями, какие могут быть ветвления - понятно только из текста скриптов после очень долгого разбора полётов с чтением текста и общением с разработчиками.

Хотелось бы всё это задвинуть на BMPN executor, разбив весь процесс на связанные событиями куски. Например, скрипт шлёт почту удалённой системе - следующий шаг будет сделан только тогда, когда удалённая система ответит почтовым сообщением (вот как-то так оно всё сделано, к сожалению). В этом случае можно и замониторить через REST API, на каком этапе процесс находится, можно легко настроить процесс, а главное - это самодокументированная вещь, поскольку документацию никто писать не любит.

Посмотрел Camunda, у него тотальная привязка скриптов к Groovy/Java, что мне не очень нравится. Посмотрел Bonita - там можно /bin/sh запускать, вроде подходит. Сервер BPM Executor’а должен быть там же, где всё это запускаемое по крону хозяйство.

Ну мало ли вдруг кто уже сталкивался с подобным… Печально конечно, что все BPM-системы написаны на Java - а значит, живут в своём собственном мире и не знают ни про какие STDIN, STDOUT, параметры командной строки и всё прочее. Между тем, нужен в идеале инструмент «поближе к системе», менее абстрактный что ли.

Заранее Гигантское СПАСИБО!

DRVTiny
()

Как можно пропатчить исходники ядра?

 ,

Здравия! Есть на арм исходники ядра от sunxi, но в них в драйверах ввода-вывода проблема-если пишет на диск например видео с камер или с нета загрузка идёт, то система виснет, да так, что логгировать нереально, два года я с этой проблемой мучаюсь, но вот попробовал гентушные сорцы-там этого нет, не виснет. Но из гентушных сорцов собирается без рабочего eth0, потому подумал я, а можно пропатчить драйвер? По идее исходники же текстовые файлы? Только не знаю я, как это сделать, надеюсь подскажут здесь.

burato
()

Кросс компиляция qt

 , ,

Пытаюсь собрать qtbase-5.7.1 на debian 10 (amd64) для win32, при выполнении ./configure получаю ошибку:

./configure \
	-v \
	-xplatform win32-g++ \
	-device-option CROSS_COMPILE=i686-w64-mingw32- \
	-prefix ../qtbase-everywhere-win32_5.7.1/ \
	-opensource \
	-confirm-license \
	-release \
	-strip \
	-shared \
	-gui \
	-widgets \
	-no-opengl \
	-nomake tests \
	-nomake examples \
	-qt-sql-mysql \
	-qt-sql-odbc \
	-qt-sql-sqlite \
	-qt-sql-sqlite2
...
i686-w64-mingw32-g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o mysql.exe mysql.o  -L/usr/lib/i386-linux-gnu -lmariadb -lmysqlclient 
/usr/bin/i686-w64-mingw32-ld: cannot find -lmariadb
collect2: error: ld returned 1 exit status
make: *** [Makefile:62: mysql.exe] Ошибка 1

libmariadb-dev:i386 и libmariadb-dev-compat:i386 установлены, libmariadb.so лежит на месте:

ls /usr/lib/i386-linux-gnu/*mariadb*
364K -rw-r--r-- 1 root root 361K фев  2 19:33 /usr/lib/i386-linux-gnu/libmariadbclient.a
   0 lrwxrwxrwx 1 root root   15 фев  2 19:33 /usr/lib/i386-linux-gnu/libmariadbclient.so -> libmariadb.so.3
   0 lrwxrwxrwx 1 root root   15 фев  2 19:33 /usr/lib/i386-linux-gnu/libmariadb.so -> libmariadb.so.3
272K -rw-r--r-- 1 root root 269K фев  2 19:33 /usr/lib/i386-linux-gnu/libmariadb.so.3

Как побороть данную проблему?

MIV
()

Scrot. Скопировать ссылку на созданный файл в буфер обмена

 , ,

Как скопировать ссылку на файл в буфер обмена после снятия скриншота.
Вроде очевидная вещь, но у меня не работает. Что я делаю не так?

scrot -e 'mv $f ~/scrns/ | xsel -ib'

где:
scrot — сделать скриншот
-e ’mv $f ~/scrns/ — скопировать в каталог
xsel -ib’ — скопировать в буфер обмена

Скриншот делает, в каталог перемещает, но ссылки в буфере обмена на файл нет. Ошибок не выдаёт.

К слову, попробовал использовать xclip, но он тоже не дал результата.

Dreamdrawer
()

Кросс-платформенный разбор аргументов командной строки

 ,

Понадобилось разбирать аргументы командной строки на С++. Самое главное требование: чтобы можно было с минимумом усилий и зависимостей собирать на Linux, Windows и MacOS. Погуглил и понял, что в случае с С++ не все так просто, как в более современных ЯП, а именно есть такие варианты:

  1. Стародедовский копролит из POSIX, т.е. getopt. Минус: в стандартной поставке MS VC++ его, как я понял, нет, ибо unistd.h. Кто-то предлагает специально для оффтопика передирать часть unistd.h и соотв. функционала, но это звучит как исключительно красноглазый пердолинг;

  2. boost.program_options Минус: только ради этого добавлять зависимость от части boost…

  3. QCommandLineParser Минус: см. п.2), только в этом случае надо тащить часть Qt, что кажется еще большим оверкиллом;

  4. Какие-то костыли из рецептов «одной бабки» с SO. Минус: нет желания лепить самодельный велосипед на ровном месте, и еще надо понять, что код вообще рабочий, а не только лайкнут автором вопроса, который этот код запустил один раз и выбросил;

  5. Какие-то васянские библиотеки. Минус: см. п.4). Хоть качество (может быть) и выше, чем портянки с SO, все равно надо тянуть доп. зависимость, и тогда уж лучше взять boost как более качественную библиотеку.

Ничего не забыл? На сколько я понял, в С++20 этого тоже нет. Как-то грустно в 21-м веке, когда уже вот-вот скоро выйдет 6й по счету стандарт языка, не иметь такой фичи в стандартной библиотеке.

seiken
()

Потестируйте чатик на Кутях

 

Приветствую всех обитателей ЛОРа. Пришел к вам с просьбой протестировать самописный чат на C++ с использованием Qt. Это мой первый проект вообще и делается исключительно для того, чтобы набраться опыта. Все полный опенсорс,

Сервер: https://github.com/gadoofou87/neutron
Клиент: https://github.com/gadoofou87/neutron-qt

доступно для собственной сборки, но для онтопика приготовил AppImage (доступен тут - https://github.com/gadoofou87/neutron-qt/releases).

Больше всего хотелось бы услышать комментарии безопасников, потому что реализован собственный криптопротокол (статические ключи на ECDH, эфемерные на SIDH, ID сервера - хэш от публичного ключа, который проверяется при каждом рукопожатии с сервером, чтобы блокировать MITM). Из остального, сервер умеет параллелить клиентов по всем потокам, реализованы комнаты (в том числе запароленные), отправка сообщений, файлов (+ предпросмотр картинок), получение непрочитанных сообщений.

ID: FDF882BA452BAF7C1FCF348633F6003086029A09B4BC764B175ED1914A44F34E
Хост: ec2-18-222-196-33.us-east-2.compute.amazonaws.com
Порт: 10500

Специально для тестов поднял бесплатный сервер на Амазоне, из доступного места там всего 4 гига, потому прошу не заливать большие файлы. Буду рад любой критике

hommoul68
()

Изолированное пространство для команд в bash

 , ,

Обычно я пользуюсь примерно десятком команд в баше, одними и теми же, часто стрелками перемещаюсь по истории и вызываю особо длинные. Но иногда экспериментирую, в результате чего в истории баша сильно нагажено, приходится открывать файл bash_history и чистить вручную каждый раз. Есть ли какой-то способ временно запрещать сохранение команд в баше? А лучше открывать отдельный баш-инстанс, и чтобы за его пределы экспериментальные команды не выходили, не засоряли основной файл bash_history? Вариант вообще отключить bash_history не предлагать.

shkolnik_2019
()

Конфигурация dnscrypt-proxy в debian 10

 ,

Всех с наступившим и наступающими. Сервер на debian 10 с минимальной конфигурацией. Никаких средств работы с dns кроме dnscrypt-proxy не установлено. При настройке ориентировался на archwiki и wiki dnscrypt-proxy.

Порядок действий

apt install dnscrypt-proxy
systemctl stop dnscrypt-proxy.socket
mv /etc/resolv.conf{,-default}
echo 'nameserver 127.0.0.1' | tee /etc/resolv.conf
chattr +i /etc/resolv.conf
systemctl start dnscrypt-proxy.socket

ДКП успешно стартует

Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] dnscrypt-proxy 2.0.19
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] Wiring systemd TCP socket #0, dnscrypt-proxy.socket, 127.0.2.1:53
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] Wiring systemd UDP socket #1, dnscrypt-proxy.socket, 127.0.2.1:53
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] [cloudflare] OK (DoH) - rtt: 4ms
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] Server with the lowest initial latency: cloudflare (rtt: 4ms)
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] dnscrypt-proxy is ready - live servers: 1

Как видно из журнала ДКП почему-то работает с 127.0.2.1:53. В toml файле конфигурация дефолтная

listen_addresses = []
server_names = ['cloudflare']

[query_log]
  file = '/var/log/dnscrypt-proxy/query.log'

[nx_log]
  file = '/var/log/dnscrypt-proxy/nx.log'

[sources]
  [sources.'public-resolvers']
  url = 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md'
  cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md'
  minisign_key = 'ключ'
  refresh_delay = 72
  prefix = ''

По информации о настройке из вики ДКП в дебиане нужно работать именно с сокетом, а не сервисом, и не указывать какие-либо адреса в listen_addresses, потому что systemd сам разрулит все.

Если в resolv.conf задать адрес, с которым работает ДКП - 127.0.2.1, то ДКП сразу начинает ругатся на отсутствие привилегий для работы, хотя запущен он от рута.

Почему же ДКП работает с неправильным адресом?

exfx
()

Settis нездорового человека

 , ,

После неудачного стечения обстоятельств — заметно упавшего как раз к новогодним праздникам здоровья — было принято решение поувеличивать шрифты и сбавить контрастность всего, что попадётся под руку. Как нельзя кстати тут пришлась Dracula. Насыщенность цветов на моём ноутбуке низкая; Подозреваю, у многих это будет смотреться гораздо цветастее.

  • Ubuntu 18.04
  • dwm, потому что почему что-либо другое, если он просто работает
  • Файловый менеджер, как правило, не используется, но когда хочется полистать фоточки, открываю pcmanfm
  • Терминал — st (imgur.com), все равно используется почти всегда в связке с tmux, в установке чего-то другого смысл не видится
  • По работе использую Visual Studio Code, потому что искаропки всё есть, но я вам его не покажу (впрочем, там и так Dracula); для нерабочих моментов есть Emacs, но каких именно, я вам тоже не покажу, вот для примера шаблон для ТЗ в org-mode
  • Музыкальный плеер (виден на скриншоте, используется примерно никогда в связи с наличием плеера) — cmus
  • ШГ — Fira Mono, Fira Sans, в Telegram так и не понял, как менять шрифты, вообще крайне сложно там что-либо настроить
  • Видео играется исключительно на телевизоре через Chromecast, но вообще есть VLC, если лень тянуться за телефоном — он спокойно подхватывает этот гуглодевайс и стримит на него
  • шелл — zsh

На скриншоте DuckDuckGo показан для демонстрации темы; Да, у меня действительно диарея; Нет, я просто решил посмотреть, что порекомендуют в качестве народных средств от диареи;

Princesska
()

Красивые способы корректного сравнения знаковых и беззнаковых целых

 , ,

Стандарты языка С предписывают компиляторам пользовать «быстрое» сравнение, вместо корректного.

То есть в следующем коде согласно всех стандартов языка С переменная res должна получить значение 0 а не 1, что крайне непрактично.

unsigned int a = 1;
int b = -1;
int res = (b < a);

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

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

Мой основной способ решения этой проблемы через расширение разрядности, так как я в первую очередь имею дело с unsigned char, но смесь size_t c ssize_t или что-то подобное также нередко доставляет неудобства.

Опишите кто и как выкручивается в сложившейся ситуации.

[UPDATE] ассемблерные листинги к классическим алгоритмам сравнения

For example x86 gcc 7.1 will for C++ source:

bool compare(int x, unsigned int y) {
    return (x < y); // "wrong" (will emit warning)
}

bool compare2(int x, unsigned int y) {
    return (x < 0 || static_cast<unsigned int>(x) < y);
}

bool compare3(int x, unsigned int y) {
    return static_cast<long long>(x) < static_cast<long long>(y);
}

Produce this assembly (godbolt live demo):

compare(int, unsigned int):
        cmp     edi, esi
        setb    al
        ret

compare2(int, unsigned int):
        mov     edx, edi
        shr     edx, 31
        cmp     edi, esi
        setb    al
        or      eax, edx
        ret

compare3(int, unsigned int):
        movsx   rdi, edi
        mov     esi, esi
        cmp     rdi, rsi
        setl    al
        ret

Взято вот здесь:

https://stackoverflow.com/a/44070807/73747

cvv
()

модульный роутер уже в продаже ....

 

Хотите собрать свой роутер ? https://www.turris.cz/en/mox/overview/

Jopich1
()

Консольная отладка кода с ассемблерными вставками

 , ,

Есть виртуальная машина QEMU AArch64 есть программа, которую можно компилировать с отладочными символами и без оптимизации. Как ее отлаживать?

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

Но можно ли повесить окошко со значением некоторых регистров, или заставить gdb выводить ряд некоторых регистров после исполнения каждого шага и последующей остановки?

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

Попытки повесить окошко с регистрами в текстовом интерфейсе cgdb не сработали, какой то глюк, видимо не поддерживается на aarch64.

Какие еще есть варианты? Нужен удобный обзор содержимого избранного набора регистров после каждого шага.

I-Love-Microsoft
()

Насколько bool thread-safe

 ,

class BlaBla
{
public:
    BlaBla() :
        mbValue(false)
    {}

    bool value() const {
        return mbValue;

    void compute(...) {
        mbValue = true / false;
    }

private:
    bool mbValue;
};

Опустим здесь подробности расчёта. Интересен только bool, насколько он thread-safe здесь?

UVV
()

В Qt избавляются от QTextCodec

 

https://bugreports.qt.io/browse/QTBUG-75665

https://bugreports.qt.io/browse/QTBUG-75991

https://lists.qt-project.org/pipermail/development/2019-October/037791.html

Коротко для Ъ:

Из QtCore в 6-й версии будет удалён QTextCodec и его поддержка во всех связанных классах. В одном из багрепортов предлагается перенести всё связанное с перекодировкой в отдельный модуль. Но есть опасения, что согласно политики партии, новый модуль будет исключительно под GPL/Commercial. Сие весьма усложнит разработку софта для работы с текстом, где постоянно приходится иметь дело с зоопарком кодировок.

truetester
()

Сделал пакет для смены обоины на случайную с wallhaven.cc

 , ,

Пакет добавил в aur:

$ yay -S random-wallpaper
$ sudo systemctl start random-wallpaper.timer && sudo systemctl enable random-wallpaper.timer

Исходный код тут (github.com).

И PKGBUILD:

# Maintainer: Sergey M <tz4678@gmail.com>
pkgname=random-wallpaper
pkgver=0.1.0
pkgrel=1
pkgdesc='Changes the desktop wallpaper to random from the site wallhaven.cc'
arch=('any')
url='https://github.com/tz4678/random-wallpaper'
license=('MIT')
depends=('jq')
source=('git+https://github.com/tz4678/random-wallpaper.git')
md5sums=('SKIP')

package() {
  cd "$srcdir/$pkgname"
  install -Dm755 $pkgname $pkgdir/usr/bin/$pkgname
  install -Dm644 $pkgname.service $pkgdir/usr/lib/systemd/system/$pkgname.service
  install -Dm644 $pkgname.timer $pkgdir/usr/lib/systemd/system/$pkgname.timer
  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
}

Как лучше всего сделать конфиги? Например, время обновления обоины 15 минут задается в /url/lib/systemd/system/random-wallpaper.timer, а я хочу в отдельном конфиге все задавать.

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

tz4678
()

Прокси, который...

 , , ,

Надоело на каждой домашней машине (тесть, жена, дети, у каждого своя машина/ось/учётка, зоопарк винд, линуксов и разных браузеров разных версий в них) проверять и настраивать вот эти все ublock, matrix и прочие. Чисто физически надоело.

Сюда, в нагрузочку, ещё можно добавить мобильные по wi-fi, в том числе и если это в гости зашел человек и ему дали доступ к сети.

Хочу поднять прокси, через который будут ходить все HTTP(S) запросы. И, чтобы прокся анализировала:

1) к каким хостам идут запросы.
2) куки
3) URL path
4) query params
5) POST data

и на основании полученных данных принимала решение:

а) дропнуть запрос
б) ответить 301/302/401/403/404
в) удалить/добавить/заменить куки
г) пропустить как есть

Да — я говорю о классическом MITM, но для собственного блага.

1) Я НЕ хочу чтобы меня трекали счётчики.
2) Я хочу для конкретных сайтов (догадайтесь каких) всегда быть анонимным с любого устройства в моей сети (а-ля приватный режим браузера).
3) Я хочу блокировать все запросы к рекламным сетям для всех машин.
4) Я хочу блокировать какие-то запросы, если они идут с конкретной машины.
5) Я хочу НЕ блокировать какие-то запросы, если они идут с другой конкретной машины.
6) Я хочу НЕ применять правила для какой-то машины или применять их выборочно.
7) Я НЕ хочу чтобы какие-то корподобрые браузеры и виджеты самостоятельно что-то куда-то засылали.
8) Я хочу иметь белые, серые и прочие списки хостов и/или возможность настраивать их по маске, например, регуляркой.
N...) Что ещё я забыл хотеть?
N...+1) Я хочу настраивать эти правила в одном месте.

Подскажите опенсорс+фри ПО максимально покрывающее мои хотелки. Или комплекс такого ПО, с помощью которого я смогу получить желаемое.

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

И вот ещё. Если с HTTP трафиком всё просто и понятно, то с HTTPS нужен же свой корневой серт. Этот серт надо добавить во все браузеры. Тогда, траф я смогу расшифровать на проксе и проанализировав всё что мне нужно, принять решение насчёт запроса, а во внешний мир отправлять (при необходимости модифицированый) запрос уже с правильными публичными сертами и на реальные хосты. Будет ли это работать?

sudo cast ValdikSS — кажется, ты сможешь пролить свет на многие мои вопросы.

deep-purple
()

recorder экрана и клавиатуры под линукс?

 , ,

в каком-то стриме по доте когда-то видел, как рекордер располагает все нажатия клавиатуры, в т.ч. сочетания клавиш, и показывает их в бегущем столбце с одного из краёв экрана.

есть ли что-нибудь такое под линукс?

задача: записывать видосы по использованию софта и кидать на видео-хостинг

luntik2012
()