Настройка Rxvt через Xdefaults

Настройки Rxvt черезе Xdefaults

С некоторых пор стал пользоваться эмулятором терминала urxvt (unicode-версия rxvt) вместо gnome-terminal. Причина простая — на старом ноуте разница в скорости заметна и эта разница — в пользу urxvt (особенно если запускать его при старте GUI в режиме демона).

В остальном отличий в общем-то нет, urxvt тоже поддерживает именованные вкладки (табы), обработку гиперссылок, копирование и вставку мышью. Кроме того, он имеет поиск по выводимым в терминал данным (по Alt+S — очень удобно) и поддерживает цветной вывод man-страниц. Также urxvt существует и для cygwin.

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

(далее…)

BASH [born again shell] — оболочка командной строки

Краткая история Bash

bash, bashrc, настройка bash linux

bash представляет собой модернизированную и усовершенствованную версию оболочки командной строки Bourne shell. В системах семейства *NIX bash на данный момент является одной из наиболее популярных и распространённых оболочек, на многих таких ОС (и например в эмуляторе unix-подобного окружения Cygwin) эта оболочка предустановлена.

Корнями bash уходит к оболочке sh за авторством Стивена Борна, разработанной им в 1978 г. и усовершенствованной в 1987 году Брайаном Фоксом. Дословно Bash можно расшифровать как Biurne-again-shell или «Ещё одна оболочка Борна». Также фамилия Борн созвучна со словом born (родившийся), что порождает альтернативное название: «вновь рождённая оболочка».

Порядок запуска Bash

При запуске bash во-первых считывает и исполняет команды из основного файла профиля /etc/profile (при условии существования такого файла). Затем происходит чтение файлов из домашней директории пользователя: $HOME/.bash_profile, $HOME/.bash_login, и $HOME/.profile и исполнение записанных в них команд. В момент завершения работы при выходе из оболочки вызываются команды из файла $HOME/.bash_logout.

Помимо перечисленных выше файлов, bash также распознаёт команды, описанные в так называемом дот-файле (или .rc-файле) $HOME/.bashrc (примеры — файлы .vimrc и .wgetrc) Обычно здесь содержатся пользовательские настройки внешнего вида оболочки, переопределения пользовательских команд и т.п. Пользовательские функции для bash в целях удобства восприятия полезно выносить в отдельный файл (например $HOME/.bash_function), который затем подключать из .bashrc командой source (source $HOME/.bash_function).

Примеры файлов настроек для bash

bashrc — основной файл настроек

Мой файл bashrc (открыть на новой странице) содержит основные настройки оболочки — алиасы, сохранение истории команд, вид приглашения командной строки, настройки вывода некоторых команд и т.п. Все пользовательские функции вынесены в отдельный файл .bash_functions, подгружаемый из .bashrc. Локальные настройки для разных машин (переменные окружения, цвета приглашения командной строки) также подгружаются из отдельных внешних файлов .bash_local.

bash_functions — функции оболочки

bash_functions (открыть на новой странице) — содержит определения пользовательских функций и подгружается по вызову изи .bashrc.

bash_usage — справка по использованию bash

А небольшая справка по использованию самописных функций и некоторых, не слишком часто нужных, программ, у меня вынесена в отдельный файл bash_usage, который также подгружается из .bashrc:
.bash_usage (открыть на новой странице) — содержит справку по пользовательским функцям и подгружается по вызову из .bashrc.

Остальные настройки оболочки, подключаемые в bashrc

Больше конфигов? Легко!

Примеры моих конфигурационных файлов для других программ можно найти на странице Конфиги / dotfiles

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

Гос. органы идут в массы, постоянно вводят новые, удобные для граждан (по крайней мере на первый взгляд), формы взаимодействия.
К такому нововведению можно отнести и сервис проверки готовности загран. паспорта на сайте УФМС, расположенный по адресу 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 «Ваш заграничный»

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

cgroups — повышаем отзывчивость Linux

С недавних пор по интернету ходит новость про чудо-патч для ядра Linux, сильно уменьшающий время отклика системы. Однако ядерный патч — есть ядерный патч — для его использования нужно пересобирать ядро, что не каждому захочется делать (мне вот например не хочется). Между тем, уменьшить время отклика и повысить комфортность работы с ОС было бы не плохо.

И простой способ ускорить работу Linux не заставил себя ждать (следует заметить, что этот способ окажет влияние только на процессы, запущенные в текущей сессии оболочки). Появился он в ходе обсуждения разработчиками ОС вышеупомянутого патча для ядра. Получить ускорение можно, всего-лишь внеся несколько строк кода в .bashrc и выполнив пару команд от имени суперпользователя!

(далее…)

Создание инфракрасной камеры ночного видения из веб-камеры

В качестве продолжения моей недавней заметки, посвященной созданию домашней системы видеонаблюдения под управлением Linux (при помощи программы Motion) я хочу рассказать о простейшем способе переделки обычной веб-камеры в так называемую камеру ночного видения — способную воспринимать инфракрасный диапазон спектра.

Что такое инфракрасная камера ночного видения

Фактически любая цифровая камера может выступать в качестве ЭОП (электронно-оптического преобразователя) для прибора ночного видения (ПНВ) нулевого поколения (в таких ПНВ используется активная ИК-подсветка местности), поскольку сами матрицы камер воспринимают не только видимый, но и ИК спектр. Отсекается «лишний» свет при помощи светофильтров (в данном случае — ИК фильтр) и делается это для того, чтобы выдаваемое камерой изображение соответствовало воспринимаемому человеческим глазом. К слову, в дешевых камерах ИК-фильтр слабый или может вовсе отсутствовать — для проверки можно посветить пультом ДУ например в камеру мобильного телефона. Следовательно, демонтировав ИК-фильтр можно из обычной веб-камеры сделать камеру ночного видения, заодно повысив общую чувствительность веб-камеры и избавившись от зашумлённости изображения в условиях недостаточного освещения

(далее…)

Видеорегистрация + видеонаблюдение для дома в Linux

Надумал и я побаловаться созданием простой и дешевой домашней системы видеонаблюдения и видеорегистрации (сподвигла меня на это статья из журнала «Хакер»). Естественно, что идея использовать веб-камеру и домашний компьютер в данном случае выглядит наиболее привлекательной.

Веб-камера для Linux

Свой выбор веб-камеры для Linux я остановил на Logitech Webcam C120 по ряду причин: во-первых, она отличается приемлемым качеством картинка (изображение с камер Genius аналогичного ценового диапазона меня не впечатлило совсем), во-вторых — камера работает по протоколу UVC, что означает её поддержку ядром Linux «из коробки» (штатно поддержка добавлена в ядро Linux с версии 2.6.26, также в Linux заработают веб-камеры, управляемые драйвером GSPCA) и в-третьих — эта веб-камера стоит всего 500 рублей и её мне не жалко разобрать с целью создания из неё ИК-камеры (камеры «ночного видения»).

(далее…)

Автоматическое определение кодировки терминала в perl-скрипте.

Надоело руками менять кодировки для нормального вывода русского текста в своих perl-скриптах в зависимости от кодировки терминала (запускаю скрипты под Linux (utf8), Windows (ActivePerl, cp866) и Windows (Cygwin, cp1251)). Немного погуглил, но никаких готовых рецептов не встретил, хороший запрос для поиска что-то в голову не пришёл.

Решил поступить следующим образом — определять операционную систему, в которой запущен скрипт, и в зависимости от этого выставлять кодировку выходного потока (STDOUT):

#!/usr/bin/perl;
use utf8;
require encoding;
import encoding  ('utf8', 'STDOUT' => &SetEncoding);

sub SetEncoding {
    if ($^O =~ /^MSWin\d{2}$/i) {
        return 'cp866';
    }
    elsif ($^O =~ /^cygwin$/i) {
        return 'cp1251';
    }
    elsif ( условие для следующей ОС (например - linux) ) {
        return 'utf8';
    }
         ... и так далее, исходя из личных потребностей ....
}

Замечания, исправления, дополнения и/или другие способы решения задачи по автоматической установке кодировки для perl-скрипта всегда приветствуются!

И на всякий случай, если вдруг мне не удастся найти время написать ещё что-то в блог до нового года — поздравляю всех своих читателей с наступающим новым годом, успехов вам и побольше приятных открытий! 🙂

PS: А для интересующихся фрилансом — новый, но достаточно любопытный ресурс ФрилансFM — портал о фрилансе.

Файл настройки vim — .vimrc (для Linux и Windows)

Продолжу сохранение самых интересных своих конфигурационных файлов. Сегодня пришла очередь файла конфигурации для редактора vim.vimrc (находится обычно в домашнем каталоге пользователя: ~/.vimrc, также пример файла есть в /etc/vim). Довольно много времени ему уделил, собирая настройки и разделяя их применение для разных ОС (Windows и Linux). А будет ли он завершён окончательно — даже и не знаю 🙂

Самое хорошее русскоязычное руководство (с примерами) по настройке Vim из встретившихся мне в интернете: Очередной HowTo по Vim. Именно из него я взял функцию для переключения раскладок клавиатуры без потери реакции редактора на нажатия управляющих клавишей в случае раскладки, отличной от английской.

Перемещение по табам сделано в стиле моего любимого эмулятора терминала — urxvt (Shift+стрелка). Можно просто скопировать все настройки в свой файл ~/.vimrc, открыв мой vimrc на отдельной странице.
(далее…)

Wget(rc) и flashgot — памятка

Настроил сегодня на работе wget в качестве загрузчика в firefox (при помощи плагина flashgot). Теперь и с файлообменников качает, и имена закачиваемым файлам даёт нормальные, а не из имени ссылки. Чтобы не забыть в дальнейшем, что да как и при необходимости иметь лёгкий доступ к описанию процесса — сохраню памятку тут. Что удобно — wget под Win можно не только из cygwin использовать, но и нативную сборку скопировать например в C:\Windows\System32 (я на флешке виндовую сборку вгета ношу — один файлик маленький, установки не требует? — очень удобно когда стоит только IE на машине, который докачку поддерживать видимо никогда не научится).
(далее…)

PID — process ID (идентификатор процесса)

PID — уникальный идентификатор процесса (напр. выполняющейся программы). Позволяет обращаться к конкретному процессу.

PID присваивается каждому вновь запущенному процессу с целью персонифицировать его относительно других уже выполняющихся процессов.

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

В ОС Linux узнать PID процесса (процессов) можно например при помощи таких команд, как

1
top

или

1
ps

.

Команда

1
kill

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