Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

Консольный текстовый редактор ted

Ответить
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Консольный текстовый редактор ted

Сообщение nezabudka »

Я согласна с мнением многих экспертов полагающих,
что на время написания операционной системы plan9
весь отдел Bell Labs во главе с Дугласом Макилроем
украли гуманоиды. Если это так то гуманоиды похоже
были ребята не промах и мне показался очень забавным
их подход к построению интерфейса который с успехом,
вольно или не вольно, воплотил в жизнь виновник торжества
Роб Пайк, автор текстового редактора sam в операционной
системе plan9.

Интерфейс сего чуда и послужил для меня прообразом и
отправной точкой к поиску личного контакта с инопланетным разумом
для дальнейшего его совершенствования.

Вобщем насмотревшись на чудеса разработки пленников лаборатории
Белл Лабс я загорелась желанием очеловечить аскетичный интерфейс
консольной части текстового редактора sam. А также не являясь
профессионалом unix я решила перенести задуманное для разработки
на территорию линукс, где я чувствую себя немного уютней.

Достала старый велосипед, коробку гвоздей, пилочки и
открыла защитное поле, чтобы позволить экспансию из вне
иноплатеному разуму.

Для пользования редактором все что будет надо это голая консоль
или линукс терминал способный понимать стандартные ескейп
последовательности. Мне показалась очень интересной возможность
создать простейший но удобный интерфейс без подключения сторонних библиотек,
только из одних кирпичиков стандартной потребительской корзины Си.

Думаю мало кому будет интересно внутреннее содержание программы да и главное
в ней это пример ее интерфейса взаимодействия с пользователем.
Я постаралась что бы все было максимально прозрачно и интуитивно понятно
в этом редакторе. Поэтому разобраться в нем будет легко любому, просто
установив его парой команд и запустив в терминале.
Для этого нужно по короткой инструкции склонировать репозиторий
на гитхабе, скомпилировать командой make и с ее же помощью
установить исполняемый файл и ман страницу в нужные директории.

Я не считаю себя программистом, поэтому в процессе разработки
многое пришлось приколачивать гвоздями и я стерла пару пилочек
для ногтей, но главное что я хотела показать это как может выглядеть
интерфейс подобного редактора без библиотеки ncurses, без собственного окошка
где все действия происходят непосредственно в окне терминала а его инструментами
являются только стандартные функци Си и системные вызовы ядра linux. Я
принципиально по воззможности не пользовалась даже функциями имеющими
статус высокоуровневых, не для того чтобы максимально увеличить
скорость работы приложения, а потому, что язык Си это в первую очередь,
по происхождению структурированный асемблер и мне очень интересна
именно такая практика, даже длинну строк там где
это было оправданно я вычисляла используя выражения
без использования функции strlen().

Эта статья хоть и не урок по Си а все же обсуждение именно
интерфейса программы, буду тем не менне признательна за найденные
ошибки в ее работе, коих по моему ожиданию должно быть множество
потому что мне не удалось удержаться в рамках минимализма ascii и
я попыталась включить в программу работу с кирилическими символами utf-8
которые имеют вдвое большую длинну что потянуло за собой например
перехват клавишь F5-F12 имеющих размерность 4 байта.
Все это нужно было отобразить в терминале и корректно редактировать
убирая на экране одну позицию и одновременно определять сколько
позиций должно при этом соответствовать в буфере.
https://github.com/olecya/ted
Последний раз редактировалось nezabudka 05 авг 2017, 19:02, всего редактировалось 4 раза.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: Консольный текстовый редактор ted

Сообщение nezabudka »

Исправила некоторые ошибки и сделала новый коммит. Кто клонировал репозиторий -
обновите его. И на будущее, кому интересно, следите за обновлениями на гитхабе.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Ответить

Вернуться в «C/C++»