Как я обновлял Openfire

Был у нас джаббер сервер, древний Openfire, работал еще на RHEL3. Работал около 7 лет, пришло время обновить и железо (которое стало пару лет назад виртуальным), ОС и всю начинку.

Так как сервер не критичный для работы, решил потестить заодно и Ubuntu 16.

Читать далее

Назад в прошлое, или ntp сервер неточного времени

Всем известно, что для получения точного времени в ОС, необходимо, чтобы она синхронизировалась хотя бы с одним ntp сервером. А что делать, если точное время нужно, но не совсем. К примеру, отличающееся от текущего на какую-то дельту. В любую сторону. К примеру, на 10 лет назад, или вперед…

Ну и договоримся, что под точным временем не будем понимать не доли микросекунд,а хотя бы до секунды. Поехали!
Читать далее

Пишем бота для Telegram на Perl

В начале лет telegram.org запустил API для создания ботов. И на данный момент их появилось великое множество, полезных и бесполезных.

Для тех, кто хочет серьезно освоить API советую добавить ссылку https://core.telegram.org/bots в избранное и медленно, на несколько раз, прочитать все. Это старт.

А теперь к делу. В конце августа некто Roberto Frenna, сделал модуль для Perl, реализующий работу с API. Я попробовал его, и выяснил, что на perl 5.8.8 (да, иногда бывает и такое старье в продакшене), он работает некорректно. Один запрос в багтрекер и через 2 дня все работает изумительно.

Модуль есть на https://github.com/Robertof/perl-www-telegram-botapi, либо в CPAN.

Для начала работы, вам необходимо создать бота и получить токен авторизации. Это делается с помощью @BotFather — другого бота, который управляет всеми ботами.
Читать далее

Google Drive for Linux. Есть ли жизнь?

Корпорация добра приносит много полезного в нашу жизнь. Но вместе с этим, иногда, у ней случаются невероятные «выкрутасы», которые сложно понять. То Google Reader закроют, то многолет не могут выпустить клиента для Google Drive под Linux. У ИТ сообщества кончились идеи почему так происходит. Вот и я столкнулся с этим недоразумением. Давайте по-порядку.

Понадобилось мне для одного из проектов 10Гб стороннего файлового хранилища. Пошел искать, что бы найти подходящее и не очень дорогое. Основное требования консольный доступ из linux (да и не просто под Убутнту, а под RHEL\CentOS т.е. без новомодных рюшечек и фишечек), все остальное не важно.

Вкратце, о том, какие сервисы перебрал (самодеятельность в виде scp\rsync не считается)..

Читать далее

Перенос почты из TheBat на сервер Cyrus-IMAP

Так исторически сложилось, что у нас много лет используется корпоративная версия почтового клиента TheBat 3.x!
Все пользователи очень привыкли к ней, накоплена огромная адресная книга в нем. Но куча ограничений (TBB файл не более 2Гб, проблемы с TLS, заточенность под Windows) вновь и вновь поднимает вопрос о переходе на что-то иное.
Читать далее

Кастомизация веб-интерфейса CUPS

У нас на производстве — N различных печатающих устройств. Те которые печатают на листах A4, A3 — не тема сегодняшнего разговора. А вот те, что печатают на рулонах от А1 до А0 интересуют куда больше. Часто, пользователи не знают\забывают в каком плоттере, какой размерности загружена бумага. Отсюда брак и излишние траты. И начальник озадачил меня, реализовать возможность смотреть какая бумага загружена, сколько ее осталось. Делать отдельный раздел на корпоративном интранет портале — смысла нет, мало кто будет туда смотреть. В то же время у многих открыт веб-интерфейс очередей печати принт-сервера на базе CUPS. Раньше я писал backend для него, для преобразования заданий в pdf и мне понравилась его гибкость. Решено было добавить необходимую информацию прямо туда. И сейчас я расскажу, о некоторых его плюшках, которые мало кто использует.
Читать далее

Архиваторы. Размышления

Некоторое время назад, возникла необходимость записать на BD-R некоторое количество SEG-Y файлов. Размер носителя 25Gb, файлов много больше. Решил воспользоваться архиватором, обычно это 7z, настройки по-умолчанию.
Читать далее

Perl, великий и могучий

Заметка на правах шпаргалки.

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

my %add=(); my @items=();
...
open my $ADDFILE, '<', $addon || croak $!;
while (<$ADDFILE>) {
    chomp;
    my @items = split /;/x;
    $add{ $items[1] } = join ';', $items[$_] for ( 4, 7, 10 );
}
close $ADDFILE;
...

Все как обычно, но кроме перечисления элементов @items, решил завернуть это в for, указав их индексы. Почти, но не сработало 🙂

И тут я обнаружил (да для меня это, как ни странно, было ново), что можно подступится к элементам не через скалярное обращение $items[n], а через списочное и можно указать несколько индексов. Т.е. вышло вот так

my %add=(); my @items=();
....
open my $ADDFILE, '<', $addon || croak $!;
while (<$ADDFILE>) {
    chomp;
    my @items = split /;/x;
    $add{ $items[1] } = join ';', @items[ 4, 7, 10 ];
}
close $ADDFILE;
...

p.s. Кстати, весьма советую поставить perl-support плагин для vim. Очень удобно приводить код в порядок, и отдатвать на съедение perl critique.

Однако, как закрутили то..

[root@mailru]# ll /usr/bin/mailq

lrwxrwxrwx 1 root root 27 May 28  2009 /usr/bin/mailq -> /etc/alternatives/mta-mailq
[root@mailru]# ll /etc/alternatives/mta-mailq
lrwxrwxrwx 1 root root 23 Jun  5 09:34 /etc/alternatives/mta-mailq -> /usr/bin/mailq.sendmail
[root@mailru]# ll /usr/bin/mailq.sendmail
lrwxrwxrwx 1 root root 23 Jun  5 09:28 /usr/bin/mailq.sendmail -> ../../usr/sbin/sendmail
[root@mailru]# ll ../../usr/sbin/sendmail
lrwxrwxrwx 1 root root 21 May 28  2009 ../../usr/sbin/sendmail -> /etc/alternatives/mta
[root@mailru]# ll /etc/alternatives/mta
lrwxrwxrwx 1 root root 27 Jun  5 09:34 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail
[root@mailru]# ll /usr/sbin/sendmail.sendmail
-rwxr-sr-x 1 root smmsp 775064 Aug 11  2011 /usr/sbin/sendmail.sendmail

Lazarus, отображение интерфейсных элементов в разных ОС

Сегодня мы поговорим о кроссплатформенном программировании 🙂 и его проблемах. Есть такая штука — Lazarus. Это не что иное, как open source реализация знакомого многим Delphi. Практически все 1 в 1, да еще и изначальная кроссплатформенность. Код написаный на Windows, без проблем переноситься на Linux, WinCE, Mac или куда пожелаете. Поддержка множества графических библиотек для построения интерфейсов (gtk, gtk2, win32, wince, carbon, cocoa, fpgui) делает очень быстрым разработку интерфейса программы, а простота языка (freepascal) позволяет стремительно писать код. Это не панацея, но для некоторых вещей — вполне достойное решение.

Но т.к. графические виджеты, по разному выглядят в разных ОС, встает проблема, как их синхронизировать и корректировать в зависимости от графической подсистемы. Обычно, самое что бросается в глаза — это разница размеров и начертания шрифтов между Linux и Windows. Привести примерно к одному виду позволит небольшой хак.
Читать далее