23.09 2010
MongoDB - это документная база данных, написанная на c++. Для обмена данными с клиентом использует JSON, а хранит в двоичном формате BSON. По методу обмена данными эта база данных относится к NoSQL, т.е. использует не классический метод для взаимодействия реляционных баз данных и клиента (без SQL).
Для установки в Ubuntu достаточно прописать в консоле:
sudo apt-get install mongo
По окончании установки, для проверки работоспособности, выполните в консоле:
mongo
Вы должны увидеть примерно следующее приветствие:
MongoDB shell version: 1.2.2
type "exit" to exit
type "help" for help
Читать дальше
09.09 2010
Если у вас в команде нет тестировщиков, или вы сами тестировщик и очень ленивы, чтобы организовать нормальные тесты через jMeter или ab, но протестировать под нагрузкой свой любимый проект вам очень хочется, то это статья для вас =).
Подготовка
Все производимые далее действия идут с предположением, что у вас стоит один из дистрибутивов Linux
Тестирование мы будем проводить с помощью программы siege. В ubuntu ее установить можно командой:
sudo apt-get install siege
Если у вас не ubuntu, попробуйте установить из репозитория вашего дистрибутива с помощью штатных программ (yum, emerge), или скачать отсюда
Siege обладает достаточной функциональностью, чтобы определить максимальную пропускную способность вашего сервера.
Читать дальше
29.08 2010

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.
Builder (Строитель) относится к классу порождающих паттернов. Он используется для отделения процесса конструирования сложного объекта от его представления, так что в результате одного и того же конструирования могут получаться различные объекты.
Читать дальше
27.08 2010
Traits - это механизм повторного использования кода. Был разработан как альтернатива подмешиванию (mixin) и, в некотором роде, множественному наследованию, так как позволяет разработчику более свободно повторно использовать методы объявленные в иной иерархии классов. Семантика комбинирования traits и классов специально разработана для избежания типичных проблем связанных с множественным наследованием и технологией mixin. На момент написания статьи, данная технология находиться в trunk и будет включена в новые сборки dev версии PHP 6 (также возможно и в 5.3.x)
Пример использования
trait Speaker {
public function sayHello() {
echo 'Hello World!';
}
}
class Base {
use Speaker;
}
$test = new Base();
$test -> sayHello();
Читать дальше
26.08 2010

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.
Prototype (Прототип) относиться к классу порождающих паттернов. Он используется для задания вида создаваемых объектов на основе объекта прототипа, от которого происходит передача внутреннего состояния. Он сродни фабричному методу, позволяет избавиться от жесткой привязки к классам, и, как следствие, вязкости кода.
Читать дальше
20.08 2010
Когда перед вами встает задача оптимизации sql запросов, важно измерять "чистое" время запроса, чтобы определить прирост или регресс. Классическим способом заставить MySQL игнорировать кэш является ключевое слово SQLNOCACHE.
SELECT SQL_NO_CACHE * FROM `table` t LEFT JOIN ...
Если же вам нужно оптимизировать пачку запросов, это решение может быть не удобным. В таком случае можно отключить кэширование полностью, выполнив запрос:
SET GLOBAL query_cache_size=0;
-- заново включить можно перезапустив MySQL или командой
SET GLOBAL query_cache_size=1024*1024*32;
Я думаю не стоит говорить, что использование второго способа на продакшен сервере чревато проблемами
Читать дальше
16.08 2010

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.
Singleton (Синглтон, одиночка) относиться к классу порождающих паттернов. Он используется для создания всего одного экземпляра класса, и гарантирует, что во время работы программы не появиться второй. Например в схеме MVC, зачастую этот паттерн используется для порождения главного контроллера (фронтового)
Читать дальше
14.08 2010

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.
Factory Method относиться к классу порождающих паттернов. Они используются для определения и поддержания отношений между объектами. Фабричные методы избавляют проектировщика от необходимости встраивать в код зависящие от приложения классы.
Читать дальше
08.08 2010

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.
AbstractFactory относиться к классу порождающих паттернов. Его основное назначение - предоставить интерфейс для создания семейства взаимосвязанных объектов, не специфицируя их классы.
Читать дальше
07.08 2010

Паттерн проектирования (design pattern) - это общее типовое решение некоторой проблемы, многократно повторяемое в процессе проектирования архитектуры программного продукта. Они показывают отношения и взаимодействия между классами, позволяют сделать систему гибкой и легко изменяемой. За счет их правильного использования повышается коэффициент использования готовых решений.
Я буду постепенно описывать каждый паттерн и добавлять его в список на этой странице.
Я предполагаю, что читатель осведомлен о понятиях ООП и знает в чем разница между интерфейсом и абстрактным классом. Знает что такое полиморфизм, инкапсуляция и наследование. Если вы не уверены в своих силах, рекомендую к прочтению статью из википедии "Объектно-ориентированное программирование".
В процессе описания я буду использовать UML, для графического изображением классов и их отношений. На этот счет не стоит беспокоиться, даже если вы не сталкивались с ним раньше, его можно интуитивно понять.
Понятия
- Здесь и далее в статьях я буду употреблять "паттерн" (pattern) вместо русского аналога "шаблон"
- Инстанация (instanate) - процесс создания объекта определенного класса.
- Код клиента - это код программиста, который будет работать с нашей частью программы по принципу черного ящика, т.е. только через публичный интерфейс
Список
Порождающие
Структурные
Паттерны поведения
Читать дальше