Category Archives: Programming

Регулярные выражения — особенности

Как работает регулярное выражение (regexp): сначала оно пытается найти максимально возможное совпадение для текущей группы символов, затем посимвольно откатываясь к началу совпавшей подстроки (backtracking), в попытке найти совпадение для последующей группы символов регулярного выражения. Это верно для «жадных» (greedy) типов групп (по умолчанию, к примеру [\w]*). Если группа «ленивая» (lazy), то откатывание производится от начала …

Read more

jQuery templates (расширение jQuery, шаблонизатор)

Всё достаточно просто. $.getJSON( me.options.urlMoreResults ) .success( function( Answer ) { $( ‘#my-tmpl’ ).tmpl( Answer ); } ); Шаблон: <script id=»my-tmpl» type=»text/x-jquery-tmpl»> <div> {{if songs}} <ul class=»song-list»> {{each songs}} <li> <a class=»play js-play» href=»javascript:void(0);» data-song=»${$value.id}»></a> </li> {{/each}} </ul> {{/if}} {{if description}} <div class=»description»> <a href=»${url}/about» target=»_blank»> ${description} </a> </div> {{/if}} </div> </script> http://api.jquery.com/category/plugins/templates/ http://habrahabr.ru/blogs/jquery/112843/ http://habrahabr.ru/blogs/jquery/113672/

Новое в PHP 5.4 — трейты (traits)

Вкратце: трейт (аналог mixin в Ruby) — возможность в классе использовать функционал нескольких классов в обход традиционного наследования (по-моему, костыль, чтобы не реализовывать множественное наследование). Всё сводится к новой инструкции use внутри класса, при этом класс, функциональность которого нужно подмешивать. объявляется инструкцией trait. trait Singleton { public static function getInstance() { … } } class …

Read more

Паттерны проектирования на PHP

http://css.dzone.com/books/practical-php-patterns

Использование Twitter-API в PHP

Есть такая библиотека — twitter-async (лицензия — свободное распространение и использование). Из неё нужно включить в проект файлы EpiCurl EpiOAuth EpiSequence EpiTwitter Далее на twitter.com нужно завести приложение. После успешной регистрации Twitter выдаст полезные данные для oAuth-авторизации, нужны из них два: Consumer key и Consumer secret — это авторизационные данные приложения, их нужно сохранить где-нибудь, …

Read more

Локализация javascript в django

Продолжение записи Интернационализация и локализация django. Для перевода яваскрипта нужно В urls.py добавить урл для подгрузки функций интернационализации url(r’^jsi18n/$’, ‘django.views.i18n.javascript_catalog’, {‘packages’: (‘my_project’,),}) словарь packages должен содержать один из пакетов, указанных в INSTALLED_APPS. Добавить в шаблон подгрузку это скрипта <script type=»text/javascript» src=»/jsi18n/»></script> В нужных местах воспользоваться функциями gettext, ngettext или interpolate Создаём файл с переводами для …

Read more

Интернационализация и локализация django

На примере русского языка.

Factory-метод модели Django

Никак не мог придумать, как озаглавить статью). Просто есть две вещи, которые хотел упомянуть. Создаём метод класса, возвращающий модели класса, который может вернуть и только указанные поля всех удовлетворяющих условиям моделей. from django.db import models from django.contrib.auth.models import User from django.db.models import Q class Exercise( models.Model ): name = models.CharField( max_length = 255 ) is_paired …

Read more

jQuery — обработка событий с использованием Namespaced Events

Часто события навешиваются на элементы так: $(‘.class’).bind(‘click’, function(){}); А когда нужно снять обработчик события с элемента, то делается это так: $(‘.class’).unbind(‘click’); При этом слетят все обработчики события click с элемента. Можно снимать только конкретный обработчик, но это не очень удобно. Гораздо удобнее группировать обработчики в неймспэйсы по функциональности, а потом снимать обработчики всего неймспэйса: $(‘.class’).bind(‘click.namespace’, …

Read more

Передача параметров с сервера к jQuery. Продвинутый способ.

Старый способ передачи параметров с сервер-сайда на клиент-сайд для jQuery обычно выглядел так: <div class=»my-class» property1=»prop1-value» property2=»prop2-value»>текст</div> Потом в скрипте можно было обращаться к свойствам DOM-элемента var property1Initial = $( «.my-class» ).attr( «property1″ ); Есть более интересный способ, использующий jQuery data: <div class=»my-class» data-property1=»prop1-value» data-property2=»prop2-value»>текст</div> В скрипте можно обратиться к этим свойствам так: var property1Initial …

Read more