Zend Framework Day

Zend Framework Day12 ноября, в Киеве, пройдет конференция “Zend Framework Day” – посвященная популярному PHP фреймворку Zend Framework. Среди докладчиков будут непосредственные разработчики компонентов Zend Framework. Событие соберет лучших PHP и Zend Framework специалистов из Украины, России, Белоруссии и других стран СНГ.

С текущим списком тем и докладчиков можно ознакомиться на странице http://frameworksdays.com/event/zend-framework-day-2011/speakers

Событие будет интересно не только тем, кто использует Zend Framework, но и всем веб-разработчикам и PHP программистам в частности.

Место проведения — отель “Казацкий”, г. Киев, ул. Михайловская 1/3 (Площадь Независимости).

Со стоимостю участия и другой необходимой информацией вы можете ознакомиться на странице http://frameworksdays.com/event/zend-framework-day-2011

Для участия в конференции необходимо пройти регистрацию на странице http://frameworksdays.com/register, а затем произвести оплату из личного кабинета.

Наши новости в twitter – http://twitter.com/fwdays
Наша страница в facebook – http://facebook.com/fwdays

Django. Заметки по установке и ссылки на документацию

Это просто заметка на память.

# Установка Django

Официальная документация:
https://docs.djangoproject.com/en/1.3/intro/install/
https://docs.djangoproject.com/en/1.3/topics/install/#installing-official-release

Русскоязычные статьи:
http://mamishev.ru/django-deploy/
http://www.seocoder.org/2011/04/25/ustanovka-djangoapache2mod_wsgi-na-ubuntu-10-10

## Устанавливаем python, пакет MysqlDB і mod_wsgi для Apache2
$ sudo apt-get install python python-mysqldb libapache2-mod-wsgi

## Качаем исходники Django
$ sudo mkdir /usr/share/python/django_1.3
$ cd /usr/share/python/django_1.3
$ svn co http://code.djangoproject.com/svn/django/tags/releases/1.3/ .

## Прописываем путь к Django в питоне
$ sudo ln -s /usr/share/python/django_1.3/django /usr/lib/python2.6/dist-packages/django
(?) $ sudo echo /usr/share/python/django_1.3/django > /usr/lib/python2.6/dist-packages/django.pth

## Создаем симлинки
$ sudo ln -s /usr/share/python/django_1.3/django/bin/django-admin.py /usr/local/bin/

## Проверяем
$ python
>>> import django
>>> print django.get_version()
1.3 SVN-16452

# Документация
Официальный туториал
Книга Марка Пилгрима “Вглубь языка Python
DjangoBook на русском
DjangoBook на английском

Третий дайджест материалов по Symfony2

@Spoil_me_easy: Хочу напомнить: вы просрали уже 25 дней лета. У вас ещё 67. Удачи.

Новости

Вчера вышел первый релиз кандидат Symfony2. Т.е. не за горами релиз первой стабильной версии Symfony2, а значит его потихоньку можно использовать для реализации коммерческих проектов. УРА!

Начал работу PEAR канал Symfony2. На нем доступны отдельные компоненты фреймворка. Если вы используете эти компоненты в нескольких проектах, тогда жизнь станет чуточку проще ;).

В Symfony2 появился интерактивный генератор бандлов, который может сильно облегчить жизнь на начальных стадиях разработки проекта. Посмотрите видео — это магия :).

UPD. Совсем вылетело из головы! С недавнего времени mailing лист по симфони разделили на отдельные mailing листы для первой и для второй версии фреймворка.

Полезные ресурсы

Почитайте блог Ричарда Миллера — за относительно небольшой промежуток времени он успел написать довольно много интересных статей. К примеру, “Symfony2: Moving Away From the Base Controller” — руководство о том как избавиться от наследования базового контроллера и сделать контроллер отдельным сервисом. Использовать почерпнутые из статьи знания следует с умом. Например, Фабьен Потенсьер негативно высказывается о таком подходе.
Continue reading

BlogBundle для Symfony2

После реализации PortfolioBundle, я решил сделать простенький бандл для блога.

Вот что в нем реализовано на данный момент:

  • CRUD записей
  • Подключен редактор разметки markItUp!
  • Реализована подсветка исходного кода в тексте при помощи GeSHi
  • Для создания/редактирования тегов записи написан отдельный тип формы и преобразователь данных
  • Генерация RSS ленты записей при помощи \Zend\Feed (ZF2)
  • Модели и контроллеры покрыты тестами

Ниже я остановлюсь на некоторых моментах более детально.
Continue reading

Бандл для подключения TinyMCE к Symfony2

Дай, думаю, черкну несколько строк о том чем я занимаюсь, а то тишина в блоге :).

Недавно создал простенький бандл для подключения TinyMCE к Symfony2 проектам. Называется он TinymceBundle и лежит на гитхабе.
Continue reading

Использование переменных окружения в конфигах Symfony2

В слайдах презентации Фабьена “PhpBB meets Symfony2” увидел интересный момент:

В этом примере мы задаем пароль к БД в переменной окружения веб-сервера и потом можем получить его в конфиге как “%doctrine.dbal.password%”.
Я проверил на практике — работает (все таки презентация довольно старая).

Хочу немного рассказать о том зачем и почему такой способ передачи секретной информации удобен.

Continue reading

Второй дайджест материалов о Symfony2

Количество новых материалов радует :). Если у вас есть ссылки на интересные статьи/слайды/видео о Symfony2 — оставляйте их в комментариях и я добавлю их в следующий выпуск.

Статьи:

И несколько презентаций:

Continue reading

Дамп сущности в Doctrine2

Решил записать, а то постоянно забываю 🙂

В Doctrine2 дамп сущности или коллекции можно вывести используя статический метод

Doctrine\Common\Util\Debug::dump($entity)

На выходе получим что-то типа:

array
  0 => 
    object(stdClass)[318]
      public '__CLASS__' => string 'Application\PortfolioBundle\Entity\Category' (length=43)
      public 'id' => int 6
      public 'name' => string 'Веб-разработка' (length=27)
      public 'slug' => string 'web-development' (length=15)
      public 'description' => string 'В работе используем PHP (Zend Framework, Doctrine, Smarty, PEAR), JavaScript (jQuery, YUI, MooTools), SQL (MySQL, PgSQL), HTML/XHTML, CSS, багтрекеры и системы контроля версий. С радостью беремся за решение сложных и нестандартных задач.' (length=337)
      public 'projects' => string 'Array(20)' (length=9)
  1 => 
    object(stdClass)[304]
      public '__CLASS__' => string 'Application\PortfolioBundle\Entity\Category' (length=43)
      public 'id' => int 7
      public 'name' => string 'Веб-дизайн' (length=19)
      public 'slug' => string 'web-design' (length=10)
      public 'description' => string 'Первое впечатление о сайте, которое формируется у посетителя, очень сильно зависит от его дизайна и удобства использования. Мы поможем сделать это впечатление наиболее положительным, разработав красивый и функциональный дизайн для Вашего сайта.' (length=452)
      public 'projects' => string 'Array(5)' (length=8)

Подключаем DoctrineMigrationsBundle и DoctrineFixturesBundle к проекту на Symfony2

UPD. После релиза Symfony2 некоторые вещи описанные в этой заметке изменились. Советую читать офф. документацию по работе с DoctrineMigrationsBundle и DoctrineFixturesBundle.

DoctrineMigrationsBundle и DoctrineFixturesBundle необходимы для работы с миграциями и фикстурами Doctrine2 посредством консоли Symfony2. Изначально они были в основном репозитории Symfony2, но недавно их оттуда убрали.

Как подключить?

Для подтягивания кода сторонних либ к проекту я использую скрипт bin/vendors.sh (по аналогии с скриптом из symfony-standard).

В этом скрипте, за инициализацию и апдейт вышеперечисленных либ/бандлов отвечают следующие строки:
Continue reading

lifehack для запуска консоли symfony2

Возможно очевидная фишка, но я додумался к ней примерно час назад.

Когда я работаю с symfony2, то в терминале открыт корень проекта. Для того, чтобы запустить скрипт консоли симфони нужно примерно 9ть и нажатий клавиш (или больше). Ход действий такой:
Набираю “./a” => жму [Tab] => набираю “cons” => жму[Tab] => получаю “$ ./app/console”

А с этим лайфхаком их нажатий на клавиши стало ровно 4ре 🙂
Набираю “./c” и жму [Tab] => получаю “$ ./console”

Кто-то уже наверное догадался, что я создал симлинк “./console” для скрипта “./app/console”.
Команда создания симлинка:

/var/www/test/symfony2 $ ln -s app/console console

Вроде мелочь, а удобно 🙂

PS. Ещё есть такая вещь как ConsoleAutocompleteBundle, но он у меня заработал только частично. Разбираюсь.