IT — Регулярное выражение для никнейма
Сия заметка о том, как написать регулярное выражение для проверки валидности никнейма. На мой взгляд, валидным никнеймом является ник начинающийся с алфавитного символа, и содержащий только символы алфавита, цифры, символы - и _, и пробел. Ник не должен быть короче 4 символов. Загвоздка заключается в том, что алфавит может быть любым - японский, китайский, кирилический, греческий...
Если написать просто \w, то мы ~ получим - A-Za-z0-9, что точно не соответствует задаче. Решение - \p{L} . В php сработает с версии >= 5.1.0, причём, если верить этому источнику , pcre должен быть собран с опцией "--enable-unicode-properties". Я использую php5.3 из коробки, у меня всё заработало :) Итак, регулярка получается следующей - #^\ p{L} [ \p{L} \d-_\ ]+$# u .
IT — IE7-8, jQuery и XFBML
Столкнулся с тем, что 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"
IT — вКонтакте - кнопка «мне нравится» и pageImage
Подключил на сайте заказчика кнопку "мне нравится" от вконтакте, однако в ней не заработала опция pageImage, в виду чего ссылка шарилась просто как "сопроводительный текст + ссылка", что непособствует появлению дополнительных лайков(уже из самой соц.сети). Гугл подсказал мне, что я такой не один, и что никто не знает как сию проблему решить. Написал в support — ответили ~ через сутки. Сказали сменить расширение изображения с jpeg на jpg . Сразу не помогло. Оказалось - кеш. Сменил page_id - заработало.
UPD 1. Ответили из vk, пишут:
К сожалению, пока обновление кэша не предусмотрено. Возможно, в скором будущем ситуация будет исправлена.
Значит у разработчиков нет права на ошибку (к тому же, если я не ошибаюсь, незадокументированную)? о_О
IT — Пишем простое Opera-расширение
Эта статья посвящена написанию простого расширения для браузера Opera. Наше расширение будет примитивным, т.к. весь его функционал будет заключаться в user-JS для habrahabr.ru. Лента комментариев оснащена блоком, который отображает количество новых комментариев в топику и кнопку, позволяющую эту ленту обновить. Давайте добавим туда стрелки для навигации по новым комментариям.
C чего начнём?
- Создадим новую директорию для файлов расширения
- В ней создадим файл config.xml
IT — SCSS — немного практики, часть I
Статей про SASS(SCSS), Less на хабрахабре уже полно, но на мой взгляд не хватает такой, в которой было бы немного реальной практики. Я постараюсь восполнить этот пробел. Около года назад одна из SASS-статей меня «зацепила», и с тех пор я полюбил эту технологию настолько, что ручной набор обычного CSS кода представляется мне лишней тратой времени. Сия статья посвящается тем верстальщикам (или web-программистам), которые про SCSS ещё не слышали, или же ещё не пробовали в деле. Более опытным товарищам, полагаю, в ней ловить нечего.