Верификация управляющих программ в системе автоматизации РТК (Iron hand)Alexander PetrovПрограммно-аппаратная система моделирования и управления технологическим оборудованием. Основные особенности: высокоуровневые параллельные языки описания технологических процессов, ориентированные на специалистов предметных областей. Возможность предварительной отладки управляющих программ на моделях технологического оборудования.
C++ exceptionsPlatonov SergeyМало кто отчетливо представляет, как работают исключения в С++.
Автор пытается восполнить этот пробел, заодно пытаясь выяснить, почему всё устроено так как оно устроено и нельзя ли там чего-нибудь улучшить.
1) Две основные проблемы - как обустроить раскрутку стека
и как осуществить передачу управления при возникновении исключения
2) Раскрутка стека - GCC LDSA, MSVC32, MSVC64
3) Передача управления - SJLJ, DW2, MSVC
4) Раскручиваем стек своими руками
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...Platonov SergeyРазмер и сложность проектов растёт. С кодом всё сложнее совладать, поэтому статический анализ всё больше набирает популярность. А лидеры отрасли все чаще внедряют такие инструменты у себя. Мы расскажем об использования статического анализатора кода в игровой индустрии на примере работы с проектом Unreal Engine 4. Про это на сайте компании Epic Games можно найти статью. Но одно дела статья, а другое дело живой рассказ. Вы услышите интересные истории, увидите примеры ошибок в коде Epic Games, да и просто пообщаетесь с участниками внедрения анализатора. Если вы ещё не решили, нужен ли статический анализатор вашему проекту, обязательно приходите послушать наш доклад.
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov SergeyВ этом докладе Дмитрий кратко рассказывает о таком звере, как LLVM, о котором много кто слышал, но немногие щупали.
Что такое компилятор на самом деле? Как происходит компиляция программы, как работают оптимизации и, наконец, откуда берется неопределенное поведение в детерменированных программах на C++?
Догнать и перегнать boost::lexical_castRoman OrlovРазбор нестандартной реализации преобразования целого числа в строку без использования циклов и рекурсивных вызовов времени исполнения - только рекурсия на этапе компиляции
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.Roman OrlovВ докладе будут затронуты принципиальные вопросы — зачем нам программировать на шаблонах, как мы это делаем в C++11/14 и как будем это делать в C++17. Проведем параллель с функциональными языками (привет Haskell!). На примере реального кода разберем fold-expressions и увидим, чем опасен constexpr-if. А также взглянем на метапрограммирование в стиле C++11/14 и C++17 глазами компилятора.
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиMail.ru GroupРазбор приемов метапрограммирования на примере написания библиотеки конечного автомата, где DSL реализован с помощью приемов метапрограммирования.
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...corehard_byРеализовывать конечные автоматы руками с помощью switch case или наследования с виртуальными функциями очень трудоёмко и подвержено ошибкам. На докладе я расскажу о библиотеке конечных автоматов AFSM (Another Finite State Machine), которая позволяет воспользоваться декларативным языком для описания машины состояний. Также я расскажу о небольших трюках и хитростях метапрограммирования на примерах из кода этой библиотеки.
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey PlatonovЗачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
DI в C++ тонкости и нюансыPlatonov SergeyВ докладе рассказывается об особенностях подхода к dependence injections в C++. Посмотрим какие подходы, в чем их плюсы и минусы. Также затрагивается тема Inversion of Control контейнеров.
Повышение конверсии через оптимизацию JSАнтон ПлешивцевСлайды с конференции Devconf 2014. Рассказывается, как производительность влияет на конверсию, приводится 8 тонкостей языка, которые нужно знать, чтобы писать самый быстрый код из возможного.
Sportsmanship!learn how to_be_respectful!_)Nsn07This three sentence summary provides the key details from the document:
The article discusses a girls' high school softball team from Indiana that had not lost a single game in over 10 years competing against Marshall Community School. The Concalli team realized that the Marshalls did not understand the fundamentals of the game, so they decided to forfeit the game even though it meant they would end their winning streak to teach the Marshalls how to properly play softball. The Concalli team then spent two hours after teaching the Marshalls how to pitch, hit, and play with sportsmanship.
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиMail.ru GroupРазбор приемов метапрограммирования на примере написания библиотеки конечного автомата, где DSL реализован с помощью приемов метапрограммирования.
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...corehard_byРеализовывать конечные автоматы руками с помощью switch case или наследования с виртуальными функциями очень трудоёмко и подвержено ошибкам. На докладе я расскажу о библиотеке конечных автоматов AFSM (Another Finite State Machine), которая позволяет воспользоваться декларативным языком для описания машины состояний. Также я расскажу о небольших трюках и хитростях метапрограммирования на примерах из кода этой библиотеки.
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey PlatonovЗачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
DI в C++ тонкости и нюансыPlatonov SergeyВ докладе рассказывается об особенностях подхода к dependence injections в C++. Посмотрим какие подходы, в чем их плюсы и минусы. Также затрагивается тема Inversion of Control контейнеров.
Повышение конверсии через оптимизацию JSАнтон ПлешивцевСлайды с конференции Devconf 2014. Рассказывается, как производительность влияет на конверсию, приводится 8 тонкостей языка, которые нужно знать, чтобы писать самый быстрый код из возможного.
Sportsmanship!learn how to_be_respectful!_)Nsn07This three sentence summary provides the key details from the document:
The article discusses a girls' high school softball team from Indiana that had not lost a single game in over 10 years competing against Marshall Community School. The Concalli team realized that the Marshalls did not understand the fundamentals of the game, so they decided to forfeit the game even though it meant they would end their winning streak to teach the Marshalls how to properly play softball. The Concalli team then spent two hours after teaching the Marshalls how to pitch, hit, and play with sportsmanship.
Elsa lé fev 2012.pptxLuzia BastosElsa Lé é uma artista plástica portuguesa nascida em 1968 em Ovar. Formou-se em Artes Plásticas/Pintura e trabalha como professora e ilustradora. Participou em várias exposições e ilustrou livros de diferentes autores portugueses. Seu trabalho mais recente foi ilustrar o livro "O Reino Cintilante".
Arets-ErgonomieMaurice AretsEiner Eindruck über was Arets-Ergonomie Ihnen bieten kann. Een indruk van hetgene dat Arets-Ergonomie U kunt bieden.
FYI - Inside Cannes # 8lorealpariscanFor 14 years, L'Oréal Paris has had the priviledge to be the official makeup artist of the Cannes Film Festival. For the first time, we are pleased to present the Daily Gazette, which contains beauty secrets, cinema and vip news from the heart of Cannes.
21 de outubro diegopsfescolaO Papa Cónon foi eleito em 686 e seu pontificado foi agitado pela anarquia na Igreja. Dom Pedro II fundou o Instituto Histórico e Geográfico Brasileiro em 1838. Em 1879, Thomas Edison desenvolveu a lâmpada incandescente, permitindo o uso doméstico de energia elétrica.
Esquema proyecto ucv_2daespecialidadEdgar SanchezEste documento presenta un esquema de proyecto de investigación cuantitativo. Describe las secciones generales que debe contener un proyecto de investigación como el título, autor, asesor, tipo de investigación, localidad y duración. También detalla las secciones del plan de investigación como el planteamiento del problema, formulación del problema, justificación, limitaciones, antecedentes, preguntas e objetivos de investigación, marco teórico e hipótesis. Finalmente, explica las secciones de la metodología como el tipo de estudio, diseño,
BulimiaKarol GarzaLa bulimia es un trastorno alimentario en el que las personas experimentan episodios recurrentes de ingesta excesiva de alimentos y luego usan métodos como el vómito o los laxantes para evitar ganar peso. Estos episodios de comer en exceso a menudo ocurren varias veces al día durante meses y generan una sensación de autorrechazo que lleva a las personas a inducir el vómito u otras medidas para purgar el cuerpo.
Hoja vida introduccion a la ingenieria trabajojulian_urreaEste documento presenta los datos personales y la información educativa de Julian David Urrea Restrepo, un ingeniero de software de 28 años de Armenia, Quindio. Incluye su nombre, documento de identidad, fecha y lugar de nacimiento, dirección, contactos y detalles de su educación primaria, secundaria y universitaria actualmente no terminada. También proporciona los datos y profesiones de sus referencias, sus padres Johnny y Diana Urrea.
Lectura 6Nataly AndreaEl documento describe las pruebas de esfuerzo y el umbral del metabolismo anaeróbico. Define el umbral anaeróbico como la intensidad de ejercicio en la que empieza a aumentar la concentración de lactato en sangre. Explica los métodos para determinarlo, como el análisis del lactato o los gases respiratorios. También aborda conceptos como la deuda de oxígeno y las controversias sobre las explicaciones tradicionales.
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...YandexЕвгений Крутько, НИЦ «Курчатовский институт».
В докладе на примере программы моделирования динамики движения конструкций по методу конечных элементов рассматриваются возможности и практика распараллеливания вычислений. Речь в нём пойдёт как о технике создания новых вычислительных потоков, так и об использовании стандартов openMP и MPI.
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...Iosif ItkinExpanding the Meta-Generation of Correctness Conditions by Means of Semantic Markup
Dmitry Kondratyev, A.P. Ershov Institute of Informatics Systems, Novosibirsk
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Пояснения к статье про Copy-PasteTatyanazaxarovaМногим читателя понравилась моя статья "Последствия использования технологии Copy-Paste при программировании на Си++ и как с этим быть" [1]. Обратил на неё внимание и Scott Meyers [2] и задал вопрос о том, как же собственно статический анализ помог выявить описанные в статье ошибки.
разработка серверов и серверных приложений лекция №3etyumentcevВ третьей главе рассматриваются базовые свойства акторов, описанные в PhD диссертации Gul Agha: каждый актор имеет адрес, большой почтовый ящик, куда доставляются сообщения, адресованные актору и поведение. В ответ на входящее сообщение актор может отправить конечный набор сообщений другим акторам и/или создать конечное число новых акторов и/или поменять свое поведение для обработки следующего сообщения.
В рамках данного курса будет разработана библиотека для разработки параллельных приложений на платформе .NET, построенная по модели акторов.
Исходные коды библиотеки будут выкладываться на GitHub: https://github.com/hwdtech/HWdTech.DS
Код библиотеки будет разработан с использованием следующих принципов, приемов и методик:
S.O.L.I.D. - принципы
Unit-tests
Mock
IoC контейнеры
Для удобства слушателей курса краткий обзор данных практик приведен в Главе 4.
разработка серверов и серверных приложений лекция №3Eugeniy TyumentcevВ третьей главе рассматриваются базовые свойства акторов, описанные в PhD диссертации Gul Agha: каждый актор имеет адрес, большой почтовый ящик, куда доставляются сообщения, адресованные актору и поведение. В ответ на входящее сообщение актор может отправить конечный набор сообщений другим акторам и/или создать конечное число новых акторов и/или поменять свое поведение для обработки следующего сообщения.
В рамках данного курса будет разработана библиотека для разработки параллельных приложений на платформе .NET, построенная по модели акторов.
Исходные коды библиотеки будут выкладываться на GitHub: https://github.com/hwdtech/HWdTech.DS
Код библиотеки будет разработан с использованием следующих принципов, приемов и методик:
S.O.L.I.D. - принципы
Unit-tests
Mock
IoC контейнеры
Для удобства слушателей курса краткий обзор данных практик приведен в Главе 4.
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey PaznikovЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Статический анализ кода Pavel TsukanovАндрей Карпов
Вы узнаете, что такое статический анализ кода и историю его развития. Узнаете, как эффективно применять инструменты статического анализа в своей работе, увидите практические примеры использования этой методологии. Доклад ориентирован на программистов, использующих языки Си/Си++, но будет полезен всем
Rambler.iOS #9: Анализируй это!RAMBLER&CoRambler.iOS #9: Анализируй это! (Сергей Крапивенский).
Доклад посвящён наиболее популярным статическим анализаторам кода для iOS: как ими пользоваться, какие проблемы они решают, как внедрить их в привычный цикл разработки, как писать для них свои правила. Также рассмотрен опыт интеграции статического анализа и CI.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Опыт разработки статического анализатора кодаAndrey KarpovОдин из основателей проекта PVS-Studio расскажет об опыте разработки статического анализатора кода C++. У инструментов статического анализа кода существует "проблема айсберга". От пользователей скрыты сложные механизмы анализа кода, и иногда им кажется, что статические анализаторы – это просто какие-то утилиты, ищущие опечатки с помощью регулярных выражений. Автор доклада постарается в общих чертах описать, как всё обстоит на самом деле. Он покажет на примерах, почему нормальный анализ с помощью регулярных выражений нереализуем, что такое Data Flow анализ, а также расскажет о других технологиях, применяемых при анализе кода. Вкратце будет затронут вопрос использования нейронных сетей, обсуждение которых сейчас является очень модной темой, и рассказано, почему с точки зрения анализа кода отношение к этому направлению является очень скептическим.
Павел Беликов, Как избежать ошибок, используя современный C++Sergey PlatonovОдной из проблем C++ является большое количество конструкций, поведение которых не определено или просто неожиданно для программиста. С такими ошибками мы часто сталкиваемся при разработке статического анализатора кода. Но, как известно, лучше всего находить ошибки ещё на этапе компиляции. На этом докладе мы поговорим о том, какие техники из современного C++ позволяют писать не только более простой и выразительный, но и безопасный код. Вы увидите ошибки в коде различных Open Source проектов и узнаете, как можно их избежать, используя новые стандарты
Проект "Стенд" для проведения лабораторных работ по физикеAlexander PetrovУчебно-методические программы и стенды для проведения лабораторных и практических занятий по физике.
Устройство микроджойстикAlexander PetrovРазработка схемотехнических решений на базе микроконтроллеров, испытательных стендов, а также алгоритмов и исследовательских, демонстрационных программ, предназначенных для совершенствования запатентованой технологии создания полиморфных микроджойстиков.
Разработка охранной сигнализации «СКАТ» Alexander PetrovОсновными критериями охранной сигнализации являются стоимость и надежность (чувствительность, восприимчивость к помехам, срок автономной работы, ограничения)
Особенно критичными становятся стоимость и накладываемые ограничения (в частности температурные), поскольку очень малая часть стандартных решений им удовлетворяет. Также зачастую охранные организации не обслуживают объекты за пределами городской линии.
Очевидно, что рынок сигнализаций не вполне удовлетворяет потребностям покупателей. Поэтому предлагается создать новую охранную сигнализацию (ориентированную на частные хозяйства, находящиеся вне зоны работы охранных организаций), имеющую не дорогую, но расширяемую базовую часть.
Satek easy mcu - englishAlexander PetrovThis document summarizes a proposed toolkit for developing distributed embedded systems. Key points:
- The project aims to develop CAD software for designing and implementing distributed heterogeneous embedded systems.
- The underlying technology generates protocols for managing components across distributed embedded systems.
- Target customers are embedded developers across various industries including wearable electronics, home appliances, transportation, and robotics.
- The business model involves direct online sales of an IDE called EasyAVR, as well as marketing through electronics distributors, online advertising, social media, and conferences. Funding of $200,000 is being sought from investors.
2. Верификация – анализ корректности программных систем относительно спецификации, в которой задаются исследуемые свойства. Виды верификации: тестирование метод доказательства теорем (theorem proving) метод проверки модели (model checking).
4. Верификаторы : CPN-Tools ( C PN Group, University of Aarhus) - Модель представляется в виде сетей Петри - Только графическая оболочка - Медленная работа Spin ( Bell Labs ) - Текстовый язык Promella - Open Source NuSMV (Carnegy Mellon University)
5. NuSMV (New Symbolic Model Verifier) Open Source (GNU LGPL) Написан на ANCI C, совместим с POSIX ( Portable Operating System Interface for Unix ) Продолжение закрытого верификатора SMV (Carnegy Mellon University) Входной язык – текстовый язык SMV Возможность задания модели в виде синхронных / асинхронных конечных автоматов
7. Пример модуля на SMV MODULE main VAR request : boolean; state : { ready, busy } ; ASSIGN init(state) := ready; next(state) := case state = ready & request = 1 : busy; 1 : { ready, busy } ; esac;
8. Модель двоичного счетчика Рассмотрим модель счетчика от 000 до 111 и так далее по циклу Для этого организуем систему из трех счетчиков в связь через переносы бита carry_in :
9. Модель двоичного счетчика MODULE counter_cell(carry_in) VAR value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; MODULE main VAR bit0 : counter_cell(1); bit1 : counter_cell(bit0.carry_out); bit2 : counter_cell(bit1.carry_out);
10. MODULE counter_cell(carry_in) VAR value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; MODULE main VAR bit0 : process counter_cell(1); bit1 : process counter_cell(bit0.carry_out); bit2 : process counter_cell(bit1.carry_out);
11. MODULE counter_cell(carry_in) VAR value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; FAIRNESS running MODULE main VAR bit0 : process counter_cell(1); bit1 : process counter_cell(bit0.carry_out); bit2 : process counter_cell(bit1.carry_out);
12. Темпоральные логики Темпоральная логика – модальная логика, позволяющая формализовать высказывания, зависящие от времени LTL (Linear Tree Logic) CTL (Computation Tree Logic)
13. Темпоральные логики LTL - спецификация: -- FUTURE X ltl_expr -- ne X t state G ltl_expr -- G lobally F ltl_expr -- F inally ltl_expr U ltl_expr -- U ntil ltl_expr V ltl_expr -- releases -- PAST Y ltl_expr -- previous state Z ltl_expr -- not previous state not H ltl_expr -- H istorically O ltl_expr -- O nce ltl_expr S ltl_expr -- S ince ltl_expr T ltl_expr -- T riggered
14. Темпоральные логики CTL - спецификация: EG ctl_expr -- Exists Globally EX ctl_expr -- Exists neXt state EF ctl_expr -- Exists Finally AG ctl_expr -- forAll Globally AX ctl_expr -- forAll neXt state AF ctl_expr -- forAll Finally E [ ctl_expr U ctl_expr ] -- Exists until A [ ctl_expr U ctl_expr ] -- forAll until
16. Формат спецификации Если МП-11.Стол.Поднят И МП-11.ВерхняяРука.Выдвинута ИЛИ МП-11.НижняяРука.Выдвинута И МП-9С.Стол.Поднят И МП-9С.Рука.Выдвинута Не возникает МП-11.Стол.Поворот ИЛИ МП-9С.Стол.Поворот Интуитивное задание проверяемого свойства:
20. Схема кода на SMV // главный модуль MODULE main VAR tactCounter : process MTactCounter(m0.st, m1.st, …mi.st, … mn.st); m0 : process Module0(tactCounter.tact_num); m1 : process Module1(tactCounter.tact_num); … mi : process Modulei(tactCounter.tact_num); … mn : process Modulen(tactCounter.tact_num); FAIRNESS running
21. Задание спецификации SPEC AG ! ( ( m 1. st >= 0 & m 1. st <= 5) & ( m 2. st >= 7 & m 2. st <= 10) ) Пример задания свойства: