Курсар - служба спасения студентов
Служба спасения для студентов (18+)

Приложение для переназначения клавиатурных сочетаний для Linux Программирование Диплом 90

Стоимость
3000 руб.
Содержание
Теория
Объем
73 лист.
Год написания

Описание работы

Работа пользователя Vseznayka1995
Добрый день! Уважаемые студенты, Вашему вниманию представляется дипломная работа на тему: «Приложение для переназначения клавиатурных сочетаний для Linux »
Оригинальность работы 90%

Реферат
В настоящее время, по мере роста популярности Linux в качестве основной операционной системы, общее количество приложений, демонов и утилит, разработанных для Linux, растет с каждым днем. Поэтому, даже начинающие пользователи Linux, порой вынуждены в процессе работы осуществлять конфигурацию значительного количества приложений, выполнение большого количества команд и исполнение самолично написанных скриптов. Другой проблемой, которая встает перед пользователями Linux является использование устройств, производители которого не осуществляют программную поддержку устройств в ОС на базе ядра Linux. Также, некоторые пользователи используют нетрадиционные клавиатурные раскладки, что зачастую вытекает в конфликты с приложениями, разработчики которых не предусмотрели поддержку нестандартных клавиатурных сочетаний.
Данная работа призвана предоставить мощную и расширяемую среду для конфигурации пользовательского ввода и автоматизации рутинных действий для пользователей Linux.
Задачами работы являются:
  1. Проектирование скриптового языка, который будет использоваться в процессе конфигурации пользователями;
  2. Проектирование и разработка интерпретатора скриптового языка;
  3. Проектирование и разработка стандартной библиотеки;
  4. Проектирование протокола взаимодействия между серверной и клиентской частями приложения;
  5. Проектирование и разработка серверной части приложения;
  6. Проектирование и разработка консольного клиента;
  7. Проектирование и разработка графического клиента;
  8. Публикация разработанного приложения.
Ключевые слова: переназначение клавиш, комбинаторный парсинг, интерпретация, автоматизация, evdev, Lisp, Linux.
Работа содержит 74 страницы, 3 главы, пять приложений, 19 использованных источников, 25 листингов, 10 рисунков, 6 таблиц.

Содержание
Основные определения, обозначения. 6
Введение. 8
Глава 1. Обзор и анализ источников, аналогов, выборов методов решения задач. 11
1.1 Обзор и анализ источников. 11
1.2 Анализ приложений со сходной функциональностью.. 12
1.3 Выбор методов решения задач. 14
Глава 2. Используемые методы, модели и инструменты.. 17
2.1 Теоретическая информация. 17
2.1.1 Устройство жизненного цикла событий ввода в ОС Linux. 17
2.1.2 Механизм Mutex. 21
2.1.3 Механизм Channel 22
2.1.4 Конечный автомат. 23
2.1.5 Комбинаторный парсинг. 23
2.1.6 Лексическая область видимости. 25
2.1.7 Сборка мусора. 25
2.1.8 Прототипное наследование. 25
2.1.9 Паттерн Arena. 26
2.2 Использованные инструменты.. 26
2.2.1 Язык программирования Rust 26
2.2.2 Язык программирования TypeScript 27
2.2.3 Google Protocol Buffers. 28
2.2.4 Node.js. 29
2.2.5 Vue.js. 29
2.2.6 Electron. 30
2.2.7 WebSocket 30
2.2.8 IDE.. 30
Глава 3. Техническая реализация. 31
3.1 Архитектура приложения. 31
3.2 Скриптовый язык. 33
3.2.1 Описание синтаксиса скриптового языка. 33
3.2.2 Реализация парсера на языке программирования Rust 36
3.3 Интерпретатор. 45
3.3.1 Типы данных. 45
3.3.2 Функции. 45
3.3.3 Внутреннее устройство. 47
3.3.4 Реализация на языке Rust 49
3.4 Стандартная библиотека. 58
3.5 Цикл событий. 63
3.6 Протокол взаимодействия. 66
3.7 Консольный клиент. 68
3.8 Графический клиент. 68
Заключение. 72
Список использованных источников. 73
Приложение А. Техническое задание на разработку. 75
Приложение Б. Руководство оператора. 97
Приложение В. Программа и методика испытаний. 104
Приложение Г. Текст программы.. 119
Приложение Д.Описание языка  122

Введение
Так уж получается, что порой, пользователи Linux испытывают большие неудобства во время использования операционных систем этого семейства. Такие неудобства принимают самую разную форму, от легкого дискомфорта до жгучего неприятия несовершенств аспектов этих операционных систем. Одним из источников неудобств является несовершенство инструментов и методов ввода. В рамках данной выпускной квалификационной работы, планируется разработать приложение, снижающее количество неудобств, которое испытывают пользователи Linux в аспекте клавиатурного ввода.
Было выделено несколько категорий пользователей, которые могут быть заинтересованы в использовании приложения.
Первая категория пользователей состоит из уверенных пользователей ОС семейства Linux, которые испытывают неудобства от того, что не существует программных решений, которое в полной мере удовлетворит потребности пользователей этой категории. Пользователи этой категории имеют сразу несколько клавиатур, которые имеют разную пространственную и функциональную конфигурацию. В совершенстве освоив метод слепой печати, эти пользователи хотят в полной мере реализовать потенциал использования в работе сразу нескольких клавиатур. Другим фактором, которое причиняет неудобства пользователям этой категории – это абсолютное отсутствие функционала по определению новых модификаторов клавиатурных сочетаний. Конечно, в силу собственной продвинутости, эти пользователи уже как-то обошли эти неудобства путем использования уже существующих утилит, но, из-за недостаточной мощи этих утилит, значительная часть их требований все еще не удовлетворено. Приложение, которое планируется разработать в рамках выпускной квалификационной работы, позволяет своим пользователям конфигурировать ввод сразу нескольких клавиатур, вводить дополнительные модификаторы нажатий клавиатурных сочетаний, осуществлять переназначение последовательностей клавиатурных сочетаний, что удовлетворит многие из потребностей пользователей этой категории.
Вторая категория пользователей состоит из пользователей нестандартных клавиатурных раскладок. Эти пользователи испытывают неудобства от того, что в большинстве своем, существующие приложения, операционные системы, средства конфигураций учитывают только потребности пользователей стандартных клавиатур, использующих раскладку QWERTY. В результате, пользователи вынуждены вручную править низкоуровневые конфигурационные файлы, что не является удобным из-за необходимости осваивать синтаксис этих конфигурационных файлов. Разрабатываемое приложение предоставляя гибкие возможности для переназначения клавиатурных сочетаний, удовлетворит потребности пользователей этой категории.
Третья категория пользователей состоит из пользователей нестандартных клавиатур. Эти клавиатуры могут иметь дополнительные клавиши, клавиши, расположенные на стандартных местах, но при их нажатиях, генерирующих нестандартные коды клавиш, или и вовсе состоять только из таких клавиш. В силу недостаточной распространенности пользователей Linux в качестве основной системы, многие из таких клавиатур лишены всякой поддержки в ОС Linux. В результате, из-за невозможности использования этих клавиатур, пользователи этой категории испытывают неудобства. Разрабатываемое приложение, позволяя конфигурировать ввод таких клавиатур, удовлетворит потребности пользователей этой категории.
Цель работы – Разработка приложения, предоставляющего мощное, расширяемое, простое в использовании программное окружение, которое предоставляет гибкие возможности для конфигурации пользовательского ввода и автоматизации рабочего окружения.
Задачи работы:
  1. Проектирование скриптового языка, который будет использоваться для конфигурации приложения;
  2. Проектирование и разработка интерпретатора скриптового языка;
  3. Проектирование и разработка стандартной библиотеки;
  4. Проектирование протокола взаимодействия между серверной и клиентской частями приложения;
  5. Проектирование и разработка серверной части приложения;
  6. Проектирование и разработка консольного клиента
  7. Проектирование и разработка графического клиента;
  8. Публикация разработанного приложения.
Оставшаяся часть работы состоит из следующих частей:
  • В главе 1 приводится обзор источников, анализ приложений, имеющих схожую функциональность с разрабатываемым и использованные во время разработки методы;
  • В главе 2 содержится описанию методов, технологий и паттернов разработки, использованных во время разработки;
  • В главе 3 содержится подробное описание разработанного приложения;
  • В заключении подведены результаты работы и описан план дальнейшей работы над выпускной квалификационной работой.
Приложения содержат техническую документацию, оформленную в соответствии с ЕСПД:
  • Приложение А содержит техническое задание на разработку приложения;
  • Приложение Б содержит руководство оператора;
  • Приложение В содержит программу и методику испытаний;
  • Приложение Г содержит текст программы;
  • Приложение Д содержит описание языка.

Список использованных источников
  1. Free minix-like kernel sources for 386-AT [Электронный ресурс] / Google Groups. Режим доступа: https://groups.google.com/forum/#!msg/comp.os.minix/4995SivOl9o/GwqLJlPSlCEJ, свободный. (дата обращения: 24.04.2020).
  2. Linux, the world's most widespread OS, turns 25 years old [Электронный ресурс] / A Global Digital Media Network - Digital Journal. Режим доступа: http://www.digitaljournal.com/tech-and-science/technology/linux-the-world-s-most-widespread-os-turns-25-years-old/article/473219, свободный. (дата обращения: 24.04. 2020).
  3. Linux Input Subsystem userspace API [Электронный ресурс] / The Linux Kernel Archives.  Режим доступа: https://www.kernel.org/doc/html/latest/input/input.html, свободный. (дата обращения: 24.04. 2020).
  4. McCarthy J. Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I // Massachusetts Institute of Technology. Cambridge: Massachusetts Institute of Technology, 1960.
  5. McCarthy J. History of Lisp // Stanford University. Stanford, California: Stanford University, 1979.
  6. How Lisp Became God's Own Programming Language [Электронный ресурс] / Sinclair Target. Режим доступа: https://twobithistory.org/2018/10/14/lisp.html, свободный. (дата обращения: 24.04. 2020).
  7. Learning Parser Combinators With Rust [Электронный ресурс] / Bodil Stokke. Режим доступа: https://bodil.lol/parser-combinators/, свободный. (дата обращения: 24.04. 2020).
  8. Harold Abelson and Gerald Jay Sussmanwith Julie Sussman Structure and Interpretation of Computer Programs. 2 изд.  Cambridge, Massachusets: The MIT press, 1996.
  9. The Rust Programming Language [Электронный ресурс] / Steve Klabnik and Carol Nichols, with contributions from the Rust Community. Режим доступа: https://doc.rust-lang.org/book/, свободный. (дата обращения: 24.04.2020).
  10. Rust by Example [Электронный ресурс] / Rust Community. Режим доступа: https://doc.rust-lang.org/stable/rust-by-example/, свободный. (дата обращения: 24.04.2020).
  11. ECMAScript® 2019 Language Specification [Электронный ресурс] / Ecma International. Режим доступа: https://www.ecma-international.org/ecma-262/10.0/index.html, свободный. (дата обращения: 24.04.2020).
  12. Node.js for Embedded Systems [Электронный ресурс] / Kelsey Breseman, Patrick Mulder.  Режим доступа: http://embeddednodejs.com/js-on-hardware/, свободный. (дата обращения: 24.04.2020).
  13. Node Package Manager [Электронный ресурс] / npm, Inc. Режим доступа: https://www.npmjs.com/, свободный. (дата обращения: 24.04.2020).
  14. Build cross-platform desktop apps with JavaScript, HTML, and CSS [Электронный ресурс] / Electron Community. Режим доступа: https://www.electronjs.org/, свободный. (дата обращения: 24.04.2020).
  15. Vue The Progressive JavaScript Framework [Электронный ресурс] / Vue Community. Режим доступа: https://vuejs.org/, свободный. (дата обращения: 24.04.2020).
  16. Node.js [Электронный ресурс] / OpenJS Foundation. Режим доступа: https://nodejs.org, свободный. (дата обращения: 26.04.2020).
  17. Protocol Buffers Compiler (protoc) plugin for TypeScript and gRPC-Web [Электронный ресурс] / Improbable Engineering. Режим доступа: https://github.com/improbable-eng/ts-protoc-gen, свободный. (дата обращения: 15.05.2020).
  18. Rust implementation of Google protocol buffers [Электронный ресурс] / Stepan Koltsov. Режим доступа: https://github.com/stepancheg/rust-protobuf, свободный. (дата обращения: 15.05.2020).
  19. The structured clone algorithm. [Электронный ресурс] / MDN. Режим доступа: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm, свободный. (дата обращения: 15.05.2020).

 

Сколько стоит помощь с учебной работой?