10 Фев

Восстановление FusionPBX при удалении самого первого домена.

Спиздил статью вот отсюда на всякий случай.

При удалении самого первого домена может случиться с ним несчастье, — перестанет пускать админа (  обычно это admin или superadmin ) на веб-консоль для управления!

Но Вам это поможет только в том случае, если Вы не удалили _все_ домены из FusionPBX перед этим. Если-же удалили все то лучше просто снести папку fusionpbx из /var/www, и обязательно удалить базу !!! После чего запустить наш инсталяционный скрит опять.

В принципе всегда можно все снести папки /usr/local/freeswitch и /var/www/fusionpbx , снести базы и начать все с нуля, но я решил разобраться, смогу-ли я восстановить только пользователя, не пересоздавая все.
Читать далее

29 Авг

Использование Sox

Просто заметка для себя, чтобы не забыть.

Необходимо было массово склеить пару тысяч звуковых файлов попарно. Делается это при помощи Sox достаточно просто.

Чтобы их склеить последовательно, то есть чтобы звуковые дорожки шли одна за другой пишем вот примерно так:

sox.exe filename1.wav filename2.wav result_filename.wav

Чтобы файлы замиксовать, то есть чтоб они проигрывались одновременно с самого начала, пишем так:

sox.exe -M filename1.wav filename2.wav result_filename.wav

Такие дела.

25 Авг

Формат даты OLE

В БД одной из программ, с которой мне довелось столкнуться, дата записывалась числом в следующем формате 42004.9492447917.
Сначала я немного не понял, потом поискал в интернете и всё понял.
В общем, это запись даты в формате OLE (так называемый OLE Automation Date или дата с плавающей точкой).

Логика переформатирования в обычную дату следующая:
число до запятой — количество дней, прошедших с полуночи 30 декабря 1899 года
число после запятой  — часть дня, которая прошла с его начала. То есть если в сутках у нас 86400 секунд, то полдень будет выражен числом 0.5, как-то так.

То есть, если нам нужно перекодировать число 42004.9492447917 в обычную дату, считаем, то получаем следующее:
42004 — это 42004-й день с 30 декабря 1899 года, то есть 01 января 2015 года
0.9492447917 — это количество секунд, которое прошло с 00:00 этого же дня, разделенное на общее количество секунд в сутках, то есть 0.9492447917*86400 = 82014 секунды, то есть 22 часа 46 минут 54 секунды.
В итоге получаем дату: 01.01.2015 22:46:54

Написал пару небольших функций на RUby для конвертирования дат из одного формата в другой.
Для начала, конечно же, запросим require 'time'

Из OLE в стандартный формат:

def convert_time(t)
 puts Time.at((time.to_f - 25569) * 86400).utc
end

utc в конце необходим для того, чтобы вам выдалось время без поправки на вашу таймзону.
time.to_f — конвертируем входные данные в float
(time.to_f - 25569) — делаем началом отсчета 1 января 1970 года
((time.to_f - 25569) * 86400) — конвертируем дату в Unix time

Из стандартной даты в OLE:

def to_ole(t)
 Time.parse(t).to_f/86400 + 25569
end

Здесь изначально дата должна быть в любом подходящем формате и обязательно с указанием UTC, иначе скрипт будет прибавлять или отнимать к нужному времени количество часов для подгонки под локальное время.
Собственно всё.

08 Авг

Ошибка при установке Passenger

Каждый раз сталкиваюсь с этой проблемой и каждый раз забываю, в чём причина.
После установки Passenger и попытке запуска passenger-install-apache2-module выскакивает примерно следующая ошибка:
`method_missing': undefined method `this' for #<Gem::Specification:0x4db6d12 … бла-бла-бла
Код ошибки может отличаться и ситуация может быть другой.
Решение следующее:
достаточно выполнить следующую команду
gem update --system 2.4.8 --no-ri --no-rdoc

Этой командой мы апдейтим апдейтер до нужной нам версии.
Такие дела.

05 Мар

Ruby-скрипт в cron

Для работы понадобилось как-то написать небольшой скриптик по парсингу XML-ки и поставить его на выполнение в крон каждый вечер. Сам скрипт написать не проблема. «Да и в крон поставить нефиг делать», — подумал я. Но не совсем.

Поставил в крон. Проверяю в назначенное время — не работает.

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

Не работает.

Смотрю логи — теперь не может загрузить Nokogiri. Мудился-мудился, искал варианты, витоге всё-таки нашел, в чем магия. Оказывается нужно было в крон прописать всякие системные переменные для рубей. Либо вручную, либо при помощи команды rvm cron setup.
Попробовал — наконец-то заработало!
Такие дела.

15 Янв

Проблема с bootstrap в продакшене RoR

После установки на рельсы bootstrap из вот этого репозитория столкнулся с проблемой, что не подгружаются ассеты при развертывании приложения в продакшен. То есть css и js просто не подгружаются. Совсем.
Версия руби: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

Версия рельс: Rails 4.2.5

В итоге наткнулся на stackoverflow на тему с такой же проблемой, где советуют сделать прописать следующие параметры в файле %rails_app%/config/environments/production.rb

config.assets.compile = true
config.assets.precompile = ['*.js', '*.css', '*.css.erb']

Ну я и прописал. Но, как обычно, ничего никогда не проходит гладко. Поэтому после этого у меня выскочила ошибка:
Undefined variable: "$alert-padding".
Немного погуглив, нашел решение, что строку

config.assets.precompile = ['*.js', '*.css', '*.css.erb']

всё же лучше убрать, оставив только

config.assets.compile = true

Ну и после этого всё нормально заработало (пока что). Впрочем, сейчас всё равно пока переключусь на development.