Практические основы тестирования на php Unit-test: понятия, тонкости, пути решения, вопросы для проработки.
PHPUnittest fast start
Разработано http://webgloss.ru
В докладе рассказывается об опыте применения «инверсия управления» (Inversion of Control) при разработке новой версии KES. Этот подход заключается в том, что более высокоуровневый код не зависит напрямую от конкретной реализации нижележащего слоя. Вместо этого он зависит от абстрактного протокола (интерфейса), конкретный же компонент подставляется конфигурационным кодом-клиентом. Эта практика позволяет понизить loose coupling программных модулей и применяется практически в любых крупных проектах.
При разработке новой версии KES было принято решение изменить подход к реализации инверсии управления. Было решено отказаться от централизованного обобщенного реестра доступных компонентов (шаблон (паттерн) Service Locator) в пользу явной передачи зависимостей конфигуратором (ручная инъекция зависимостей (manual Dependency Injection)). При это возникли проблемы с использованием готовых библиотек Dependency Injection Frameworks. Применение подобных библиотек стало стандартом в мире разработки Java/C# за последние 10-15 лет, но в мире C++ они пока не получили подобного распространения. В докладе делается обзор и сравнение актуальных DI-Framework’ов на C++, анализируется их применимость к практическим задачам ЛК. Анализируется, что могут привнести стандарты C++11/14 для упрощения решения таких задач.
Практические основы тестирования на php Unit-test: понятия, тонкости, пути решения, вопросы для проработки.
PHPUnittest fast start
Разработано http://webgloss.ru
В докладе рассказывается об опыте применения «инверсия управления» (Inversion of Control) при разработке новой версии KES. Этот подход заключается в том, что более высокоуровневый код не зависит напрямую от конкретной реализации нижележащего слоя. Вместо этого он зависит от абстрактного протокола (интерфейса), конкретный же компонент подставляется конфигурационным кодом-клиентом. Эта практика позволяет понизить loose coupling программных модулей и применяется практически в любых крупных проектах.
При разработке новой версии KES было принято решение изменить подход к реализации инверсии управления. Было решено отказаться от централизованного обобщенного реестра доступных компонентов (шаблон (паттерн) Service Locator) в пользу явной передачи зависимостей конфигуратором (ручная инъекция зависимостей (manual Dependency Injection)). При это возникли проблемы с использованием готовых библиотек Dependency Injection Frameworks. Применение подобных библиотек стало стандартом в мире разработки Java/C# за последние 10-15 лет, но в мире C++ они пока не получили подобного распространения. В докладе делается обзор и сравнение актуальных DI-Framework’ов на C++, анализируется их применимость к практическим задачам ЛК. Анализируется, что могут привнести стандарты C++11/14 для упрощения решения таких задач.
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
Как помочь тестам находить баги? Что лучше: каждый новый запуск на новом наборе данных или же стабильность? Как сделать тестовые данные эффективными?
В докладе рассматривается Property based подход для написания unit-тестов.
На реальных примерах будет показано то, какими возможностями обладает FsCheck в связке с C#, какие есть плюсы и минусы у данного инструмента и стоит ли тратить время на его изучение.
В докладе рассказывается об особенностях подхода к dependence injections в C++. Посмотрим какие подходы, в чем их плюсы и минусы. Также затрагивается тема Inversion of Control контейнеров.
La canción habla sobre la soledad de la honestidad y la falta de sinceridad en las personas. El cantante dice que es fácil encontrar a alguien que diga simpatizar pero que lo que realmente necesita es a alguien que crea en él y sea sincero.
El documento explica la forma y función de los adverbios en inglés. Los adverbios modifican verbos, adjetivos u otros adverbios para expresar cómo, cuándo, dónde o con qué frecuencia ocurre una acción. La mayoría de los adverbios se forman añadiendo el sufijo "-ly" a un adjetivo, aunque algunos no lo llevan. Los adverbios pueden clasificarse en tipos como de tiempo, lugar, grado, modo o frecuencia, y su posición en la oración depende del tipo.
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
Как помочь тестам находить баги? Что лучше: каждый новый запуск на новом наборе данных или же стабильность? Как сделать тестовые данные эффективными?
В докладе рассматривается Property based подход для написания unit-тестов.
На реальных примерах будет показано то, какими возможностями обладает FsCheck в связке с C#, какие есть плюсы и минусы у данного инструмента и стоит ли тратить время на его изучение.
В докладе рассказывается об особенностях подхода к dependence injections в C++. Посмотрим какие подходы, в чем их плюсы и минусы. Также затрагивается тема Inversion of Control контейнеров.
La canción habla sobre la soledad de la honestidad y la falta de sinceridad en las personas. El cantante dice que es fácil encontrar a alguien que diga simpatizar pero que lo que realmente necesita es a alguien que crea en él y sea sincero.
El documento explica la forma y función de los adverbios en inglés. Los adverbios modifican verbos, adjetivos u otros adverbios para expresar cómo, cuándo, dónde o con qué frecuencia ocurre una acción. La mayoría de los adverbios se forman añadiendo el sufijo "-ly" a un adjetivo, aunque algunos no lo llevan. Los adverbios pueden clasificarse en tipos como de tiempo, lugar, grado, modo o frecuencia, y su posición en la oración depende del tipo.
This document summarizes strategies from Crime Prevention Through Environmental Design (CPTED). It discusses research showing that surveillance (the likelihood of being seen committing a crime), access control (restricting easy entry and exit), and territoriality (signals that people care about and will protect an area) can reduce criminal behavior. Specific tactics like lighting, fences, signs, and maintenance levels impact these three factors. Research found natural surveillance of entry points best predicted convenience store robberies. Design that improves all three CPTED strategies may be most effective at crime prevention.
El documento describe la evolución de los métodos y materiales de enseñanza a través de los años, dividiéndola en 4 períodos: hasta fines de los 80 se usaron métodos y materiales tradicionales, en los 90 se incorporaron los audiovisuales, en los 90 predominaron los materiales informáticos y desde el 2000 hay una convergencia de la información, comunicación y tecnologías ubicuas junto con nuevos dispositivos para la enseñanza.
Este documento proporciona una lección sobre el uso de gerundios e infinitivos en inglés. Explica las reglas gramaticales para cuando se usa el gerundio versus el infinitivo después de verbos, nombres, preposiciones y expresiones. También cubre cómo formar preguntas en inglés usando pronombres interrogativos y agregar preguntas de seguimiento ("question tags") a las oraciones.
This document provides an overview of Crime Prevention Through Environmental Design (CPTED) strategies. It discusses research showing that natural surveillance, access control, and territorial reinforcement can reduce crime. Specifically, it notes that (1) houses with better natural surveillance were less likely to be burglarized, (2) access barriers like fences reduced crime, and (3) signs of ownership and maintenance strengthened territoriality. The document uses examples to illustrate how design can be used to apply these CPTED principles.
El documento explica la forma y función de los adverbios en inglés. Los adverbios modifican verbos, adjetivos u otros adverbios para expresar cómo, cuándo, dónde o con qué frecuencia ocurre una acción. La mayoría de los adverbios se forman añadiendo el sufijo "-ly" a un adjetivo, aunque algunos no lo llevan. Los adverbios pueden clasificarse en tipos como de tiempo, lugar, grado, modo o frecuencia, y su posición en la oración depende del tipo.
Мир мобильных телефонов очень сильно изменил нашу жизнь. В наше время невозможно представить современного человека, без этого чудо устройства. На рынке появляется все больше устройств и приложений. И чтобы удобнее пользоваться этими приложениями пользователи выбирают “умные” телефоны, или как их еще принято называть смартфоны. В своем докладе я хочу поделиться своим опытом автоматизации приложений под Android и iOS. Я расскажу о том, какие инструменты автоматизации я использовал. Поговорим о недостатках этих инструментов и какие из них стоит использовать у себя на проекте.
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFest
Microsoft Azure, пожалуй, самый очевидный выбор для .NET разработчиков, когда они (или их клиенты) внезапно решают, что им нужен клауд. Но при этом мы все равно используем подходы и техники из до-облачного мира, иногда и не подозревая о тех сервисах и удобствах, которые нам дает Azure. На этом докладе Сергей покажет, как быстро и эффективно можно разрабатывать современное веб приложение. Мы затронем разные аспекты -- от организации кода до деплоя и мониторинга приложений, работающих в проде. Документация API, поддержка рабочих процессов, инициализация приложений, полезные инструменты и библиотеки -- все это, и не только, ждет вас на нашем докладе.
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
Как-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
Разработка Web-приложений на Angular JS — доклад Бориса Левицкого, архитектора ПО в команде портфеля проектов Enviance компании Softengi.
Видео с докладом от автора можно посмотреть по ссылке: http://youtu.be/oTXxrmIxo8Y
Презентация ответит на вопросы:
- что такое Angular?
- для чего он используется и что с ним можно делать?
- как работает Data-Binding?
- кастомные фильтры
- структура Angular приложения
Архитектурные семинары Softengi - еженедельные встречи, на которые приглашаются ведущие разработчики/архитекторы Softengi и других компаний нашего консорциума Intecracy Group.
Все проведенные семинары мы записывали, и теперь хотим поделиться опытом и знаниями с такими же профессионалами.
Подписывайся на канал Softengi https://www.youtube.com/user/softengi и узнай первым о новых семинарах.
http://www.softengi.com
2. Dependency Injection Устранение зависимостей в коде Замена паттерна new() Избавление от рутины создания фабрик, заводов и цехов Возможность использования нескольких конфигураций Ограничение кол-ва инстанций класса Упрощение тестирования 5/7/2011 Android May Days 2
3. RoboGuice http://code.google.com/p/roboguice/ Первым делом, это DI фрэймворк, который также позволяет: @InjectView() @InjectResource() @InjectPreference() @Inject System Services @ObservesEvents 5/7/2011 I’m footer and nobody reads me 3
4. Injecting RoboGuice СкачатьRoboGuice 1.1.1 и guice-2.0-no_aop.jar и подключить их к проекту. Или есть прекрасная возможность начать пользоваться Maven’ом (чего я еще не сделал) Добавить в проект класс наследник RoboApplication и прописать его в AndroidManifest.xlmв тэге application значением параметра android:name (“.MyRoboApplication”) 5/7/2011 Damn footer live 4
5. Application Code Sample 5/7/2011 publicclassDiscoBoxApplicationextendsRoboApplication { @Override protectedvoidaddApplicationModules(List<Module> modules) { modules.add(newNetSocketModule()); modules.add(newDiscoBoxModule()); super.addApplicationModules(modules); } } I’m a poop-poor footer, no one likes me 5
6. Modules Происходит настройка bind-ингов классов на конкретные объекты Статическая инициализация 5/7/2011 I could be a header 6 bind(Client.class).to(SocketClient.class); @Providespublic Client provideClient() { Client c = newSocketClient(); requestInjection(c); return c; } requestStaticInjection(ClientServiceAPI.class);
8. Injecting С помощью @Inject C помощью Injector 5/7/2011 blah-blah-blah 8 @Inject protected Injector injector; @Inject publicSocketServer(@Named(NetSocketModule.SERVER_PORT) intport) { ... } @Inject publicvoidsetProtocolProcessor(ProtocolProcessor processor) { this.processor = processor; } Connection connection = injector.getInstance(Connection.class);
9. Lazy Injection Использование интерфейса Provider<T> 5/7/2011 and lazy footer 9 @Injectpublic Provider<Server> serverProvider; publicvoidmethodRequersServer() { Server servet = serverProvider.get(); ... }
10. Scopes Можно пометить класс аннотацией @Singleton, для ограничения кол-ва инстанций тяжелого ресурсоемкого класса 5/7/2011 scopes looks like footer friends 10 @Singleton publicclassSocketServerimplements Server { ... }
11. Constructors with params Использование аннотаций и специальных биндингов 5/7/2011 what footers are good for? 11 @Inject publicSocketServer(@Named(NetSocketModule.SERVER_PORT) int port, @Named(NetSocketModule.SERVER_BROADCAST_ADDRESS) String broadcastAddress, @Named(NetSocketModule.SERVER_BROADCAST_IN_PORT) intbroadcastInPort, @Named(NetSocketModule.SERVER_BROADCAST_OUT_PORT) intbroadcastOutPort) { } @Override protectedvoid configure() { ... bind(Integer.class).annotatedWith(Names.named(SERVER_BROADCAST_IN_PORT)) .toInstance(SERVER_BROADCAST_IN_PORT_VALUE); bind(Integer.class).annotatedWith(Names.named(SERVER_BROADCAST_OUT_PORT)) .toInstance(SERVER_BROADCAST_OUT_PORT_VALUE); bind(String.class).annotatedWith(Names.named(SERVER_BROADCAST_ADDRESS)) .toInstance(SERVER_BROADCAST_ADDRESS_VALUE); }
12. Constructors with params Использование @Provides в модуле 5/7/2011 footer is watching you 12 @Provides Server provideServer() { Server server = newSocketServer(2011, "224.0.0.0", 2013, 2014); requestInjection(server); return server; }
13. Events Использовать уже готовые событий или написать свои 5/7/2011 footer, simple as is 13 publicvoidperformShutDown(@ObservesOnDestroyEvent event) { doSomeCleanUp(); } @Inject protectedEventManagereventManager; protectedvoid buy() { eventManager.notify(MyOtherActivity.this, newMyBuyEvent() ); } protectedvoidhandleBuy(@ObservesMyBuyEventbuyEvent ) { Toast.makeToast(this, "You won't regret it!", Toast.LENGTH_LONG).show(); } //The event class can be anything you want publicclassMyBuyEvent { ... }
14. Views Устранение лишнего,повторяющегося от активити к активити нудного тупого обезьяньего кодаfindViewById(R.id.damn_view_id) в onCreate() 5/7/2011 cool footer is not a crime 14 @InjectView(R.id.server_search_button_panel)ViewSwitchersearchButtonSwitcher; @InjectView(R.id.server_selector)Spinner serverSelector; @InjectView(R.id.server_search_button) Button searchButton; @InjectView(R.id.client_music_mode_button) Button musicModuleButton;
15. Logging RoboGuice'sLn logger Отличный формат вызова Автоматическое отключение debug и verbose логов при release-ой сборке В тэге лога сам пишет класс и номер строки кода Можно легко переопределить формат отображения и перенаправить вывод лога в файл 5/7/2011 we footers hate each other 15 Ln.d("text"); Ln.d("formatted %s", "text"); Ln.d(exception, "reason %s", "text");
16. Спасибо за внимание Презентацию подготовил Шауберт Александр shaubert.alexander@gmail.com Специально для Android May Days 2011 5/7/2011 and who will say thanks to footer 16