OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 11:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Суббота, 03 Октябрь, 2020 20:40 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Иван Денисов писал(а):
А вот знак удар́ения — полезная шт́ука. Хотелось бы, чтобы это в Блэкбоксе работало. И от него тоже каретка убегает. Так что, пожалуй, что придется это дело как-то учитывать.


А почему вы ударяете согласные? Это баг или фича?

Научить каретку не убегать - несложно, это небольшие изменения. Правда, они, наэн, размазаны будут по трем модулям: TextViews, TextSetters, TextControllers.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 03 Октябрь, 2020 20:45 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
В теме prosilver они ставятся правильно. А у вас наверное стоит subsilver2, в ней и правда, ударения рисуются над другими буквами. Наверное, от шрифта зависит.


Вложения:
Снимок экрана от 2020-10-04 00-46-00.png
Снимок экрана от 2020-10-04 00-46-00.png [ 20.41 КБ | Просмотров: 5772 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 04 Октябрь, 2020 23:10 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Переходить к UTF-кодировкам, в итоге, не хочется (ломать удобную логику "1 элемент массива = 1 литера". Про сборные знаки - понятно, но всё же, это не совсем то же самое). И попытки их введения втаскивают BlackBox в длительную турбулентность - когда "пока не поймёшь, что где валяется и когда всё это кончится".

Проще всего логически, алгоритмически - принять CHAR 4-байтным. Это решает всё, но ведёт к двухкратному перерасходу памяти. Ну и требует анализа всех библиотек, где там вместо SIZE(CHAR) сидит просто 2.

Но можно принять размерность CHAR решением этапа компиляции. Так же, как платформу.
Тогда по-умолчанию графическая среда собрана и работает с 4-байтным CHAR, но можно собрать, например, серверное приложение с 2-байтным, если мы знаем, что нам не нужно обслуживать азиатские тексты, например.

Плюсы:
- можно прямо сейчас закрепить консенсусно это решение;
- при этом можно программировать и библиотеки оставлять, как есть, никуда не переделывая;
- постепенно подготовить вариант компилятора на 4-байтный CHAR, также прочистить от завязки на 2-байтный весь код.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 16 Октябрь, 2020 03:38 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
adimetrius писал(а):
Info21 писал(а):
К несчастью, стали встречаться html-странички, где й сделана парой символов. Какая-то дурная мода.
Ужас какой... пришлите, пож, ссылку, когда попадется такая в след раз
Вот попалась:
https://polit.ru/article/2020/10/13/neuroeconomy/print/
Там таких й не все, но довольно много.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 16 Октябрь, 2020 15:50 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Прошу прощения, я внимательно прочел html-файл, но не нашел ни одной. Возможно, я не знаю, чего ищу? Или мы др др не поняли? Вы не могли бы указать точнее, в каком предложении?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 16 Октябрь, 2020 18:10 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Если открыть ссылку в Хроме, сделать Ctrl+A, Ctrl+C, потом пойти в Blackbox и сделать Ctrl+V в окошко Log, то первая композитная й стоит в конце первого же предложения основного текста:

Даниэль Канеман выдвинул предположение о существовании двух систем, обусловливающих принятие решений.

Если поставить курсор после между "й" и "." и нажать пробел, то "й" развалится на две литеры.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Октябрь, 2020 12:05 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Страшно жить...

Если видишь в тексте й
Изображение

Не верь глазам своим...
Вот она, правда:
Изображение


Ужас... окопаться... по периметру блекбокса выставить санитарные кордоны и беспощадно выкорчевывать UTF8 СС86...

Вот интересно, откуда же она у них в их аштээмэлах берется?

Следом падёт жертвой буква Ё, я полагаю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Октябрь, 2020 12:12 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Видимо, придется в Text реализовывать поддержку этих псевдолитер.

Наверное, стоит в режиме показа скрытых символов считать эти литеры отдельными, а в режиме без скрытых символов - толковать эти две литеры как единое целое?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Октябрь, 2020 23:59 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
adimetrius писал(а):
в режиме показа скрытых символов считать эти литеры отдельными,
а в режиме без скрытых символов - толковать эти две литеры как единое целое?
Другого способа не видно, если не размножать режимы.

Но что делать с Find?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Октябрь, 2020 21:07 

Зарегистрирован: Среда, 31 Январь, 2018 19:54
Сообщения: 244
Вот ещё какая хрень бывает с юникодом:
Цитата:
Использование символов юникода
Юникод — один из стандартов кодирования символов. Позволяет представить
знаки почти всех письменных языков. Операционная система Windows
поддерживает символы юникода в названиях файлов. А так как, Windows
является самой распространённой системой на ПК, то значит и злоумышленник
имеет некоторое преимущество перед жертвой. Юникод в название файла
добавить очень просто, достаточно вызвать контекстное меню и выбрать
нужный символ (рис. 1). В нашем случае,
это код RLO (Начать отмену справа налево).

Суть данного кода — зеркалирование символов послевставленного кода.
Например, файл имеет название «TESTgpj. exe», вставив RLO после
«TEST», то получим: «TESTexe. jpg». Смысл перестановки расширений
файлов в том, что обычный пользователь в первую очередь посмотрит
на расширение файла, чтобы не заразить свой компьютер.
Жертва, руководствуясь своими базовыми знаниями, поймёт, что это
изображение (формат «.jpg») и отбросит всякие подозрения.
Антивирусные программы также бессильны в данном случае, так как
просто-напросто не проверяют названия файлов на символы юникода
в нём. Данная функция в операционной системе Windows является
стандартной.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 13:35 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Коллеги, я обнаружил еще одну, кмк, жемчужинку, доставшуюся ББ от Оберона.

Формат OCF вмещает множество метаданных, многие из которых представляются числами - там и сям всякие индексы. Напр, сведения о процедуре содержат: ее номер в таблице; количество параметров; имя и имена всех параметров, которые представляются индексами в массиве имен; каждое имя начинается с указания длины и т.п. (не претендую на точность).
И большинство этих чисел - небольшие. В памяти ЭВМ они занимают по 4 байта.

А вот в файл выводится количество байт, необходимое и достаточное для представления каждого числа. Т.е. напр. число 28 займет 1 байт в файле, а число 1978 - два.

Меня почему-то в восторг привела эта находка!

Какое отношение к Уникоду: даже если использовать LONGCHAR или CHAR = {0X..FFFFFFFFX}, в ODC файл можно записывать, пользуясь той же методикой: ровно столько байт, сколько необходимо и достаточно для конкретной литеры. И это сбережет файлы от распухания.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 13:40 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 13:51 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
arlean1 писал(а):
Вот ещё какая хрень бывает с юникодом:


А тут, я полагаю, проблема не в юникоде. А в том, что файл и его идентификация - это дело вовсе не пользователя. Файл - низкоуровневое понятие системного программирования, такого же уровня, как ячейки памяти, регистры ЦП, сегменты и т.п. (ну, мож чуть повыше :)

Грамотно организованный интерфейс пользователя вообще не должен включать понятие файла. Пользователь не должен решать вопросы идентификации файлов (по имени, в таком-то каталоге, на таком-то диске и т.п.) Как пример - гугл-документы: пользователь создает документы, таблички, презентации и т.п., как-то там их для себя называет; файлы? не, там нет файлов, и нет имен файлов.

Другой пример - модули в КП/ББ: модули - это не файлы. Это фундаментально отличает от других языков и "экосистем". (Не хватает только пары команд в меню, которые позволяли бы сохранять модули, не залезая в меню "Файл" и не открывая папочное окно; но для себя я сделал ; )

Т.е. следует развести два понятия: идентификатор файла (используется программистами); и некое название, обозначение того, что внутри него, которое используется пользователем. Названия может и не быть; название может быть реализовано как метаданные файла, если таковые поддерживает ФС, или приложения должны хранить их внутри файлов, если ФС не поддерживает метаданные.
А к идентификаторам файлов можно бы предъявить те же требования, что и к идентификаторам переменных: буквы и цифры, и никаких головняков про пробелы, запятые, и всякие уникодные чудо-литеры, которые не видны или вообще левое обозначают правым )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 13:59 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
adimetrius писал(а):
А вот в файл выводится количество байт, необходимое и достаточное для представления каждого числа. Т.е. напр. число 28 займет 1 байт в файле, а число 1978 - два.

Меня почему-то в восторг привела эта находка!

Какое отношение к Уникоду: даже если использовать LONGCHAR или CHAR = {0X..FFFFFFFFX}, в ODC файл можно записывать, пользуясь той же методикой: ровно столько байт, сколько необходимо и достаточно для конкретной литеры. И это сбережет файлы от распухания.
Надеюсь, новый вариант UTF8 переизобратать не будете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 14:00 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Илья Ермаков писал(а):
Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки.


Взгляните на DevCPM.WriteNum и .ReadNum; Kernel.RefNum. возможно, я и ошибся.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 14:02 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Александр Ильин писал(а):
Надеюсь, новый вариант UTF8 переизобратать не будете?

Я правильно понял вас, что описанная методика напоминает UTF8?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 14:04 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
adimetrius писал(а):
Илья Ермаков писал(а):
Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки.


Взгляните на DevCPM.WriteNum и .ReadNum; Kernel.RefNum. возможно, я и ошибся.

Я читал когда-то описание этого формата. По-моему, старший бит кодирует необходимость прочитать и добавить ещё один байт. Почти как в UTF-8.

Код:
WHILE b < 0 DO

Это как раз цикл по старшему биту при чтении. В UTF-8 отличие в том, что первый байт сразу содержит длину литеры.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 14:16 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Впрочем, Обероновский формат компактнее UTF-8, так что можно, наверное, хранить прямо так же, как числа. Вроде как избыточность не нужна, да и вопрос совместимости не стоит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2020 21:21 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Оберон рулит ) даже в мелочах

Изображение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Октябрь, 2020 10:39 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
adimetrius писал(а):
Илья Ермаков писал(а):
Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки.


Взгляните на DevCPM.WriteNum и .ReadNum; Kernel.RefNum. возможно, я и ошибся.


А, в доп. символьной информации да.

В основных дескрипторах метаинформации - нет.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB