Автоматическое определение кодировки терминала в 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)

Библиотека для WordPress. Как сделать своё файлохранилище

Решил переделать страницу с книгами на своём сайте, воспользовавшись доступом к MySQL, который всё равно используется в wordpress. Суть переделки довольно проста — создать функцию, которая, найдя в теле страницы определённый тег, заменяла бы его некоей информацией, полученной из базы данных wordpress. В базе, в свою очередь, может быть что угодно, в моём случае — описания и ссылки на файлы книг, представленных в «Библиотеке». Сложного в написании такой функции ничего нет, по таком принципу кстати работают многие плагины, например вставляющие видео или музыку на страницу.

Читать далее Библиотека для WordPress. Как сделать своё файлохранилище

RSS WordPress — как запретить индексацию (nofollow / noindex) ссылок в виджете

Виджеты WordPress
Виджеты WordPress

Нравится мне стандартный виджет WordPress RSS — с его помощью можно немного разнообразить блог и поделиться с читателями какой-то интересной информацией. Не нравится только то, что этот RSS WordPress не закрывает ссылки на свои элементы от индексации. По-хорошему надо бы иметь возможность делать это — убирать ссылки из виджетов WordPress или добавлять к ним nofollow и noindex. И такая возможность есть и легко доступна.
Читать далее RSS WordPress — как запретить индексацию (nofollow / noindex) ссылок в виджете

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

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

Парсер базы nakolesah.ru

Грабим nakolesah.ru
Пример работы парсера сайта nakolesah.ru

Уф, докрутил парсер nakolesah до вменяемого состояния и сграбил подбор шин по автомобилю. Кому интересно — ссылка на сам скрипт в конце поста.

Что-то в нём ещё буду менять, не очень мне нравится логика работы нынешняя, основанная на GET-запросах (тогда как браузер получает всю информацию, обращаясь к asp-скрипту с передачей разных параметров в POST-запросе). У меня POST только в конце, а надо бы попробовать работу браузера полностью скопировать, да времени особо не было разбираться.

Читать далее Парсер базы nakolesah.ru

Парсер-граббер nakolesah.ru

Был занят в свободное (от основной работы) время — делал халтуру, которая заключалась в просьбе написать парсер, чтобы сграбить структуру подбора колёс по автомобилю с сайта nakolesah.ru (естественно, на языке perl).
И вот сегодня он готов (начал в минувшее воскресенье) и проходит тестирование у заказчика. Приятно то, что это первый случай, когда моё хобби принесло небольшую денежку (которую я потрачу на другое хобби — охоту 🙂 ).
Читать далее Парсер-граббер nakolesah.ru

Отстрел травматического оружия и патронов

Наткнулся на пару интересных роликов по отстрелу разных травматических систем самообороны, решил сохранить у себя (заодно разобрался со вставкой видео в wordpress).
А выводы каждый может сделать сам 🙂

Отстрел ТТ, Осы и ружейных травматических патронов.

[hana-flv-player
width=»400″
height=»320″
video=»https://dimio.org/wp-content/uploads/video/weapon/Travma_TT_Osa_Shootgun.flv»
description=»Отстрел Осы и травматических патронов для ружья»
clickurl=»https://dimio.org»
clicktarget=»_self»
player=»4″
autoplay=»false»
loop=»false»
autorewind=»true»
/]

Отстрел пистолета Т10

[hana-flv-player
width=»400″
height=»320″
video=»https://dimio.org/wp-content/uploads/video/weapon/Travma_T10.flv»
description=»Отстрел травматического пистолета Т10″
clickurl=»https://dimio.org»
clicktarget=»_self»
player=»4″
autoplay=»false»
loop=»false»
autorewind=»true»
/]

Пишем плагин для WordPress. Добавление в репозиторий WordPress.org (часть 7)

wordpress-plugin

Размещение своего плагина в репозитории на сайте WordPress.org

Настало время опубликовать седьмую (но видимо — не последнюю) часть руководства Как написать плагин для WordPress.

В ней я рассмотрю и пошагово изложу процесс добавления написанного плагина в репозиторий на сайте WordPress.org.

Читать далее Пишем плагин для WordPress. Добавление в репозиторий WordPress.org (часть 7)

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

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

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

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

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

Perl, Linux, программирование, настройка и что-нибудь ещё…