The 1st Russian Zend Framework Conference
The 1st Russian Zend Framework Conference was held March 27, 2010, in St. Petersburg, Russia. The event was attended by leading web developers from around the world, including the representatives of Web Development Company Terranet.md.
The event lasted all day long, with a short break for lunch. Despite the variety of topics and the abundance of information provided by speakers, the meeting was upbeat, enlightening, valuable and exceptionally well organized. Thanks to the organizers for powerful conference, welcoming atmosphere, and excellent opportunity for attendees to meet ZF practitioners and web programmers previously known via online forums or blogs. Exceeded all expectations.
Georgy Turevich (Wizartech, Lead Web Programmer) presents ZFconf 2010 speakers.
The presentations covered various aspects of Zend Framework. Let’s take a look at them in chronological order.
-
- Overview of the demo application;
- Description of the testing environment;
- Overview of the tools/instruments required for testing;
- Overview of the parameters for testing, and the measurements obtained before testing.
- Methods which do not influence Zend Framework directly (accelerators, web server setup, etc);
- Deleting of require* from Zend Framework code;
- Uniting Zend Framework classes in one big file;
- Autoloading and Zend_Loader;
- Caching of objects Zend_Config, Zend_Locale, Zend_Acl, Zend_Navigation, caching of pages and blocks, caching of database queries, etc;
- Using Memcache;
- Recommendations from Zend Framework developers;
- How Zend Server can help building high load applications.
- Pattern description, default schema
- Pattern implementation mistakes
- Detailed description of each component: Model, View, Controller
- Brief description of components and their roles in the framework
- Zend_Controller_Front
- Zend_Controller_Action
- Zend_Controller_Dispatcher_Standard
- Zend_Controller_Action_Helper_ViewRenderer
- Zend_View
- Zend_Controller_Request_*
- Zend_Controller_Response_*
- «Thin» model
- «Thick» model
- Abstraction levels/layers
- Service Layer
- Data Access Layer
- Popular data access patterns
- Data Gateway (Table Data Gateway, Row Data Gateway)
- Active Record
- Data Mapper
- Dependency Injection
- Factories, Zend_Registry
- Container
- The historical background and key features of the project
- Choice of ZF as a technical platform for startup: benefits and drawbacks
- Evolution steps of the platform
- Current architecture of the project and future plans
- Message Queues history. Brief overview of JMS.
- Advantages of using MQ
- Examples of when to use MQ. Examples of when MQ should not be used.
- Patterns
- Interfaces overview
- Adapters overview
- Advantages of using different adapters (array, db, mq server)
- Future plans
- List of servers (main idea is showing a large number of servers that can be used)
- Key features of ActiveMQ, MemcacheQ, etc
- Sending e-mail messages is taken as typical example
- Collecting and processing statistics data from several servers, using MQ server
- Example of image uploading in social networks
- Options and their functions
- Code examples
- Examples of how to create your own tasks for Doctrine Cli
- Examples of how to work with Doctrine Cli
- Example of simple schemes with binding and inheritance
- Speaker pointed out their inputs in the models’ autogeneration in modular application that correspond to Zend Framework standard
- Example of how to work
- Code example
- Examples of how to connect it and how to work with it
- Examples of routers, examples of simple applications
- Advantages and disadvantages in terms of SEO
- Plugin or action helper – what for and how to use
- Code example
- How to translate validators messages
- How to add gettext through poedit and why other ways of localization are inconvenient
- Speaker offered a few lines of codes leading to significantly faster application performance
- Zend_Application, Zend_Config, Zend_Controller, Zend_Router
- MySQL, Zend_Db_Select, Zend_Db_Table, Zend_Db_Row (Table and Row often performed the Model role)
- Smarty (did not use PHTML because of its high flexibility, possibility for data changing in the template)
- Zend_Feed, Zend_Pagination, Zend_Openid
- Smarty autoescapingProgrammer forgetfulness became a concern as the programmers missed out too many XSS. The problem was solved via patching the Smarty by adding autoescaping of variables.
- Console tasksZend Framework does not provide tools for creating console tasks (crontab, management tasks).
- Character encoding problems, 10 unclear lines in init.php
- Unintuitive URL-Router (upside-down)Router-configuration is not clear and obvious
- Notice, warning, instead of exceptionNo attention was paid to this problem at first. As a result, the programmers have not developed the correct coding style, which they have in other programming languages, where the wrong code is denied by compiler/interpreter.
- Code Reusability. Just few segments of the code can be used again. Many new functionalities can be created by copy’n'paste of the existing code.
- Changes in architecture and design
- MVC Implementation (Model – View – Controller )
- Plugins architecture
- Other components (Zend_Acl, Zend_Controller, Zend_Controller_Router, Zend_Form, Zend_Session, Zend_Soap, Zend_View, Zend_Mail)
- jQuery Core and jQuery UI setup enviroments
- Automation work with jQuery UI components
- Working with Autocomplete
- Zend_Form customization with jQuery UI
- Looking ahead to the future!
- Dojo-enviroment setup
- Automating work with widgets
- Working with Autocomplete
- Customization with Dijit-components
- Generation of data in specialized format (dojo.data)
- Pre-deployment testing and preparation
- Looking ahead to the future!
Zend Framework Proposal Lifecycle
Speaker: Alexander Veremyev (Zend Technologies, Zend Framework Core Developer)
The speaker gives a detailed description of Zend Framework proposal lifecycle and provides a clear understanding of the steps required to get proposal included into ZF. The presentation also focuses on the aspects involved in the process of proposal examination and modifying, the lifecycle steps and states, and ZF repository sections/areas meant to support the proposal lifecycle. Besides, the speaker offered additional recommendations helping to promote the proposal.
Zend Framework Applications Performance
Speaker: Alexander Mahomet (ZendFramework.ru Community Founder)
This presentation shows how certain techniques can improve the performance of ZF applications. The speaker will create demo application and apply the mentioned techniques. The report will discuss the following aspects:
1. Problem overview:
2. Techniques and methods for performance improvement (after each step – new measurements will be done, the sequence may be changed):
Zend Framework And MVC, Model Implementation
Speaker: Alexander Steshenko (Norada Corporation, PHP Programmer) and Kirill Chebunin (Equelli Ltd, PHP Programmer)
1. MVC Pattern
2. MVC Pattern Implementation In Zend Framewok
3. Model Implementation
4. Using Zend Framework Application with Service Layer + Data Mapper + DI Container + Zend_Application
5. Options, specific features, problems
Fotostrana.ru: Prototyping With Zend Framework (history of ZF usage in highload project)
Speaker: Leonid Zhavoronkov (Fotostrana.ru, Teamlead)
The speaker will discuss the history of ZF usage in highload-project (12M hits, 200K hosts):
Using Message Queues In Everyday Projects (Zend_Queue)
Speaker: Denis Baklikov (’Obnovlenie’ Travel Agency, Web Developer)
1. What are Message Queues
2. Zend_Queue overview
3. MQ-servers overview
4. Examples of projects using MQ
Zend Framework And Doctrine
Speaker: Stepan Tanasiychuk (Stfalcon.com web studio, chief)
1. Connecting Doctrine to ZF-project (via resource and directly)
2. Doctrine_Cli script
3. Generation of models and mappers using yaml schemes. Inheritance. Migrations mechanism.
4. Adapters for Zend_Paginator and Zend_Auth
5. Caching of query results
Zend Framework And Multilanguage
Speaker: Stepan Tanasiychuk (Stfalcon.com web studio chief)
1. Adding language in the URL using a custom router (author – Konstantin Yurevich), standard router and hostname router. Advantages and disadvantages of each approach
2. Plugin or action helper for Translator initialization
3. Why gettext? Nuances and hacks in the implementation of multilanguage using gettext.
4. Caching
History of e-Shtab.ru
Speaker: Anatoliy Larin (e-Legion, Web Developer)
1. Architecture:
2. Problems & difficulties:
What New Zend Framework 2.0 Brings Us
Speaker: Nadezhda Blinova (Wizartech, Programmer)
The latest details and updates will be obtained from ZF developers in the course of report preparation.
ZF Integration With jQuery And Dojo Toolkit JavaScript-frameworks
Speaker: Georgy Turevich (Wizartech, Lead Web Programmer)
The speaker takes a detailed look at integration aspects and provides practical examples and visual demonstrations:
1. ZF + jQuery, ZF + Dojo Toolkit features examination
2. jQuery
3. Dojo Toolkit
4. Practical examples
In conclusion, we would like to thank Terranet.md top managers for financial support and the opportunity to attend the event.