Копирование текста из терминала без мыши
При работе в терминале, иногда бывает необходимо скопировать часть экрана без помощи мыши. Для решения этой задачи вам может пригодиться команда screen которая значительно расширяет возможности работы со стандартным терминалом.
Одной из полезных функций этой программы является так называемый copy-режим когда экран можно скролировать и выделять.
Чтобы скопировать часть экрана в терминале а потом вставить проделайте следующее:
- Запустите команду screen
- Для входа в copy-режим нажмите CTRL-A ESC
- Стрелками или клавишами hjkl перейдите в начала блока, который нужно выделить
- Нажмите ENTER для начала выделения
- Стрелками или клавишами hjkl перейдите в конец выделения, при этом выделенный фрагмент будет подсвечен
- Нажмите ENTER еще раз. Команда screen перейдет в нормальный режим.
- Для извлечения скопированного фрагмента из буфера наберите CTRL-A ]
Screen может пригодиться и для многих других вещей, например, для сохранения долгой терминальной сессии на сервере, когда нет возможности поддерживать соединение постоянно.
Вот здесь нашел хорошую шпаргалку на этот случай.
Распознавание голосовых заметок
Долгое время не давало покоя навязчивое желание реализовать автоматическое распознавание своих голосовых заметок.
На мобильнике у меня стоит диктофон, куда я время от времени наговариваю голосовые заметки. Заметки эти чаще всего так и остаются в виде файлов и остаются лежать мертвым грузом. Лишь изредка я их преобразую в текст и куда нибудь сохраняю. Как было бы здорово если бы распознавание заметок происходило автоматически без моего вмешательства!
Но ведь яж компьютерщик! Сегодня, наконец, удалось завершить начатое и автоматизировать процесс!
Записанные заметки я синхронизирую при помощи Syncthing на свой маленький домашний сервер. На сервере небольшой bash скрипт по crontab каждые десять минут проверяет не появился ли новый wav файл из диктофона и, если появился, скармливает его системе распознавания Kaldi. Полученный текстовый файл сохраняется на диске и пересылается на мою электронную почту.
Решение не требует никаких внешних API типа Google или Яндекса - все происходит в оффлайне. Правда, из-за этого, решение достаточно объемное - языковая модель весит около гигабайта и ещё примерно столько же - сама система распознавания. Работает, однако, решение достаточно надёжно. Пока поддерживается только русский язык, но вполне возможно научить распознавать и другие языки.
Кстати, русская языковая модель больше не доступна на сайте разработчика. У меня сохранился старый архив, если кому-нибудь будет нужна - дайте знать, - поделюсь.
Биткоин клиент на Raspberry Pi Zero W
Эксперимент по запуску Bitcoin Core на Raspberry Pi завершился неудачей. Несмотря на то, что клиент удалось скомпилировать из исходников, запустить и даже, путем копирования файлов с другой машины увидеть текущий баланс кошелька, по факту, быстродействия устройства не хватает даже для того чтобы поддерживать локальное состояние актуальным. Возможно, если перенести хранилище в оперативную память и подкрутить настройки, то получится его все-же использовать, но, оказалось, есть вариант проще.
Существует легковесный клиент Electrum! Сам клиент написан на Питоне и его инсталляция не представляет проблем.
У меня сработали следующие команды:
# install all needed packages:
sudo apt-get install python3-pyqt5 python3-setuptools python3-pip libsecp256k1-0 python3-cryptography
# download client
wget https://download.electrum.org/4.2.2/Electrum-4.2.2.tar.gz
# install client with pip
python3 -m pip install --user Electrum-4.2.2.tar.gz
# create startup link
sudo ln -s ~/.local/bin/electrum /usr/local/bin/electrum
# start the client
electrum
Если все прошло успешно программа попросит создать кошелек по умолчанию, создаст сид и попросит ввести пароль чтобы зашифровать кошелек.
Вот и все, можно пользоваться! Физически мы создали аппаратный биткойн кошелек, имеющий размер в половину визитной карточки, а если вытащить SD карту, которая, по факту и является аппаратным кошельком, то еще меньше!
Bitcoin Core для самых маленьких
Сегодня, наконец, получилось скомпилировать и запустить клиент Bitcoin Core на Raspberry PI Zero W.
Есть у меня идея сделать подобие аппаратного кошелька, который будет умещаться на SD карте и запускаться на устройстве ценой десять евро. Raspberry PI Zero W для этого подходит как нельзя лучше. Проблема только в том что самая дешевая малинка использует не очень ходовой процессор и скомпилированное приложение на него не поставишь, по крайней мере я такого не нашел. Не беда, можно скомпилировать самим из исходников.
У меня получились такие команды:
# install all needed packages:
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3
sudo apt-get install libevent-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev libboost-thread-dev
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
#install modules for gui compilation
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
sudo apt-get install libzmq3-dev
# download sources
wget https://bitcoin.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1.tar.gz
tar xvf bitcoin-0.20.1.tar.gz cd bitcoin-0.20.1
# compile Berkley DB
./contrib/install_db4.sh `pwd`
export BDB_PREFIX='/home/pi/bitcoin-0.20.1/db4'
./autogen.sh
./configure --prefix=/usr/local --enable-cxx CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768" ./configure --enable-cxx CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768" BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include" --with-boost-libdir=/usr/lib/arm-linux-gnueabihf
make
sudo make install
Сама компиляция заняла около суток. Я лишь время от времени подсоединялся к устройству и смотрел что там происходит. Процесс несклько раз прерывался из-за разных причин - то не хватало памяти, то необходимых библиотек. В конце концов удалось получить работоспособное приложение.
Осталось прокачать через устройство все транзакции - этот процесс и на нормальном компьютере занимает долгое время так, сколько это займет времени на этом миниатюром устройстве я боюсь себе даже представить...