<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%89%D0%B8%D0%BA%D0%B0</id>
	<title>Анализ качества печати наборщика - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%89%D0%B8%D0%BA%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%89%D0%B8%D0%BA%D0%B0&amp;action=history"/>
	<updated>2026-06-06T16:01:06Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%89%D0%B8%D0%BA%D0%B0&amp;diff=817&amp;oldid=prev</id>
		<title>imported&gt;Aapoludnitsin: Migrated current public revision from wiki.cs.hse.ru</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%89%D0%B8%D0%BA%D0%B0&amp;diff=817&amp;oldid=prev"/>
		<updated>2018-10-16T08:35:39Z</updated>

		<summary type="html">&lt;p&gt;Migrated current public revision from wiki.cs.hse.ru&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Карточка_командного_проекта&lt;br /&gt;
|name=Анализ качества печати наборщика&lt;br /&gt;
|company=Трушин Дмитрий Витальевич&lt;br /&gt;
|semester=Осень 2018&lt;br /&gt;
|course=2-3&lt;br /&gt;
|number_of_students=3-4&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Что за проект?==&lt;br /&gt;
===О проекте===&lt;br /&gt;
Данный проект вырос вокруг сообщества любителей печати вслепую klavogonki.ru. На данной&lt;br /&gt;
открытой площадке тренируются в том числе и профессионалы, которые интересуются качеством набора&lt;br /&gt;
печати. В рамках этого сообщества программистом-энтузиастом была создана программа Typing Statistics,&lt;br /&gt;
которая является основным инструментом анализа качества печати. Основная проблема этой программы –&lt;br /&gt;
она лишь на разные лады считает все возможные средние характеристики. Цель данного проекта – создать&lt;br /&gt;
собственную программу, которая бы могла выхватить из сеанса по набору объективные характеристики физических&lt;br /&gt;
возможностей наборщика.&lt;br /&gt;
===Базовые идеи ===&lt;br /&gt;
Пусть мы хотим исследовать скорость набора. Если бы на клавиатуре набирал робот, то он&lt;br /&gt;
нажимал бы каждую клавишу с постоянной скоростью. Однако, человек каждое отдельное нажатие совершает&lt;br /&gt;
с различной скоростью. Потому на процесс нажатия клавиши можно смотреть как на случайный процесс,&lt;br /&gt;
а скорость нажатия – это случайная величина. Каждая клавиша нажата со своей собственной скоростью,&lt;br /&gt;
которая является реализацией нашей случайной величины. Потому наша задача восстановить плотность&lt;br /&gt;
распределения этой случайной величины. Если мы знаем плотность случайной величины, то мы знаем абсолютно&lt;br /&gt;
всю информацию о случайной величине, а значит, мы сможем вытащить из сеанса абсолютно любую&lt;br /&gt;
информацию о скорости набора (в данном случае).&lt;br /&gt;
===Текущее состояние проекта ===&lt;br /&gt;
На данный момент реализована альфа2 версия программы только под операционную&lt;br /&gt;
систему Windows. Она способна вести перехват текста, анализировать сделанные ошибки в тексте&lt;br /&gt;
(в разных режимах и не зная набираемый текст), восстанавливать плотность распределения скорости (в&lt;br /&gt;
разных режимах), вычислять скорость максимального правдоподобия (MLE speed) – «несущую скорость» и&lt;br /&gt;
устойчивые зоны скоростей. Ниже приведены два скриншота с перехваченным текстом и графиком плотности&lt;br /&gt;
распределения. Набор выполнен Элеонорой Лукиной (чемпионом СССР по машинописи 1991 года) в рамках&lt;br /&gt;
Интерстено 2018, напутствие.&lt;br /&gt;
Сейчас происходит пересадка проекта на Windows независимые компоненты.&lt;br /&gt;
===Направления развития проекта===&lt;br /&gt;
Хочется сделать основной акцент на том, что основная задача проекта&lt;br /&gt;
не абстрактные никуда не приводящие теоретические изыскания, а реализация на практике вполне простых&lt;br /&gt;
(с математической точки зрения) идей. Идей, которые на выходе дают рабочий инструмент, помогающий наборщику&lt;br /&gt;
узнать о своих сильных и слабых сторонах. Проект должен быть мультиплатформенным, удобным в&lt;br /&gt;
использовании, вычислительные задачи должны выполняться быстро, код должен использовать современные&lt;br /&gt;
парадигмы по разработке ПО на объектных языках программирования.&lt;br /&gt;
===Важное замечание о проекте===&lt;br /&gt;
Основная цель участия в проекте – помочь мне не делать все самостоятельно&lt;br /&gt;
в одиночку. Это означает большое количество самостоятельной работы по изучению нового материала,&lt;br /&gt;
освоением и внедрением. Я готов и буду прилагать все усилия в помощи с освоением любого материала, но&lt;br /&gt;
вы должны быть готовы работать самостоятельно.&lt;br /&gt;
&lt;br /&gt;
==Чему научатся студенты==&lt;br /&gt;
Следующий список скорее правильно озаглавить: «С чем есть шанс познакомиться»&lt;br /&gt;
&amp;lt;br/&amp;gt;• Не опускать руки перед ужасом предстоящих работ&lt;br /&gt;
&amp;lt;br/&amp;gt;• Понимание применения базовых идей теории вероятности на примере задачи о наборе текста&lt;br /&gt;
&amp;lt;br/&amp;gt; • Понимание устройства message driven систем&lt;br /&gt;
&amp;lt;br/&amp;gt; • Абстрактный математический подход к написанию программного обеспечения с использование шаблонов и метапрограммирования на C++&lt;br /&gt;
&amp;lt;br/&amp;gt; • Знакомство с Qt (читается cute)&lt;br /&gt;
&amp;lt;br/&amp;gt; • Знакомство с boost&lt;br /&gt;
&amp;lt;br/&amp;gt; • Знакомство с параллельными вычислениями&lt;br /&gt;
&amp;lt;br/&amp;gt; • Знакомство с SIMD&lt;br /&gt;
&amp;lt;br/&amp;gt; • Знакомство с низкоуровневым перехватом клавиатуры&lt;br /&gt;
&amp;lt;br/&amp;gt; • Знакомство с некоторыми шаблонами проектирования&lt;br /&gt;
&amp;lt;br/&amp;gt; • Умение писать надежный читаемый код&lt;br /&gt;
==Какие начальные требования==&lt;br /&gt;
&amp;lt;br/&amp;gt;• Огромное желание что-то сделать&lt;br /&gt;
&amp;lt;br/&amp;gt;• Знание языка C++, желательно понимание наследования и шаблонов.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Для некоторых задач потребуется знание любого скриптового языка. Можно использовать Python или&lt;br /&gt;
любой другой.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Желательно умение читать технические статьи на английском, а в идеале умение понимать видео доклады&lt;br /&gt;
с cppcon.&lt;br /&gt;
==Какие технологии будут использоваться==&lt;br /&gt;
Следующий список не означает, что придется изучать все и сразу, это лишь перечень того, с чем можно&lt;br /&gt;
соприкоснуться при работе над проектом.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Основной язык проекта – C++(14).&lt;br /&gt;
&amp;lt;br/&amp;gt;• Qt Creator используется в качестве IDE для текущей версии альфа3.&lt;br /&gt;
&amp;lt;br/&amp;gt;• ISPC для SIMD кода.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Библиотека PPL для параллельных вычислений (в версии альфа3).&lt;br /&gt;
&amp;lt;br/&amp;gt;• Библиотека boost.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Система GraphViz для работы с графами. Только для задач на Python по поддержке структуры проекта.&lt;br /&gt;
==Темы вводных занятий==&lt;br /&gt;
&amp;lt;br/&amp;gt;1. Описание основных математических идей в реализации проекта&lt;br /&gt;
&amp;lt;br/&amp;gt;2. Описание структуры альфа2 версии программы и ее функционала.&lt;br /&gt;
&amp;lt;br/&amp;gt;3. Описание текущей альфа3 версии программы.&lt;br /&gt;
&amp;lt;br/&amp;gt;4. Описание конкретных модулей для реализации в альфа3 версии программы.&lt;br /&gt;
&amp;lt;br/&amp;gt;5. Дальнейшие встречи предполагаются для разбора и обсуждения изученного студентами материала и&lt;br /&gt;
обсуждения продвижения в рамках поставленной задачи.&lt;br /&gt;
&lt;br /&gt;
==Направление развития==&lt;br /&gt;
Примеры задач в рамках развития функционала альфа2&lt;br /&gt;
&amp;lt;br/&amp;gt;• Внедрение температурного вывода текста&lt;br /&gt;
&amp;lt;br/&amp;gt;• Анализ скорости отпускания клавиш&lt;br /&gt;
&amp;lt;br/&amp;gt;• Анализ плотности распределения ошибок&lt;br /&gt;
&amp;lt;br/&amp;gt;Примеры задач в рамках переноса функционала на альфа3&lt;br /&gt;
&amp;lt;br/&amp;gt;• Вывод данных с использованием Qt Model-View-Controllers, например, QTreeView, QListView и прочие.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Вывод графиков плотностей с использованием qwt или QChart.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Вывод клавограммы с использованием qwt или QChart.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Реализовать обработчик какого-нибудь элемента интерфейса для взаимодействия с ядром программы.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Собрать вычислительный pipeline с кэшированием данных для работы с сеансом набора.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Реализовать систему редактирования сеанса с поддержкой дерева состояний.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Пересадить модуль параллельных вычислений с native windows thread pool на PPL.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Реализовать платформонезависимый сериализатор данных. Разработать формат для файлов данных&lt;br /&gt;
Typing Analysis.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Написать конвертор файлов Typing Statistics в файлы Typing Analysis.&lt;br /&gt;
&amp;lt;br/&amp;gt;• Модифицировать структуру данных сеанса до платформонезависимого состояния.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;В качестве сторонней задачи на скриптовом языке: написать скрипт описывающий структуру проекта,&lt;br /&gt;
например, граф include-зависимостей файлов (с настройками различных аспектов графа).&lt;br /&gt;
&lt;br /&gt;
==Критерии оценок==&lt;br /&gt;
Критерии оценки сильно варьируются в зависимости от конкретного задания в рамках проекта. Но можно&lt;br /&gt;
ориентироваться на следующее&lt;br /&gt;
* 4-5 Теоретическое описание того как должен функционировать реализуемый модуль программы. Описание&lt;br /&gt;
всех ключевых элементов с указанием используемых структур данных и алгоритмов.&lt;br /&gt;
* 6-7 Реализация отдельно функционирующего модуля по теоретическому описанию. Соблюдение требований&lt;br /&gt;
к коду. Код корректно работает.&lt;br /&gt;
* 8-10 Внедрение модуля в альфа3 версию (или альфа2 версию).&lt;br /&gt;
==Ориентировочное расписание занятий==&lt;br /&gt;
По договоренности. Скорее всего любой рабочий день кроме четверга&lt;br /&gt;
==Контакты==&lt;br /&gt;
Трушин Дмитрий Витальевич	dtrushin@hse.ru&lt;/div&gt;</summary>
		<author><name>imported&gt;Aapoludnitsin</name></author>
	</entry>
</feed>