- 1
- 2
- 3
- 4
- 5
- 6
- 7
Оффтоп
Пишу либу для гуя в консоли. Столкнулся с проблемой медленного вывода в консоль на линуксе.
На винде есть няшный WriteConsoleOutput, который может вывести буфер разом на консоль, в линупсе ничего подобного не нашел.
Если использовать Console.WriteLine или libc-шный puts, все лагает неимоверно
Есть идеи?
cykablyad 24.06.2016 21:24 # 0
guest 24.06.2016 21:48 # +1
Нахуя? Давай тогда ещё консоль в гуях напишем.
cykablyad 24.06.2016 21:53 # 0
Dummy00001 25.06.2016 21:27 # 0
муахахахахахахааа!...
inkanus-gray 25.06.2016 21:32 # +1
j123123 24.06.2016 22:14 # +3
kipar 24.06.2016 22:17 # 0
3_14dar 25.06.2016 10:31 # +2
>консоль
Што?
bormand 25.06.2016 11:00 # +2
3_14dar 25.06.2016 15:05 # 0
bormand 25.06.2016 17:07 # 0
Ну короче при такой схеме просто намного меньше говноэскейпов отправляется в терминал.
3_14dar 25.06.2016 18:34 # 0
bormand 25.06.2016 17:11 # 0
А после refresh'а в терминал отправится только две строчки: откуда курсор ушёл и куда он пришёл.
Как-то так.
Без буфера это будет либо моргать (если всё-всё-всё на несколько слоёв каждый раз заливать в терминал) либо превратится в адовую боль в жопе (если пытаться рисовать только обновлённые куски).
bormand 25.06.2016 17:18 # 0
3_14dar 25.06.2016 18:35 # 0
А в нортоне тоже делали двойную буферизацию? Или это очередные прыщепроблемы?
inkanus-gray 25.06.2016 18:40 # 0
Как это решали в версии под Винду, не знаю, надо исходники ФАРа или клонов ДОС Навигатора смотреть.
3_14dar 25.06.2016 18:48 # 0
inkanus-gray 25.06.2016 18:55 # 0
cykablyad 25.06.2016 20:03 # +1
Можно даже указать координаты вывода и высоту/ширину
А вот как справлялись до Win2k, понятия не имею. Особенно если учесть что в винду эскейпы не завезли
guestinho 27.06.2016 15:59 # 0
win9x -- ansi.sys (command.com)
в гугл
inkanus-gray 27.06.2016 16:38 # +1
guestinho 27.06.2016 16:41 # −2
был только comamnd.com 16ти битный
небось и ConsoleAPI NTвого не было
inkanus-gray 27.06.2016 16:49 # 0
guestinho 27.06.2016 16:52 # 0
я помню только 16ти битный command.com
inkanus-gray 27.06.2016 16:58 # 0
Я в каком-то ГК кидал экзешник из Windows 95 (ftp.exe или типа того) с PE-заголовком, в котором указана Subsystem: Text, а в секции импорта консольные функции.
P.S. Вот этот файл:
http://rgho.st/72WGFbLqF
guestinho 27.06.2016 17:01 # 0
conhostа же не было
inkanus-gray 27.06.2016 17:07 # 0
Но некоторые файлы от Windows NT работали (в Windows 95/98/Me не поддерживались многие функции с суффиксом W, поэтому работало не всё). По крайней мере, неюникодный FAR в Windows 95 работал нормально.
Да, conhost'а не было, но кто-то открывал консоли.
guestinho 27.06.2016 16:43 # 0
))было бы смешно работать через DOSовое прерывание
тогда TV программы даже на 486 тормозили
cykablyad 24.06.2016 22:18 # 0
kipar 24.06.2016 22:31 # 0
cykablyad 24.06.2016 22:34 # 0
не могу найти нормальные маны по нему
kipar 24.06.2016 22:45 # 0
guest 24.06.2016 22:47 # +3
axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axa
bormand 25.06.2016 05:47 # 0
cykablyad 24.06.2016 23:42 # 0
а перепиливать половину кода для того, чтобы заставить это работать с ncurses, мне лень
попробовал fputc. быстро пиздец. собственно рисуется тоже пиздец, хуй пойми что.
P.S. нет, наебал, все еще нихуя не быстро
guestinho 25.06.2016 00:19 # 0
Курсес именно для того и сделано, чтобы удобно выводить псевдографику. Ты небось налажал с локалью и у тебя потому нихуяч не работает
cykablyad 25.06.2016 00:26 # 0
inkanus-gray 25.06.2016 12:52 # 0
Его надо уметь готовить. Копать тут:
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
3_dar 24.06.2016 22:16 # +1
> линукс
cykablyad 24.06.2016 22:17 # +1
3_dar 24.06.2016 22:18 # +1
нагуя?
3.14159265 24.06.2016 22:20 # +2
2. сравнительно простое портирование существующей программы
3. свидетель секты мигеля
cykablyad 24.06.2016 22:21 # +3
2. да
3. мигель пидор
bormand 25.06.2016 05:48 # +1
cykablyad 24.06.2016 22:20 # +1
guestinho 24.06.2016 22:22 # +2
cykablyad 24.06.2016 22:24 # +6
guestinho 24.06.2016 22:31 # +2
guest 25.06.2016 22:59 # +3
guesto 25.06.2016 23:05 # +1
guest 25.06.2016 00:31 # +2
3_dar 24.06.2016 22:27 # +2
cykablyad 24.06.2016 22:28 # +2
bormand 25.06.2016 05:34 # +2
З.Ы. А, rtorrent ещё.
bormand 25.06.2016 05:40 # 0
inkanus-gray 25.06.2016 12:23 # 0
http://tdkare.ru/sysadmin/index.php/Консольный_Linux
P.S. Похоже, надо искать среди программ, использующих ncurses:
https://ru.wikipedia.org/wiki/Ncurses
bormand 25.06.2016 12:31 # 0
3.14159265 27.06.2016 14:14 # 0
inkanus-gray 25.06.2016 12:05 # +1
cykablyad 25.06.2016 20:17 # +2
так что это немного не то
Dummy00001 25.06.2016 21:47 # +2
CLI это шеллы и подобное.
GUI это тоже самое что и TUI, то только в графике и с картинками.
3_14dar 25.06.2016 15:05 # +1
inkanus-gray 25.06.2016 21:38 # +6
guesto 25.06.2016 23:05 # +1
3_14dar 26.06.2016 10:16 # 0
Прыщи из него и ссостоят, из этого прыщеговна.
CHayT 26.06.2016 10:18 # 0
j123123 26.06.2016 10:24 # 0
CHayT 26.06.2016 10:27 # 0
guestinho 27.06.2016 17:14 # 0
inkanus-gray 26.06.2016 13:55 # 0
guestinho 27.06.2016 18:06 # 0
у тебя просто компьютерщиков знакомых нет, и сам ты user, потому и не знаешь
inkanus-gray 27.06.2016 18:10 # 0
guestinho 27.06.2016 18:13 # +1
guest 24.06.2016 22:39 # +1
cykablyad 24.06.2016 22:51 # 0
Смотри как надо
Где здесь C++, guest?!
guest 24.06.2016 22:41 # +2
guest 24.06.2016 22:43 # +2
guestinho 24.06.2016 23:36 # 0
LispGovno 25.06.2016 03:35 # +1
Твоей программе лучше пойти напитон
guest 25.06.2016 10:26 # +6
хуй в гуе
гуй в хуе
гуй в консоли
консоль в гуе
... ну короче все кобенации
bakagaijin 25.06.2016 23:10 # +2
Vero92 06.02.2018 18:28 # 0
g0_1494089156986 09.02.2018 00:29 # 0
3_14dar 25.06.2016 10:30 # −5
3_14dar 25.06.2016 15:06 # −8
guest 25.06.2016 16:55 # +6
guest 25.06.2016 16:58 # 0
guest 25.06.2016 17:00 # +3
cykablyad 25.06.2016 20:10 # 0
wvxvw 25.06.2016 18:48 # 0
cykablyad 25.06.2016 20:07 # +1
для него такого не завезли, если не считать mono-curses (говно) и CursesSharp (не менее говно)
К тому же обе не работают в винде нормально, если вообще работают. mono-curses не пробовал, CursesSharp не завелось
cykablyad 25.06.2016 19:58 # +3
Dummy00001 25.06.2016 21:49 # +3
раньше типично где-то кто-то что-то перемудрил с чарсетами и энкодингами в консоли. но нынче в линухе это не проблема потому что все utf-8.
cykablyad 25.06.2016 22:17 # +1
2. addch не работает с юникодом, а add_wch имеет крайне ебанутую структуру символа, которую еще хуй где найдешь правильную (с этим проебался больше всего)
3. printw внутри имеет какой-то буфер, который не особо-то большой по размеру. В результате длинные строки он не выводит полностью
4. в линуксах консольные цвета трехбитные, а в винде - четырехбитные (обходится, но с еблей)
к тому же в линуксах порядок BGR, а в винде RGB, и чтобы цвета таки были одинаковые, надо биты переставлять
wvxvw 26.06.2016 09:03 # +2
В твоей программе ты хотел прилинковать библиотеку которую назвали и положили в то место, где линкер будет ее искать, но твои инструменты разработки не умеют с линкером работать.
А потом взялся судить о консоли в Линуксе по одной утилите которая с этой консолью работает?
3_14dar 26.06.2016 10:19 # −1
wvxvw 26.06.2016 11:17 # 0
Хорошo Питон поддерживает что-то там в Виндовсе или нет - по большому счету никого не интересует: ничего серьезного или интересного для Виндовса все равно не разрабатывается не изза ТТХ а изза коммерческий непригодности.
guestinho 27.06.2016 17:13 # 0
wvxvw 27.06.2016 17:22 # 0
О, еще есть, например, КулВижн, тоже израильская контора. Не знаю как сейчас, одно время была одним из самых больших поставщиков "взрослых видеочатов". Тоже 100% МС продукты.
Как правило МС продукты идут рука об руку с каким-то наебаловом, тупостью и уходом от налогов. По крайней мере из того, с чем я сталкивался.
guestinho 27.06.2016 17:23 # 0
ну да, с этого и надо было начинать)
3_14dar 27.06.2016 21:02 # 0
>ничего серьезного или интересного для Виндовса все равно не разрабатывается не изза ТТХ а изза коммерческий непригодности.
>90 десктопа - винда.
3.14159265 27.06.2016 21:07 # +2
>ничего серьезного русня или интересного для Виндовса все равно не на бутылку разрабатывается не изза ТТХ а изза cтекломойный ко-ко-ко коммерческий непригодности.
>90 десктопа - винда, пидорахен у тебя же прыщи днище"
guestinho 27.06.2016 17:10 # 0
Некоторые вещи в винде сделаны очень круто, некоторые -- отстойно
cykablyad 26.06.2016 11:12 # 0
Внимание, вопрос
Почему libc линкуется нормально, а libncurses - нет?
roman-kashitsyn 26.06.2016 11:57 # +4
>> libncursesw.so.5.9
>> [DllImport("ncurses")]
Ну судя по доке, надо писать что-то вроде [DllImport("libncursesw.so.5")]
Возможно, [DllImport("libc.so")] работает только потому, что стоит дев-версия соответствующего пакета. Вообще говоря, в линупсах не принято на прод-машины ставить неверсионированные версии либ.
cykablyad 26.06.2016 12:40 # 0
Ну все пришло именно к этому
>>> [DllImport("ncurses")]
Я разные кобенации пробовал
> [DllImport("libc.so")]
Работает и без .so
> работает только потому, что стоит дев-версия соответствующего пакета
Интересная тема
bormand 26.06.2016 13:38 # +3
Емнип, надо всё-таки libncursesw.so.5, чтобы на следующем обратно-совместимом апдейте curses'ов твоя прога не поломалась.
bormand 26.06.2016 09:28 # +1
Ну можно подумать, что в виндовом SxS имена не "хуй знает какие" (там, емнип, вообще гуиды). А цель одна - side by side существование нескольких версий либы. Ну и проведение грани между совместимыми и несовместимыми версиями.
З.Ы. libc, кстати, тоже libc.so.6 если чо.
cykablyad 26.06.2016 11:15 # +1
Хуйню, которая в нем лежит, разруливает только винда, но никак не линкер
А всякие системные dll так вообще в System32 валяются
guestinho 27.06.2016 18:16 # 0
который разный для 32 и 64 бит, гыгыгы
cykablyad 27.06.2016 21:13 # 0
guestinho 27.06.2016 23:17 # +1
тут уже смеялись на говнокоде что у мелкософт 64хбитные либы лежат в system32, а 32хбитные в wow64
guestinho 27.06.2016 18:16 # 0
Вообще CBS (а Side-by-side это часть CBS) это очень большая и сложная хрень, и плохо документированная.
cykablyad 25.06.2016 22:21 # +3
Консоль в винде - заебись, а линуксоиды, кукарекающие о хуевой консоли в винде - пидоры и идут напитон
Dummy00001 25.06.2016 22:38 # +1
грабли с ncurses что ты понаступал это мелочи по сравнению с траханием в прошлом с terminfo vs termcap, vs кривые установки в этих самых terminfo/termcap, vs кривые терминалы. (и если понадобится на Solaris / HP-UX портировать - то еще потрахаешься.) вот именно из-за этого TUI на *нихах и не поднялись. (пока сидишь только на линухе - можешь расслабится.)
cykablyad 25.06.2016 22:58 # +1
guesto 27.06.2016 04:56 # +1
Dummy00001 27.06.2016 13:37 # 0
guesto 27.06.2016 13:38 # 0
Устаноыщики многих дистрибов
Много че
Dummy00001 27.06.2016 14:00 # 0
CHayT 27.06.2016 14:53 # +1
dxd 27.06.2016 15:23 # +1
bormand 27.06.2016 18:39 # +1
inkanus-gray 27.06.2016 18:59 # +1
bormand 27.06.2016 19:16 # 0
roman-kashitsyn 27.06.2016 23:26 # 0
Вообще говоря, "ГУЙ" режим тоже текстовый чуть менее чем целиком.
Можно сказать, что emacs — это framework для написания текстовых приложений.
bormand 27.06.2016 23:27 # +1
roman-kashitsyn 27.06.2016 23:38 # +1
Например, мега-удобно редактировать graphviz-файлы: сохраняешь в одном окне, запускаешь M-x recompile, и в соседнем окне рефрешится картинка.
Вот этот плагин тоже доставляет
Но в основном, конечно, все стараются сделать текстовый интерфейс.
3_14dar 27.06.2016 21:00 # 0
inkanus-gray 28.06.2016 15:28 # +4
3_14dar 28.06.2016 16:47 # 0
guest 25.06.2016 22:55 # +7
bormand 25.06.2016 23:14 # +2
Виндовую консоль уже можно полноценно юзать с другой машины (чтобы WriteConsoleOutputW транслировались, а не только stdout/stderr/stdin)? Или только RDP, только хардкор?
inkanus-gray 25.06.2016 23:16 # +2
Именно в этих ролях получается хорошо, а наоборот получается не очень.
bormand 25.06.2016 23:21 # 0
К примеру, если я плейер включил и заблокировал машину. А другой юзер хочет поработать под своей учёткой.
cykablyad 25.06.2016 23:46 # 0
На экране блокировки точно слышен
bormand 25.06.2016 23:47 # +1
cykablyad 25.06.2016 23:49 # +1
Создал сейчас акк и проверил
Слышен только на экране блокировки и до переключения на другого пользователя
Но покуда это винда, это 100% где-то настраивается в групповых политиках
3_dar 26.06.2016 00:04 # +2
политота не нужна
3_14dar 26.06.2016 10:18 # 0
guestinho 27.06.2016 18:17 # +2
все политики это просто красивые .adm файлы к реестру.
3_14dar 28.06.2016 16:51 # 0
3_14dar 26.06.2016 10:21 # 0
inkanus-gray 26.06.2016 13:58 # 0
LispGovno 26.06.2016 14:52 # 0
3_14dar 27.06.2016 21:03 # 0
bormand 27.06.2016 21:05 # 0
guestinho 27.06.2016 23:21 # +1
Забавно что сраный нетворк браузинг и неймрезолвинг из нетбиоса уже тоже заменили на WSD (это SOAP бродкастовый) и вообще workgoups поменяли на "HomeGroup" в семерке.
3_14dar 28.06.2016 16:49 # 0
Объективно - единственный плюс SMB в том что искаропки в винде есть как клиент так и сервер. Домашнему пользователю нахер не нужна привязка локальных учеток и тех с которыми по сети заходят.
guestinho 27.06.2016 23:19 # 0
RPC уже тыщу лет работает через 445 порт: это прямой SMB и RPC, никаких нетбиосов там со времен Win2K уже нету
3_14dar 28.06.2016 16:48 # 0
3.14159265 27.06.2016 14:18 # +1
guesto 27.06.2016 14:25 # +2
inkanus-gray 27.06.2016 14:25 # +2
3.14159265 27.06.2016 15:31 # +1
1024-- 27.06.2016 16:35 # +1
cykablyad 25.06.2016 23:45 # 0
3_14dar 26.06.2016 10:23 # −1
>хардкор?
/0?
CHayT 26.06.2016 10:24 # +3
3_14dar 27.06.2016 21:03 # 0
guestinho 27.06.2016 23:26 # 0
Правда, глубоко интегрирован в OS (там своя WinSta0, своя Session итд)
guesto 27.06.2016 04:56 # 0
guestinho 27.06.2016 17:18 # 0
3_14dar 26.06.2016 10:20 # 0
3_14dar 26.06.2016 10:17 # 0
3oJloTou_xyu 26.06.2016 09:12 # +3
Ахуеть, ну давайте еще писать на BASH из под виндоуса
3_14dar 26.06.2016 10:18 # +2
3_dar 26.06.2016 15:33 # +3