The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Как получать ответы на вопросы по программированию прямо из ..."
Отправлено igor_chubin, 08-Июл-18 20:26 
> Понятно, спасибо.
>>эта система поддерживает ряд форматов вывода, GIF только один из которых; кроме того она поддерживает MP4, AVI, FLV, Asciiname и некоторые другие
> Это круто!
> Правда, я не совсем понял, как именно это работает "без участия человека".
> То есть ей, грубо говоря, подается лог сессии терминала, и она
> на основании этого генерирует анимации печати и перемещения курсора - я
> уловил идею?

Да, почти, только ей передаётся не лог сессии терминала (потому что в том-то и идея, что никакой сессии терминала нет, потому что вы не набирали ничего в терминале, хотя впрочем это тоже было бы возможно, но это уже следующий шаг), а передаётся файл-сценарий (в нашей внутренней терминологии так называемый gifst файл, gifst это игра слов gif + gist; gist'ы на github'е вы знаете, это просто текстовые кусочки кода) состоящий из текста, который вводится в терминал, + специальных управляющих команд, которые описывают сцену и выполняют другие вспомогательные действия.

Например:

~~~~
g show intro.png
g sleep 10
g say-en Now I am editing a python file in Vim and making a cheat.sh query
g say-de Jetzt editiere ich eine python Datei in Vim. Dabei mache ich eine cheat.sh Anfrage
g say-ru Сейчас я редактирую некий Python-файл в Vim и делаю при этом запрос к cheat.sh
vi cheating.py
iappend file<[ Escape ]> KK<[ sleep 3 ]>q
g say-justify full
:q!
~~~~


Если вы мысленно уберёте строчки, начинающиеся с g (это метастрочки gifst'а, о которых я писал выше), то получится просто последовательность текста, которая вводится в виртуальный терминал (имитируя при этом ввод текста человеком с помощью случайных задержек между нажатиями и такого прочего): то есть открывается редактор, в нём переходим в режим вставки (i), набираем текст, нажимаем Esc (<[ ]> это специальные управляющие последовательности gifst, такие же как g-команды, только inline); нажимаем <leader>KK (в нашем случае это пробел KK), получаем описание как дописать в конец файла на Python; ждём 3 секунды; выходим из пейджера (q); выходим из Vim без сохранения.

Но это совмещается с g-командами, которые означают: показать сначала intro.png (там допустим какая-то интересная заставка), подождать 10 секунд, дальше происходит интересное:

сцена разделяется на три (которые в итоге сохраняются в трёх разных файлах, если необходимо, или в одном файле, если не поддерживается звук или если выбран только один язык), в каждой из которых голос за кадром говорит, что он делает (для этого по умолчанию используется генератор Amazon Polly, но можно использовать любой другой, хоть руками текст надиктовывать, тогда он берёт заранее подготовленные файлы с надиктованным текстом). При этом набирается текст.
Интересно, что скорость набора определяется тем, где стоит say-justify и значение после say-justify (left, right, center, full). Если full (как в нашем случае), то скорость набора подбирается исходя из скорости произнесения текста (звучит страшно, но на самом деле реализуется элементарно, потому что мы знаем количество нажатий и скольно длится звуковой фрагмент).

В итоге всё это дело собирается в единый файл или файлы с учётом поддерживаемых возможностей файла (MP4 или FLV или GIF поддерживают графику и звук; но из текстовых форматов, с другой стороны, можно копировать текст + показывать их в консоли; то есть тут нет единственно лучшего формата; собственно единственно лучший формат это gifst).

Вот, если вкратце, как оно работает

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру