12 Ноя

Подключение к БД MSSQL через ActiveRecord

В общем, понадобилось мне в одном проектике подключаться к двум базам данных одновременно. Причём одна из них должна быть локальная MySQL, а вторая удалённая MSSQL. Информации по этой теме нетак уж и много, особенно на русском языке, поэтому я запишу сюда себе всё ж.

В общем, сначала я столкнулся с проблемой несостыковки кодировок в MySQL. Если заношу данные в базу (и считываю их потом оттуда) на английском языке — то всё нормич, а вот как только дело доходит до русского — приложение Sinatra сразу вылетает с ошибкой. Текст ошибки я сейчас уже не помню, но гугление помогло мне и в итоге я нашел инфу, что для подключения к MySQL необходим адаптер не mysql, как могло сначала показаться, а mysql2. Да не просто mysql2, а ещё и определенной версии. В общем, в моём приложении Gemfile стал выглядеть вот так:

 gem "sinatra"
 gem 'mysql2', '~> 0.3.18'
 gem "activerecord"
 gem "sinatra-activerecord"
 gem "sinatra-contrib"

Далее передо мной возникла проблема подключения к базе MSSQL, в общем, с горем пополам тоже нашел инфу, что для подключения к MSSQL нужны ещё два гема. В итоге Gemfile пополнился ещё двумя строчками:

gem 'tiny_tds'
gem 'activerecord-sqlserver-adapter', '~> 4.2.0'

Читать далее

12 Ноя

Соединение с несколькими БД с использованием ActiveRecord

В общем, с Ruby у меня пошло как-то получше, чем ранее с python’ом и фреймворком Yii2.
Смотрю тут всякие видеоуроки, читаю книги, уже немного фигачу всякие мелочи с использованием Sinatra и ActiveRecord.
Вот понадобилось тут из одного приложения создавать подключения к нескольким базам данных. Искал всякие варианты — ничего толком не нашел. Там вроде можно как-то конфиги указывать в database.yml, но у меня не получилось. Зато получилось вот так:
для начал нам потребуется собственно сам activerecord

в файле app.rb — основной файл приложения Sinatra, — прописываем следующее:

require 'rubygems'
require 'sinatra'
require 'sinatra/activerecord'

ActiveRecord::Base.configurations["mysql1"] = {
:adapter => "mysql2",
:host => "localhost",
:username => "username",
:password => "userpassword",
:database => "databasename",
:encoding => "utf8"
}

ActiveRecord::Base.configurations["mysql2"] = {
:adapter => "mysql2",
:host => "localhost",
:username => "username",
:password => "userpassword",
:database => "oher_databasename",
:encoding => "utf8"
}

А далее в коде при создании класса с нашей моделью прописываем вот так:

class Table1 < ActiveRecord::Base
establish_connection "mysql1"
end

class Table2 < ActiveRecord::Base
establish_connection "mysql2"
end

Вот и всё. После этого у меня приложение заработало нормально.

Немного позже напишу ещё о том, как подключиться к базе MSSQL из синатры (если, конечно, получится).

09 Окт

PHP + MSSQL

Попросили меня тут на днях сделать простенький интерфейсик для работы с базой данных одной программы по управлению доступом (СКУД). Но дело в том, что там используется база MSSQL.
Не, ну а чо, микрософт, так микрософт. Начал рыть инфу, что да как делать. В общем, нашел такую штуку как FreeTDS — это драйвер для подключения как раз-таки к нужной мне БД.
Поставил, прогеморроился полдня с ней, но так и не получилось настроить. В итоге начал искать другие варианты.
И наткнулся на одном сайте, что с php, установленной через apt-get, не очень кошерно использовать тулзы, установленные из исходников. Подсказали, что при таком варианте достаточно доустановить просто
apt-get install libsybdb5 freetds-common php5-sybase
/etc/init.d/apache2 restart

В общем, установил, рестартнул Апач, в коде пхп прописал что-то типа такого:

  try {
    $hostname = "server_ip";
    $port = 1433;
    $dbname = "DatabaseName";
    $username = "Login"; 
    $pw = "Password"; 
    $pdo = new PDO ("dblib:host=$hostname:$port;dbname=$dbname",$username,$pw);
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }

и всё волшебным образом заработало!

21 Апр

Настройка NRPE в Nagios на примере Debian сервера

Исходные данные:

  • Установлен Nagios
  • Установлен nagios-plugins
  • Установлен NRPE

Чтобы с помощью NRPE мониторить удаленный сервер, надо поставить на том сервере NRPE-демон, который будет запускать команды нагиоса у себя, а также установить плагины для нагиоса.

apt-get install nagios-nrpe-server
apt-get install nagios-plugins

Далее на целевом сервере идем в папку /etc/nagios и правим там файл nrpe.cfg

Выставляем

#адреса, с которых разрешено обращение к демону nrpe
allowed_hosts=<ip-адрес сервера, на котором установлен Nagios>

#опция, которая позволяет присылать аргументы
dont_blame_nrpe=1

А также почти в самом конце прописываем команды, которые будут выполняться. Напрмиер вот такую: Читать далее

21 Апр

Настройка SIP на АТС Panasonic TDE100/200 и NCP500/1000

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

Сразу хочу отметить, что В панасониках бесплатно можно настроить только SIP-регистрацию на удаленной АТС, а для того, чтобы регистрировать SIP-абонентов на самом панасонике необходимо будет приобрести sip-лицензии у своего дилера.

В общем, вот так.
Ладно, собственно, сам мануал привожу в том виде, как записал, со всеми нюансами, которые есть/были у нас. Если вдруг кто это увидит и что-то станет непонятно — можно писать в комментарии.

Настройка SIP на TDE100 и NCP500

  • Необходимо сначала добавить виртуальную плату V-SIPGW (тупо перетягиванием)
  • После добавления переводим ее в OUS, потом заходим в Port Property
  • Читать далее

01 Май

Продолжаем строить телефонию.

В общем, в продолжение предыдущего поста про телефонию, расскажу немного новостей о продвижении работы.
Мы уже подняли сервер на фрисвитче. Сделали на нем регистрацию на всех панасониках и пустили все звонки по SIP.
По транкам в панасах, конечно, немного упираемся, но в принципе нормально пока тянем, еще вроде никто не жаловался.
На днях закончили делать во всех филиалах схему «Петля». Так мы обозвали схему фиксирования звонков на городские/междугородние номера на панасах при помощи фрисвитча. Суть в том, что при исходящем звонке по префиксу вызов идет сначала на фрисвитч в Москву, потом из Москвы на панас приходит набираемый номер в виде 0007558ХХХХХХХХХХ. Далее на панасе 000 обрезается автоматически при любых входящих вызовах. Сделано, чтобы на фрисвитче было видно направление звонков. Далее 7-ка не учитывается, так как это сигнал для перехода на TIE таблицу. Далее 55 — наш код выхода на транк-группу потока Е1 (тоже обрезается). ну и дальше уже идет номер в виде 8ХХХХХХХХХХ. Читать далее