ZFConf 2010: History of e-Shtab.ru
Upcoming SlideShare
Loading in...5
×
 

ZFConf 2010: History of e-Shtab.ru

on

  • 1,398 views

 

Statistics

Views

Total Views
1,398
Views on SlideShare
1,019
Embed Views
379

Actions

Likes
0
Downloads
29
Comments
0

4 Embeds 379

http://www.zfconf.ru 240
http://zendframework.ru 134
http://www.slideshare.net 4
http://blog.avolberg.ru 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    ZFConf 2010: History of e-Shtab.ru ZFConf 2010: History of e-Shtab.ru Presentation Transcript

    • История проекта е-Штаб или юзабилити Zend Framework Анатолий Ларин, веб-разработчик компания e-Legion 27 марта 2010 г. Санкт-Петербург
    • Немного о e-Shtab
      • Социальная сеть для бизнеса и СМИ.
      •  
      • Команда: 2,5 человека
      • Активная разработка: 4 месяца
      • Поддержка: 1 год
      • Уникальных посетителей в сутки: 2 000 
      2 из 16
    • Юзабилити — это...
      • Learnability
      • Efficiency
      • Memorability
      • Errors
      • Satisfaction
    • Архитектура из 16 MySQL Zend_Db_Table Zend_Db_Row Zend_Db_Select Zend_Application Zend_Controller Zend_Router Smarty Zend_Config Zend_Feed Zend_OpenID Zend_Pagination
      • Zend Framework —
      • это круто!
      • Но у него есть проблемы :(
      из 16
    • Проблемы
        • PHtml
        • XSS в шаблонах
        • Unicode и locale
        • Notice, Warning вместо Exception
        • Сложный к восприятию URL-Router
        • Сложность настройки enviroment
        • Нет инструментов для консольных задач
        • Реиспользуемость
      из 16
      • Не очень удобный синтаксис
      • Слишком много возможностей
      • Верстальщики — не программисты
      Phtml <?php foreach ($this->books as $key => $val): ?> <tr> <td><?php echo $this->escape($val['author']) ?></td> <td><?php echo $this->escape($val['title']) ?></td> </tr> <?php endforeach; ?> {foreach from=$books item=$val} <tr> <td>{$val.author}</td> <td>{$val.title}</td> </tr> {/foreach} X V из 16
      • Программисты забывчивы !
      XSS в шаблонах X V {$user_entered_data} &lt;script&gt;alert(‘Ha-ha I got your cookies’)&lt;/script&gt; из 16
      • setlocale(LC_ALL, $appconfig->locale);
      • setlocale(LC_NUMERIC, 'en_US', 'en');
      • Zend_Registry::set('locale', new
      • Zend_Locale($appconfig->locale));
      • iconv_set_encoding(&quot;internal_encoding&quot;, &quot;UTF-8&quot;);
      • iconv_set_encoding(&quot;output_encoding&quot;, &quot;UTF-8&quot;);
      • mb_regex_encoding(&quot;UTF-8&quot;);
      • mb_internal_encoding(&quot;UTF-8&quot;);
      Unicode и locale из 16
      • Мы поняли, что Warning это плохо, когда было написано 80% проекта.
        • Notice, Warning вместо Exception
      V из 16 set_error_handler ( &quot;error_to_exception&quot;, E_ALL );
      • $router->addRoute(
      • 'company_edit',
      • new Zend_Controller_Router_Route (
      • '/company/:company_id/edit/:submenu',
      • array('controller' => 'company', 'action' => 'edit’,
      • 'submenu'=>'info'),
      • array('company_id' => 'd+')
      • )
      • );
      • $router->addRoute(
      • 'user_profile',
      • new Zend_Controller_Router_Route(
      • '/user/:id',
      • array('controller' => 'user', 'action' => 'profile'),
      • array('id' => 'd+')
      • )
      • );
        • Сложный к восприятию URL-Router
      X из 16
      • array('adminko/calendar/post(/(?P<holiday_id>d+))?', 'adminko.calendarpost'),
      • array('adminko/calendar/post/global(/(?P<event_id>d+))?', 'adminko.calendarpostglobal'),
      • array('adminko/poll/add', 'adminko.polladd'),
      • array('adminko/poll/(?P<poll_id>d+)', 'adminko.pollone'),
      • array('adminko/poll/removequestion/(?P<question_id>d+)?', 'adminko.pollremovequestion'),
      • array('adminko/poll/removeanswer/(?P<answer_id>d+)?', 'adminko.pollremoveanswer'),
      • array('adminko/poll/(?P<poll_id>d+)/activate', 'adminko.pollactivate'),
      • array('adminko/poll/(?P<poll_id>d+)/close', 'adminko.pollclose'),
        • Сложный к восприятию URL-Router
      V из 16
      • PHP
      • Apache
      • MySQL
      • Smtp server
      • Конфигурационные файлы
        • Сложность настройки enviroment
      X V
      • PHP
      из 16
      • Разделяем bootstrap, на веб и консольный
      • Придумываем структуру директорий
        • Нет инструментов для консольных задач
      из 16
      • Н е поощряется создание независимых подключаемых модулей
      • Нет встроенного механизма сигналов
      • Ограниченность возможностей PHP
        • Реиспользуемость
      из 16
    • ? ! Анатолий Ларин [email_address] http://alarin.blogspot.com @anatoliy_larin из 16