Архив рубрики: Полезности

Автозапуск tmux и автоподключение к нему

Сделал себе автоподключение к сессии tmux (или автозапуск tmux-сервера с новой сессией, если её ещё нет) при заходе в локальную консоль или при подключении по ssh к удалённым машинам (пользоваться бесплатным шеллом bshellz стало удобней).

# Autostart tmux on login
 __autostart_tmux() {
     # $( type -p ) - built-in in sh or bash only?
     #TMUX_BIN="$( whereis tmux | cut -d " " -f 2 )"
     # which versions different output format
     TMUX_BIN="$( which tmux 2> /dev/null )"
     if [ -z "${TMUX_BIN}" ]; then
         echo "Tmux not found"
         return 0
     fi

     TMUX_AS_SESS_NAME="$(echo "${USER}" | cut -c '1-3')"
     # return empty line if specified session exist or return 1
     TMUX_AS_SESS_RUN="$( tmux has-session -t "${TMUX_AS_SESS_NAME}" &> /dev/null || echo "$?" )"
     #TMUX_AS_DAEMON_MODE="$1" # $1 == "-d" or " "
     #TMUX_AS_EXIT="$2" # "return 0" or "exit 0"
    
     # do not attach automatically to tmux session if login on local XTerm
     if [ -z "${TMUX_AS_SESS_RUN}" ] && [ -z "${SSH_TTY}" ] && [ "${TERM}" = "xterm" ]; then
         echo "Tmux: running, not attached on local XTerm"
         return 0
     # do not run tmux automatically in another tmux (or screen)
     # in exists tmux session shell be started on non-login mode and .profile not used
     # (see set -g default-command "${SHELL}" in tmux.conf)
     elif [ -n "${TMUX}" ] || [ "${TERM}" = "screen" -o "${TERM}" = "screen-256color" ]; then
         echo 'Tmux: not be running in another terminal multiplexer "'${TERM}'"'
         return 0
     # attach to existed tmux session or create it and exit login-shell; or print error message
     else
         ((tmux has-session -t "${TMUX_AS_SESS_NAME}" && exec tmux attach-session -t "${TMUX_AS_SESS_NAME}") || (tmux new-session -d -s "${TMUX_AS_SESS_NAME}" && exec tmux attach-session -t "${TMUX_AS_SESS_NAME}")) && exit 0;
         echo "Tmux: autostart failed: $?"
     fi
 }
Читать далее Автозапуск tmux и автоподключение к нему

VCSH — спасение настроек в $HOME

Как ни странно, я только недавно познакомился с VCHS — надстройкой над Git, призванной облегчить резервирование конфигурационных файлов, расположенных в домашней директории (Version control system for $HOME — один из вариантов расшифровки аббревиатуры). Очень жаль, что этого не произошло раньше, и бэкап конфигов делался нерегулярно, кое-как, с изобретением различных костылей. Но, всё это в прошлом! Итак, что же представляет собой VCSH и как ей пользоваться?
Читать далее VCSH — спасение настроек в $HOME

Цифровое телевещание IPTV

www.oc.ru
IPTV — цифровое телевидение, использующее интернет-протокол (IP). Услуга IPTV входит в сервисный пакет провайдера, то есть той организации, которая оснащала ваше жилье подключением к сети Интернет или ставила широкополосной ADSL — модем. Как предоставляется такая услуга и при каких условиях можно узнать на официальном сайте провайдера – здесь же скачать и плей — лист (список каналов) IPTV. Иногда провайдеры дают зашифрованный цифровой поток за дополнительную плату. В этих условиях требуется специальная телеприставка — плей-лист не поможет.

Как смотреть IPTV

  • Использовать телевизор SMART (со встроенным доступом к интернету) — некий симбиоз компьютера и TV. Поэтому, если вы хотите поменять старый телевизор и уже имеете дома качественный интернет — поинтересуйтесь моделями, которые имеют Ethernet или порты Wi — Fi и «дружат» с IPTV. Специалисты говорят — лучше подойдут определенные модели корейских брендов, в которых «прошит» специальный IP- проигрыватель. Останется только скачать плей — лист вашего поставщика интернета — и смотреть.
  • В роли сервера применить свой компьютер. Это можно сделать, установив на него программу, которая будет транслировать цифровой поток в формате, «понятном» для телевизора (DLNA). Компьютер работает как «переводчик» для телевизора. Недостатки этого способа: во время просмотра телепередач компьютер должен работать.
  • DLNA–сервер установить непосредственно на роутер. Для этого понадобится перепрошить роутер — сделать его «переводчиком» сигнала IPTV для телевизора. И тогда компьютер уже включать не надо.
  • Использовать IPTV на компьютере или соединить его видеокабелем с телевизором. Способ самый простой и наименее затратный — подойдет для любителей минимализма, которым не важен 40 — дюймовый экран. Скачайте плей-лист — и смотрите себе телепрограммы на здоровье. Платить будете только за интернет, без дополнительных затрат на оборудование.

Бесплатный Linux-shell с Tmux на борту

Возникла у меня как-то нужда в получении linux-shell на стороннем сервере с постоянным доступом в сеть (тот же парсер ТИЦ запустить например). При этом шелл должен был удовлетворять двум условиям: быть бесплатным и иметь возможность оставить запущенное приложение работать «в фоне», без поддержания постоянного соединения удаленной машиной. Помимо этого, хотелось несколько большего, чем возможность использовать простые dtach или nohup, а значит — нужно наличие на удаленной машине терминального мультиплексора (Screen или Tmux). Мой выбор пал на bshellz, удовлетворяющий всем условиям, включая наличие Tmux. Вот что они предлагают после прохождения бесплатной регистрации:

— Возможность разместить свой сайт на домене http://имя_пользователя.bshellz.net
— 50 Мб дискового пространства
— Электронный адрес вида: имя_пользователя@bshellz.net
— Возможность использовать одну базу MySQL, наличие phpmyadmin: https://services.bshellz.net/phpmyadmin/

Читать далее Бесплатный Linux-shell с Tmux на борту

Парсинг Яндекс ТИЦ на примере списка пользователей ЛиРу

В заметке рассмотрено использование многопоточного парсера Яндекс ТИЦ на примере обработки списка пользователей ЛиРу (Liveinternet). Для запуска понадобятся: bash (под Windows можно использовать cygwin), perl, wget и, для большего удобства представления результатов, — sort. Все эти утилиты присутствуют практически в любой *nix-ОС или могут быть установлены в cygwin.

Читать далее Парсинг Яндекс ТИЦ на примере списка пользователей ЛиРу

Обзор Archos 101 G9 — мой выбор недорогого функционального планшета

Обзор планшета Archos 101 G9После пары месяцев раздумий, чтения обзоров и сравнения характеристик, я наконец сумел остановиться на конкретной модели планшета, которая полностью подходила бы под мои требования. Планшетом этим стал «француз» китайской сборки под названием Archos 101 G9 Tablet 8Gb — достаточно бюджетный (по сравнению с iPad по крайней мере); оснащён всем, что нужно для комфортной работы; дополнительные свистелки подключаются через обычный USB — не нужно платить тонны денег за «оригинальные разъемы».

Требования к планшету были следующие:

  • Цена до 10 тыс. рублей, чтобы было не жалко таскать с собой в поездки и вообще не жалко покупать;
  • Емкостной экран размером не меньше 10 дюймов — посмотреть кино, интернет, при необходимости — набрать текст;
  • Достаточная продолжительность работы — 7 часов просмотра видео хватает как раз на пару фильмов, читать можно вообще целый день;
  • Не слишком слабое железо — чтобы не наблюдалось тормозов в видео и при чтении PDF и DjVu;
  • Поддержка последних версий Android, присутствие Google Play (Market);
  • Наличие Wi-Fi не обсуждается, сейчас это по-моему есть везде. GPS и выход mini-HDMI — в виде бонуса; поддержка microSD тоже по-моему есть во всех современных устройствах (кроме некоторых, «особенных»);
  • Наличие USB-хоста для подключения флешки или GPRS-модема — очень удобно; откидная ножка на корпусе — отличная идея, не нужны чехлы и подставки при чтении.

Всем этим условиям Archos 101 G9 удовлетворял, был благополучно приобретён, пробыл в эксплуатации пару месяцев, пережил две большие поездки, благополучно падал и впихивался в туго набитый рюкзак — в общем, он заслужил небольшой обзор, который и представлен ниже.

Читать далее Обзор Archos 101 G9 — мой выбор недорогого функционального планшета

Автонумерация строк таблицы в LibreOffice Writer

Недавно ломал голову над проблемой автоматической нумерации строк в таблице LibreOffice Writer. Просто «растянуть» диапазон, как в электронной таблице Calc (по Calc, кстати, есть несколько интересных трюков, включая автонумерацию) или Excell — там невозможно (по крайней мере в версии LibreOffice 3.4.5, которой я пользовался). Зато в ячейки таблиц можно вставлять формулы — именно с их помощью в итоге и получилось сделать автоматическую нумерацию строк.

Для начала нужно вручную задать номер первой строки, с которой будет начинаться нумерация (в примере он задан в ячейке A1), а затем вставить в ячейку на следующей строке формулу с номером ячейки в предыдущей строке, увеличенным на единицу (или другой шаг, если нумерация нужна не по порядку). Для вставки формулы в пустую ячейку надо ввести знак «равно» — появится строка для ввода формул. Формула для нумерации строк по порядку может выглядеть так: =<A1>+1.

Читать далее Автонумерация строк таблицы в LibreOffice Writer

Низкоуровневое форматирование flash/SD/microSD под Linux

Несколько раз приходилось форматировать флешки (к которым относятся и различные SD и microSD карточки), а поскольку происходит это довольно редко — вынужден был лезть в гугл. Конспективная памятка по форматированию флешек под Linux:

Проверить подключение flash

fdisk -l
Выведет список подключенных дисков и их разделов. Обычно флешка — /dev/sdb, но нужно обязательно проверить, так ли это!

Проверить, примонтирована ли флешка

df -h
Если флешка примонтирована — покажет это и точку монтирования. Перед форматированием — отмонтировать: umount /dev/sdb.

Проверить защиту от записи и геометрию

При желании — можно проверить защиту от записи и геометрию (защита от записи в линуксе не важна):
hdparm /dev/sdb

Если нужно низкоуровневое форматирование — забить нулями

dd if=/dev/zero of=/dev/sdb
В выводе покажет объем флешки (должен соответствовать заявленному), скорость и время записи. Также покажет, сколько было записано байт на флешку, что полезно при проверке флешки на физические ошибки (см. ниже).

Проверить на физические ошибки

head -c N /dev/sdb | md5sum
head -c N /dev/zero | md5sum
где N равно числу байт, записанных на флешку при помощи dd. Если контрольные суммы не совпадают — флешка «битая» или были ошибки записи (в реальности сталкивался с форматированием microSD через плохой кард-ридер — даже когда не выскакивали ошибки ввода-вывода при операциях — контрольные суммы не совпадали, с заменой кард-ридера проблема ушла).
Пример:

dimio@ibm $ dd if=/dev/zero of=/dev/sdb
dd: запись в «/dev/sdb»: На устройстве кончилось место
3932161+0 записей считано
3932160+0 записей написано
скопировано 2013265920 байт (2,0 GB), 1010,99 c, 2,0 MB/c

dimio@ibm $ head -c 2013265920 /dev/zero | md5sum
5d0fd6273bed1c500c6fc22d86a59630  -

dimio@ibm $ head -c 2013265920 /dev/sdb | md5sum
5d0fd6273bed1c500c6fc22d86a59630  -

Ну и для полного счастья при желании:

dimio@ibm $ perl -we '
> print "OK" if q{5d0fd6273bed1c500c6fc22d86a59630}
> eq q{5d0fd6273bed1c500c6fc22d86a59630};'

OK

Разбиваем на разделы при помощи fdisk

fdisk /dev/sdb
Опции: m — справка, d — удалить раздел, p — просмотреть список разделов, n — создать раздел, t — поменять тип раздела, w — сохранить изменения.

Последний шаг — создать файловые системы на разделах флешки

mkfs.ext{2,3,4} /dev/sdbX
где X — порядковый номер раздела, на котором нужно создать файловую систему.

Также полезны

mkfs.msdos, mkfs.vfat (создаёт «стандартную» файловую систему флешек — vfat).

mkfs.ntfs — тут понятно, создаёт NTFS, не на всяком Андроид-устройстве может читаться потом.

mkfs.exfat — «расширенная fat», на старых устройствах не прочитается, зато файлы большого размера поддерживает, например (как и NTFS). В Убунте надо пакет exfatprogs поставить, чтобы создавать эту ФС.

Форматирование успешно окончено!

Если что-то осталось непонятным или есть дополнения и замечания — добро пожаловать в комментарии! 🙂

каталог интернет магазинов Москвы

Дистанционное управление для автомобильного компрессора Беркут

общий вид компрессора до модернизации
Решил в рамках подготовки к сезону поменять автокомпрессор на более мощный (с Беркут R15 на Беркут R17), чтобы не испытывать проблем с подкачкой колес после травления. Однако не обратил внимания в магазине на тот факт, что производитель не предусмотрел возможности включать компрессор дистанционно, не смотря на то, что он укомплектован шлангом длиной 7,5 м. Шланг в данном случае получается бесполезным — всё равно нужно компрессор таскать с собой (не выключив его невозможно точно померить давление в колесе). Также не особо удобным оказалась конструкция наконечника шланга — его нужно наворачивать на ниппель, хотя R15 был оборудован быстросъемным наконечником. Соответственно перечисленные минусы нужно было устранять. С наконечником всё понятно — его можно только заменить на более удобный (я использовал пневмопистолет с манометром), а вот для использования потенциала длинного шланга есть несколько путей:

  • Установить ресивер (аккумулятор давления) с реле давления, компрессор будет по необходимости давление нагнетать. Плюсы установки ресивера — можно подключать пневмноинструмент, легко забортировать колесо, есть возможность смонтировать пневматический ревун, пневмоблокировки, при большом объеме ресивера — быстро накачивать объемных потребителей типа надувной лодки. Минусы — необходимость тянуть пневмосистему, ресивер объемом менее 10 л полезен только для пневмоблокировок, а под большой объем ресивера нужно место, которого у меня не так много.
  • Врезать в шланг возле манометра трехходовй кран, который после переключения будет выпускать воздух в окружающую среду. Плюсы — дёшево и сердито. Минусы — компрессор работает вхолостую, расходует ток, греется и изнашивается.
  • Смонтировать на компрессор дистанционное управление, чтобы не бегать к нему каждый раз, как будет нужно его включить или выключить. Плюсы — простота исполнения, минимум материальных затрат, не нужно искать дополнительное место, поставленные задачи решаются в полном объеме. Минусы — для решения возможных доп. задач (ревун, инструмент, блокировки) компрессор (мой Беркут R17) без ресивера в силу малой мощности не подойдет.

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

Читать далее Дистанционное управление для автомобильного компрессора Беркут

Автоматическая проверка готовности загранпаспорта

Гос. органы идут в массы, постоянно вводят новые, удобные для граждан (по крайней мере на первый взгляд), формы взаимодействия.
К такому нововведению можно отнести и сервис проверки готовности загран. паспорта на сайте УФМС, расположенный по адресу http://www.ufms.spb.ru/checkzp.php. С помощью сервиса можно быстро узнать, готов ли загран. паспорт или еще находится в процессе оформления, введя в поля формы данные своего гражданского паспорта (также доступна проверка по данным из свидетельства о рождении).

Всё в принципе хорошо и удобно кроме одной мелочи — чтобы воспользоваться проверкой готовности — нужно периодически вспоминать о ней и заходить на сайт. По-моему, приделай УФМС автоматическое оповещение о готовности паспорта по электронной почте — сервис выглядел бы законченным и действительно удобным в использовании.

Но раз УФМС не идет на встречу гражданину, значит гражданин должен сам облегчить себе жизнь. Я решил сделать это используя три простых и доступных инструмента: консольный браузер lynx (для отправки данных формы POST-запросом), планировщик заданий cron (для периодической проверки готовности загран. паспорта) и утилиту поиска по тексту grep (для поиска нужной строки в дампе страницы), для чего написал простенький скрипт, который закинул в cron. Скрипт с указанным в кроне периодом проверяет готовность моего паспорта и присылает мне отчет на электронную почту (которая указана в настройках крона).


#!/bin/sh
echo "checkser=p&seriap=XXXX&numberp=YYYYYY&submit=%CF%F0%EE%E2%E5%F0%E8%F2%FC" | lynx -post_data -dump http://www.ufms.spb.ru:80/checkzp.php | grep 'Ваш заграничный'

Вместо ХХХХ нужно подставить серию своего гражданского паспорта (макс. 7 символов, что, как я понимаю, позволяет использовать серии старых паспортов, с римскими цифрами), а YYYYYY заменить соотв. на его номер (макс. 6 символов). Если запускать скрипт из-под английской локали, то шаблон для grep надо изменить с ‘Ваш заграничный’ на ‘Vash zagranichnyj’, поскольку скрипт отдаст страницу в латинице.

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

Дополнение:
Если сайт проверки готовности загранника постоянно «радует» сообщением о превышении числа запросов, можно пропустить их через tor. В этом случае удобно будет воспользоваться другим способом отправки форм POST-методом из lynx — записать автоматический скрипт, который и будет осуществлять проверку.

Посутпаем следующим образом:

  1. вызываем lynx с ключем cmd_log=имя_файла_куда_сохранить_скрипт:
    lynx -cmd_log=script_name http://www.ufms.spb.ru:80/checkzp.php,
    вводим серию и номер паспорта, отправляем запрос, дожидаемся загрузки страницы с ответом и закрываем браузер.
  2. в дополнение к tor устанавливаем torsocks — утилита несколько сырая, но дело своё делает исправно, перенаправляя траффик на tor (можно естественно использовать любой понравившийся прокси, указав его в качестве умолчального export http_proxy="address:port").
  3. вызываем lynx через torsocks или выбранный прокси с указанием использовать для автоматизации отправки данных формы записанный ранее файл скрипта с передачей результатов работы на разбор в grip:
    torsocks lynx -cmd_script=script_name http://www.ufms.spb.ru:80/checkzp.php | grep «Ваш заграничный»

Всё, автоматизация проверки готовности заграничного паспорта успешно проведена! Пока скрипт работает за человека, человек может расположиться у телевизора и спокойно отдохнуть :)