Павел Беликов, Как избежать ошибок, используя современный C++Sergey Platonov
Одной из проблем C++ является большое количество конструкций, поведение которых не определено или просто неожиданно для программиста. С такими ошибками мы часто сталкиваемся при разработке статического анализатора кода. Но, как известно, лучше всего находить ошибки ещё на этапе компиляции. На этом докладе мы поговорим о том, какие техники из современного C++ позволяют писать не только более простой и выразительный, но и безопасный код. Вы увидите ошибки в коде различных Open Source проектов и узнаете, как можно их избежать, используя новые стандарты
Длительность очного тренинга: 2 часа
Тренинг проходит в регионе: Москва
Содержание
Будем рассматривать задачки по следующим темам:
- Типы данных
- Массивы
- Замыкания
- Секретная тема
Рекомендации к тренингу
Уровень слушателя: Фронт-энд разработчики с опытом больше 2 лет, другим будет сложно, но если очень хотят, то можно :)
Что потребуется для участия: Ноутбук желателен, но не обязателен
Для чего нужен тренинг: Данный тренинг позволит разработчикам подтянуть свои знания по JS и разобраться со сложными и забавными моментами в нативном JS.
Григорий Демченко, Асинхронность и неблокирующая синхронизацияSergey Platonov
Практика показывает, что использование подхода, основанного на колбеках для асинхронного программирования обычно не является удобным и подвержено различным ошибкам. Для упрощения написания и поддержки сложных асинхронных программ можно использовать несколько иной подход: использовать сопрограммы для переключения контекста на время ожидания события. Такой подход позволяет реализовать интересные неблокирующие примитивы, включая неблокирующее сетевое взаимодействие, неблокирующие мьютексы, а также удобное переключение между различными пулами потоков для разнесения выполнения задач, которые требуют различные ресурсы.
Павел Беликов, Как избежать ошибок, используя современный C++Sergey Platonov
Одной из проблем C++ является большое количество конструкций, поведение которых не определено или просто неожиданно для программиста. С такими ошибками мы часто сталкиваемся при разработке статического анализатора кода. Но, как известно, лучше всего находить ошибки ещё на этапе компиляции. На этом докладе мы поговорим о том, какие техники из современного C++ позволяют писать не только более простой и выразительный, но и безопасный код. Вы увидите ошибки в коде различных Open Source проектов и узнаете, как можно их избежать, используя новые стандарты
Длительность очного тренинга: 2 часа
Тренинг проходит в регионе: Москва
Содержание
Будем рассматривать задачки по следующим темам:
- Типы данных
- Массивы
- Замыкания
- Секретная тема
Рекомендации к тренингу
Уровень слушателя: Фронт-энд разработчики с опытом больше 2 лет, другим будет сложно, но если очень хотят, то можно :)
Что потребуется для участия: Ноутбук желателен, но не обязателен
Для чего нужен тренинг: Данный тренинг позволит разработчикам подтянуть свои знания по JS и разобраться со сложными и забавными моментами в нативном JS.
Григорий Демченко, Асинхронность и неблокирующая синхронизацияSergey Platonov
Практика показывает, что использование подхода, основанного на колбеках для асинхронного программирования обычно не является удобным и подвержено различным ошибкам. Для упрощения написания и поддержки сложных асинхронных программ можно использовать несколько иной подход: использовать сопрограммы для переключения контекста на время ожидания события. Такой подход позволяет реализовать интересные неблокирующие примитивы, включая неблокирующее сетевое взаимодействие, неблокирующие мьютексы, а также удобное переключение между различными пулами потоков для разнесения выполнения задач, которые требуют различные ресурсы.
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
Елена Шишкина, ведущий программист Деньги Mail.Ru. Она покажет практический пример лени как двигателя прогресса в отдельно взятом веб-проекте:
- Надоело писать код? Будем думать, как его не писать!
- Боремся с однотипным кодом. Боремся с неоднотипным кодом.
- Код, которого не существует, и код, который существует.
- Следите за руками: программируем на конфигах!
- Как жить дальше?
C++ богат различными инструментами, при разработке на C++ используется множество различных подходов. Но можно ли пользоваться ими во всех случаях или бывают ситуации, когда стоит воздержаться или ограничить их использование?
В докладе пойдет речь о том, какие существуют ограничения при разработке браузера и откуда они взялись. Почему мы живем без исключений или RTTI, к чему это ведет. Как мы используем стандартную библиотеку и сторонние модули.
Доклад вводит в рассмотрение универсальный адаптер, позволяющий обернуть любой класс с целью добавления новых свойств, отсутствующих в оригинальном классе. Получаемые классы могут иметь в точности такой же интерфейс, как и первоначальные, что позволяет прозрачно заменять их и оборачивать любое количество раз.
Это позволяет добавлять необходимые свойства объектам, не переписывая его с нуля. Предложенная обобщенная концепция будет последовательно введена и проиллюстрирована простыми, но интересными примерами.
Фитнес для вашего кода: как держать его в формеIlia Shishkov
C++ Россия 2017
Во время моего выступления мы поговорим о принципе "Minimize coupling, maximize cohesion". Обсудим, что это такое и что значат эти непонятные слова. Кроме того на приближенном к реальности примере мы рассмотрим, как, применяя указанный принцип, можно держать ваш код в форме, чтобы он был готов ко всем неожиданностям, которые подстерегают ваш проект в течение его жизни.
Многопоточность в браузере. Модель акторов — Константин КрамлихYandex
Я расскажу о том, как наладить многопоточное взаимодействие в браузере без использования мьютексов и условных переменных. Доклад будет интересен тем, кто пишет на языке C++ и разрабатывает многопоточные сервисы и приложения.
Funny JS - Это серия встреч для фронтэнд-разработчиков и не только. Я не буду читать лекцию или проводить тренинг. Мы будем общаться в живом формате и разбирать интересные и необычные задачи из мира JS, которые помогут лучше разобраться в теме и повысить скиллы. На первом митапе обсудим, что круче: функциональное программирование или объектно-ориентированный подход, прототипное или классическое наследование, ES6 или ES5
Догнать и перегнать boost::lexical_castRoman Orlov
Разбор нестандартной реализации преобразования целого числа в строку без использования циклов и рекурсивных вызовов времени исполнения - только рекурсия на этапе компиляции
Использование юнит-тестов для повышения качества разработкиvictor-yastrebov
В докладе рассмотрены подходы к созданию надежных юнит-тестов, которые просты в поддержке и модернизации, а также принципы создания кода пригодного для покрытия автотестами. Приведены два способа внедрения зависимости: с использованием конструктора тестируемого объекта, а также с использованием подхода "выделить и переопределить". Каждый из способов разобран на примере, демонстрирующем особенности его реализации и применения. Приведен ряд практических советов, нацеленных на создание надежных юнит-тестов. Использование на практике приведенных подходов и принципов позволяет упростить процесс поддержки и модификации существующего кода, а также дает уверенность в надежности работы добавляемого нового функционала. В конечном итоге это приводит к повышению качества разрабатываемого продукта.
Модель распространения прав доступа Take-Grantkzissu
Презентация работы Жилина И.
Выполнена на Кафедре Защиты Информации Факультета Информационных Систем и Технологий СыктГУ.
Подробнее: http://www.kzissu.ru/paper/doklady/470 (доступ закрытый)
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
Елена Шишкина, ведущий программист Деньги Mail.Ru. Она покажет практический пример лени как двигателя прогресса в отдельно взятом веб-проекте:
- Надоело писать код? Будем думать, как его не писать!
- Боремся с однотипным кодом. Боремся с неоднотипным кодом.
- Код, которого не существует, и код, который существует.
- Следите за руками: программируем на конфигах!
- Как жить дальше?
C++ богат различными инструментами, при разработке на C++ используется множество различных подходов. Но можно ли пользоваться ими во всех случаях или бывают ситуации, когда стоит воздержаться или ограничить их использование?
В докладе пойдет речь о том, какие существуют ограничения при разработке браузера и откуда они взялись. Почему мы живем без исключений или RTTI, к чему это ведет. Как мы используем стандартную библиотеку и сторонние модули.
Доклад вводит в рассмотрение универсальный адаптер, позволяющий обернуть любой класс с целью добавления новых свойств, отсутствующих в оригинальном классе. Получаемые классы могут иметь в точности такой же интерфейс, как и первоначальные, что позволяет прозрачно заменять их и оборачивать любое количество раз.
Это позволяет добавлять необходимые свойства объектам, не переписывая его с нуля. Предложенная обобщенная концепция будет последовательно введена и проиллюстрирована простыми, но интересными примерами.
Фитнес для вашего кода: как держать его в формеIlia Shishkov
C++ Россия 2017
Во время моего выступления мы поговорим о принципе "Minimize coupling, maximize cohesion". Обсудим, что это такое и что значат эти непонятные слова. Кроме того на приближенном к реальности примере мы рассмотрим, как, применяя указанный принцип, можно держать ваш код в форме, чтобы он был готов ко всем неожиданностям, которые подстерегают ваш проект в течение его жизни.
Многопоточность в браузере. Модель акторов — Константин КрамлихYandex
Я расскажу о том, как наладить многопоточное взаимодействие в браузере без использования мьютексов и условных переменных. Доклад будет интересен тем, кто пишет на языке C++ и разрабатывает многопоточные сервисы и приложения.
Funny JS - Это серия встреч для фронтэнд-разработчиков и не только. Я не буду читать лекцию или проводить тренинг. Мы будем общаться в живом формате и разбирать интересные и необычные задачи из мира JS, которые помогут лучше разобраться в теме и повысить скиллы. На первом митапе обсудим, что круче: функциональное программирование или объектно-ориентированный подход, прототипное или классическое наследование, ES6 или ES5
Догнать и перегнать boost::lexical_castRoman Orlov
Разбор нестандартной реализации преобразования целого числа в строку без использования циклов и рекурсивных вызовов времени исполнения - только рекурсия на этапе компиляции
Использование юнит-тестов для повышения качества разработкиvictor-yastrebov
В докладе рассмотрены подходы к созданию надежных юнит-тестов, которые просты в поддержке и модернизации, а также принципы создания кода пригодного для покрытия автотестами. Приведены два способа внедрения зависимости: с использованием конструктора тестируемого объекта, а также с использованием подхода "выделить и переопределить". Каждый из способов разобран на примере, демонстрирующем особенности его реализации и применения. Приведен ряд практических советов, нацеленных на создание надежных юнит-тестов. Использование на практике приведенных подходов и принципов позволяет упростить процесс поддержки и модификации существующего кода, а также дает уверенность в надежности работы добавляемого нового функционала. В конечном итоге это приводит к повышению качества разрабатываемого продукта.
Модель распространения прав доступа Take-Grantkzissu
Презентация работы Жилина И.
Выполнена на Кафедре Защиты Информации Факультета Информационных Систем и Технологий СыктГУ.
Подробнее: http://www.kzissu.ru/paper/doklady/470 (доступ закрытый)
Метод машинного обучения для распознавания сгенерированных доменных именPositive Hack Days
Ведущий: Александр Колокольцев
Доклад посвящен использованию машинного обучения для выявления доменных имен, сгенерированных при помощи Domain Generation Algorithm. Для решения задачи предлагается N-грамм-анализ. Будет подробно описан анализатор доменных имен, при использовании которого была достигнута точность в 98,5%.
Возможно, время не на твоей стороне. Реализация атаки по времени в браузереPositive Hack Days
Ведущий: Том Ван Гутем
В докладе будет рассмотрена новая киберугроза: атака по времени с использованием браузера. Атакующий добывает секретный ключ криптосистемы (например, RSA) при помощи анализа времени, затрачиваемого на шифрование входных данных, и получает доступ к конфиденциальной информации, размещенной на доверенном веб-сайте. Исследовав популярные веб-службы (приложения для работы с электронной почтой, социальные сети и сайты финансовых учреждений), докладчик выяснил, что атака компрометирует каждую из них и представляет неминуемую угрозу безопасности пользователей. Вниманию слушателей будет предложено несколько случаев из практики, иллюстрирующих тяжелые последствия атаки.
General Method of HTTP Messages Authentication Based on Hash Functions in Web...Denis Kolegov
HTTP messages authentication method for web applications is offered. The method can protect web
application against attack based on authentication and authorization weaknesses. It is
showed how HTTP authentication can be expressed in the terms of the attribute based
access control model (ABAC). Implementation of the ABAC access control decision mechanism can use an authentication cryptographic protocol.
JavaScript-модули "из прошлого в будущее"oelifantiev
Доклад на первом Ярославском форнтэнд-митапе.
Рассказ об имеющихся методиках описания модулей в JavaScript а также о грядущем стандарте ES6 и, наконец-то, нативной поддержке модулей языком.
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)Ontico
TypeScript – светлое будущее ES6 уже вчера.
Почему не "Кофе"? Чай полезней.
Что не так с Flow от Facebook?
Реальная практика использования: плюсы и минусы.
Не VisualStudio единым. Особенности работы в других IDE.
Интеграция с уже существующим JS кодом.
Использование совместно с RequireJS. Подводные камни.
Использование TypeScript совместно с React.
TypeScript и Angular.
Плюшки, которых нет в ES6/7 (пока нет): [static] enum, интерфейсы, private, protected, декораторы... Что дают и зачем?
Андрей Карпов
Вы узнаете, что такое статический анализ кода и историю его развития. Узнаете, как эффективно применять инструменты статического анализа в своей работе, увидите практические примеры использования этой методологии. Доклад ориентирован на программистов, использующих языки Си/Си++, но будет полезен всем
Двойное освобождение ресурсов. Недостижимый код. Некорректные операции сдвига. Неправильная работа с типами. Опечатки и copy-paste. Проблемы безопасности. Путаница с приоритетом операций.
В лекции подробно рассмотрены тонкие моменты языка JavaScript, с которыми часто возникают основные проблемы. Наглядные примеры и рецепты помогают лучше понять его особенности.
Клиент-сайд изобилует кучей различных транспортов, и зачастую непонятно, какой взять для решения той или иной задачи. В данной лекции рассказывается об особенности каждого транспорта и области применимости.
15. Создание и обработка ошибок
new EDBError( Error.DB_NOT_AUTHENTICATED )
new EEntExists( Error.DB_DUPLICATE_KEY )
new ENoEnt( "No worker found" )
new EWrongValue( "Handler not found" )
new ENetError( Error.NET_UNREACH )
new ENoEnt( Error.JSRPC_METHOD_NOT_FOUND )
if( (err instanceof ECustom) && err.is("config") ) { … }
if( err.is(EEntBadState) && err.is("cluster is off") ) { …
}
new ECustom([ "Config #%d for instance '%s' does not exists!", cfg_ver, inst.ident ])