Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.GOLDED
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.GOLDED с датами от 16 Jul 13 03:28:02 до 16 Nov 24 03:28:00, всего сообщений: 3632
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2908 из 3632 ======================================== RU.GOLDED =
От   : Nil A                            2:5015/46          24 Oct 23 03:37:00
Кому : Vitaliy Aksyonov                                    24 Oct 23 03:37:00
Тема : Широкие терминалы и char buf[сколько не жалко].. StyleCodeHighlight
FGHI : area://RU.GOLDED?msgid=2:5015/46+65371724
На   : area://RU.GOLDED?msgid=1:104/117+65370da3
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.GOLDED?msgid=1:104/117+6537e7b0
Ответ: area://RU.GOLDED?msgid=2:460/5858+654326e3
==============================================================================
Hello, Vitaliy!

Monday October 23 2023 17:59, from Vitaliy Aksyonov -> Nil A:

NA>>> А фиг там, там разных char buf[200] разбросано по коду
NA>>> (Container::StyleCodeHighlight). И наступить на них можно, если
NA>>> там в письмах какие-то особо длнные _такие вот_, *или вот такое*
NA>>> какие-то выделения, только за пределами этимх 256 байтов обычно.

VA> Понимаешь, самая большая проблема, что их нельзя просто
VA> Find/Replace/sed. Во многих местах буферы адекватного размера, так как
VA> есть натуральные ограничения данных. Например, имя сисопа в пакете.
VA> Плюс эти структуры копируются простым memcpy, а некоторые даже
VA> используются! для "сериализации". Так что там переделок намного
VA> больше, чем хотелось бы.

Семён Семёныч, если бы там sed'ом можно было бы, то яб уже сделал ;-)

NA>> Короче, вот фикс, чтобы на широком экране, на длинной строчке,
NA>> где есть *какие-то выделения* голдед не падал.
VA> Создал pull request от твоего имени. :)

Спасиба.

VA> Там дело хуже. Когда URL длиннее строки, то подсвечивается только
VA> первая строка. И это не айс. И я не вижу нормального способа это
VA> починить. Ведь с новой строки может быть как продолжение ссылки, так и
VA> просто текст.

Там в деде есть много каких-то интернетовских делов, которые мне ниразу не понятны кстати.
То, якобы емейлы он умеет читать писать, только по smtp/pop3 не ходит, хотя не проверял.
То URLы парсит как не в себя, но зачем? Вроде какие-то виндовые голдеды позволяют тыкать мышью в ссылки, и откроется в браузере, но я могу гнать.

VA> Далее. Список схем, которые понимает эхотаг, там жестко зашит.

[GoldED-NSF](https://fido.g0x.ru/golded/index.php) умеет и не только RFC схемы, но и area:// схемы.
Кстати, ты глянул на патч, его можно влить в наш меинстрим-голдед?

VA> А теперь добавляем туда юникодные символы, и получаем еще более
VA> интересную картину. Какой-нибудь https://пиво.рф или
VA> git@исходники.ру:мой/репозиторий.git
VA> Кто там хотел юникод? :)

Ага, давай уникод, майм, урл, всё в одну кучу смешаем.

VA> Там ещё другое есть. Это overlap при копировании строк. Когда oldMsg и
VA> msg - это тот же объект. :) Вообще весело.

На собеседовании надо спрашивать потому что, чем отличается memcpy от memmove. Хотя в голдеде всё через strcpy, который во всех современных компилятора в buildin превращается по-любому, а не в либси ходит.

NA>> Вот теперь в них падает. Их что теперь, все в CREATEBUFFER(char,
NA>> buf, MAXCOL) ?
VA> Нет. Нельзя бездумно все. Лучше потихоньку переводить на std::string

-std=c++11 минимум только включите сначала, чтобы lvalue понимали, и move случался где надо, без копирований, и разные RVO и NRVO случались (хотя они и так случаются в современном компиляторе, даже со старыми стандартами, ибо никто не запрещает же).
-std=c++17 яб на минималке включил, и общался там не через const std::string& везде, если ты уж будешь заменять, а на std::string_view.

VA> (в котором, кстати, тот же UTF-8 прекрасно хранится, если не надо
VA> делать посимвольных операций, конечно), меняя алгоритмы.

В том то и дело, что std::string хранит просто байты, и ему пофиг что там, он такой же std::vector почти.
Для нужд редактора нужно знать.. я щас не буду про поддержку еврита справо-налево и потом тут же английский и русский, справа налево, или какие-то азиатские языки, где вниз пишут..
Для нужд редактора нужно знать сколько графем..да блин, опять не смогу объяснить на пальцах.. и как минимум надо нормализовывать эти акценты, а то код сразу с акцентом, или буква А и к ней палочка с боку другим юникод символом, который не занимает знакоместо.

Такшта, не углубляясь в дебри, рекомендую не std::string, а какой-нибудь icu::UnicodeString.
Ну окей, icu - это оверкилл, можно договориться, что в std::string мы ложим только utf8. Но тогда к нему надо функции посчитать сколько это символов в строке. Ну и тогда iconv сюда тупо зафигачить, и конвертить всё в utf8, а обратно с флажком //TRANSLIT.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
* Origin: Linux 2.6.32-042stab145.3 (2:5015/46)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.035711 секунды