#1
|
|||
|
|||
Код в golded-plus
Vitaliy Aksyonov написал(а) к All в Jan 23 13:47:50 по местному времени:
Нello everybody! * Originally in pvt.luna.local * Crossposted in ru.golded Ради интереса собрал дебажный билд голдеда. И когда запустил, он у меня тут же упал в некоторых местах с порчей памяти. Залез в исходники и... Не буду описывать гамму эмоций. Конечно же, это легаси, но даже в то время с памятью работали более аккуратно. Вот пример: CREATEBUFFER(char, buf, MAXCOL); const size_t buflen=MAXCOL; buf[buflen]='\0'; Внимательные читатели берут печеньку. Для невнимательных - мы пишем вне буфера и весело портим память. Пожалуй, выделю немного времени и погоняю его с valgrind, заодно починю такие места. Vitaliy ... Ты что, думаешь ты дурак, а я нет? --- GoldED+/LNX 1.1.5-b20220504 |
#2
|
|||
|
|||
Код в golded-plus
Nil A написал(а) к Vitaliy Aksyonov в Jan 23 00:58:12 по местному времени:
Нello, Vitaliy! Thursday January 26 2023 13:47, from Vitaliy Aksyonov -> All: VA> Пожалуй, выделю немного времени и погоняю его с valgrind, заодно VA> починю такие места. Та char buf[80] сплошные, а окно терминала может быть ширши, писал уже, и конечно же не проверяется выход за границы. Есть патчик, я свой такой делал, где тупо на большое число изменили все эти буфера, но это dirty hack, сам понимаешь, а по уму это долго чинить. Ещё надо бы на SIGWINCН играл реагировать, чтобы динамически менять эти буфера и перерисовывать окошечко. Кстати, какой-нибудь tin/rtin из-коробки через ncurses будет всё это правильно отрисовывать, ещё и в utf8 внутри себя всё перегонять. Best Regards, Nil --- GoldED+/LNX 1.1.5 |
#3
|
|||
|
|||
Re: Код в golded-plus
Vitaliy Aksyonov написал(а) к Nil A в Jan 23 16:08:56 по местному времени:
Нello Nil! 27 Jan 23 00:58, you wrote to me: NA> Нello, Vitaliy! NA> Thursday January 26 2023 13:47, from Vitaliy Aksyonov -> All: VA>> Пожалуй, выделю немного времени и погоняю его с valgrind, заодно VA>> починю такие места. NA> Та char buf[80] сплошные, а окно терминала может быть ширши, писал NA> уже, и конечно же не проверяется выход за границы. Есть патчик, я свой NA> такой делал, где тупо на большое число изменили все эти буфера, но это NA> dirty hack, сам понимаешь, а по уму это долго чинить. Ещё надо бы на NA> SIGWINCН играл реагировать, чтобы динамически менять эти буфера и NA> перерисовывать окошечко. Кстати, какой-нибудь tin/rtin из-коробки NA> через ncurses будет всё это правильно отрисовывать, ещё и в utf8 NA> внутри себя всё перегонять. Как раз буферы там местами выделяются, учитывая размер окна. В этом году залили патч. У тебя исходники свежие? Проверь. Динамически изменять размер окна - было бы круто. Но это вряд ли кто-то сейчас будет делать. Vitaliy ... Ищу психиатра для работы с C++. --- GoldED+/LNX 1.1.5-b20220504 |
#4
|
|||
|
|||
Код в golded-plus
Nil A написал(а) к Vitaliy Aksyonov в Jan 23 03:52:22 по местному времени:
Нello, Vitaliy! Thursday January 26 2023 16:08, from Vitaliy Aksyonov -> Nil A: VA> Как раз буферы там местами выделяются, учитывая размер окна. В этом VA> году залили патч. У тебя исходники свежие? Проверь. Ааа.. вижу пул-реквест от lamskoy принят в мастер голдеда. Кстати, Eugene Lamskoy не пробивается по нодлисту-историй, видимо поент. https://github.com/golded-plus/golde...724db381769bc8 Ну окей, char buf[256] --> на макрос с MAXCOL или MAXCOL*2 кагбэ лучше, чем предлагали до этого char buf[2560], но это всё до ресайза терминалки. VA> Динамически изменять размер окна - было бы круто. Но это вряд ли VA> кто-то сейчас будет делать. Потому что надо сразу на какие-то стринги заменять, а не char buf, и динамически строчки меняли свой размер, при этом там бы хорошо было бы хранить utf8. Хотя, виндовому коду нужны wchar_t везде, тот ещё геморой. Ещё для целей редактора надо понимать сколько там отображаемых фигней на экране, а не просто юникодных код-поинтов, и каждый раз запускать функцию пересчёта из utf8 не очень рационально. Был бы какой-нибудь Qt, тамошний QString внутри UTF-16, и прям какой-нибудь QTextEdit и всё само случается. Я думал, для голдеда может ICU библиотеку затащить, и тамошний стринг умеет и хранить, и количество символов печатуемых выдавать. Но в голдеде исторически слишком много способов вывода, и через ДОС (наверное можно забить), и свой ANSI даже есть, и через ncurses, и под вендой консольный вариант (который надо с codepage на UNICODE переводить). Мне симпатизирует rtin проект, он красиво так всё рисует, внутри utf8 у него, на libiconv перекодировку просто делает, и печатает через ncurses, и ресайз срабатывает хорошо. Вроде rtin есть под венду, и там есть вендовый ncurses. Я про то, что если в голдеде всё на стринги заменить, и вывод только через ncurses сделать, то задача уже имеет какой-то законченный скоп. Best Regards, Nil --- GoldED+/LNX 1.1.5 |
#5
|
|||
|
|||
Re: Код в golded-plus
Vitaliy Aksyonov написал(а) к Nil A в Jan 23 20:34:32 по местному времени:
Нello Nil! 27 Jan 23 03:52, you wrote to me: VA>> Как раз буферы там местами выделяются, учитывая размер окна. В VA>> этом году залили патч. У тебя исходники свежие? Проверь. NA> Ааа.. вижу пул-реквест от lamskoy принят в мастер голдеда. Кстати, NA> Eugene Lamskoy не пробивается по нодлисту-историй, видимо поент. NA> https://github.com/golded-plus/golde...69398a165b281d NA> d75be1724db381769bc8 NA> Ну окей, char buf[256] --> на макрос с MAXCOL или MAXCOL*2 кагбэ NA> лучше, чем предлагали до этого char buf[2560], но это всё до ресайза NA> терминалки. char buf[2560] - грязненький хак, конечно. Новое решение лучше, чем ничего. Правда, ведь? Падать не будет. Просто ширина окна останется такая же. VA>> Динамически изменять размер окна - было бы круто. Но это вряд ли VA>> кто-то сейчас будет делать. NA> Потому что надо сразу на какие-то стринги заменять, а не char buf, и NA> динамически строчки меняли свой размер, при этом там бы хорошо было бы NA> хранить utf8. Хотя, виндовому коду нужны wchar_t везде, тот ещё NA> геморой. Ещё для целей редактора надо понимать сколько там NA> отображаемых фигней на экране, а не просто юникодных код-поинтов, и NA> каждый раз запускать функцию пересчёта из utf8 не очень рационально. NA> Был бы какой-нибудь Qt, тамошний QString внутри UTF-16, и прям NA> какой-нибудь QTextEdit и всё само случается. Я думал, для голдеда NA> может ICU библиотеку затащить, и тамошний стринг умеет и хранить, и NA> количество символов печатуемых выдавать. Если уж делать юникодный - лучше UTF-8 или уже UTF-32. В UTF-16 не все влазит. :) ИМХО, ICU было бы хорошо. Ща договоримся.... Придется пилить. :) NA> Но в голдеде исторически слишком много способов вывода, и через ДОС NA> (наверное можно забить), и свой ANSI даже есть, и через ncurses, и под NA> вендой консольный вариант (который надо с codepage на UNICODE NA> переводить). Мне симпатизирует rtin проект, он красиво так всё рисует, NA> внутри utf8 у него, на libiconv перекодировку просто делает, и NA> печатает через ncurses, и ресайз срабатывает хорошо. Вроде rtin есть NA> под венду, и там есть вендовый ncurses. Я про то, что если в голдеде NA> всё на стринги заменить, и вывод только через ncurses сделать, то NA> задача уже имеет какой-то законченный скоп. Ncurses под DOS или OS/2 будет работать? Я сомневаюсь. Vitaliy ... Объявление в общественном мyжском тyалете: "Мимо писсyаров не СРАТЬ!!!". --- GoldED+/LNX 1.1.5-b20220504 |
#6
|
|||
|
|||
Код в golded-plus
Nil A написал(а) к Vitaliy Aksyonov в Jan 23 07:04:26 по местному времени:
Нello, Vitaliy! Thursday January 26 2023 20:34, from Vitaliy Aksyonov -> Nil A: VA> Ncurses под DOS или OS/2 будет работать? Я сомневаюсь. Юникодный голдед-фор-дос - это недостижимо. Проще дропнуть поддержку. Хотите голдеда - юзайте классику, а не новодел на C++20 ;) В ДОСе же текстмода натуральная, две таблицы шрифтов можно загрузить. Кагбэ стопицот разных символов из юникода не покажешь. Хотя, если помнишь, были утилитки, в них применялся хак, динамически меняли эти фонты, и получались разные интересные украшения, тени, и курсор мышки ещё такой графический поверх текста мог ездить. Можно извернуться, найти ДОСовый фреймбуфер, под каким-нибудь dos4gw, и затащить туда FreeType, и прям отрисовывать, как будто текстмода, и будет тебе все символы юникода. Кстати, однажды же мы проснулись, и в линуксе при загрузки стал показываться пингвинчик лого, а дальше вроде бы как обычная текст-модная консоль, но там уже был фреймбуфер, а не знакогенератор из видеокарты. Только это уже не будет тем самым ламповым голдедом. Это как голдед переписать на Qt, и там какой-нибудь terminal шрифт фиксированный пихать. Best Regards, Nil --- GoldED+/LNX 1.1.5 |
#7
|
|||
|
|||
Re: Код в golded-plus
Vitaliy Aksyonov написал(а) к Nil A в Jan 23 21:45:00 по местному времени:
Нello Nil! 27 Jan 23 07:04, you wrote to me: VA>> Ncurses под DOS или OS/2 будет работать? Я сомневаюсь. NA> Юникодный голдед-фор-дос - это недостижимо. Проще дропнуть поддержку. NA> Хотите голдеда - юзайте классику, а не новодел на C++20 ;) Тогда проще форкнуть и выпилить всё легаси. Вроде такие попытки были? С нуля писать - слишком много работы. В деде за годы накопилось много вкусного функционала. И если уж писать с нуля - тогда уж или Qt/GTK или вообще на Java/JavaFX. NA> В ДОСе же текстмода натуральная, две таблицы шрифтов можно загрузить. NA> Кагбэ стопицот разных символов из юникода не покажешь. Хотя, если NA> помнишь, были утилитки, в них применялся хак, динамически меняли эти NA> фонты, и получались разные интересные украшения, тени, и курсор мышки NA> ещё такой графический поверх текста мог ездить. Было дело. Люди умели использовать ограниченные ресурсы на полную. NA> Можно извернуться, найти ДОСовый фреймбуфер, под каким-нибудь dos4gw, NA> и затащить туда FreeType, и прям отрисовывать, как будто текстмода, и NA> будет тебе все символы юникода. Кстати, однажды же мы проснулись, и в NA> линуксе при загрузки стал показываться пингвинчик лого, а дальше вроде NA> бы как обычная текст-модная консоль, но там уже был фреймбуфер, а не NA> знакогенератор из видеокарты. Только это уже не будет тем самым NA> ламповым голдедом. Это как голдед переписать на Qt, и там какой-нибудь NA> terminal шрифт фиксированный пихать. Вот и я о том же. Если ламповый голдед оставлять, но с юникодом, то просто переделать внутреннее представление. А что под досом не сможет отобразить все символы - не проблема. Ведь в основном там будет один набор символов. Vitaliy ... Лысый может причесываться, не снимая шляпы. --- GoldED+/LNX 1.1.5-b20220504 |
#8
|
|||
|
|||
Re: Код в golded-plus
Alexander Kruglikov написал(а) к Vitaliy Aksyonov в Feb 23 03:29:11 по местному времени:
Привет, Vitaliy! 26 янв 23 21:45, Vitaliy Aksyonov писал(а) к Nil A: VA> И если уж писать с нуля - тогда уж или Qt/GTK Неплохо, кроссплатформено... а как там с cli? VA> или вообще на Java/JavaFX. whooyjava (простите) С наилучшими пожеланиями, Alexander. --- "GoldED+/LNX 1.1.5-b20220504" --- |
#9
|
|||
|
|||
Re: Код в golded-plus
Vitaliy Aksyonov написал(а) к Alexander Kruglikov в Jan 23 16:41:52 по местному времени:
Привет, Alexander! 01 Feb 23 03:29, ты писал(а) мне: VA>> И если уж писать с нуля - тогда уж или Qt/GTK AK> Неплохо, кроссплатформено... а как там с cli? Никак. В cli логичнее переделать существующее рещение. И это не должно быть очень сложно, на самом деле. VA>> или вообще на Java/JavaFX. AK> whooyjava (простите) Каждый имеет право на свое мнение. :) Best regards, Vitaliy Aksyonov. ... Пройдете по этомy мостy до середины и сразy направо... --- GoldED+/LNX 1.1.5-b20220504 |