войти зарегистрироваться

PHPИспользование пользовательских функций в Blitz Template из песочницы

В статье более подробно, чем в документации, написано, как можно использовать пользовательские функции. Большинство шаблонов в проекте содержат много повторяющегося кода, который может незначительно различаться в зависимости от того, где находится пользователь. Например, все, что находится между <head> может отличаться от страницы к странице лишь содержимым тега <title> и иногда чтобы исправить элементы в <head> требуется изменить все шаблоны, что не всегда удобно и быстро для изменения, когда в проекте много шаблонных файлов. Рассмотрим первый пример, согласитесь что очень похожая ситуация есть у многих.

PHPНаследование шаблонов в PHP без использования сторонних библиотек

При разработке Web-приложений мы обязательно сталкиваемся с проблемами рендеринга HTML-страниц. Обычно эти проблемы решает шаблонизатор — собственно PHP или какой-нибудь парсер шаблонов. Если приложение большое и страницы содержат множество блоков, то сложность шаблонов может резко возрасти, а у разработчиков появляется желание упростить работу с ними. В ход идут разные техники, но обычно это выделение в шаблонах повторяющихся блоков и правильная их декомпозиция — включая наследование шаблонов.

Веб-стандартыПокупка facebook шаблона: на что обратить внимание?

Итак, сегодня я хочу поговорить о шаблонах для социальной сети facebook. Это направление сейчас большими шагами идет вперед. Я, кстати, не могу понять, почему Дуров до сих пор не «придумал» что-то подобное и для своего детища. Но сейчас не об этом. Так же, сразу хочу сказать, что 90% (это приблизительное число не имеющее под собой никакого математического основания и написанное с одной лишь целью — заменит слово «много» или «почти 100%») информации взято с одного из любимых моих блогов, о котором я очень часто пишу в своих постах. Так вот в этом блоге есть статья The Facebook Template: What to pay attention?, которая появилась приблизительно в то время, когда я стал facebook'у уделять больше внимания. В общем информация в этой статье мне понравилась и я хочу поделится ею с вами, правда, добавив немного и от себя.

ПрограммированиеСинхронизация представления с коллекцией из песочницы

Во многих современных языках программирования и фреймворках есть специальные классы коллекций, которые умеют оповещать клиентов при каждом своем изменении. Во Flex этот класс носит имя ArrayCollection, в .Net — ObservableCollection, в ExtJS — Ext.util.MixedCollection и Ext.data.Store, в jWidgetJW.Collection. Такие структуры данных просто необходимы при разработке приложений по схеме MVC (Model, View, Controller). Наиболее часто они применяются в качестве модели для разного рода UI-компонентов: списков, таблиц, аккордионов и пр. В сложных приложениях коллекции нужны для связи нескольких слоев системы между собой.

Сегодня расскажу вам об одном оригинальном способе работы с коллекциями.

Веб-разработкаС чего начинается БЭМ?

БЭМ расшифровывается как «Блок Элемент Модификатор». Это подход к web-разработке, позволяющий быстро создавать сайты с гибкой архитектурой. Он знаком многим, кто занимается HTML/CSS вёрсткой.

Изобретённый в Яндексе, БЭМ постепенно проникает и в разработку других компаний.
В данный момент основные мейнтейнеры работают над выводом в Open Source фреймворка, построенного по методологии БЭМ, инструментов и многих полезных утилит.

C++О бедном Александреску замолвлю я слово

Дорого времени суток!
Книга АлександрескуПрочитал я недавно статью одну про Template metaprogramming в С++. И был там такой комментарий: «Ровно то же самое с тем же уровнем настраиваемости можно было сделать на интерфейсах, реализациях, на фабриках, на дефайнах, на конфигах и на еще целой куче вещей». И вообще, мораль статьи и обсуждения — эти шаблоны от Александреску в жизни не шибко-то и нужны.
Я вспомнил свою задачу, где мне его (Александреску) идея об ортогональном проектировании здорово помогла. Хочу с вами ею поделиться.

C++Ставим объекты на поток, паттерн фабрика объектов из песочницы

Доброго времени суток, читатель. Я хочу поделится с тобой знаниями об одном из наиболее часто используемых мною паттернов — фабрики объектов, для данного паттерна так же подходит другое название — виртуальный конструктор.

Что представляет из себя этот паттерн?

Исходя из названия легко догадаться, что это некая, определенная, фабрика (или завод), который создает объекты. Еще раз выражу слово определенная. Как и в реальной жизни фабрика имеет некую специализацию, создавая товары или устройства какого-либо определенного типа. И фабрика, которая выпускает, например, мебель, не может производить, например, еще и компоненты для смартфонов. По аналогии с программированием фабрика объектов может создавать только объекты определенного типа, которые используют единый интерфейс. Самыми главными преимуществами данного паттерна в С++, является упрощение создания объектов различных классов, использующих единый интерфейс. Зачастую библиотекам, которые разрабатывают программисты нужно не только уметь работать с определенными объектами, но и создавать их. Самый очевидный пример загрузка файлов различных форматов. Мы не знаем, какой файл мы будем загружать заранее, но у нас есть список возможных форматов. Пользователь указывает файл, библиотека пытается определить тип файла и вызвать соответствующий загрузчик для него. В большинстве случаев программисты использует конструкции типа switch или if, чтобы определить экземпляр какого класса им необходимо создать. И чем больше возможных вариантов появляется, тем больше разрастается эта конструкция, в последствии превращающиеся в уродливого монстра.

Что нам может предложить фабрика объектов?
Во-первых, простой метод создания объектов, который сократит switch/if до 1ой строчки.
Во-вторых, удобные методы для работы с объектами фабрики. Мы всегда точно можем узнать, зарегистрирован ли у нее определенный класс, количество зарегистрированных классов, а так же удобные методы для добавления и удаления экземпляров классов в фабрику. С помощью фабрики можно ограничивать набор возможных классов, которая она будет создавать, используя некую конфигурацию.

PHPPHP-Матрёшки или Шаблоны для любого сайта из 8 строчек из песочницы

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

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

image

Физически это выглядит так. У меня в апаче настроен хост http://start.local с домашней директорией для браузеров /home/start.local/www, где лежит стартовый корневой файл /home/start.local/www/index.php, который содержит в себе всего одну строчку:

<?load::integration('main.tpl');?>


Этот текст надо читать так: класс load вызывает функцию (метод) load::integration(), в которую передает один параметр – строчку 'main.tpl'.

Где, main.tpl – это имя файла первого пхп-шаблона, а функция load::integration() содержит механизм, который позволяет обрабатывать указанный шаблон. А конкретнее, он позволяет нам прописывать в шаблоне main.tpl, другой шаблон, например default.tpl, в который будет вложен результат выполнения mail.tpl. В свою очередь default.tpl, также может указать вышестоящий шаблон (как изображено на рисунке). Если же вышестоящих шаблонов не указано, то функция load::integration() остановит сборку шаблонов и отдаст общий результат выполнения всех шаблонов в браузер.

Далее я расскажу как все работает и дам ссылку скачать код.

C++С++: шаблон «поводок» из песочницы

Намедни коллега подкинул такую задачку:

«Есть два типа объектов — Human и Dog. Human может владеть некоторой собакой (а может и не владеть). Dog может иметь некоторого хозяина (а может и не иметь). Понятно, что если некоторый объект типа Human владеет некоторым объектом типа Dog, то для данного объекта типа Dog именно данный объект типа Human является хозяином и только он. Причем Dog должен знать, кто его Human, и наоборот. Как бы ты это реализовал?»

Казалось бы, всё просто — заведём два указателя друг на друга у классов Human и Dog и дело в шляпе. Но реализация данной затеи привела меня к идее, как мне кажется, нового шаблона проектирования.

Ненормальное программированиеProperty в С++ на С++ (без применения препроцессора)

Навеяно статьей Property в C++

За пять минут размышлений, как обойтись без директив препроцессора, появилось нечто…

Может ли это «нечто» быть полезным, осмысливать лень. Есть масса недостатков, нет доступа по имени, зато без макросов )

up: геттер-сеттер — сделаны методами класса