среда, 29 января 2014 г.

SublimeText - простой, но мощный редактор для разработчиков

Недавно я озадачился поиском годной программы для редактирования CSS/PHP/JS/HTML, хотя бы что то похожее на Notepad++ или Gedit/Kate/Kedit.

Frase - часто вылетает при открытии файлов, либо открывает файлы неадекватно, но, возможно, это исправят в следующей версии, так же данная программа работала более стабильно на MacOS 10.8, а вот на 10.9 начались проблемы.

Tincta - жутко глючит при открытии нескольких файлов с 3000+ строк.

TextWrangler - работает годно, подсвечивает синтаксис, открывает в разных кодировках, не тормозит и не глючит.

SublimeText - так сказать "условно бесплатный", в триальной версии выскакивает раз в 2 часа окно с просьбой купить программу, но всё работает.

А теперь речь об избраннике - SublimeText
  • Можно одновременно редактировать текст в нескольких местах, можно выделять все участки с определенным словом.
  • Подсветка синтаксиса почти всех языков.
  • Очень быстрая работа, вкладки.
  • Горячие клавиши позволяют по минимуму использовать мышку, работать эффективней.
  • Автокомплит не только по зарезервированным функциям и выражениям, но и по словам, раннее использованных в данном файле.
  • Функционал расширяется плагинами.
  • Много-много возможностей
Демо-анимация данного редактора на официальном сайте.

пятница, 29 ноября 2013 г.

WebAsyst ShopScript подкатегории в расширеном поиске

В файле /published/SC/html/scripts/modules/test/_methods/category_search_result.php
дописываем
 $smarty->assign( 'subcategories_to_be_shown', catGetSubCategoriesSingleLayer($categoryID));

конец файла примерно такой
                if ( CONF_PRODUCT_SORT == '1' )_sortSetting( $smarty, set_query() );
                //calculate a path to the category
                 $smarty->assign( 'subcategories_to_be_shown', catGetSubCategoriesSingleLayer($categoryID));

                $smarty->assign( 'product_category_path', catCalculatePathToCategory($categoryID) );
                $smarty->assign( 'search_with_change_category_ability', 1 );
                $smarty->assign( 'catalog_navigator', $navigatorHtml );
                $smarty->assign( 'products_to_show', $products);
}
$smarty->assign( 'main_content_template', 'category_search.html');
?>




и всё!

четверг, 28 ноября 2013 г.

Язык по умолчанию (default language) в FreePBX

Надоело мне постоянно переключать на русский язык интерфейс FreePBX, я психанул и сделал вот что.

Открыл файл admin/libraries/view.functions.php

Там нашел такие строки:

function set_language() {
        if (extension_loaded('gettext')) {
        if (!isset($_COOKIE['lang']) || $_COOKIE['lang'] == '') {
            $_COOKIE['lang'] = 'en_US';
        }
        setlocale(LC_ALL,  $_COOKIE['lang']);
        putenv("LANGUAGE=".$_COOKIE['lang']);

        bindtextdomain('amp','./i18n');
                bind_textdomain_codeset('amp', 'utf8');
                textdomain('amp');
        }
}


изменил функцию вот так:


function set_language() {
        if (extension_loaded('gettext')) {
        if (!isset($_COOKIE['lang']) || $_COOKIE['lang'] == '') {
            $_COOKIE['lang'] = 'ru_RU';
        }
        setlocale(LC_ALL,  $_COOKIE['lang']);
        putenv("LANGUAGE=".$_COOKIE['lang']);

        bindtextdomain('amp','./i18n');
                bind_textdomain_codeset('amp', 'utf8');
                textdomain('amp');
        }
}

Отзыв о компании ИНСИС (colocation)

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

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

Я сделал один звонок, уточнил с девушкой-менеджером все подробности, отправил скан паспорта, на следующий день мне выслали все реквизиты и дали доступ к личному кабинету.
В личном кабинете я сделал предоплату картой Visa, договор передали в ЦОД, там я его и подписал, сервер разместили в моем присутствии.

Дата-центр не сказать что высокого уровня, но всё сделано хорошо, огромные бесперебойники, подключенные к центральному питанию стоек, видеонаблюдение, по всему потолку на  расположены большие кондиционеры, разместили меня быстро.

Менеджеры очень внимательно относятся к клиентам, спасибо таким менеджерам.

понедельник, 14 октября 2013 г.

Мини-АТС Asterisk

Написал типа памятку для себя
1. Устанавливаем Debian на ПК
2. Устанавливаем Asterisk+FreePBX по инструкции с хабра,
на дебиане отличие лишь в lamp сервере
3. Русифицируем интерфейс

(с)http://asteriskforum.ru/viewtopic.php?p=51554#51554
 nano /usr/share/locale/locale.alias
Удаляем строку с кодировкой для russian и добавляем 3 строки вместо нее:
russian ru
ru ru_RU
ru_RU ru_RU.UTF-8

Затем:
#locale-gen ru_RU
#/etc/init.d/apache2 restart
3.1 Русифицируем звуки
cd /usr/share/asterisk/sounds/ru
 

wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-alaw-current.tar.gz
 

tar xfz asterisk-core-sounds-ru-alaw-current.tar.gz


4. В FreePBX устанавливаем все модули

5. Создаем транки для SIP-провайдеров
  • заходим в Connectivity -> Trunks
  • вбиваем следующее в поля
Trunk Name - любое название кириллицей или цифрами, например название провайдера или номер, это для вашего удобства, это имя вы будете выбирать для маршрутов.
Outbound CallerID - ваш номер, на некоторых провайдерах можно подделать свой исходящий номер, на некоторых он будет определяться левыми номерами, но сюда лучше вписать свой номер.
Maximum Channels - если ваш телефон многоканальный, то укажите количество одновременных соединений, это поможет астериску использовать следующий маршрут при загруженности этого.

Outgoing Settings - тут настраивается исходящий транк
Trunk Name - любой, но лучше писать что то типа sip-out, т.к. название исходящего и входящего не может быть одинаковым,
а в PEER Details вписываем:
host={айпи сервера}
username={user_id}
secret={пароль}
type=peer
insecure=port,invite
dtmfmode=inband


Далее входящий маршрут Incoming Settings
User Context - тоже что то придумайте, например sip-in
в USER Details:
secret={пароль}
type=user
context=from-trunk
dtmfmode=info

Далее в Register String
{user_id}:{пароль}@{айпи сервера}/{DID для привязки к входящим маршрутам}

Учтите что {} это для выделения параметров, при подстановке своих параметров - удаляйте фигурные скобочки. Так же у некоторых провайдеров какие то свои специфические настройки.

6. Чтобы заработали входящие - нужно создать входящий маршрут (при необходимости указав в нем DID для привязки к определенному транку), во входящем маршруте нужно указать назначение, например в группу.
7. Чтобы заработали исходящие вызовы - нужно сделать исходящий маршрут, но для этого маршрута обязательно нужно указать маски номеров для набора и указать транк, через который будет проходить маршрут.
Продолжение следует.

 



четверг, 10 октября 2013 г.

Ubuntu 13.04 Intel HD4000

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

Ubuntu запустилась нормально, поставил драйвер отсюда, предварительно обновив систему.

Я к ноутбуку подключил монитор по HDMI и изображение вполне адекватно отображается в режиме расширения экрана, глюков при скролинге страниц не наблюдается, даже включил видео во флеше, квадратов при обновлении экрана тоже не наблюдается.

вторник, 17 сентября 2013 г.

D-link DVG7111s FXO Asterisk

В общем эта фигня сама подключается к астериску, а не астериск к ней.

В астериске создаем Extension с каким нить номером,

потом в DLINK делаем настройки
Setup -> VoIP Setup

Там ставим галочку Enable Support of SIP Proxy Server / Soft Switch


Потом настраиваем FXO (в asterisk мы создали Extension с номером 210)





Далее настраиваем подключение, 192.168.1.248 - это IP Asterisk сервера








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

Ну теперь надо сделать так, чтобы наш шлюз сам брал трубку и набирал номер в астериске


Набираемый номер должен соответствовать входящей группе.



Купил в комиссионке неттоп за 5 тыс, поставил на него Debian и Asterisk вот и атс, телефончики по LAN соединяются