Pull to refresh
44
0
Владимир @shock_one

User

Send message
У меня есть вопрос о синтаксисе, и при этом не о скобках.
Что вы думаете об удобочитаемости записей, которые нужно смотреть справа налево? Например,

(to-customize (to-install Common-Lisp-IDE))


В объектно-ориентированных языках это можно было бы записать как

Common-Lisp-IDE.to-install.to-customize


Это не относится непосредственно к LISP, в том же Haskell или C запись тоже «перевернутая». Привыкаете ли вы или со временем это продолжает вызывать дискомфорт, так как традиционно письменность в другую сторону.

.LISP'e на писать легко арабам Наверное
«One more thing»? «Блог компании Google»? Really?
Спасибо за ответ. У меня нет linux'а чтобы проверить, но, похоже, SSH — единственная причина реализовать это как escape sequence, поэтому я убежден, что работает. Ведь можно было просто выполнять notify-send по PROMPT_COMMAND, но тогда бы команда выполнялась на компьютере, где запущен shell, а не terminal emulator. Конечно же, для этого надо на удаленном сервере настроить PROMPT_COMMAND. Так сказать, только по обоюдному согласию.
Я не уверен как таким образом можно определить завершение. Нужно ведь наоборот: если вывод прекращается. Только прекращение вывода не гарантирует, что команда завершилась.
О самом главном нововведении: выводе уведомления по завершению длительных команд. А как GNOME Terminal различает shell комманды и в частности момент завершения? Ведь эмулятор терминала ничего не должен знать об оболочке; он должен только выводить изображение интерпретируя при этом последовательности ANSI. Именно оболочка, BASH, например, знает когда закончилось выполнение. Он парсит PS1 или что?
Хорошо, не будем. А C++ можно?
Теперь заживем.
Хм, Dropbox не хочет раздавать картинки.

image

image

image
Программирование текстового редактора на стэке веб техноголий — костыль на костыле и костылем поганяет. Нет, снаружи все получается очень красивенько, ведь HTML и CSS намного гибче, чем всякие Cocoa, GTK и QT. И умеет их использовать больше людей.

Но, например, textarea не подойдет в качестве поля ввода, потому, что у нее недостаточно функционала. Нам ведь нужно и синтаксис подсветить, и autocomplete box в нужном месте показать. А это значит, что мы зафигачим div'ов, костылями сделаем его focusable, навешаем своих событий — нужно ведь реагировать на нажатие кнопок, уметь стирать по backspace, перемещаться влево на слово по alt-left, выделять по double click и еще много всего. Хорошо хоть надо поддерживать только один браузер.

Или еще, позиционирование строк. Вы думали создадите обертку .editor со множеством вложенных div'ом и все будет показываться в правильных местах. Сейчас. Будь добр, рассчитай динамически координаты каждой строки и сделай абсолютное позиционирование. А еще при scroll'е давайте удалять невидимые строки, браузер, как и Москва, не резиновый.

Чем-то мне это напоминает дарвиновкую эволюцию — придумали язык разметки для простых страниц, а теперь извращаемся, чтобы написать на этом космический корабль. Получается так себе. Прямо как история с возвратным гортанным нервом.

Наверное, это утрясется и появятся хорошие framework'и для разработки интерфейсов, но прямо сейчас это Ад и Израиль. Очень гибкий Ад и Израиль, справедливости ради; никогда плагины к той же IntelliJ IDEA не смогут быть настолько же свободными. Хочешь — добавляй индикатор изменившихся линий к строкам (я знаю, что это можно, но ведь JetBrains должны были сначала поддержать)
image
хочешь, custom'ную панель снизу
image
хочешь, кнопочки с красивой анимацией
image

Полная свобода, никаких тебе интерфейсов, которые нужно имплементировать. А еще можно потом сделать как веб-сервис. Заходишь такой на github.com, кликаешь на файл, а он открывается в навороченном редакторе, почти как IDE.

В общем, я верю, что за этим будущее, но, к сожалению, не настоящее.
Установил — включает дискретную видеокарту при запуске на MBP. Удалил.
Судя по скриншотам, у вас RubyMine на Java 1.8. Есть ли преимущества от использования IDE с новой версией?
— У нас дыра в безопасности.
— Ну хоть что-то у нас в безопасности.
Лучшая часть Elementary OS для меня — это видео плеер Audience. Его killer feature — превью при наведении на полосу времени, как на YouTube, но намного быстрее, и это видео, а не статическая картинка.

image
На скриншоте старая версия плеера, новее не нашел.
Есть версия только для Windows.
Несмотря на то, что я сумбурно изъясняюсь, я таки понимаю, что иметь устройства ввода-вывода еще недостаточно, чтобы быть эмулятором терминала. Но они — публичный интерфейс эмулятора, если проводить параллели с OOP. Все, что внутри — неважно для внешнего наблюдателя. Ну да, умеет он как-то преобразовывать ANSI и показывать его.

С ls та же самая история. Обрезает ли он ANSI, или не добавляет его с самого начала, результат один: если output не pty, вывод отличается.

Я в свободное время пытаюсь написать эмулятор терминала, и уверен, что в реальном мире, единственный способ обеспечить пользователям предсказуемое поведение — прикидаться PTY.

То же и с последовательностями управления. Хотелось бы иметь возможность написать свой terminfo, и забыть о совместимости с ANSI, но программисты идут самым простым путем, и существует вагон и маленькая тележка утилит, у которых захардкоджены эти последовательности.

Если позволите, я хотел бы попросить совет. В современно мире, не имея наследия visual terminals и таких ограничений ресурсов, нужно ли передавать управляющие последовательности in-bound, или стоит их вынести в отдельный поток? Извините за off-topic.
Спасибо за ответ. Что такое <A-FN$>?

Возможно, я неправильно понял man, но мое представление об эмуляторах терминала отсюда: linux.die.net/man/4/ptmx
Согласно описанию, нужно открыть /dev/ptmx, получить a file descriptor (первое устройство, в которое писать), потом сделать некие телодвижения и получить второе устройство, /dev/pts* — из которого читать.

Вы правы, теоретически можно обойтись без устройств. Но практически так никто делать не станет. Не говоря уже о ls, который обрезает control sequences, su и passwd не читают из pip'ов.
Мне кажется, у вас переплетаются функции эмулятора терминала и оболочки (shell). Терминал должен отвечать только за отображение информации: это односторонний канал коммуникации который получает поток символов и, иногда, последовательности управления. Переместить курсор, там, или подсветить красненьким. Важно, что состояние курсора хранится в оболочке, а эмулятору терминала оно нужно для того, чтобы знать с какого места продолжать выводить данные. Большинство PTY используют ANSI для control sequences, но я бы все же не полагался на это, и доверял terminfo. Ncurses, например, использует terminfo.

По сути, эмулятор терминала — это пара устройств, с которыми можно обращаться как с файлами. Вот, например, как писать в терминал без всяких библиотек, just for fun.:

$ tty # In one session: find out this terminal's output device.
$ printf "$(tput setaf 1)Follow the $(tput setaf 7)white$(tput setaf 1) rabbit." > ttys006 # In another session: write to the first one.


Кстати, tput выводит правильную для вашего терминала последовательность, а не hard-coded ANSI.
А «получаете доступ к проектам» — это доступ на чтение, или можно commit'ить?

Information

Rating
Does not participate
Location
Тернополь, Тернопольская обл., Украина
Date of birth
Registered
Activity