Текущая задача
Понять, возможно ли написать VS Code расширение для сбора данных по набору кода, которые затем будут использованы для статистики и тренировки печати.
Основная идея
Расширения собирает данные, отправляет их в каком-либо виде на сервер, который потом рендерит веб интерфейс с интересной статистикой и тренировкой слабых мест (повторяющиеся последовательности с самым большим количеством опечаток или самой низкой скоростью ввода).
Какую статистику хотим отобразить
- для каждого набираемого символа:
- средняя скорость ввода (замеряем время между нажатиями клавиш)
- средняя точность ввода (по идее это количество обычных нажатий символа против количества нажатий символа, когда перед ним был нажат Backspace)
- общее количество нажатий символа
- для каждого языка программирования:
- средняя скорость и точность печати
- общее время набора
- для каждой клавиатурной раскладки (ЙЦУКЕН, QWERTY, DVORAK):
- средняя скорость и точность печати
- общее время набора
- проблемные места:
-
повторяющиеся проблемные сочетания клавиш
// например, в JS пользователь может часто ошибаться в написании
import from...
// печатая вместо этого
import form...
// нужно это отследить и отправить на сервер
// (либо отправлять вообще любые ошибки, если это не будет
// нагружать сеть/систему)
// или пользователь может часто замедляться в написании такого
...${someVar}...
// тоже хочется такое отслеживать, чтобы потом прорабатывать
// еще ошибки могут быть и в обычных словах - переменных, комментах
// например, частое написание creat e вместо create
Основые вопросы, на которые надо ответить
- вопрос 1: получится ли собирать вышеописанные данные? все или часть?
- вопрос 2: не будет ли сбор данных значительно замедлять IDE? как сделать, чтобы не замедлял?
- вопрос 3: с какой периодичностью синхронизировать с сервером? по идее, чем чаще тем лучше
- вопрос 3.1: получится ли реализовать синхронизацию по запросу (нажатие кнопочки в веб интерфейсе)
Дополнительно учесть
- пользователь может переключаться между разными файлами
- пользователь вставлять и дублировать текст
- пользователь может замедляться не только из-за низкой скорости, но и просто думать (можно попробовать решить через определение какого-то минимального времени, после которого )
Мои ожидания
- Если задача не реализуема в принципе, вы мне об этом сразу скажете.
- Если сразу понятно что реализуема в т.ч. частично, то вы сделаете минимальный proof of concept, который ответит на вышеперечисленные вопросы.