Pull to refresh

Comments 20

К сожалению в случае display:block выделение нескольких строк текста выглядит хуже:

ээээ а какой из этих вариантов хуже? :)

Для меня правый (display:block) вариант хуже, т.к. появляется зазор между выделяемыми строками.
По крайней мере такое выделение я наблюдаю в текстовых редакторах и в десктоп терминалах.


Но вы конечно правы, это может быть делом вкуса :)

откуда у div берется этот зазор?

Я так понимаю это фича браузера — показывать, что два разных div это совершенно независимые блоки

Увеличьте высоту строки и сократите межстрочное расстояние до нуля. Если не ошибаюсь, получите справа примерно то же самое, что и слева.

Спасибо за совет, я пробовал, но не получилось сохранить межстрочное расстояние (для облегчения читаемости) и убрать зазор.
Может быть недостаточно пробовал

нет. если margin и line-height не задирать, то и зазора не будет.

В том-то и дело, что с помощью margin/line-height можно добиться отсутствия зазора, однако это именно добиться: для этого нужно их сделать достаточно низкими, чтобы выделения строк пересекались.
Т.е. таким способом оставить большое межстрочное расстояние и одновременно убрать зазор в выделении не получится.
А у span'ов, благодаря их inline структуре, такой же line-height работает как следует.


Пример:
https://jsfiddle.net/wxg0dn39/

А почему бы не использовать уже готовые средства проброса консоли или ssh в web (shellinabox, GateOne, guacamole etc)?

Вы, скорее всего, имеете ввиду весь инструмент целиком: включая вызов скрипта на сервере, веб сервер и клиентскую часть. Это немного отдельная тема (данная статья исключительно о реализации read-only терминала на JS/HTML).
Если говорить об инструменте целиком, то проброс консоли это для админов. Мой инструмент для нетехнических пользователей, которым нужно в красивом виде дать доступ к заранее подготовленным скриптам. Максимально ограничив доступ и возможности пользователей.


Использовать же эти компоненты исключительно как UI библиотеку, вряд ли есть смысл. Например, GateOne также подготавливает данные на сервере и, я подозреваю, отображает всё в режиме терминала (т.е. 80x25 символов), что не очень удобно для просмотра и работы пользователя.

А вы пробовали спользовать виртуализацию скролла? Должно помочь с производительностью в случае такого количества строк.

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

Браузер читает CSS селекторы справа-налево. Чем глубже вложенность селекторов, тем «тяжелее» браузеру парсить стили.
Буквально вчера надо было проглядывать большое количество логов с нашего сервера, которое у нас реализовано очень просто: вот тебе ссылка на plain text в браузере, листай как хочешь. Приходилось копировать в Sublime что бы хоть как-то беречь глаза.

Интересно, можно ли приспособить это решение (или существует ли что-то, что хорошо сочеталось бы со Spring-ом) для удобного просмотра логов?

Если брать Script server целиком (для которого я делал отображение в веб), то его можно использовать в том числе и для этой задачи. Но что-то более специализированное будет более удобным, скорее всего.
Вот, например, гугл предлагает такое: http://logio.org/

Список того, что должно работать в консоли. Мы как-то писали server-side renderer с дифференциальными апдейтами на клиенте (https://github.com/selectel/pyte) так что говорю по больному.

1. mc (особое внимание на диалоги и меню)
2. aptitude (и другие dialog)
3. adom (консольная версия)
4. nethack
5. mplayer в ascii режиме

В частности, благодаря adom'у я узнал, что «ярко-чёрный по чёрному» — это вполне различимо (горы и всё такое).

У меня пока не стоит задача делать полноценный терминал (с режимами отображения, разрешением и т.п.), а только основные команды для потокового вывода, т.е. лог работы скрипта.
Причина тому — я сфокусирован на инструменте для нетехнических пользователей, и, терминал, по-моему мнению им не очень нужен.


Из-за отсутствия поддержки размеров окна, режимов отображения и т.п., mc и mplayer у меня отображаются криво: они указывают размер терминала и потом делают перевод курсора исходя из размера окна. Но у меня переход вне предела уже выведенного текста невозможен.


Screenshot


Если в будущем у кого-то появится такая потребность, то, возможно, я реализую "расширенные" команды.


Говоря о списке того, что должно работать — существует полезная тестовая утилита https://invisible-island.net/vttest/vttest.html. Я так понимаю, она должна покрывать основные кейсы.


Но спасибо вам за список!

Вот моё наблюдение — не покрывает.

А как вы рисуете ярко-чёрный по чёрному?

Вы говорите про коды 30, 40, 90 и 100, я правильно понимаю?


У меня это выглядит вот так:

Да. На эту граблю вы не наступили, поздравляю.
Sign up to leave a comment.

Articles