misc/class
lib/jquery_pnotify, lib/moment, lib/lodash, misc/notification, site/engine, misc/social
if( $.browser.msie && $.browser.version <= 8 ) include('lib/respond'); $._social.__cfg = {"init":[{"service":"basic"},{"fb_app_id":"1997094873850041","service":"fb"},{"vk_app_id":"2978320","service":"vk"},{"service":"twi"}],"like":[{"service":"fb"},{"service":"vk"},{"via":"","channel":"","hash_tag":"","service":"twi"}]}; window._SiteEngine = new classes.SiteEngine( { user_id: 0, controller: 'content_tape', action: 'view', content_css_version: '1459538664', social_enabled: 0} );

Faiwer

Блог web-программиста

PHP-FPM и short_open_tag

18 апреля 2014

Перенеся сервер, на котором расположен deltaplan.kz, с apache2 на php-fpm, я столкнулся с неожиданной проблемой. Несмотря на правильным образом настроенные nginx конфиг и php-fpm pool GPS-подсайта — сервер упрямо, вместо того, чтобы запускать PHP файлы, возвращал их исходный код. Первым делом я вспомнил про security.limit_extensions = .php. Затем полез мучить различные fastcgi-параметры nginx хоста. Однако враг зашёл с другой стороны. Дело в том что в /etc/php5/fpm/php.ini по непонятным мне причинам был установлен short_open_tag: Off, в то время как XC Leonardo вовсю использует сокращённый вариант <? ?>. Разрешив эту опцию и перегрузив php5-fpm всё взлетело.

Пишем плагин для CKEditor 4

30 ноября 2013

CKEditor - это WYSIWYG редактор HTML-кода для браузеров. Всякий раз, сталкиваясь с его документацией или же с его исходным кодом, с исходным кодом его плагинов я терялся. И это не мудрено, ведь CKEditor это очень большой продукт, имеющий довольно сложную инфраструктуру. Но, зачастую, стандартных возможностей не хватает и требуется добавить свою. В этой статье я хотел бы остановиться на плагине, который позволяет встраивать и оперировать в редакторе Yandex-картами. Вот так это будет выглядеть по окончанию редактирования:

534e37778bc3f.png

подробности…

Sublime Text 2

18 июля 2012

534e2c96ca7ea.pngПару месяцев назад я случайно наткнулся на массу положительных отзывов о текстовом редакторе Sublime Text 2. Попробовав его в деле, я не разочаровался. Теперь это мой основной рабочий инструмент. Sublime Text 2 - это платный текстовый редактор, написанный на C++, который:

  • Работает в LinuxOS X и Windows
  • Обладает приличной скоростью работы
  • Приятным интерфейсом (включая всевозможные анимации)
  • Гибко настраиваем (правда, не в GUI, а в json-конфигах)
  • Имеет множество плагинов, число которых растёт как на дрожжах
  • Поддерживает VIM-режим
  • Использует fuzzy-поиск

подробности…

Регулярное выражение для никнейма

3 июня 2012

Сия заметка о том, как написать регулярное выражение для проверки валидности никнейма. На мой взгляд, валидным никнеймом является ник начинающийся с алфавитного символа, и содержащий только символы алфавита, цифры, символы - и _, и пробел.  Ник не должен быть короче 4 символов. Загвоздка заключается в том, что алфавит может быть любым - японский, китайский, кирилический, греческий...

Если написать просто \w, то мы ~ получим - A-Za-z0-9, что точно не соответствует задаче. Решение -  \p{L} . В php сработает с версии >= 5.1.0, причём, если верить этому источнику ,  pcre должен быть собран с опцией "--enable-unicode-properties". Я использую php5.3 из коробки, у меня всё заработало :) Итак, регулярка получается следующей - #^\ p{L} [ \p{L} \d-_\ ]+$# u .

IE7-8, jQuery и XFBML

31 мая 2012

Столкнулся с тем, что jQuery не умеет создавать DOM-элементы с составными именами, вроде <fb:like> в старых версиях IE. Решение - document.createElement( '<fb:like>' ). Пусть вас не смущает, что elem.tagName === 'like', на самом деле он нормальный.

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

  • Для mail.ru и одноклассников - mailru.loader.require( 'api', function(){ mailru.plugin.init(); } );
  • Для vKontakte - VK.Widgets.НужныйВиджет( id_dom_элемента, { настройки плагина } )
  • Для Twitter - twttr.widgets.load();
  • Для Google+ - gapi.plusone.render( id_dom_элемента );
  • Для Facebook - FB.XFBML.parse();

При этом для facebook-а и g+ обязательно нужно задать все <meta property="og:*" content="..." /> теги и дополнительные аттрибуты к тегу <html>:

  • xmlns:fb="http://www.facebook.com/2008/fbml"
  • xmlns:og="http://ogp.me/ns#"
  • itemscope="itemscope"
  • itemtype="http://schema.org/Product"