- 1
- 2
- 3
- 4
- 5
- 6
- 7
Оффтоп
Пишу либу для гуя в консоли. Столкнулся с проблемой медленного вывода в консоль на линуксе.
На винде есть няшный WriteConsoleOutput, который может вывести буфер разом на консоль, в линупсе ничего подобного не нашел.
Если использовать Console.WriteLine или libc-шный puts, все лагает неимоверно
Есть идеи?
Нахуя? Давай тогда ещё консоль в гуях напишем.
муахахахахахахааа!...
>консоль
Што?
Ну короче при такой схеме просто намного меньше говноэскейпов отправляется в терминал.
А после refresh'а в терминал отправится только две строчки: откуда курсор ушёл и куда он пришёл.
Как-то так.
Без буфера это будет либо моргать (если всё-всё-всё на несколько слоёв каждый раз заливать в терминал) либо превратится в адовую боль в жопе (если пытаться рисовать только обновлённые куски).
А в нортоне тоже делали двойную буферизацию? Или это очередные прыщепроблемы?
Как это решали в версии под Винду, не знаю, надо исходники ФАРа или клонов ДОС Навигатора смотреть.
Можно даже указать координаты вывода и высоту/ширину
А вот как справлялись до Win2k, понятия не имею. Особенно если учесть что в винду эскейпы не завезли
win9x -- ansi.sys (command.com)
в гугл
был только comamnd.com 16ти битный
небось и ConsoleAPI NTвого не было
я помню только 16ти битный command.com
Я в каком-то ГК кидал экзешник из Windows 95 (ftp.exe или типа того) с PE-заголовком, в котором указана Subsystem: Text, а в секции импорта консольные функции.
P.S. Вот этот файл:
http://rgho.st/72WGFbLqF
conhostа же не было
Но некоторые файлы от Windows NT работали (в Windows 95/98/Me не поддерживались многие функции с суффиксом W, поэтому работало не всё). По крайней мере, неюникодный FAR в Windows 95 работал нормально.
Да, conhost'а не было, но кто-то открывал консоли.
))было бы смешно работать через DOSовое прерывание
тогда TV программы даже на 486 тормозили
не могу найти нормальные маны по нему
axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axa
а перепиливать половину кода для того, чтобы заставить это работать с ncurses, мне лень
попробовал fputc. быстро пиздец. собственно рисуется тоже пиздец, хуй пойми что.
P.S. нет, наебал, все еще нихуя не быстро
Курсес именно для того и сделано, чтобы удобно выводить псевдографику. Ты небось налажал с локалью и у тебя потому нихуяч не работает
Его надо уметь готовить. Копать тут:
http://invisible-island.net/ncurses/man/curs_terminfo.3x.html
http://invisible-island.net/ncurses/man/curs_initscr.3x.html
http://invisible-island.net/ncurses/man/captoinfo.1m.html
> линукс
нагуя?
2. сравнительно простое портирование существующей программы
3. свидетель секты мигеля
2. да
3. мигель пидор
З.Ы. А, rtorrent ещё.
http://tdkare.ru/sysadmin/index.php/Консольный_Linux
P.S. Похоже, надо искать среди программ, использующих ncurses:
https://ru.wikipedia.org/wiki/Ncurses
так что это немного не то
CLI это шеллы и подобное.
GUI это тоже самое что и TUI, то только в графике и с картинками.
Прыщи из него и ссостоят, из этого прыщеговна.
у тебя просто компьютерщиков знакомых нет, и сам ты user, потому и не знаешь
Смотри как надо
Где здесь C++, guest?!
Твоей программе лучше пойти напитон
хуй в гуе
гуй в хуе
гуй в консоли
консоль в гуе
... ну короче все кобенации
для него такого не завезли, если не считать mono-curses (говно) и CursesSharp (не менее говно)
К тому же обе не работают в винде нормально, если вообще работают. mono-curses не пробовал, CursesSharp не завелось
раньше типично где-то кто-то что-то перемудрил с чарсетами и энкодингами в консоли. но нынче в линухе это не проблема потому что все utf-8.
2. addch не работает с юникодом, а add_wch имеет крайне ебанутую структуру символа, которую еще хуй где найдешь правильную (с этим проебался больше всего)
3. printw внутри имеет какой-то буфер, который не особо-то большой по размеру. В результате длинные строки он не выводит полностью
4. в линуксах консольные цвета трехбитные, а в винде - четырехбитные (обходится, но с еблей)
к тому же в линуксах порядок BGR, а в винде RGB, и чтобы цвета таки были одинаковые, надо биты переставлять
В твоей программе ты хотел прилинковать библиотеку которую назвали и положили в то место, где линкер будет ее искать, но твои инструменты разработки не умеют с линкером работать.
А потом взялся судить о консоли в Линуксе по одной утилите которая с этой консолью работает?
Хорошo Питон поддерживает что-то там в Виндовсе или нет - по большому счету никого не интересует: ничего серьезного или интересного для Виндовса все равно не разрабатывается не изза ТТХ а изза коммерческий непригодности.
О, еще есть, например, КулВижн, тоже израильская контора. Не знаю как сейчас, одно время была одним из самых больших поставщиков "взрослых видеочатов". Тоже 100% МС продукты.
Как правило МС продукты идут рука об руку с каким-то наебаловом, тупостью и уходом от налогов. По крайней мере из того, с чем я сталкивался.
ну да, с этого и надо было начинать)
>ничего серьезного или интересного для Виндовса все равно не разрабатывается не изза ТТХ а изза коммерческий непригодности.
>90 десктопа - винда.
>ничего серьезного русня или интересного для Виндовса все равно не на бутылку разрабатывается не изза ТТХ а изза cтекломойный ко-ко-ко коммерческий непригодности.
>90 десктопа - винда, пидорахен у тебя же прыщи днище"
Некоторые вещи в винде сделаны очень круто, некоторые -- отстойно
Внимание, вопрос
Почему libc линкуется нормально, а libncurses - нет?
>> libncursesw.so.5.9
>> [DllImport("ncurses")]
Ну судя по доке, надо писать что-то вроде [DllImport("libncursesw.so.5")]
Возможно, [DllImport("libc.so")] работает только потому, что стоит дев-версия соответствующего пакета. Вообще говоря, в линупсах не принято на прод-машины ставить неверсионированные версии либ.
Ну все пришло именно к этому
>>> [DllImport("ncurses")]
Я разные кобенации пробовал
> [DllImport("libc.so")]
Работает и без .so
> работает только потому, что стоит дев-версия соответствующего пакета
Интересная тема
Емнип, надо всё-таки libncursesw.so.5, чтобы на следующем обратно-совместимом апдейте curses'ов твоя прога не поломалась.
Ну можно подумать, что в виндовом SxS имена не "хуй знает какие" (там, емнип, вообще гуиды). А цель одна - side by side существование нескольких версий либы. Ну и проведение грани между совместимыми и несовместимыми версиями.
З.Ы. libc, кстати, тоже libc.so.6 если чо.
Хуйню, которая в нем лежит, разруливает только винда, но никак не линкер
А всякие системные dll так вообще в System32 валяются
который разный для 32 и 64 бит, гыгыгы
тут уже смеялись на говнокоде что у мелкософт 64хбитные либы лежат в system32, а 32хбитные в wow64
Вообще CBS (а Side-by-side это часть CBS) это очень большая и сложная хрень, и плохо документированная.
Консоль в винде - заебись, а линуксоиды, кукарекающие о хуевой консоли в винде - пидоры и идут напитон
грабли с ncurses что ты понаступал это мелочи по сравнению с траханием в прошлом с terminfo vs termcap, vs кривые установки в этих самых terminfo/termcap, vs кривые терминалы. (и если понадобится на Solaris / HP-UX портировать - то еще потрахаешься.) вот именно из-за этого TUI на *нихах и не поднялись. (пока сидишь только на линухе - можешь расслабится.)
Устаноыщики многих дистрибов
Много че
Вообще говоря, "ГУЙ" режим тоже текстовый чуть менее чем целиком.
Можно сказать, что emacs — это framework для написания текстовых приложений.
Например, мега-удобно редактировать graphviz-файлы: сохраняешь в одном окне, запускаешь M-x recompile, и в соседнем окне рефрешится картинка.
Вот этот плагин тоже доставляет
Но в основном, конечно, все стараются сделать текстовый интерфейс.
Виндовую консоль уже можно полноценно юзать с другой машины (чтобы WriteConsoleOutputW транслировались, а не только stdout/stderr/stdin)? Или только RDP, только хардкор?
Именно в этих ролях получается хорошо, а наоборот получается не очень.
К примеру, если я плейер включил и заблокировал машину. А другой юзер хочет поработать под своей учёткой.
На экране блокировки точно слышен
Создал сейчас акк и проверил
Слышен только на экране блокировки и до переключения на другого пользователя
Но покуда это винда, это 100% где-то настраивается в групповых политиках
политота не нужна
все политики это просто красивые .adm файлы к реестру.
Забавно что сраный нетворк браузинг и неймрезолвинг из нетбиоса уже тоже заменили на WSD (это SOAP бродкастовый) и вообще workgoups поменяли на "HomeGroup" в семерке.
Объективно - единственный плюс SMB в том что искаропки в винде есть как клиент так и сервер. Домашнему пользователю нахер не нужна привязка локальных учеток и тех с которыми по сети заходят.
RPC уже тыщу лет работает через 445 порт: это прямой SMB и RPC, никаких нетбиосов там со времен Win2K уже нету
>хардкор?
/0?
Правда, глубоко интегрирован в OS (там своя WinSta0, своя Session итд)
Ахуеть, ну давайте еще писать на BASH из под виндоуса