Sticky post
Yii vs Symfony 2
Monday, February 20, 2012 7:22:51 AM
Не так давно, я хотел перейти с Yii на более серьёзный framework, коим для себя считал Symfony 2. Но после сравнения передумал. Теперь Yii для меня более чем серьёзный инструмент.
Документация
Yii 1.1.10: Полная русская и английская докуменация
Symfony 2: Полная английская и не полная русская документация, как по Symfony так и по ORM
Парадигма http://habrahabr.ru/qa/16766/
Yii 1.1.10: MVC (ServiceLocator)
Symfony 2: Dependency Injection (IoC-контейнер framework)
Cache
Yii 1.1.10 http://www.yiiframework.com/doc/guide/1.1/en/caching.data:
ORM
Yii 1.1.10 http://www.yiiframework.com/doc/guide/1.1/en/database.overview:
Безопасность
Yii 1.1.10:
Routing
Yii 1.1.10:
Symfony 2:
Резюме
Система прав в Sf2 не в отличие от Yii не подходит для систем, где необходимо динамически создавать роли. Работа с DB в Yii более простая, но не такая гибкая как в Sf2, где введена абстракция между полями модели и полями в DB.
Система кеширования, чуть более продвинутая в Yii.
Sf2 IoC-контейнер, при чем не в классическом понимании, а IoC-контейнер без указания типа контейнера, что нарушает принцип SOLID(Принцип разделения интерфейса) и ООП(Инкапсуляция). Как мне кажется, это попытка сделать на web-ориентированном языке framework для разработки Enterprise приложений, без учета специфики цикла работы web-приложения.
Просто ссылочки на разные сравнения
http://www.cmsmagazine.ru/library/items/programming/php-frameworks-compare/
http://baron.su/archives/272-PHP_frejmvorki_sravnenie_Yii,_Kohana_KO3,_CodeIgniter_CI,_OnPHP,_Symfony2.html
http://paul-m-jones.com/archives/1222
http://habrahabr.ru/blogs/php/50341/
Цитаты
Документация
Yii 1.1.10: Полная русская и английская докуменация
Symfony 2: Полная английская и не полная русская документация, как по Symfony так и по ORM
Парадигма http://habrahabr.ru/qa/16766/
Yii 1.1.10: MVC (ServiceLocator)
Symfony 2: Dependency Injection (IoC-контейнер framework)
Cache
Yii 1.1.10 http://www.yiiframework.com/doc/guide/1.1/en/caching.data:
- данные (по условиям)
- запросы
- модели (ActiveRecord)
- фрагменты
- страницы
- страницы http://symfony.com/doc/current/book/http_cache.html
- модели http://www.doctrine-project.org/projects/orm/1.2/docs/manual/caching/pl#caching
ORM
Yii 1.1.10 http://www.yiiframework.com/doc/guide/1.1/en/database.overview:
- ActiveRecord
- Scopes
- Relations Native(belongsTo, hasOne, OnetoMany, ManytoMany)
- Migrations
- DateMapping
- Repositories, Filters (очень не удобные по сравнению со Scopes и предназначены для статичного фильтра, а не для динамичных запросов) http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/filters.html
- Relations Collection interface(One-To-One, One-To-Many, Many-To-One, Many-To-Many)
- Migrations
Безопасность
Yii 1.1.10:
- Role Based Access Control (принцип подходит для создания системы с динамическим созданием ролей) http://www.yiiframework.com/wiki/136/getting-to-understand-hierarchical-rbac-scheme/
- Validating http://www.yiiframework.com/doc/guide/1.1/en/form.model#declaring-validation-rules
- URI Tokens - CSRF http://www.yiiframework.com/wiki/274/how-to-validate-csrf-token-with-session/
- Можно прикрутить Twig http://habrahabr.ru/blogs/yii/72125/)
- Access Control Lists http://symfony.com/doc/2.0/book/security.html
- Validating http://symfony.com/doc/2.0/book/forms.html#adding-validation
- URI Tokens - CSRF http://symfony.com/doc/2.0/book/forms.html#csrf-protection
Routing
Yii 1.1.10:
- Autorouting http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#route
- GET by default
- Configure REST http://www.yiiframework.com/doc/guide/1.1/en/topics.url
Symfony 2:
- Only configurable REST http://symfony.com/doc/2.0/book/routing.html
Резюме
Система прав в Sf2 не в отличие от Yii не подходит для систем, где необходимо динамически создавать роли. Работа с DB в Yii более простая, но не такая гибкая как в Sf2, где введена абстракция между полями модели и полями в DB.
Система кеширования, чуть более продвинутая в Yii.
Sf2 IoC-контейнер, при чем не в классическом понимании, а IoC-контейнер без указания типа контейнера, что нарушает принцип SOLID(Принцип разделения интерфейса) и ООП(Инкапсуляция). Как мне кажется, это попытка сделать на web-ориентированном языке framework для разработки Enterprise приложений, без учета специфики цикла работы web-приложения.
Просто ссылочки на разные сравнения
http://www.cmsmagazine.ru/library/items/programming/php-frameworks-compare/
http://baron.su/archives/272-PHP_frejmvorki_sravnenie_Yii,_Kohana_KO3,_CodeIgniter_CI,_OnPHP,_Symfony2.html
http://paul-m-jones.com/archives/1222
http://habrahabr.ru/blogs/php/50341/
Цитаты
Originally posted by "http://habrahabr.ru/blogs/symfony/132211/#comment_4389512":
Symfony очень удобный и производительный фреймворк. Даже метафреймворк. На его базе можно создавать множество различных приложений. В том числе и фреймворков. Например, Silex.
Есть просто некоторые вещи, которые неудобно делать. А именно, проекты где контент меняется в зависимости от авторизации пользователя. Причем когда этого контента много. Как в случае с хабром. И то это проблема больше реализации кэша, чем самого Symfony. Ничто не мешает написать свою оболочку.
Изучить дома, что бы написать путное приложение
Новый мой фаворит.
Saturday, February 18, 2012 8:44:13 AM
Недавно открыл для себя новую IDE: Sublime Text.
Где же он раньше был?

Скачать: http://www.sublimetext.com/download
Расширения, искать и ставить лучше через менеджер пакетов:
Достоинства:
Подправил под себя тему Dark Soul, сделал вкладки квадратными.
Если кому нужно - обращайтесь.
Где же он раньше был?

Скачать: http://www.sublimetext.com/download
Расширения, искать и ставить лучше через менеджер пакетов:
- Менеджер пакетов http://wbond.net/sublime_packages/package_control
- Mercurial: http://code.thejeshgn.com/hg4subl
- Autocomplete: https://github.com/kemayo/sublime-text-2-git/wiki
- Пакеты online: http://wbond.net/sublime_packages/community
Достоинства:
- Быстрый даже на огромных проектах
- Поддержка разметки и автодополнения огромного кол-ва языков
- Плагины для всех возможных SVC
- Консоль команд прям в редакторе
- Кроссбраузерность
- Встроенный скриптовый язык на Python
- Скролл с отображением миниатюры всего файла (очень удобная функция)
Подправил под себя тему Dark Soul, сделал вкладки квадратными.
Если кому нужно - обращайтесь.
JavaScript Singleton pattern
Friday, February 3, 2012 5:55:35 AM
На одном собеседовании у меня попросили реализовать паттерн singleton через new на JS.
Т.к. было много волнения моего, я и не мог подумать, что просили всего лишь написать:
По мне, так это не является реализацией паттерна singleton ... но суть не в том. О том что просили написать "так"(см выше), я узнал лишь после того, как реализовал этот паттерн через new по свеому:
Забавно, но вот это разное понимание паттерна, повысило мой skill level -))
Т.к. было много волнения моего, я и не мог подумать, что просили всего лишь написать:
Singleton = new function () {}
По мне, так это не является реализацией паттерна singleton ... но суть не в том. О том что просили написать "так"(см выше), я узнал лишь после того, как реализовал этот паттерн через new по свеому:
function Singleton() {
var singleton = {};
Singleton = function () { return singleton; }
return singleton;
}
new Singleton() === new Singleton() // true
Забавно, но вот это разное понимание паттерна, повысило мой skill level -))
Debian services
Saturday, May 21, 2011 5:24:34 PM
/etc/init.d
apt-get install sysv-rc-conf
or
apt-get install sysvconfig
apt-get install sysv-rc-conf
or
apt-get install sysvconfig
LNP
Thursday, May 19, 2011 7:22:04 PM
NGINX
http://wiki.nginx.org/Install:
For Ubuntu 10.04 and newer:
If you get an error about add-apt-repository not existing, you will want to install python-software-properties.
For other Debian/Ubuntu based distributions, you can try the lucid variant of the PPA which is the most likely to work on older package sets.
-----------------------------
php5-fpm
http://www.zagirov.name/debian-testing-install-php5-fpm/:
Исправляем в файле fpm/DEBIAN/control
Теперь можно собрать пакет обратно и поставить его.
http://wiki.nginx.org/Install:
For Ubuntu 10.04 and newer:
sudo -s nginx=stable # use nginx=development for latest development version add-apt-repository ppa:nginx/$nginx apt-get update apt-get install nginx
If you get an error about add-apt-repository not existing, you will want to install python-software-properties.
For other Debian/Ubuntu based distributions, you can try the lucid variant of the PPA which is the most likely to work on older package sets.
sudo -s nginx=stable # use nginx=development for latest development version echo "deb http://ppa.launchpad.net/nginx/$nginx/ubuntu lucid main" > /etc/apt/sources.list.d/nginx-$nginx-lucid.list apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C apt-get update apt-get install nginx
-----------------------------
php5-fpm
http://www.zagirov.name/debian-testing-install-php5-fpm/:
wget http://snapshot.debian.org/archive/debian/20100801T150833Z/pool/main/p/php5/php5-fpm_5.3.3-1_amd64.deb dpkg -x php5-fpm_5.3.3-1_amd64.deb fpm dpkg -e php5-fpm_5.3.3-1_amd64.deb fpm/DEBIAN/
Исправляем в файле fpm/DEBIAN/control
sed -i 's/php5-common (= 5.3.3-1)/php5-common (>= 5.3.3-1)/g' fpm/DEBIAN/control
Теперь можно собрать пакет обратно и поставить его.
dpkg -b fpm/ php5-fpm_5.3.3-1_amd64_patched.deb dpkg -i php5-fpm_5.3.3-1_amd64_patched.deb
