Доклад с PUG#6 https://www.facebook.com/events/837043689707114/
Поговорим о:
- сути интерпретируемого PHP, обсудим, как с этим жить;
- панацее Zephir. «А что там под капотом?»;
- наглядном профите. Поиграем с Symfony, Yii, Magento;
- будущем Zephir.
Эффективный C++Andrey KarpovЯзык C++ и инфраструктура вокруг него продолжает активно развиваться, что делает этот язык одним из самых эффективных инструментов в настоящее время. Хочется выделить три фактора, делающие язык C++ сейчас столь привлекательным. Первое: нововведения в стандарт языка, позволяющие писать эффективный код. Второе: зрелость инструментов разработки и увеличение скорости сборки проектов. Третье: зрелось вспомогательного инструментария, позволяющие контролировать качество кода и другие аспекты жизненного цикла проекта. Этот доклад - ода языку программирования C++!
Андрей Карпов, Приватные байки от разработчиков анализатора кодаSergey PlatonovДоклад о редких нестандартных расширениях языка С++, про которые никто не знает, но которые надо поддерживать в анализаторе кода.
О магии Visual C++ с файлом stdafx.h, когда проект компилируется, хотя не должен. О том как зародился viva64 (предшественник PVS-Studio) для поиска 64-битных проблем. Как и почему исчез анализ кода, который одно время существовал в компиляторе Intel C++.
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup"SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек", Алексей Черкес
Кратко рассказано о том, что такое биндинг и Pуthon c API. Краткий обзор средств биндинга для Python. SWIG: что такое, зачем нужен, особенности, схема работы утилит, порядок запуска и сборки, принципы работы, как происходит сопоставление объектных моделей С++ и целевого языка. Примеры на Python и C#. Опыт применения, плюсы/минусы.
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)OnticoTypeScript – светлое будущее ES6 уже вчера.
Почему не "Кофе"? Чай полезней.
Что не так с Flow от Facebook?
Реальная практика использования: плюсы и минусы.
Не VisualStudio единым. Особенности работы в других IDE.
Интеграция с уже существующим JS кодом.
Использование совместно с RequireJS. Подводные камни.
Использование TypeScript совместно с React.
TypeScript и Angular.
Плюшки, которых нет в ES6/7 (пока нет): [static] enum, интерфейсы, private, protected, декораторы... Что дают и зачем?
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo DevelopmentДокументация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
Теория языков программирования некоторые слайды к лекциямSergey StaroletovТеория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptSergey PlatonovШаблоны — мощный инструмент, добавляющий в язык новые возможности, а программистам в команде — новые проблемы. Доклад покажет, как тщательно продуманный шаблонный код может не усложнить, а упростить жизнь и дать надёжную абстракцию межпроцессных межъязыковых асинхронных вызовов функций. С помощью шаблонов можно:
адаптировать Promise/A+ из Javascript для C++
автоматически проверять и раскладывать динамический массив аргументов на статичные аргументы функции
сделать аналог std::bind для weak_ptr.
Эти вещи будут показаны на примере взаимных вызовов между C++ и Javascript в одном приложении с помощью CEF3.
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov SergeyДоклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...GeeksLab OdessaJS Lab2017, 25 марта, Одесса
Евгений Сафронов (Senior developer at DataArt)
Тестирование Javascript кода. Инструменты, практики, тренды
О тестах и качестве с различных точек зрения и ракурсов. Тестирование, выполняемое разработчиками. Основные тренды, методы и инструменты для тестирования Javascript кода. Лучшие практики и подходы.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov SergeyКто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup"SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек", Алексей Черкес
Кратко рассказано о том, что такое биндинг и Pуthon c API. Краткий обзор средств биндинга для Python. SWIG: что такое, зачем нужен, особенности, схема работы утилит, порядок запуска и сборки, принципы работы, как происходит сопоставление объектных моделей С++ и целевого языка. Примеры на Python и C#. Опыт применения, плюсы/минусы.
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)OnticoTypeScript – светлое будущее ES6 уже вчера.
Почему не "Кофе"? Чай полезней.
Что не так с Flow от Facebook?
Реальная практика использования: плюсы и минусы.
Не VisualStudio единым. Особенности работы в других IDE.
Интеграция с уже существующим JS кодом.
Использование совместно с RequireJS. Подводные камни.
Использование TypeScript совместно с React.
TypeScript и Angular.
Плюшки, которых нет в ES6/7 (пока нет): [static] enum, интерфейсы, private, protected, декораторы... Что дают и зачем?
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo DevelopmentДокументация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
Теория языков программирования некоторые слайды к лекциямSergey StaroletovТеория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptSergey PlatonovШаблоны — мощный инструмент, добавляющий в язык новые возможности, а программистам в команде — новые проблемы. Доклад покажет, как тщательно продуманный шаблонный код может не усложнить, а упростить жизнь и дать надёжную абстракцию межпроцессных межъязыковых асинхронных вызовов функций. С помощью шаблонов можно:
адаптировать Promise/A+ из Javascript для C++
автоматически проверять и раскладывать динамический массив аргументов на статичные аргументы функции
сделать аналог std::bind для weak_ptr.
Эти вещи будут показаны на примере взаимных вызовов между C++ и Javascript в одном приложении с помощью CEF3.
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov SergeyДоклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...GeeksLab OdessaJS Lab2017, 25 марта, Одесса
Евгений Сафронов (Senior developer at DataArt)
Тестирование Javascript кода. Инструменты, практики, тренды
О тестах и качестве с различных точек зрения и ракурсов. Тестирование, выполняемое разработчиками. Основные тренды, методы и инструменты для тестирования Javascript кода. Лучшие практики и подходы.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov SergeyКто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Blackbox-тестирование веб-приложенийbechedПрезентация с доклада "Секреты чёрного ящика" на RuCTF 2014. Речь идёт о нюансах blackbox-тестирования веб-приложений.
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботникиТестирование фронтенда - непростая задача. Mocha - один из подходов к ее решению.
Solit 2014, EcmaScript 6 in Action, Трухин Юрий solitЮрий Трухин, Россия. Эксперт по облачным технологиям хостинговой компании InfoboxCloud. В прошлом – обладатель статуса Microsoft Most Valuable Professional. Гик, стратег, разработчик. Подробнее на trukhin.com
«Обзор InfoboxCloud для разработчиков». Development секция. Высокий уровень подготовки. Для разработчиков.
В этом докладе будет рассказано об устройстве InfoboxCloud из первых рук, о деталях внутренней реализации, о том, какую пользу несет облако для разработчиков и о будущем InfoboxCloud. Будут рассмотрены 2 кита облачных технологий: IaaS и PaaS без vendor-lock. Отличная возможность спросить обо всём, что касается PaaS/IaaS непосредственно архитектора и разработчика этих систем.
«EcmaScript 6 in Action». Development секция. Для разработчиков.
Поговорим о том, как жизнь разработчиков изменится с приходом нового стандарта.
Универсальный сигнатурный анализ кода на C#, Java, PHPИван КочуркинВ данном докладе затронуты такие темы, как теория и проблемы парсинга, построение и обход абстрактных синтаксических деревьев (AST) и разработка предметно-ориентированного языка (DSL).
Рассматриваются такие проблемы парсинга, как разбор контекстно-зависимых языков, обработка ошибок и др. В качестве примера применения теории приведена грамматика PHP, разработанная для генератора парсеров ANTLR.
Далее рассматриваются структура унифицированного AST, методы его обхода и сопоставления с паттернами.
Завершающей частью презентации является описание DSL, разработанного с целью записи существующих и будущих паттернов. Также приведены примеры некоторых паттернов для лучшей усвояемости материала.
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...Mail.ru Group
Анализ кода — один из эффективных подходов к выявлению дефектов на этапе разработки программного обеспечения. Это позволяет избежать тривиальных и не очень ошибок, которые могут приводить к появлению уязвимостей. Существует ряд подходов, применяемых в анализаторах, на основании которых производится анализ, позволяющий снижать риски. Однако возникает ряд предубеждений, ведь не всегда предупреждение анализатора является реальным дефектом, тем более, что не всякий дефект является уязвимостью.
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!YandexАлексей Куканов, Intel.
Последняя версия стандарта С++ добавляет в язык и библиотеку поддержки средства для использования потоков исполнения (threads) и синхронизации между ними. Однако это лишь необходимая низкоуровневая база для внедрения параллелизма. Эффективная разработка параллельных программ требует высокоуровневого API, реализующего типичные шаблоны использования параллелизма в виде, пригодном для применения в широком спектре алгоритмов и приложений. В докладе речь пойдёт о наиболее часто встречающихся параллельных шаблонах, реализованных в программных моделях Intel® Threading Building Blocks и Intel® Cilk Plus, и о примерах их использования.
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...Mail.ru GroupДмитрий рассказал о преимуществах, недостатках и основных сценариях использования нативного кода при написании кроссплатформенных приложений. Спикер рассказывает о разнообразных подводных камнях, которые неизбежно возникают при работе с NDK, и показывает интересные хаки и неочевидные возможности решения возникающих проблем.
Дмитрий Красун: Сегодня вы уйдете с новым представлением о RESTOleg PoludnenkoThe document discusses Representational State Transfer (REST). It defines REST as changing resource state through transferring resource representations. Key REST concepts discussed include resources and their representations, Uniform Resource Identifiers (URIs), and Hypermedia as the Engine of Application State (HATEOAS). The document provides examples of resource modeling and implementing RESTful APIs using HTTP and Symfony frameworks. It emphasizes designing APIs around resources and representing state transitions through hypermedia controls.
Александр Трищенко: PHP 7 EvolutionOleg PoludnenkoДоклад с PUG#7 https://www.facebook.com/events/772501586209518/
- Введение в PHP7. Почему стоит смотреть в эту сторону
- Используем PHP7 сейчас
- Нововведения
- Производительность
- “Строгая” типизация в PHP
- Подробный разбор нового механизма работы с ошибками
- Новые возможности для работы с замыканиями
- Синтаксический сахар
Александр Трищенко: Phalcon frameworkOleg PoludnenkoДоклад с PUG#6 https://www.facebook.com/events/837043689707114/
1. Почему стоит обратить внимание на этот фреймворк. Какие очевидные плюсы и выгоды мы можем из этого извлечь.
2. Реализация основных компонентов фреймворка, безопасность и архитектура.
3. Инструменты для масштабирования highload-проекта, предусмотренные самим фреймворком.
Алексей Иванкин: Highload + PHPOleg PoludnenkoДоклад с PUG#4 https://www.facebook.com/events/350783888446030/
Рассмотрим:
- Что такое Highload, термины, инструменты.
- Где тормозит PHP, родовые травмы языка, как с ними жить.
- Скорость работы vs скорость разработки.
- Архитектура, что стоит делать и когда.
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Oleg PoludnenkoДоклад с PUG#4 https://www.facebook.com/events/350783888446030/
Презентует:
- Асинхронность в веб-приложениях.
- Систему очередей Gearman.
- Пример Реализации c использование Yii2 + Gearman.
Алексей Рыстенко: Highload и микросервисыOleg PoludnenkoДоклад с PUG#4 https://www.facebook.com/events/350783888446030/
Поговорим о:
- Пользе микросервисов в условиях высокой нагрузки.
- Отличии в работе «монолитных» и микросервисных приложений в highload-окружении.
- Способах оптимизации работы микросервисов.
- Примерах из жизни.
Алексей Плеханов: Новинки Laravel 5Oleg PoludnenkoLaravel 5 provides a new folder structure and features like environments, dependency injection, form requests, file systems, middleware, annotations, events, Elixir, and scheduling. It introduces the .env file for environment variables, makes dependency injection easier, validates input with form requests, supports multiple file systems, and allows controlling application flow through middleware. Annotations scan routes and events, Elixir integrates tools like Gulp, and the scheduler allows queueing commands and calls.
Макс Волошин: Php + shell = ♥Oleg PoludnenkoДоклад с PUG#2 https://www.facebook.com/events/292457000957088/
Доклад о работе в Shell, исполнении PHP в Shell, использовании REPL в PHP, а также эпический батл между Boris и PsySH.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Дмитрий Тарасов: Google App Engine & PHP SDKOleg PoludnenkoДоклад с PUG#1 https://www.facebook.com/events/1505404039679797/
Я рассказываю о платформе Google App Engine, о поддержке PHP, об особенностях конфигурации и разработки, о масштабировании, об ограничениях и о доступных API. Краткое содержание: поддержка PHP находится в preview mode в данный момент, но среда достаточно необычна, чтобы уже заинтересоваться ей.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Алексей Рыстенко: Continuous IntegrationOleg PoludnenkoДоклад с PUG#1 https://www.facebook.com/events/1505404039679797/
Доклад посвящен непрерывной интеграции и ее роли в процессе разработки проектов. В нем освещены следующие вопросы:
* Как избежать проблем в интеграции?
* Зачем нужны тесты?
* Как организовать работу так, чтобы всегда иметь под рукой прозрачное и работающее приложение?
* Как быть в курсе событий на своем проекте в любой момент времени?
Также, в докладе освещены основные плюсы работы с системами непрерывной интеграции на примере Jenkins.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Илья Андриенко: Вёрстка в проекте глазами “неверстальщика”Oleg PoludnenkoДоклад с PUG#1 https://www.facebook.com/events/1505404039679797/
В первой части своей презентации я рассказал о CSS-препроцессорах, и, на примере препроцессора LESS, о четёрёх основных их возможностях, которые могут заинтересовать и backend-разработчика. Вторая часть была посвящена разбору проблемной ситуации, когда в условиях нехватки времени у backend-разработчика возникает необходимость вносить мелкие правки в вёрстку, а разработчик не готов пользоваться и настраивать препроцессор, в следствие чего драгоценное время тратится на организационные вопросы. Рассмотрены основные причины этой неготовности и простые средства их решения.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Алексей Плеханов: 25 причин попробовать LaravelOleg PoludnenkoДоклад с PUG#1 https://www.facebook.com/events/1505404039679797/
Мой доклад посвящен популярному фреймворку Laravel.
Я рассказываю про 25 причин, по которым, я считаю, стоит попробовать этот фреймворк, особенно, если раньше Вы не были с ним знакомы. Описаны ORM Eloquent, роутинг в Laravel, работа с основными компонентами, такими как контроллеры, шаблонизатор, авторизация, пагинация, а также более сложные вещи, как Inverse of Control, фасады в Laravel, работа с очередями и консольными командами. Также в докладе освещены другие интересные фичи фреймворка!
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
2. О чем будем слушать?
• Суть интерпретируемого PHP и как с этим
жить.
• Панацея Zephir. “А что там под капотом?”
• “Как выучить Zephir за 21 день.”
• Что же будет дальше?
13. Чем отличается от PHP
• Декларативный стиль.
• Статическая/динамическая типизация.
• Пространства имен - обязательно!
• Запрещен глобальный код.
• Компиляция Ahead-of-time.
• Безопасная работа с памятью.
14. Динамическая типизация
Практически ничем не отличается от PHP
Декларативный стиль:
объявили и только после используем
var a, b, c;
// Initialize variables
let a = "hello",
b = false;
// Change their values
let a = 10,
b = “140";
// Perform operations between them
let c = a + b;
16. Статическая типизация
• Более эффективный статический
анализ кода при компиляции.
• Возможность провести дополнительные
оптимизации при компиляции.
• Лучший выбор для
высокопроизводительных приложений.
18. // Dynamical
var a = 1;
// arrays
var b = [1, 2, 3];
array b = [1, 2, 3];
array c = [1: 'a', "index": false];
// Statical
int a = -1;
let a = false; // automatically casted to 0
let a = "string"; // throws a compiler exception
uint a = 1;
float pi = 3.14;
bool a = true;
string a = "Test string";
char a = 'A';
// Objects
var myObject;
let myObject = new stdClass(),
myObject->property = "value";
Немного переменных
22. • Парадигма ООП.
• Один файл - один класс.
Пространства имен
mylibrary/router.zep mylibrary/router/exception.zep
23. Методы/Функции
• Можем указать тип возвращаемых
данных.
• Можем указать тип параметров.
• Тип передаваемого аргумента
приводится к ожидаемому в случае, если
они не совпадают, и это возможно.
• Можем указать read-only параметры.
• Имеем сахар для get, set, toString.
24. namespace Test;
class Hello
{
const HELLO = "hello";
protected customString = null {
get, set
};
public function say(string word) -> string
{
return word;
}
public function sayHelloTo(string! name) -> string
{
return this::HELLO . " " . name;
}
public function sayHello()
{
return this::HELLO;
}
}
Маленький класс
25. Имеем возможность использовать функции
PHP.
namespace MyLibrary;
class Encoder
{
public function encode(string text)
{
if strlen(text) != 0 {
if function_exists("my_custom_encoder") {
return my_custom_encoder(text);
} else {
return base64_encode(text);
}
}
return false;
}
}
Функции
26. Не можем присвоить результат функции к
переменной статического типа.
namespace MyLibrary;
class Encoder
{
public function encode(string text) -> string | bool
{
string encoded = "";
if strlen(text) != 0 {
let encoded = (string) base64_encode(text);
return '(' . encoded . ')';
}
return false;
}
}
Функции
27. config.json
• Оптимизации при трансляции.
• Warnings при статическом анализе.
• Глобальные переменные на расширение.
• Общая информация.
• Блок phpinfo()
29. Function call optimizers
• Уходим от PHP_FUNCTION.
• Используем функции вшитые в C или
пишем свои.
Подмена вызовов типичных функций из
ядра Zend Engine на оптимизированные свои.
30. Алгоритм работы
1. $ zephir init test
2. Пишем код проекта.
3. $ zephir build
4. Add extension=test.so to your php.ini