суббота, 31 января 2009 г.

Знакомьтесь, symfony

Что такое symfony?
Symfony — фреймворк с открытым кодом, полностью написанный на PHP5. Использование фреймворка позволяет создавать более структурированный, читаемый код и упрощает программирование хотя бы потому, что набор сложных операций часто можно заменить одной строчкой кода. Symfony основан на идее MVC (MVC pattern) и создан для упрощения разработки веб-приложений. Фреймворк включает в себя множество инструментов и классов, призванных максимально сократить время разработки сложного веб-приложения. Также symfony автоматизирует наиболее популярные и частые задачи, что позволяет разработчику уделить больше внимания особенностям данного конкретного проекта. (из официальной документации)
Основные возможности Symfony:
  • MVC архитектура
  • ORM Propel
  • Специальные средства, упрощающие создание шаблонов страниц
  • Управление многоуровневым кэшем (например, можно кэшировать разные части View)
  • Наличие development и production среды (development/production environment). Причем их может быть несколько.
  • Scaffolding — автоматически генерируемый модуль для управления содержимым таблицы из базы данных
  • Человеко-Понятные URL (ЧПУ)
  • Многоязычность (i18n)
  • Поддержка AJAX
  • Еще много чего
Symfony можно установить как на Unix-систему так и на Windows. Все что нужно — установленный на машине веб-сервер и PHP5. Поскольку для работы с БД используется Propel, то отсюда поддержка MySQL, PostgreSQL, Oracle, MSSQL и целого ряда других СУБД. Плюсом является также море конфигурационных файлов, благодаря которым разработчик может контролировать почти все. В Symfony встроены специальные инструменты для тестирования, отладки и автоматического создания документации. (цитата отсюда)

Но начну по порядку. Узнала о symfony я совсем недавно, около полугода назад. Перед нами встал вопрос о выборе фреймворка для нового проекта. Предпочтителен был РНР, также среди требований были: постоянная поддержка со стороны разработчиков, обновления, удобная работа с Ajax и т.д. Вот тогда-то одни человек из нашей команды и заметил symfony. На деле фреймворк оказался очень прозрачным, легким в освоении, быстрым в разработке. Единогласный выбор нашей команды пал на него.

На данный момент существует три стабильные версии symfony. Сравнить версии, просмотреть историю изменений и скачать можно здесь. Основное различие между 1.0 и 1.1 – работа с формами. Различия серьезные и я настоятельно рекомендую работать с версией не ниже 1.1. Документация по работе с формами даже вынесена в отдельную книгу. К сожалению, в электронном виде доступны только некоторые, основные главы. Однако постепенно книга дополняется сначала было только 4 главы, теперь уже 6. В версии 1.2 основные изменения претерпели система роутинга и генератор админской части – он был полностью переписан.

Для изучения азов разработчиками созданы два учебных проекта: самый первый - Askeet для версии 1.0 и более новый Jobeet для версии 1.2. Оба проекта представляют собой пошаговые инструкции и рассчитаны на 24 часа. Именно такое время разработчики считают достаточным для изучения азов фреймворка. Лично я пока работаю с версией 1.1 и для изучения придумала свой собственный проект, который уже практически завершен и скоро выйдет в свет.

Моменты, которые меня очень порадовали:
  • Автоматизация разработки экономит массу времени. Например, для создания нового модуля вам понадобятся 4 новые папки и как минимум 3 новых файла (в силу архитектуры MVC). В symfony вам не придется создавать их вручную.
  • Удобство работы с формами. Конечно, многое вам придется доработать самим, но основная работа выполняется автоматически. Кроме того, очень легко обновить все формы в соответствии с изменениями в базе данных.
  • Оказалось довольно большое сообщество, в том числе и русскоязычное. Если возникнут проблемы, всегда можно найти ответ на форуме.
Есть и большой минус - документация. В книгах все описано очень сжато, некоторые моменты вообще упущены. С переводом на русский язык тоже слабовато. Перевод идет медленнее, чем выпуск новой версии фреймворка.

Если вы колеблетесь между выбором symfony или ZendFramework, то загляните сюда и сравните структуры фреймворков. По крайней мере, если вы – новичок, то начинать с Zend’а я бы не советовала.

Для тех, кто работает с Eclipse – существует плагин Symfoclipse. А для поклонников NetBeans - радостная новость - поддержка symfony появится в NetBeans 7.0.

Возможно, вы ничего не слышали про symfony, однако за рубежом он довольно популярен. Хотя сейчас уже он набирает обороты и у нас – некоторые харьковские конторы тоже уже работают с symfony. Если вы заглянете сюда, то увидите довольно внушительный (и это далеко не полный) список проектов на symfony – кстати, среди них - Yahoo! Bookmarks.

Ссылки, которые могут вам пригодиться.
http://www.symfony-project.org/ - сайт symfony.
http://symfony.org.ua/ - русскоязычный сайт.
http://trac.symfony-project.org/wiki/Documentation/ru_RU - наиболее полное собрание переводов.
http://www.symfony-project.org/plugins/ - поиск плагинов здесь.
http://symfony.artsofte.ru/ - русскоязычный блог разработчиков symfony.
http://propel.phpdb.org/docs/user_guide/ - документация Propel.
http://habrahabr.ru/blogs/symfony/20814/ - пост на хабре - Symfony: Как начать. + там есть много ссылок.
http://groups.google.com/group/symfony-ru - русскоязычная google-группа.

пятница, 30 января 2009 г.

Начало

На днях запустила свой блог и опубликовала первый пост. Начало положено. :)

Главная цель блога - не учить программированию, а поделится личным опытом и решениям, которые я нашла для себя. Поэтому регулярность постов не обещаю. ;) Кроме того, я буду понемногу рассказывать о проектах нашей команды qds team. Мы занимаемся разработкой различных онлайн-сервисов. Большая часть из них является некоммерческими и призвана облегчить жизнь разработчикам. Надеюсь, эти проекты окажутся полезными и вам.

Т.к. занимаюсь я в основном рнр-программированием и версткой (как табличной, по старинке, так и блочной, в последнее время), то и большая часть постов будет об этом. Кстати, мой любимый фреймворк, с которым я работаю - symfony, о нем я тоже буду писать. Вы можете также задавать вопросы, и если я уже сталкивалась с подобной проблемой, я обязательно отвечу.

понедельник, 26 января 2009 г.

Для тех, кто хочет научиться веб-программированию, но не знает с чего начать.

В этом посте попытаюсь описать свои начинания как web-программиста.

Начало: принятие решения.
В одно прекрасное солнечное утро вы просыпаетесь с твердой уверенностью: я буду рнр-программистом! Но что для этого нужно?

Инструменты.
Оговорим сразу некоторые условия: вы работаете в ОС Windows, имеете базовое понятие о программировании (построение алгоритмов, функции, ООП). Чтобы заставить работать рнр-скрипт, вам понадобится Apache, PHP и MySQL. Убъем сразу трех зайцев - поставим Денвер.
(На самом деле использование готовых связок считается плохим тоном и одной из ошибок начинающих программистов. Но лично я не вижу в этом ничего плохого, и тем более не видела тогда, когда только начинала и даже не знала толком, что такое Apache. За всю практику мне до сих пор ни разу не пришлось ставить все это по отдельности. Например, на работе этим занимался системный администратор, как и положено администратору, а я, как программист, приходила на работу и писала код. Также крайне желательным считается разработка на той системе, на которой будет в дальнейшем работать сайт. Почти уверенна, что это будет не windows. Желающие могут поставить себе вторую ось или виртуальную машину.)
Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — проект Дмитрия Котерова, набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет.
Если установка прошла успешно, у вас все готово для работы. Ой, чуть не забыла. Текстовый редактор. Какой угодно. Я пользуюсь PSPad.

Что будем писать?
Писать можно все, что душа пожелает. Начните с простых учебных примеров и какого-нибудь ресурса для начинающих. Когда изучите основы, вам будет достаточно официальной документации РНР в качестве справочника. Существует множество ресурсов по РНР-программированию. Вы можете выбрать в принципе любой (какой посоветует друг; тот, который найдете первым или тот, дизайн которого вам больше понравится), тем более постоянно появляется что-то новое, документация, по которой училась я уже не так актуальна. Лично я для начала использовала лекции интернет-университета INTUIT. Там есть бесплатные курсы, довольно простые и понятные. Надолго меня не хватило правда - решила, лучше (а главное - интереснее) учится на практике и устроилась на работу. Но это как повезет конечно, и смотря у кого какие цели. Мой совет - придумайте сами для себя какое-то интересное задание и по мере выполнения осваивайте необходимые приемы. У меня (помимо работы) таким был мой дипломный проект "Разработка системы для проведения тестирования".

Настройка денвера для работы в локальной сети.
(Это не совсем относится к начинаниям, но все-таки.)Сейчас становится нередкой ситуация, когда в доме несколько компьютеров, объединенных в сеть. Денвер можно настроить для работы по сети. Для этого в папке проекта, с которым хотите работать, создайте файл .htaccess и добавьте в него 2 строки:
## Файл /home/mysite/.htaccess
# dnwr_ip 192.168.0.1
# dnwr_host mysite
Думаю, понятно, что нужно писать IP вашего компа и имя вашего сайта. Затем на другом компе, с которого вы собираетесь работать с проектом, откройте файл C:\WINDOWS\system32\drivers\etc\hosts и добавьте в него следующую строку:
192.168.0.1 mysite
IP и имя сайта те же, что и в .htaccess. Теперь вы сможете обращаться к сайту с обоих компов вот таким образом: http://mysite/.

Желаю всем начинающим удачи.