developer blog – 451 degrees Fahrenheit

Developer Blog

Archives Posts

Серверная архитектура Dailymotion.com

May 20th, 2009 by pilot

4732_dailymotion
Sensio Lab расказала немного о архитектуре видео хостинга Dailymotion

  • 50 web серверов, обрабатывают по 5000 запросов в секунду
  • 17 серверов баз данных
  • 30 memchache серверов, общий объем памяти 210 Гб
  • 1.2 petabytes на хранение данных

Этот список не влючает сервера по кодированию видео и обработке поисковых запросов.

В общей сложности сайт обслуживают 450 шт. серверов.

Filed under Symfony, php having 2 Comments »

Archives Posts

Symfony UA CAMP – небольшой отчет!

May 19th, 2009 by pilot

Совсем не давно завершился Symfony UA CAMP, организованный украинским сообществом symfony.org.ua

Изначально мы планировали до 50 человек, но приехало больше 80, это нас очень порадовало.  Обрадовали нас и орендадатели зала выделили в честь такого большого количества людей и зал побольше, за что им отдельное спасибо!

Мои доклады на конференции:

Read the rest of this entry »

Filed under Conference, Symfony having 16 Comments »

Archives Posts

UA SymfonyCamp в Киеве 16го мая

March 31st, 2009 by pilot

new-copyИтак, 16 мая мы планируем провести конференцию по фреймворку Symfony.

Мероприятие будет проходить по адресу: Киев, ул. Предславинская, 12 (http://predslavinskaya.com.ua/). Партнер и соорганизатор SymfonyCamp - WorldWebStudio

Программа конференции еще составляется.

Желающие посетить мероприятие – пишите на  movchan@gmail.com.

Если же не против выступить с докладом – в письме указывайте название доклада.

Filed under Uncategorized having No Comments »

Archives Posts

Загрузка файлов в backend (админке) Symfony 1.2

February 2nd, 2009 by pilot

symfonyИтак в symfony < версии 1.2, для того чтоб добавить поле загрузки файлов в backend, достаточно было внести изменения в generator.yml, т.е. изменить тип поля. Указываем типа type: admin_input_file_tag после чего поле автоматически конвертится в поле загрузки файлов.

Начиная с версии 1.2.x, больше мы как прежде сделать не можем, так как всем правят формы.

Соответственно вместо внесений в generator.yml, нужно сделать изменения в классе форм.

В моем примере у меня есть класс  Album в котором есть поле Album Cover (обложка альбома), для того чтоб облажка была файловым полем, обвновляем класс формы AlbumForm.class.php (который создается автоматически) и вставляем в него следущее:

 
class AlbumForm extends BaseAlbumForm
{
  public function configure()
  {
    $this->setWidget('album_cover', new sfWidgetFormInputFile());
    $this->setValidator('album_cover', new sfValidatorFile(array('path' => 'uploads/', 'required' => false)));
  }
}

В результате мы получим в панеле управления поле для загрузки файлов обложки.

Оригинал blog.rajatpandit.com

Filed under Symfony having 4 Comments »

Archives Posts

Jobeet.com.ua – работа для ИТ специалистов!

January 21st, 2009 by pilot

jobeet.com.ua - работа для ИТ специалистов Все кто знаком с php фреймворком symfony, думаю следили за проектом jobeet – платформы для публикации вакансий в течении 24 дней.

На сегодняшний момент нельзя посмотреть live версию проекта в интернете и я решил исправить эту ситуацию.

Рад представить все интресующимся и использующих в работе symfony, доработаную версию проекта jobeet до презентабельной версии, которую вы можете поклацать на сайте jobeet.com.ua

В ближайшее время для всех желающих svn проекта http://subversion.assembla.com/svn/ijobeet.

Чего коснулись доработки:

  • Основная проблема – это non-latin кодировки, для которых нет коректной ASCII версии символов. Говоря простым языком, jobeet использует библиотеку iconv для транслитерации всех не латинских символов в ASCII и тут же наступает на габли, связаные с таким перекодированием.  Функция iconv возвращает на славянские символы – пустой результат, по-этому от транслитерации временно пришлось отказаться
  • Из первой проблемы вышла вторая – это поиск, который использует движок Lucene, через прокси фреймворка Zend. И тут ситуация повторяется, так как Lucene использует для создания индекса ASCII снова возникает проблема с non-latin кодировками и корректным из индексированием.
    Благо тут на помощь приходит то, что Zend позволяет использовать для индексирования кодировку UTF-8 (с определенныим ограничениями, о них можно прочесть в офф. документации Zend Framework). Вот собственно переход на utf-8 и был осуществленн для корректной индексации и поиска.
  • Добавлен русский перевод
  • Небольшой ряд мелких исправлений, я не буду на всех останавливаться, практически все исправления описаны в коментариях к коммитам в svn

Все желающие разместить у себя на сайте список ИТ вакансий, в ближайшее время будет доступен API и примеры информеров.

Filed under Symfony having 2 Comments »

Archives Posts

Новинки в symfony 1.2 или движемся к простой архитектуре (Часть 1)

September 5th, 2008 by pilot

Сегодня мы поговорим о новой системе роутинга – роутинг фрейморк.

Роутинги как объекты класса

До symfony 1.2, система роутинга (через класс sfPatternRouting ) хранила роуты в ассоциативном массиве. Старая система отлично работает, но при этом трудно настраиваемая под свои нужды. Для того чтоб дать разработчикам свободу в модификации и улучшении процесса роутинга, в новой версии все роуты хранятся как массив объекта sfRoute.

Роутинг 1.2 совместим с 1.1 и не требует никаких дополнительных изменений в routing.yml файле.

Если вы хотите прописать роуты напрямую в PHP, теперь нужно указывать объект sfRoute вторым аргументов для методов connect(), preprendRoute(), appendRoute(), и insertRouteBefore() :

$routing->connect('foo_bar', new sfRoute('/foo/:bar', array('module' => 'foo', 'action' => 'bar')));

Настройка роута

Конструктор класса sfRoute принимает последним аргументом массив опций, который позволяет легко настраивать роуты. В конфигурационном файле routing.yml , ключ options применяется для замены настроек по умолчанию:

article:
  url:     /article/:id-:slug
  options: { segment_separators: [/, ., -] }  

В опции segment_separators  указываются символы разделители для роута. В предыдущем примере как разделитель  испольются - (дефис), которые в нашем случае так же валиден как и два разделителя встроенных по умолчанию (/ и .). Таких образом допускаются ссылки вида /article/1-my_article_title с переменной id равной 1 и slug равной my_article_title.

Read the rest of this entry »

Filed under Symfony having 4 Comments »

Archives Posts

Symfony, у плагинов появился новый дом!

August 1st, 2008 by pilot

Плагины в symfony – это самый простой способ внести свой вклад в развитие фреймворка symfony. Плагины легко пишуться, пакуются, устанавливаются и они могут переписать все что угодно в фреймворке.

Но существующаю система работы с плагинами не может ответить на вопросы:

  • А есть ли плагин который добавляет “вот такую штуку” ?
  • А поддерживает ли мой любимый плагин новую версию symfony 1.1?
  • А совместим ли плагин с Doctrine?
  • А какие самые популярные плагины?
  • Как я могу помочь доработать плагин?

С текущей системой управления плагинами Trac, на эти вопросы ответить тяжело. Сейчас в системе более 200 плагинов, вот потому и решино было сделать для них отдельную систему.

Read the rest of this entry »

Filed under Symfony having 1 Comment »

Archives Posts

Список команд symfony 1.1 в сравнении с symfony 1.0

July 28th, 2008 by pilot

Команды в symfony 1.1 изменились и теперь используют синтаксис пространства имен. Пока что трудно сказать стало ли от этого все хорошо или нет. Старый набор команд так же работает ввиде алиасов на новые имена команд.

Таблица старых и новых команд: 

Old task name New task name
————————– —————–
clear-cache cache:clear
clear-controllers project:clear-controllers
disable project:disable
downgrade [Not implemented]
enable project:enable
fix-perms project:permissions
freeze project:freeze
init-app generate:app
init-batch [Not implemented]
init-controller [Not implemented]
init-module generate:module
init-project generate:project
log-purge log:clear
log-rotate log:rotate
plugin-install plugin:install
plugin-list plugin:list
plugin-uninstall plugin:uninstall
plugin-upgrade plugin:upgrade
propel-build-all propel:build-all
propel-build-all-load propel:build-all-load
propel-build-db propel:build-db
propel-build-model propel:build-model
propel-build-schema propel:build-schema
propel-build-sql propel:build-sql
propel-convert-xml-schema propel:schema-to-yml
propel-convert-yml-schema propel:schema-to-xml
propel-dump-data propel:data-dump
propel-generate-crud propel:generate-crud
propel-init-admin propel:init-admin
propel-init-crud [Not implemented]
propel-insert-sql propel:insert-sql
propel-load-data propel:data-load
sync project:deploy
test-all test:all
test-functional test:functional
test-unit test:unit
unfreeze project:unfreeze
upgrade project:freeze
Filed under Symfony having No Comments »

Archives Posts

Symfony 1.1 – совместимость с версией 1.0

July 21st, 2008 by pilot

Столкнулся с проблемой, перехода на новую версию.

Проапргрейдил свой проект до версии 1.1, но так как рисование форм было выполнено в версии 1.0, то вылезли ошибки:

Fatal error: Call to undefined function form_tag()
Fatal error: Call to undefined function input_tag()

Для решения этой проблемы в файле apps/your_application/config/settings.yml включаем совместимость с версией 1.0

compat_10: on

Вуаля, теперь конструкции form_tag() и тд, работают и в новой версии.

Filed under Symfony having No Comments »

Archives Posts

Концепт панели администрирования в symfony 1.2

July 17th, 2008 by pilot

Первое что обещают разработчики symfony, первый релиз которой намечается на октябрь месяц, это новая панель администрирования (точнее, новый генератор новой панели)

В разработке появилось первое описание концепта новой панели администрирования.

Пердлагается разделить модель на две группы:

  • Информационные записи (несущие определнные значения)
    - Номер
    - Город
    - Пользователь
    - Страница
  • Контекстные записи (которые прдлагают информцию в контексте, чаще всего “групп” или “категорий”)
    - Група
    - Тэг
    - Категория
    - Тип

Пример такой структуры подробно расписан в концепте, тут же я приведу скриншоты получившейся панели администрированния.

Контекстные записи

contextual-records-1 contextual-records-3
contextual-records-2
Одновременное изменение

batch-edit
Виджеты, табы, глобальная навигация

widgets

Поддержка вложенных множеств

nested-set

Расширение списка действий

advanced-actions

Так же заложена поддержка наследования и и18и

Filed under Symfony having 3 Comments »

« Previous Entries