Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.
Занимаясь разработкой интерфейсов, мы постоянно разбираемся как и что устроено. Вы задумывались, сколько времени у вас уходит на то, чтобы найти нужный фрагмент кода, который отвечает за компонент на странице? В своем докладе я покажу как это можно сделать за один клик, а так же раскрою технические детали.
Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
Елена Шишкина, ведущий программист Деньги Mail.Ru. Она покажет практический пример лени как двигателя прогресса в отдельно взятом веб-проекте:
- Надоело писать код? Будем думать, как его не писать!
- Боремся с однотипным кодом. Боремся с неоднотипным кодом.
- Код, которого не существует, и код, который существует.
- Следите за руками: программируем на конфигах!
- Как жить дальше?
This document summarizes the results of a national survey of Latino registered voters conducted in March 2010. Some key findings include:
- A majority said the most important issue for President Obama and Congress to address is jobs and the economy.
- Large majorities felt it was important for Congress to pass immigration and health care reform before the 2010 elections.
- Approval of President Obama remained strong, with over 60% approving of his job performance.
- Democrats maintained a strong advantage over Republicans in terms of which party Latino voters felt could best address issues.
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.
Занимаясь разработкой интерфейсов, мы постоянно разбираемся как и что устроено. Вы задумывались, сколько времени у вас уходит на то, чтобы найти нужный фрагмент кода, который отвечает за компонент на странице? В своем докладе я покажу как это можно сделать за один клик, а так же раскрою технические детали.
Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
Елена Шишкина, ведущий программист Деньги Mail.Ru. Она покажет практический пример лени как двигателя прогресса в отдельно взятом веб-проекте:
- Надоело писать код? Будем думать, как его не писать!
- Боремся с однотипным кодом. Боремся с неоднотипным кодом.
- Код, которого не существует, и код, который существует.
- Следите за руками: программируем на конфигах!
- Как жить дальше?
This document summarizes the results of a national survey of Latino registered voters conducted in March 2010. Some key findings include:
- A majority said the most important issue for President Obama and Congress to address is jobs and the economy.
- Large majorities felt it was important for Congress to pass immigration and health care reform before the 2010 elections.
- Approval of President Obama remained strong, with over 60% approving of his job performance.
- Democrats maintained a strong advantage over Republicans in terms of which party Latino voters felt could best address issues.
This document discusses the placement of adjectives in Spanish sentences. It notes that unlike in English, where adjectives typically come before nouns, in Spanish adjectives usually come after the noun they describe. Some examples are provided to illustrate this pattern of placing the adjective after the noun in Spanish, such as "Margarita es una chica artistica" and "Pablo es un estudiante inteligente."
The document discusses depression and suicidal thoughts. It describes how life makes the author want to shoot themselves with a gun and how they hate the brightness of the sun. The author feels that life hates them, even for their good deeds. They imagine falling from a hilltop, possibly from a gunshot or just as a thought. The document conveys that life is rough but advises being tough and hiding in a dark corner.
Original Power Point retrieved from http://www.mrsshirley.net/powerpoint/realidades/grammar/real1grammar/real1grammar.htm. Educational use granted if credit given to author.
The document discusses black box testing techniques for software quality assurance including equivalence partitioning, boundary analysis, and state transition testing. Equivalence partitioning involves dividing input and output values into partitions that are expected to produce the same results. Boundary analysis tests partition boundaries and invalid values just beyond the edges. State transition testing uses a model of component states, transitions, events, and actions to ensure all state transitions are tested. Decision tables can also be used to systematically test combinations of conditions and expected actions. Examples are provided to illustrate these black box testing strategies.
This document discusses Sam Spector's personal learning network for anthropology, which includes 5 key resources: 1) Slideshare.net for presentations and documents, 2) Topdocumentaryfilms.com for anthropology documentaries, 3) TED.com for ideas worth spreading, 4) Metacrawler.com for combining search results, and 5) Kosmix.com for exploring topics through relevant multimedia. These resources provide Sam with a variety of content like videos, images, and documentaries to support his learning about anthropology.
The Evolution of the National Oil Fund of Kazakhstan: Inception, Utilization, Expectations. Presentation at the George Washington University on April 28, 2016.
The document summarizes a case study of transforming a leading manufacturer of polyfilms, Polyplex, into a process-based organization. Polyplex was facing challenges like poor delivery performance, service levels, and high costs. PBO Plus helped by converting Polyplex into a customer-centric organization focused on supply chain management and process-centric people organization. Key changes included establishing efficiency, effectiveness, and competitive edge. This transformation improved delivery by 25-90%, customer satisfaction by 25-75%, and value-added ratio by 2-5 times while reducing manpower by 30-50%.
Markkinointityökalujen määrä on räjähtänyt käsiin. Käytämme päivittäisessä työssämme yhä useampia erilaisia työkaluja, jotka keräävät markkinointidataa. Samalla kuitenkin datan analysointi vaikeutuu ja vaatii yhä enemmän resursseja.
Miten lähdemme liikkeelle? Tarvitaanko aina kivuliaan pitkiä projekteja vai onko löydettävissä nopeita voittoja markkinointianalytiikan tehokkuuden kasvattamiseksi? Mikä on tärkeintä: työkalut, raportit, analysointi vai toimenpiteet?
The document provides an overview of strategies and best practices for doing business with Aboriginal communities in Canada. It discusses developing a culturally appropriate business plan and understanding differences from mainstream markets. It outlines key communication differences in Aboriginal cultures like indirect communication styles. Common success factors include commitment from senior leadership, long-term relationship building, and cross-cultural training. Common mistakes are a lack of cultural understanding and not respecting traditional decision-making processes. The document concludes with tips for meetings, promotions, and developing partnerships.
Este documento describe las vías de administración de medicamentos, las cuales dependen de las propiedades del fármaco, el efecto deseado y el estado del paciente. Se clasifican en intravasculares como la vía intravenosa, y extravasculares como la vía intramuscular o subcutánea. También se explican las diferentes formas farmacológicas como jarabe, comprimido o cápsula, y las reglas básicas para la administración segura de medicamentos siguiendo la regla de los "4 yos".
Доклад с WordCamp Moscow 2017 посвящен распространенным ошибкам у разработчиков плагинов и тем в WordPress. Советы и рекомендации, как можно сделать свой продукт лучше и удобнее для пользователей и разработчиков.
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
В докладе рассматривается использование популярных фреймворков в разработке ASP.NET MVC приложения, как сделать его наиболее гибким. Будет затронута тема минимизации дублирования и повторное использование кода, применение методов метапрограммирования отображений; уменьшение логики в контроллерах; применение принципов SOLID и GRASP для разработки доменной модели приложения.
По материалам конференции .NET разработчиков http://www.dotnetconf.ru/Materialy/Asp_net_mvc_kak_postroit_gibkoe_web_prilozenie
Презентация мастер-класса "Создание динамических пользовательских интерфейсов и AJAX-приложений промышленного класса с помощью Dojo Toolkit и Zend Framework"
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf Conference
The document discusses dependency management in PHP projects. It describes existing solutions like PEAR and tools used by other languages. It then focuses on Composer, a dependency manager created specifically for PHP. Composer allows defining dependencies in a composer.json file and downloading/installing them. The document shows how to use Composer to manage dependencies for Zend Framework 2 projects and modules.
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf Conference
Capistrano для деплоймента PHP приложений
Capistrano is a tool for deploying PHP applications. It allows deployments to be done with a single command. Capistrano handles tasks like updating files and databases, creating files/folders/symlinks, file permissions, cache clearing, and rolling back if errors occur. Common methods for deployment include FTP clients, version control hooks, Phing, shell scripts, and Rsync. Capistrano uses SSH and works with version control systems like Git, SVN, and Mercurial. It manages releases by creating dated directories and symlinking the current release. Custom tasks can be added to handle additional deployment steps.
ZFConf 2012: Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL ...ZFConf Conference
This document provides an overview of IBM DB2 Embedded SQL for PHP. It discusses what embedded SQL is, provides PHP code examples of how to connect to a database and execute queries using embedded SQL, and lists some key features of how embedded SQL is implemented in IBM DB2, including the use of static SQL. It also mentions that the db2_embsql PHP extension provides support for embedded SQL in PHP.
This document provides an overview and quick start guide for Zend Framework 2. It discusses the new architecture including the autoloading system, dependency injection, event manager and MVC. It demonstrates how to set up a basic application using ZendSkeletonApplication as a starting point. The document also covers ZF2 modules, configuration, and approaches for migrating from Zend Framework 1 to Zend Framework 2.
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...ZFConf Conference
The document provides an overview of Sphinx, an open source search engine. It discusses how Sphinx can handle large volumes of data faster than alternatives like MySQL. It also summarizes how to install Sphinx, configure indexes, perform indexing and searching, and how to scale Sphinx across multiple servers. Upcoming new features in version 2.0 are also briefly mentioned.
The document discusses dependency injection and inversion of control principles in PHP applications. It provides examples of using global variables, Zend Registry, and Zend Application to manage dependencies. It also summarizes various PHP dependency injection containers and how they can be used to configure services and their dependencies. The document advocates designing applications with loose coupling, separation of concerns, and configuring via configuration files rather than code for improved maintainability.
28. Parables_Application_Resource_Doctrine Matthew Lurz добавил в Zend Framework proposal application-ресурс для подключения Doctrine. Его класс называется Parables_Application_Resource_Doctrine и лежит здесь http://github.com/mlurz71/parables
29. ZFEngine_Application_Resource_Doctrine Мы немного изменили код Parables_Application_Resource_Doctrine для работы с Doctrine 1.2.x и храним его в репозитории ZFEngine как ZFEngine_Application_Resource_Doctrine ZFEngine это сборная солянка классов, которые мы используем при разработке проектов на ZF. Лежит все здесь: http://zfengine.com В основном код наш. Также есть чужой, но с некоторыми изменениями. Надеюсь, что это все в рамках закона ^_~.
37. MODEL_LOADING_PEAR В Doctrine 1.2 появился новый режим для автозагрузки моделей — MODEL_LOADING_PEAR , но при использовании этого режима не работает generate-migration-diff :(. Я заметил это уже в процессе подготовки доклада и пока просто написал в багрепорт Doctrine.
38. Для проектов с НЕмодульной структурой Указываем путь к директории с моделями:
76. Важная деталь: сами YAML схемы можно сгенерировать непосредственно с структуры БД используя команду generate-yaml-db .
77. Сгенерированный код базовой модели User ./application/models/Base/BaseUser.php <?php abstract class BaseUser extends Doctrine_Record { public function setTableDefinition() { $this ->setTableName( 'users' ); $this ->hasColumn( 'id' , 'integer' , 4, array ( 'type' => 'integer' , 'unsigned' => true , 'primary' => true , 'autoincrement' => true , 'length' => '4' )); // Здесь было описание полей login и email ... $this ->option( 'type' , 'INNODB' ); $this ->option( 'collate' , 'utf8_unicode_ci' ); $this ->option( 'charset' , 'utf8' ); } public function setUp() { parent::setUp(); } }
78. Сгенерированный код модели User и маппера UserTable ./application/models/User.php <?php class User extends BaseUser { } ./application/models/UserTable.php <?php class UserTable extends Doctrine_Table { }
79. Напишем свой сеттер для поля email ./application/models/User.php <?php /** * User model */ class User extends BaseUser { /** * Set email adress into lowercase * * @param string $email * @return void */ public function setEmail( $email ) { $this ->_set( 'email' , strtolower( $email )); } }
80. Пишем экшн для проверки работы ./application/controllers/IndexController.php <?php class IndexController extends Zend_Controller_Action { /** * Simple action * * @return void */ public function indexAction() { $user = new User(); $user -> login = 'stfalcon' ; $user -> email = '[email protected] ' ; Zend_Debug:: dump ( $user ->toArray()); } }
119. Работаем с Doctrine_Cli В первую очередь делаем migration-diff — он генерирует классы миграций на основе различий между кодом моделей и YAML схемами:
174. Сделаем глобальный reload $ ./application/sripts/doctrine build-all-reload build-all-reload - Are you sure you wish to drop your databases? (y/n) y build-all-reload - Successfully dropped database for connection named 'primary' build-all-reload - Generated models successfully from YAML schema build-all-reload - Successfully created database for connection named 'primary' build-all-reload - Created tables successfully build-all-reload - Data was successfully loaded mysql> SELECT * FROM `administrators`; | id | login | email | password_hash | password_salt | created_at | updated_at | +----+----------+------------------+----------------------------------+---------------+---------------------+---------------------+ | 1 | stfalcon | [email_address] | bcd3987603a947d54480285c16f06fde | fc1ed | 2010-03-18 23:04:11 | 2010-03-18 23:04:11 |
175. Адаптер для Zend_Paginator Мы используем ZFEngine_Paginator_Adapter_Doctrine , это немного переработанный с учетом наших потребностей и изменений в Doctrine 1.2 SmartL_Zend_Paginator_Adapter_Doctrine http://code.google.com/p/smart-framework/ Ещё раз пропиарю наш ZFEngine :) http://zfengine.com
196. ZFEngine и использование Doctrine в модульном ZF приложении Мы написали несколько тасков (собственно таски написал Валерий Рабиевский , а я только немного порефакторил) для Doctrine, которые позволяют генерировать модели и использовать механизм миграций в ZF проектах с модульной архитектурой.
197. При этом между моделями разных модулей работает связывание и наследование.
206. ; а также прописываем путь к папке, где будут хранится yaml-схемы предыдущих версий (old), и новые (temp), собранные с модулей в одну папку. Именно по различиям между ними и будут генерироваться миграции.
218. Схема Product.yml (продолжение) ... # Прописываем связь один-ко-многим # User и Products – алиасы, через которые мы сможем обращаться # из одной модели к другой relations : User : class : Users_Model_User foreign : id local : user_id foreignAlias : Products onUpdate : CASCADE onDelete : CASCADE
219. Новый скрипт для Doctrine_Cli Скрипт для работы с Doctrine_Cli в модульном ZF приложении лежит в репозитории ZFEngine.
220. Единственное его отличие от обычного скрипта, это наличие кода для подключения тасков с ZFEngine и справка по командам ZFEngine при запуске скрипта с ключем info :
247. Сгенерированые модели Между моделями из разных модулей сгенерировались связи: ./application/modules/users/models/Base/User.php <?php ... public function setUp() { $this-> hasMany( 'Products_Model_Product as Products' , array( 'local' => 'id' , 'foreign' => 'user_id' )); } ./application/modules/products/models/Base/Product.php <?php ... public function setUp() { $this-> hasOne( 'Users_Model_User as User' , array( 'local' => 'user_id' , 'foreign' => 'id' , 'onDelete' => 'CASCADE' , 'onUpdate' => 'CASCADE' )); } При работе с моделью пользователя коллекция моделей продуктов будет подгружена только при необходимости. Например при получении всех продуктов пользователя: $products = $user-> Products ;