Dave Abrahams, BoostPro Computing
He is a founding member of Boost.org and an active participant in the ISO C++ standards committee. His broad range of experience in the computer industry includes shrink-wrap software development, embedded systems design and natural language processing. He has authored eight Boost libraries and has made contributions to numerous others. Dave made his mark on C++ standardization by developing a conceptual framework for understanding exception-safety and applying it to the C++ standard library. He created the first exception-safe standard library implementation and, with Greg Colvin, drafted the proposals that eventually became the standard library’s exception safety guarantees.
Presentation topic:
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abrahams, BoostPro Computing.
Key points:
The ISO C++ standardization committee has just unanimously approved its final draft international standard, and it's chock full of new features. Though a few of the features have been available for years, some are brand new, and nobody really knows what it's like to program in this new C++ language. As with C++03, Boost.org is expected to take a leading role in exploiting C++11. In this talk, I'll give an overview of the most important new developments.
The presentation shows major features of the new C++ standard (language and the library). The full list of new things is very broad, so I've categorized them to be easier to understand.
An introductory PowerPoint to understanding and applying the C++ programming language. Broken down into lessons covering:
Introduction: Definitions and the History of Programming
Lesson 1: Libraries, Variables and Types, Blocks and Namespaces, Functions
Lesson 2: If...Else Statements, For and While Loops, Scope
Exercise: Program a Gumball Game
Lesson 3: Classes and Objects, Pointers
Virtual Functions support dynamic binding and object-oriented programming. A class that declares or inherits a virtual function is called a polymorphic class.
The presentation shows major features of the new C++ standard (language and the library). The full list of new things is very broad, so I've categorized them to be easier to understand.
An introductory PowerPoint to understanding and applying the C++ programming language. Broken down into lessons covering:
Introduction: Definitions and the History of Programming
Lesson 1: Libraries, Variables and Types, Blocks and Namespaces, Functions
Lesson 2: If...Else Statements, For and While Loops, Scope
Exercise: Program a Gumball Game
Lesson 3: Classes and Objects, Pointers
Virtual Functions support dynamic binding and object-oriented programming. A class that declares or inherits a virtual function is called a polymorphic class.
Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice exp
PHP Operator is a symbol i.e. used to perform operations on operands.
For example: $num=10+20;
PHP Operators can be categorized in following forms:
Arithmetic Operators
Bitwise Operators
Logical Operators
String Operators
Incrementing/Decrementing Operators
Array Operators
Assignment Operators
PHP Comments
PHP comments can be used to describe any line of code so that other developer can understand the code easily. It can also be used to hide any code.
PHP supports single line and multi line comments.
PHP Single Line Comments
// (C++ style single line comment)
# (Unix Shell style single line comment)
<?php
// this is C++ style single line comment
# this is Unix Shell style single line comment
echo "Welcome to PHP single line comments";
?>
Using classifiers to compute similarities between face images. Prof. Lior Wol...yaevents
Prof. Lior Wolf, Tel-Aviv University
He is a faculty member at the School of Computer Science at Tel-Aviv University. Previously, he was a post-doctoral associate in Prof. Poggio's lab at MIT. He graduated from the Hebrew University, Jerusalem, where he worked under the supervision of Prof. Shashua. He was awarded the 2008 Sackler Career Development Chair, the Colton Excellence Fellowship for new faculty (2006-2008), the Max Shlumiuk award for 2004, and the Rothchild fellowship for 2004. His joint work with Prof. Shashua in ECCV 2000 received the best paper award, and their work in ICCV 2001 received the Marr prize honorable mention. He was also awarded the best paper award at the post ICCV workshop on eHeritage 2009. In addition, Lior has held several development, consulting and advisory positions in computer vision companies including face.com and superfish, and is a co-founder of FDNA.
Presentation topic:
Using classifiers to compute similarities between images of faces.
Key points:
The One-Shot-Similarity (OSS) is a framework for classifier-based similarity functions. It is based on the use of background samples and was shown to excel in tasks ranging from face recognition to document analysis. In this talk we will present the framework as well as the following results: (1) when using a version of LDA as the underlying classifier, this score is a Conditionally Positive Definite kernel and may be used within kernel-methods (e.g., SVM), (2) OSS can be efficiently computed, and (3) a metric learning technique that is geared toward improved OSS performance.
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebookyaevents
Дмитрий Мольков, Facebook
Бакалавр прикладной математики Киевского национального университета им. Тараса Шевченко (2007). Магистр компьютерных наук Stony Brook University (2009). Hadoop HDFS Commiter с 2011 года. Член команды Hadoop в Facebook с 2009 года.
Тема доклада
Масштабируемость Hadoop в Facebook.
Тезисы
Hadoop и Hive являются прекрасным инструментарием для хранения и анализа петабайтов информации в Facebook. Работая с такими объемами информации, команда разработчиков Hadoop в Facebook ежедневно сталкивается с проблемами масштабируемости и эффективности Hadoop. В докладе пойдет речь о некоторых деталях оптимизаций в разных частях Hadoop инфраструктуры в Facebook, которые позволяют предоставлять высококачественный сервис. Это может быть, например, оптимизация стоимости хранения в многопетабайтных HDFS кластерах, увеличение пропускной способности системы, сокращение времени отказа системы с помощью High Availability разработок для HDFS.
Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice experience in maternity primarily in relation to corporate and international matter delivery.Dr archana dhawan bajaj's Sales JetView.Dr archana dhawan bajaj is a renowned practising doctor of non-commercial of India and Dr archana various Hospitals and Meternity.Dr archana dhawan bajaj has a PH.d master's degree in both human & International client Management along with other fellow.Dr archana is known to be proficient in Hindi,English,Sanskrit and Urdu.Dr archana dhawan bajaj has acquired extensive practice exp
PHP Operator is a symbol i.e. used to perform operations on operands.
For example: $num=10+20;
PHP Operators can be categorized in following forms:
Arithmetic Operators
Bitwise Operators
Logical Operators
String Operators
Incrementing/Decrementing Operators
Array Operators
Assignment Operators
PHP Comments
PHP comments can be used to describe any line of code so that other developer can understand the code easily. It can also be used to hide any code.
PHP supports single line and multi line comments.
PHP Single Line Comments
// (C++ style single line comment)
# (Unix Shell style single line comment)
<?php
// this is C++ style single line comment
# this is Unix Shell style single line comment
echo "Welcome to PHP single line comments";
?>
Using classifiers to compute similarities between face images. Prof. Lior Wol...yaevents
Prof. Lior Wolf, Tel-Aviv University
He is a faculty member at the School of Computer Science at Tel-Aviv University. Previously, he was a post-doctoral associate in Prof. Poggio's lab at MIT. He graduated from the Hebrew University, Jerusalem, where he worked under the supervision of Prof. Shashua. He was awarded the 2008 Sackler Career Development Chair, the Colton Excellence Fellowship for new faculty (2006-2008), the Max Shlumiuk award for 2004, and the Rothchild fellowship for 2004. His joint work with Prof. Shashua in ECCV 2000 received the best paper award, and their work in ICCV 2001 received the Marr prize honorable mention. He was also awarded the best paper award at the post ICCV workshop on eHeritage 2009. In addition, Lior has held several development, consulting and advisory positions in computer vision companies including face.com and superfish, and is a co-founder of FDNA.
Presentation topic:
Using classifiers to compute similarities between images of faces.
Key points:
The One-Shot-Similarity (OSS) is a framework for classifier-based similarity functions. It is based on the use of background samples and was shown to excel in tasks ranging from face recognition to document analysis. In this talk we will present the framework as well as the following results: (1) when using a version of LDA as the underlying classifier, this score is a Conditionally Positive Definite kernel and may be used within kernel-methods (e.g., SVM), (2) OSS can be efficiently computed, and (3) a metric learning technique that is geared toward improved OSS performance.
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebookyaevents
Дмитрий Мольков, Facebook
Бакалавр прикладной математики Киевского национального университета им. Тараса Шевченко (2007). Магистр компьютерных наук Stony Brook University (2009). Hadoop HDFS Commiter с 2011 года. Член команды Hadoop в Facebook с 2009 года.
Тема доклада
Масштабируемость Hadoop в Facebook.
Тезисы
Hadoop и Hive являются прекрасным инструментарием для хранения и анализа петабайтов информации в Facebook. Работая с такими объемами информации, команда разработчиков Hadoop в Facebook ежедневно сталкивается с проблемами масштабируемости и эффективности Hadoop. В докладе пойдет речь о некоторых деталях оптимизаций в разных частях Hadoop инфраструктуры в Facebook, которые позволяют предоставлять высококачественный сервис. Это может быть, например, оптимизация стоимости хранения в многопетабайтных HDFS кластерах, увеличение пропускной способности системы, сокращение времени отказа системы с помощью High Availability разработок для HDFS.
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...yaevents
Вячеслав Закоржевский, Kaspersky Lab
Пришёл в «Лабораторию Касперского» в середине 2007 года на должность вирусного аналитика. В конце 2008 года занял позицию старшего вирусного аналитика в группе эвристического детектирования. В область интересов входит исследование полиморфных вирусов и сильно изменяющихся зловредов. Также следит за современными тенденциями в методах обфускации, антиэмуляции и прочих, применяемых вредоносным программным обеспечением.
Тема доклада
Сложнейшие техники, применяемые буткитами и полиморфными вирусами.
Тезисы
Бытует мнение, что современные зловреды достаточно просты и пишутся неподготовленными людьми. Данное выступление призвано развеять этот миф. В презентации будут описаны три зловреда, которые используют нетривиальные и сложные методы в процессе своего функционирования. В частности, будет рассмотрена схема работы современных буткитов, которые всё больше и больше набирают обороты. На двух других примерах мы проиллюстрируем изобретательность вирусописателей, которые пытаются максимально усложнить жизнь исследователям и антивирусным компаниям. В одном случае они использовали собственную виртуальную машину совместно с EPO техникой заражения. А в другом - «подключение» нулевых виртуальных адресов для размещения в них своих данных.
Поисковая технология "Спектр". Андрей Плахов, Яндексyaevents
Андрей Плахов, Яндекс
Закончил с отличием механико-математический факультет МГУ в 2002 году. Защитил кандидатскую диссертацию по программированию в Институте прикладной математики им. Келдыша РАН. В Яндексе – три года, всё это время занимается повышением качества веб-поиска. Автор поискового релиза «Спектр». До Яндекса в течение семи лет делал компьютерные видеоигры. Внерабочие интересы: P-NP проблема, квантовые вычисления, структурная лингвистика, системная биология, рисование слонов шариковой ручкой.
Тема доклада
Поисковая технология «Спектр».
Тезисы
Большое количество запросов, отправленных в поиск Яндекса, формулируются неоднозначно. Например, по запросу [наполеон] кто-то хочет найти французского императора, а кто-то – рецепт торта. А задавая вопрос [пицца], человек может искать и ресторан с доставкой на дом, и рецепты, и даже фотографии пиццы. В основе работы «Спектра» лежит статистика поисковых запросов. Система исследует запросы всех пользователей Яндекса и выделяет в них различные объекты. Далее объекты распределяются по категориям: имена людей, названия фильмов и книг, города, модели автомобилей и т.д. «Спектр» учитывает, в какую категорию попадает объект, что обычно люди про него спрашивают, что пишут в интернете, и оценивает, какой процент людей ищут этот объект с каждой из возможных целей. Результаты поиска по многозначным запросам ранжируются с помощью вероятностной модели восприятия страницы результатов, при этом максимизируемой характеристикой является вероятность того, что пользователь получит нужный ему ответ.
Контроль зверей: инструменты для управления и мониторинга распределенных сист...yaevents
Александр Козлов, Cloudera Inc.
Александр Козлов, старший архитектор в Cloudera Inc., работает с большими компаниями, многие из которых находятся в рейтинге Fortune 500, над проектами по созданию систем анализа большого количества данных. Закончил аспирантуру физического факультета Московского государственного университета, после чего также получил степень Ph.D. в Стэнфорде. До Cloudera и после окончания учебы работал над статистическим анализом данных и соответствующими компьютерными технологиями в SGI, Hewlett-Packard, а также стартапе Turn.
Тема доклада
Контроль зверей: инструменты для управления и мониторинга распределенных систем от Cloudera.
Тезисы
Поддержание распределенных систем, состоящих из тысяч компьютеров, является сложной задачей. Компания Cloudera, которая специализируется на создании распределенных технологий, разработала набор средств для централизованного управления распределенных Hadoop/HBase кластеров. Hadoop и HBase являются проектами Apache Software Foundation, и их применение для анализа частично структурированных данных ускоряется во всем мире. В этом докладе будет рассказано о SCM, системе для конфигурации, настройки, и управления Hadoop/HBase и Activity Monitor, системе для мониторинга ряда ОС и Hadoop/HBase метрик, а также об особенностях подхода Cloudera в отличие от существующих решений для мониторинга (Tivoli, xCat, Ganglia, Nagios и т.д.).
В поисках математики. Михаил Денисенко, Нигмаyaevents
Михаил Денисенко, Нигма
Закончил факультет вычислительной математики и кибернетики МГУ. Завершает работу над диссертацией, посвященной математическим аспектам информационной безопасности. Занимался исследованиями в области обработки видеопоследовательностей и компьютерной безопасности в компании Intel. С 2009 года является старшим разработчиком математического сервиса в компании Nigma.ru. С 2011 года — системный архитектор поисковой системы ITim.vn.
Тема доклада
В поисках математики.
Тезисы
Nigma-Математика – это сервис, с помощью которого пользователи могут решать различные математические задачи (упрощать выражения, решать уравнения, системы уравнений и т. д.), вводя их прямо в строку поиска в виде обычного текста. Система распознает более тысячи физических, математических констант и единиц измерения, что позволяет пользователям производить операции с различными величинами (в том числе решать уравнения) и получать ответ в указанных единицах измерения. Помимо уравнений система решает все задачи, характерные для калькуляторов поисковых систем и конвертеров валют. В докладе будет описана общая схема функционирования сервиса, базовые и новые алгоритмы системы символьных вычислений (алгоритмы решения уравнений и неравенств, алгоритм учета области допустимых значений, алгоритм исследования функций и т.п.). Также будет рассказано об ускорении работы сервиса, распределении нагрузки на систему, распознавании математичности запроса, преобразовании валют и метрических величинах.
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...yaevents
Алексей Воинов, Яндекс
Закончил МГТУ им. Н.Э.Баумана в 1998 году. Посвятил часть своей жизни свободному программному обеспечению. Замечен в любви к языкам, как к алгоритмическим, так и к человеческим, как к естественным, так и к искусственным. Работает в Яндексе с 2009 года, занимается разработкой Яндекс.Почты.
Тема доклада
Зачем обычному программисту знать языки, на которых почти никто не пишет.
Тезисы
Есть категория алгоритмических языков, которые большинство программистов считает в лучшем случае странными. Это такие языки как Haskell, *ML, Lisp, Q. «Странные» языки не приживаются в промышленной разработке софта, потому что они не дают возможности писать стандартный «промышленный» код. Однако они бывают очень хороши для придумывания приёмов, которые помогают улучшить промышленный код. Впоследствии многие из них становятся стандартными промышленными. Знание «странных» языков очень полезно, когда в силу внешних обстоятельств сделать промышленный код радикально лучше невозможно, но его можно улучшать небольшими шагами.
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
Владимир Лосев, Google
Закончил математико-механический факультет Санкт-Петербургского государственного университета в 1995 году. Работал в компаниях Motоrola, Fair Isaac и Yahoo. С 2008 года работает в Google, в группе, занимающейся вопросами повышения производительности инженеров.
Тема доклада
Юнит-тестирование и Google Mock.
Тезисы
В модульных (юнит) тестах каждый элемент программы тестируется по отдельности, в изоляции от других. Такие тесты исполняются очень быстро, поэтому их можно запускать когда угодно, что позволяет отлавливать дефекты на самых ранних стадиях разработки. Однако для тестирования объекта в изоляции от других необходимо имитировать поведение связанных с ним объектов, что на C++ довольно утомительное занятие. Разработанная в Googlе библиотека для создания и использования mock-объектов — Google Mock — позволяет существенно упростить этот процесс и ускорить написание тестов. В докладе пойдет речь о принципах и возможностях библиотеки, примерах её использования и её внутреннем устройстве.
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндексyaevents
Тарас Иващенко, Яндекс
Администратор информационной безопасности в Яндексе. Специалист по информационной безопасности, проповедник свободного программного обеспечения, автор Termite, xCobra и участник проекта W3AF.
Тема доклада
Сканирование уязвимостей со вкусом Яндекса.
Тезисы
В докладе будет рассказано о внедрении в Яндексе сканирования сервисов на уязвимости как одного из контроля безопасности в рамках SDLC (Secure Development Life Cycle). Речь пойдет о сканировании уязвимостей на этапе тестирования сервисов, а также о сканировании сервисов, находящихся в промышленной эксплуатации. Мы рассмотрим проблемы, с которыми столкнулись, и объясним, почему в качестве основного механизма решили выбрать открытое программное обеспечение (сканер уязвимостей w3af), доработанное под наши нужды.
This is Work-In-Progress. Developing a series of lectures on C++0x. This will augment my presentations on C++ and Design Pattern. First trial run was done at Interra, Noida in 2009
Presented on 27th September 2017 to a joint meeting of 'Cork Functional Programmers' and the 'Cork Java Users Group'
Based on the Kotlin Language programming course from Instil. For more details see https://instil.co/courses/kotlin-development/
C++ and OOPS Crash Course by ACM DBIT | Grejo JobyGrejoJoby1
The slides from the C++ and OOPS Crash Course conducted for ACM DBIT by Grejo Joby.
Learn the concepts of OOPS and C++ Programming in the shortest time with these notes.
Just how different is "Modern C++" from "legacy C++"? Is my codebase ready for C++17? Do I need a full rewrite of my app to modernize my code? If you're looking for answers to some of these questions, join us for a session on how to effectively leverage modern C++17 features in your existing C++ projects; and no, you don't need to rewrite your app.
Just how different is "Modern C++" from "legacy C++"? Is my codebase ready for C++17? Do I need a full rewrite of my app to modernize my code? If you're looking for answers to some of these questions, join us for a session on how to effectively leverage modern C++17 features in your existing C++ projects; and no, you don't need to rewrite your app.
ReasonML est une syntaxe de OCaml développée par Jordan Walke (le createur de React) au sein de Facebook. Un langage statiquement (bien) typé qui permet notament de mieux raisonner ses applications Reactjs. Je vous propose un tour rapide du langage, une découverte du framework ReasonReact autour d'une application houblonnée et enfin une ouverture sur les perspectives du langage, notamment pour des applications natives.
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)AvitoTech
В своём докладе Влад будет говорить об использовании STL, управлении памятью, как работает ARC и C++, лямбды и блоки. И самое главное: где и как можно «выстрелить себе в ногу».
Kotlin: A pragmatic language by JetBrainsJigar Gosar
A pragmatic language for JVM and Android.
Combines OO and functional features.
Focused on interoperability, safety, clarity, tooling support.
Open Source.
Works everywhere where Java works.
Key focus on interoperability and seamless support for mixed Java+Kotlin projects.
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...yaevents
Артем Ерошенко, Яндекс
Закончил математико-механический факультет Санкт-Петербургского государственного университета, учится на 3 курсе аспирантуры по специальности «Теория управления». С 2008 года занимается автоматизацией тестирования выдачи поиска и околопоисковых сервисов в компании «Яндекс». С 2011 года координирует группу разработки инструментов тестирования.
Илья Кацев, Яндекс
Окончил математико-механический факультет Санкт-Петербургского государственного университета, защитил диссертацию по теории игр на степень PhD в VU University Amsterdam (Нидерланды). В Яндексе занимается автоматизацией тестирования (имитация действий пользователя и анализ результата).
Тема доклада
Как научить роботов тестировать веб-интерфейсы.
Тезисы
Речь пойдет об инструменте, который будет сам проверять веб-интерфейсы на наличие ошибок. Главное его качество – способность самостоятельно (автоматически) обнаруживать связанные элементы на странице, строить модели, которые потом можно будет тестировать автоматически. Мы не только предложим идеи, как использовать и развивать эту систему, но и покажем её прототип.
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...yaevents
Сергей Бережной, Яндекс
С 2005 года работает веб-разработчиком в Яндексе. За это время успел поучаствовать в разработке целого ряда сервисов, например, Поиска по блогам, Я.ру, Яндекс.Почты, Поиска, Картинок, Видео. Помимо внешних проектов активно занимается развитием различных внутренних инструментов для полного цикла создания сайтов. Больше всего на свете любит жену и программирование.
Тема доклада
Построение сложносоставных блоков в шаблонизаторе bemhtml.
Тезисы
Предметно-ориентированный шаблонизатор bemhtml позволяет создавать шаблоны блоков согласно методологии БЭМ. После компиляции получаются быстрые plain JavaScript-шаблоны, которые можно исполнить как на сервере, так и на клиенте. Эта технология используется в библиотеке блоков bem-bl, а также на некоторых сервисах Яндекса. Мастер-класс демонстрирует одно из преимуществ шаблонизатора bemhtml — возможность построения сложносоставных блоков. Во время мастер-класса вы узнаете об идее и синтаксисе шаблонизатора, получите готовые рецепты для решения типовых задач и анализ возможностей bemhtml.
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексyaevents
Елена Глухова, Яндекс
Верстальщик, разработчик веб-интерфейсов. Работает в Яндексе с 2008 года.
Варвара Степанова, Яндекс
Закончила Петрозаводский государственный университет. Работает в Яндексе с 2008 года разработчиком интерфейсов. Разрабатывала проекты Яндекс.Ответы и Яндекс.Фотки. Последние полтора года Елена Глухова и Варвара Степанова совместно работают вместе над внутренним интерфейсным фреймворком, помогающим единообразно делать сервисы Яндекса. В последнее время также заняты разработкой подобного интерфейсного фреймворка в open source.
Тема доклада
i-bem.js: JavaScript в БЭМ-терминах.
Тезисы
Разрабатывая сайты по методологии БЭМ, мы используем единую предметную область во всех технологиях: CSS, шаблоны, JavaScript. Для того чтобы это было возможно, в библиотеке блоков bem-bl реализовано ядро клиентского JS-фреймворка, которое позволяет работать со страницей в терминах БЭМ, на следующем уровне абстракции над DOM-представлением. В этом мастер-классе показаны ключевые моменты использования такого подхода для написания клиентского JS. Мы создаём составной блок, использующий JS-функциональность входящих в него маленьких блоков. В результате всё работает, и никакого копипаста.
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...yaevents
Елена Глухова, Яндекс
Верстальщик, разработчик веб-интерфейсов. Работает в Яндексе с 2008 года.
Варвара Степанова, Яндекс
Закончила Петрозаводский государственный университет. Работает в Яндексе с 2008 года разработчиком интерфейсов. Разрабатывала проекты Яндекс.Ответы и Яндекс.Фотки. Последние полтора года Елена Глухова и Варвара Степанова совместно работают вместе над внутренним интерфейсным фреймворком, помогающим единообразно делать сервисы Яндекса. В последнее время также заняты разработкой подобного интерфейсного фреймворка в open source.
Тема доклада
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты.
Тезисы
Все сайты немного похожи друг на друга. Если заниматься веб-разработкой долгие годы, накапливаются практики и типовые решения распространённых задач. Результатом наших накоплений становится open source библиотека блоков bem-bl , которую мы разрабатываем на GitHub. Библиотека реализована согласно методологии БЭМ и позволяет использовать блоки, уже имеющие шаблонную, CSS и JS-реализации, для построения web-страницы. Мастер-класс продемонстрирует, как можно использовать готовые блоки из этой библиотеки и как модифицировать их под нужды своего сайта. Для работы с файлами библиотеки используются консольные инструменты bem-tools.
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
Александр Петренко, ИСП РАН
Профессор, доктор физико-математических наук, заведующий отделом технологий программирования Института системного программирования (ИСП РАН), профессор ВМК МГУ. Основные работы в областях: формализация требований, генерация тестов на основе формализованных требований и формальных моделей (model based testing – MBT). Приложения: тестирование операционных систем и распределенных систем, тестирование компиляторов, верификация дизайна микропроцессоров, формализация стандартов на API операционных систем и телекоммуникационных протоколов. Сопредседатель оргкомитетов International MBT workshop (http://www.mbrworkshop.org/), Spring Young Researcher Colloquium on Software Engineering – SYRCoSE (http://syrocose.ispras.ru), городского семинара по технологиям разработки и анализа программ ТРАП/SDAT (http://sdat.ispras.ru/).
Тема доклада
Модели в профессиональной инженерии и тестировании программ.
Тезисы
Model Based Software Engineering (MBSE) является расширением подхода к разработке программ на основе моделей. В MBSE в отличие, например, от MDA (Model Driver Architecture) существенное внимание уделяется не только задачам собственно проектирования и разработки кода, но и задачам других фаз жизненного цикла – анализу требований, верификации и валидации, управлению требованиями на всех фазах жизненного цикла. Model Based Testing (MBT) хронологически возник гораздо раньше, чем MBSE и MDA, однако его место в разработке программ в полной мере раскрылось вместе с развитием MBSE. По этой причине MBT и MBSE следует рассматривать в тесной связке. В докладе будут рассмотрены концепции MBSE-MDA-MBT, основные источники и виды моделей, которые используются в этих подходах, методы генерации тестов на основе моделей, известные инструменты для
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...yaevents
Роман Андриади, Яндекс
Работает в департаменте эксплуатации Яндекса с 2005 года. С 2010 года – руководитель группы администрирования коммуникационных, контент- и внутренних сервисов.
Тема доклада
Администрирование небольших сервисов, или Один за всех и 100 на одного.
Тезисы
Администрирование коммуникационных сервисов начиналось в 2004 году с обслуживания десятка серверов и десятка сервисов, на них располагающихся. Со временем сервисов становилось все больше, увеличивалось число задач по ним, а десяток серверов вырос в парк из сотен машин, разделенных на множество разношерстных кластеров. В докладе будет рассказано, как с ростом объемов кластера эволюционировали приемы администрирования, какие инструменты при этом использовались, как мы написали свой инструмент управления, как и чем он научился помогать нам за эти годы.
Истории про разработку сайтов. Сергей Бережной, Яндексyaevents
Сергей Бережной, Яндекс
С 2005 года работает веб-разработчиком в Яндексе. За это время успел поучаствовать в разработке целого ряда сервисов, например, Поиска по блогам, Я.ру, Яндекс.Почты, Поиска, Картинок, Видео. Помимо внешних проектов активно занимается развитием различных внутренних инструментов для полного цикла создания сайтов. Больше всего на свете любит жену и программирование.
Тема доклада
Истории про разработку сайтов.
Тезисы
Мы расскажем о том, какие задачи, связанные с разработкой сайтов, появлялись в Яндексе в разное время и как мы их решали. Выступление задумывается как диалог с разработчиками, которые тоже сталкиваются с похожими задачами. В итоге у нас получится некий сборник технологических историй для размышления.
Разработка приложений для Android на С++. Юрий Береза, Shturmannyaevents
Юрий Береза, Shturmann
Окончил факультет приборостроения Московской государственной академии приборостроения и информатики. В 2004 году пришел на работу в отдел мобильных разработок компании «Макцентр». Занимался разработкой под огромное число мобильных платформ: Windows Mobile, Symbian, Android, Embedded linux и iOS. В данный момент работает руководителем группы в компании «Контент Мастер», где занимается разработкой автомобильной навигации Shturmann.
Тема доклада
Разработка приложений для Android на С++.
Тезисы
Платформа Android становится популярнее с каждым годом. Несмотря на то, что основным языком разработки приложений для Android является Java, часто для написания кросс-платформенных приложений или при использовании сторонних библиотек программистам приходится использовать С или С++. К сожалению, разработка на С++ для платформы Android описана довольно скупо, и зачастую приходится тратить много времени на поиск нужной информации. В докладе будут представлены ответы на основные вопросы по всему циклу разработки: как писать С++ код, который будет работать на Android, как его отлаживать и находить ошибки во время падения приложений, есть ли возможность профилировать код и где искать дополнительную информацию по этим вопросам.
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...yaevents
Дмитрий Жестилевский, Яндекс
Закончил факультет экспериментальной и теоретической физики Московского инженерно-физического института в 2011 году. С 2006 года занимается разработкой приложений (игры, бизнес-приложения) под мобильные устройства на платформах J2ME, BREW, Windows Mobile, Android, iOS. В Яндексе с 2010 года, занимается разработкой архитектуры мобильных картографических сервисов. Область интересов: кросс-платформенная разработка под мобильные устройства, визуализация 3D.
Тема доклада
Кросс-платформенная разработка под мобильные устройства.
Тезисы
Разработка приложений под embedded-устройства сильно фрагментирована из-за обилия OS (Android, iOS, WM, WP7, Symbian, Bada). Независимая разработка под каждую платформу в отдельности приводит к пропорциональному росту количества участников процесса разработки и объема поддерживаемого CodeBase. Внедрение общего кода, который будет работать на всех платформах за счет использования Platform Abstraction Layer с унифицированным интерфейсом, способно сократить эти издержки. В то же время остается возможность использовать платформенно-зависимые сущности, например UI, для придания приложению native look and feel. В докладе рассматривается процесс внедрения общих компонентов в мобильные приложения Яндекса на примере Панорам улиц, а также трудности, с которыми мы столкнулись во время разработки, и пути их решения.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abrahams, BoostPro Computing
1. C++ 2011
Highlights from the New International Standard
1
Monday, September 19, 2011
2. Intro
• Who am I
• Who are you?
• Why We’re Here
2
Monday, September 19, 2011
3. C++11 Goals
• Make C++ a better language for systems
programming
• Make C++ a better language for writing libraries
• Make C++ more teachable and learnable
• Maintain backward compatibility
3
Monday, September 19, 2011
4. C++11 At a Glance
• General Core Language Features
concurrency, move semantics, auto, range-based for, lambdas…
• Library Features
containers, regular expressions, smart pointers, new algorithms…
• Features for writing classes
constructor delegation, override/final, =default/=delete…
• Crazy Template Stuff
Variadic templates, template aliases, decltype, perfect forwarding, …
4
Monday, September 19, 2011
6. Type Deduction
void print_3x(vector<float> const& v)
{
for ( vector<float>::const_iterator p = v.begin();
p != v.end(); p++ )
{
std::cout << *p * 3 << " ";
}
}
6
Monday, September 19, 2011
7. Type Deduction
void print_3x(vector<float> const& v)
{
for ( vector<float>::const_iterator p = v.begin();
p != v.end(); p++ )
{
std::cout << *p * 3 << " ";
}
}
6
Monday, September 19, 2011
8. Type Deduction
void print_3x(vector<float> const& v)
{
for ( auto p = v.begin();
p != v.end(); p++ )
{
std::cout << *p * 3 << " ";
}
}
7
Monday, September 19, 2011
9. Type Deduction
void print_3x(vector<float> const& v)
{
for ( auto p = v.begin(); p != v.end(); p++ )
{
std::cout << *p * 3 << " ";
}
}
8
Monday, September 19, 2011
10. Type Deduction
auto a = 3; int
const auto b = 3.14; const double
auto const& c = 42; int const&
auto d = "foobar"; char const*
auto& e = "baz" char const(&)[4]
extern std::list<Foo> l;
auto p = l.begin(); std::list<Foo>::iterator
auto& x = l.front(); std::list<Foo>::value_type&
auto& y = any-expression-here;
9
Monday, September 19, 2011
11. Type Deduction
void print_3x(vector<float> const& v)
{
for ( auto p = v.begin(); p != v.end(); p++ )
{
std::cout << *p * 3 << " ";
}
}
10
Monday, September 19, 2011
12. Range-based for loop
void print_3x(vector<float> const& v)
{
for ( auto p = v.begin(); p != v.end(); p++ )
{
std::cout << *p * 3 << " ";
}
}
11
Monday, September 19, 2011
13. Range-based for loop
void print_3x(vector<float> const& v)
{
for ( float a: v )
{
std::cout << a * 3 << " ";
}
}
12
Monday, September 19, 2011
14. Range-based for loop
void print_3x(vector<float> const& v)
Range
{
for ( float a: v )
{
std::cout << a * 3 << " ";
}
}
12
Monday, September 19, 2011
15. Range-based for loop
void print_3x(vector<float> const& v)
Loop variable Range
{
for ( float a: v )
{
std::cout << a * 3 << " ";
}
}
12
Monday, September 19, 2011
16. Range-based for loop
auto in C++11
void print_3x(vector<float> const& v)
{
for ( auto a: v )
{
std::cout << a * 3 << " ";
}
}
13
Monday, September 19, 2011
17. Range-based for loop
template <class Range>
void print_3x(Range const& v)
{
for ( typename Range::value_type a: v )
{
std::cout << a * 3 << " ";
}
}
14
Monday, September 19, 2011
18. Range-based for loop
auto in C++11
template <class Range>
void print_3x(Range const& v)
{
for ( auto a: v )
{
std::cout << a * 3 << " ";
}
}
15
Monday, September 19, 2011
19. Range-based for loop
auto in C++11
void inplace_3x(vector<float>& v)
{
for ( float& a: v )
{
a *= 3;
}
}
16
Monday, September 19, 2011
20. Ranges Everywhere
int rng[3] = { 42, 314, 77 };
for( int var: rng )
{
...
}
17
Monday, September 19, 2011
22. Ranges Everywhere
YourType rng;
for( int var: rng )
{
...
}
19
Monday, September 19, 2011
23. 98
++Range-based for loop
C
void print_3x(vector<float> const& v)
{
BOOST_FOREACH( float a, v )
{
std::cout << a * 3 << " ";
}
}
20
Monday, September 19, 2011
24. 98
++Range-based“for”loop
C
void print_3x(vector<float> const& v)
{
BOOST_FOREACH( float a, v )
{
std::cout << a * 3 << " ";
}
}
20
Monday, September 19, 2011
25. 98
++Range-based“for”loop
C
void print_3x(vector<float> const& v)
{
BOOST_FOREACH( float a, v )
{
std::cout << a * 3 << " ";
}
}
See your friendly neighborhood
Boost C++ Libraries for details
20
Monday, September 19, 2011
26. Using an Algorithm
void print_3x(vector<float> const& v)
{
std::for_each(
v.begin(), v.end(), );
}
21
Monday, September 19, 2011
27. Using an Algorithm
void print_3x(vector<float> const& v)
{
std::for_each(
v.begin(), v.end(), );
}
21
Monday, September 19, 2011
28. Using an Algorithm
void print_3x(vector<float> const& v)
{
std::for_each(
v.begin(), v.end(), );
}
21
Monday, September 19, 2011
29. Using an Algorithm
static void print_3x_element(float a)
{
std::cout << a * 3 << " ";
}
void print_3x(vector<float> const& v)
{
std::for_each(
v.begin(), v.end(), );
}
21
Monday, September 19, 2011
30. Using an Algorithm
static void print_3x_element(float a)
{
std::cout << a * 3 << " ";
}
void print_3x(vector<float> const& v)
{
std::for_each(
v.begin(), v.end(), print_3x_element);
}
21
Monday, September 19, 2011
31. Using an Algorithm
static void print_3x_element(float a)
{
std::cout << a * 3 << " ";
}
void print_3x(vector<float> const& v)
{
std::for_each(
v.begin(), v.end(), print_3x_element);
}
21
Monday, September 19, 2011
47. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A
27
Monday, September 19, 2011
48. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B
27
Monday, September 19, 2011
49. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C
27
Monday, September 19, 2011
50. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
27
Monday, September 19, 2011
51. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
27
Monday, September 19, 2011
52. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
A
27
Monday, September 19, 2011
53. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
A B
27
Monday, September 19, 2011
54. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
A B C
27
Monday, September 19, 2011
55. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
A B C D
27
Monday, September 19, 2011
56. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
A B C D
28
Monday, September 19, 2011
57. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
•
A B C D
28
Monday, September 19, 2011
58. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
28
Monday, September 19, 2011
59. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D E
28
Monday, September 19, 2011
60. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D E
28
Monday, September 19, 2011
61. Copy Fatigue?
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename); Expensive
database db = load_db("huge.db");
copies are
made just
before
db.push_back( create_record() ); destroying
the source
object
• A B C D E
28
Monday, September 19, 2011
62. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
29
Monday, September 19, 2011
63. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• B C D
A
29
Monday, September 19, 2011
64. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• C D
A B
29
Monday, September 19, 2011
65. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• D
A B C
29
Monday, September 19, 2011
66. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
•
A B C D
29
Monday, September 19, 2011
67. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
•
A B C D
29
Monday, September 19, 2011
68. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
•
A B C D
30
Monday, September 19, 2011
69. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D
30
Monday, September 19, 2011
70. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D E
30
Monday, September 19, 2011
71. Try Moving Instead!
typedef set<string> record;
typedef vector<record> database;
database load_db(string filename);
database db = load_db("huge.db");
db.push_back( create_record() );
• A B C D E
30
Monday, September 19, 2011
72. Move Mini-HOWTO
Move-enabling an existing class
31
Monday, September 19, 2011
73. Move-Enabling
struct Owner { • X
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this;
delete p; p = 0;
if (src.p) p = new Resource(*src.p);
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
32
Monday, September 19, 2011
74. Move-Enabling
struct Owner { • X
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this;
delete p; p = 0;
if (src.p) p = new Resource(*src.p);
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
32
Monday, September 19, 2011
75. Move-Enabling
struct Owner { • X
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this;
delete p; p = 0;
if (src.p) p = new Resource(*src.p);
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
32
Monday, September 19, 2011
76. Move-Enabling
struct Owner { • X
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {} X
Owner& operator=(const Owner& src) {
if (this == &src) return *this;
delete p; p = 0;
if (src.p) p = new Resource(*src.p);
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
32
Monday, September 19, 2011
77. Move-Enabling
struct Owner { • X
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {} X
Owner& operator=(const Owner& src) {
if (this == &src) return *this;
delete p; p = 0;
if (src.p) p = new Resource(*src.p);
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
32
Monday, September 19, 2011
78. Move-Enabling
struct Owner { • X
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {} • X
Owner& operator=(const Owner& src) {
if (this == &src) return *this;
delete p; p = 0;
if (src.p) p = new Resource(*src.p);
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
32
Monday, September 19, 2011
79. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); • Z
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
80. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); • Z
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
81. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); • Z
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
82. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); •
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
83. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); •
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
84. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); •
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
85. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); • Y
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
86. Move-Enabling
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this; • Y
delete p; p = 0;
if (src.p) p = new Resource(*src.p); • Y
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
33
Monday, September 19, 2011
87. New Move Operations
struct Owner {
Owner(const Owner& src)
: p(src.p ? new Resource(*src.p) : 0) {}
Owner& operator=(const Owner& src) {
if (this == &src) return *this;
delete p; p = 0;
if (src.p) p = new Resource(*src.p);
return *this;
}
~Owner() { delete p; }
private:
Resource* p;
};
34
Monday, September 19, 2011
106. Move Semantics
• Automatically accelerates existing code!
• Applied throughout standard library
• Many move-only types in library
• Launches a new era of value semantics
37
Monday, September 19, 2011
110. Classes and OOP
• member initializers
• explict conversion
• override and final
• delegating and inheriting constructors
• defaulted and deleted functions
41
Monday, September 19, 2011