forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.GOLDED

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 27.01.2023, 01:02
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию Код в 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  
Старый 27.01.2023, 02:12
Nil A
Guest
 
Сообщений: n/a
По умолчанию Код в 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  
Старый 27.01.2023, 03:22
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 27.01.2023, 05:44
Nil A
Guest
 
Сообщений: n/a
По умолчанию Код в 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  
Старый 27.01.2023, 07:43
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 27.01.2023, 08:32
Nil A
Guest
 
Сообщений: n/a
По умолчанию Код в 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  
Старый 27.01.2023, 09:02
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 01.02.2023, 05:42
Alexander Kruglikov
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 01.02.2023, 05:42
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию 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
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:56. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot