Архив метки: linux

Автоматическое определение кодировки терминала в 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 на отдельной странице.
Читать далее Файл настройки vim — .vimrc (для Linux и Windows)

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

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

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

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

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

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

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

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

Алгебраическая captcha в виде линейного уравнения и ее взлом

Система компьютерной алгебры Maxima
Система компьютерной алгебры Maxima

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

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

Читать далее Алгебраическая captcha в виде линейного уравнения и ее взлом

Настройка GRUB2

Настройка GRUB2
Настройка GRUB2

Как я уже упоминал в своей записи об обновлении Ubuntu:

В конфиге GRUB2 нет толкового описания настроек (по умолчанию список вариантов загрузки он не выводит), нашёл на форумах.

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

Читать далее Настройка GRUB2

apt или aptitude. Сравнение

На Хабре прочёл любопытную статью про сравнение систем управления пакетами в Debian (и в deb-ориентированных дистрибутивах Linux соответственно). Называется aptitude vs apt. 5 причин, почему я использую aptitude. Как ясно из названия, автор сравнивает aptitude и apt по пяти параметрам:

1. Логичность синтаксиса. И единство управления.
2. Гибкость поиска.
3. Проставление меток пакетов.
4. Разрешение зависимостей.
5. Интерфейс.

Сам я и так давно предпочитаю aptitude для работы с пакетами, но почитать и посмотреть примеры было любопытно, из статьи можно вынести некоторые полезные новые приёмы работы с утилитой.

Например, открыл для себя тот факт, что aptitude при поиске пакетов позволяет использовать простые регулярные выражения (regexp), удобство использования поисковых запросов значительно повысилось!

В aptitude используются поисковые запросы. Это дает простор для фантазии: например, что там у нас kde-шного установлено?
aptitude search ‘~i~skde’

Самые популярные поисковые запросы:
~nимя — искать в имени пакета
~dтекст — искать в описании пакета
~i — отбирает только уже установленные пакеты
~U — отбирает пакеты, которые можно обновить

В качестве любого из шаблонов может выступать регулярное выражение. Например, ~n^wget выберет пакеты, имена которых начинаются с wget. Шаблоны можно группировать логическими операндами, например ~i~skde (и установленные, и из секции KDE). При указании нескольких шаблонов поиска к ним применяется логическое И, если шаблоны разделить «|«, то логическое или. Отрицание — «!«, группирование в скобках.

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

Успехов в освоении!

Обновил Ubuntu до 9.10

ubuntu 9.10

Дома на двух машинах решил обновить ОС. И если на десктопе всё прошло без приключений, то вот с ноутбуком как будто вернулся на несколько лет назад.
После обновления поверх версии 9.04 перестал работать экран. Нашел возможный вариант решения для чипсетов от интел (мой случай), не помогло. Пришлось ставить начисто.

Поставил, перестали работать всплывающие уведомления (поломали драйвер видео?). В конфиге GRUB2 нет толкового описания настроек (по умолчанию список вариантов загрузки он не выводит), нашёл на форумах. Как можно поставлять загрузчик, не имеющий нормальной документации по настройке?
Выход из спящего режима теперь «двойной» — выходит один раз и тут же «засыпает» обратно.

Из плюсов могу отметить на данный момент только более симпатичные иконки и команду для получения ключей репозиториев launchpad (впрочем, давным-давно есть скрипт, реализующий тот же самый функционал, да ещё и с более удобным интерфейсом).

Мой вердикт — нафиг. Если работает 9.04 и нет твёрдой уверенности в успешной установке 9.10 — лучше и не ставить. Ничего особо ценного в релизе нет.

Цветовая индикация хода загрузки Linux

Загрузка LinuxРаньше у меня в системе Red Hat Linux 6.0 во время загрузки статус запускаемых демонов выделялся цветом. В случае удачного запуска напротив названия запускаемого демона появлялось зелёное   [ OK ], а при возникновении ошибок — красное [ FAIL ]. Очень удобно, быстро замечаешь, если что-то пошло не так. Да и просто глаз радует, в конце-концов.

А вот стандартные настройки моей нынешней Ubuntu 9.04 таких маленьких радостей, к сожалению, не содержат.

Но на то он и Linux, чтобы можно было всё сделать так, как нравится только тебе!

Читать далее Цветовая индикация хода загрузки Linux