OberonCore
https://forum.oberoncore.ru/

BlackBox 2.0
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6819
Страница 20 из 20

Автор:  Иван Денисов [ Вторник, 08 Август, 2023 00:43 ]
Заголовок сообщения:  Re: BlackBox 2.0

arisu писал(а):
возьмите уже у меня нормальные регулярки. ;-) код там, конечно, адский жоп — зато работает. я TextCmds под регулярки адаптировал, удобно. в замене вдобавок есть приятные фичи типа «преобразовать в верхний/нижний регистр», «capitalise», и прочая. надо бы ещё вызов команды добавить — в смысле, вызывать команду для обработки subexpressions в заменяторе. положительно не понимаю, как вы без регулярок живёте.

Регулярные выражения всё же это уже как дополнение. Не оставляю попытки сохранять минимализм базового фреймворка.

Автор:  arisu [ Вторник, 08 Август, 2023 12:44 ]
Заголовок сообщения:  Re: BlackBox 2.0

Иван Денисов писал(а):
Регулярные выражения всё же это уже как дополнение. Не оставляю попытки сохранять минимализм базового фреймворка.
ну, я тут считаю, что движок регулярок — это то, что должно быть сразу в коробке. сам по себе движок — один модуль, без внешних зависимостей. ну, монстр, 80 кб. но это всё ещё лучше, чем CpcRegul, с его бабелем.

а как только вы ощутите прелесть регулярок и расширеной замены — то никаких вопросов о том, должно ли это быть сразу в поставке, и вовсе не останется. ;-)

Автор:  arisu [ Воскресенье, 17 Сентябрь, 2023 17:47 ]
Заголовок сообщения:  Re: BlackBox 2.0

ошибочка в WinFiles: в `NewLocator`:
Код:
IF (i > 1) & (loc.path[i-1] = "/") OR (loc.path[i-1] = "\") THEN

а должно быть так:
Код:
IF (i > 1) & ((loc.path[i-1] = "/") OR (loc.path[i-1] = "\")) THEN

Автор:  Иван Денисов [ Понедельник, 18 Сентябрь, 2023 10:34 ]
Заголовок сообщения:  Re: BlackBox 2.0

arisu писал(а):
ошибочка в WinFiles: в `NewLocator`:
Код:
IF (i > 1) & (loc.path[i-1] = "/") OR (loc.path[i-1] = "\") THEN

а должно быть так:
Код:
IF (i > 1) & ((loc.path[i-1] = "/") OR (loc.path[i-1] = "\")) THEN

Большое спасибо, внёс исправление.

Автор:  Иван Денисов [ Пятница, 10 Ноябрь, 2023 00:49 ]
Заголовок сообщения:  Re: BlackBox 2.0

Бывает вот такой баг, при попытке прокрутки документа после перехода на позицию в документе, которая требует сдвига лифта скроллбара. Похоже что-то неверно немного с алгоритмом прокрутки документов.

Вложения:
bugAjustLines.png
bugAjustLines.png [ 310.9 КБ | Просмотров: 510935 ]

Автор:  arisu [ Пятница, 10 Ноябрь, 2023 01:29 ]
Заголовок сообщения:  Re: BlackBox 2.0

я сейчас не полезу смотреть (простите), но могу вам навскидку сказать одну штуку: текстовые скроллбары пытаются делать вид, что они скролят в каких-то виртуальных пикселах, поэтому домножают позицию на довольно большое число. я в своё время попадал на трапы из-за переполнения, и что-то где-то по этому поводу правил: то ли тупо проверку и clamp перед домножением вкрячил, то ли что-то подобное. возможно, вы на это же самое налетели. простите за невнятное описание, сейчас несколько другим занят, нет рыбов^w силов пальцем в код показать.

p.s.: это где-то в сообщениях закопано, там не то чтобы сразу очевидно было: я как обычно раскручивал от трапа обратно, пока не нашёл виноватого где-то аж через три, вроде бы, подсистемы от текста.

Автор:  arisu [ Пятница, 10 Ноябрь, 2023 01:35 ]
Заголовок сообщения:  Re: BlackBox 2.0

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

Автор:  Иван Денисов [ Вторник, 16 Апрель, 2024 23:57 ]
Заголовок сообщения:  Re: BlackBox 2.0

Теперь в список ресурсов возможно добавить файл с манифестом.
Синтаксис немного замысловатый, чтобы минимально модифицировать структуру парсера. Но всё работает!
Код:
1 MANIFEST (1 'BlackBox.exe.manifest')

Автор:  Иван Денисов [ Понедельник, 24 Июнь, 2024 15:41 ]
Заголовок сообщения:  Re: BlackBox 2.0

Благодаря бдительности Антона Шелина, после обсуждения в чате https://t.me/blackbox_20 была внесена правка в компиляторе

Добавлена строчка
Код:
INC(DevCPE.dsize, DevCPM.cacheLineSize);


DevCPM.cacheLineSize установлен размером 64 байта.


DevCPV486.Allocate

Код:
   PROCEDURE Allocate*;
      VAR gvarSize: INTEGER;
   BEGIN
      DevCPM.errpos := DevCPT.topScope.adr;   (* text position of scope used if error *)
      gvarSize := 0;
      Variables(DevCPT.topScope.scope, gvarSize); DevCPE.dsize := -gvarSize;
      INC(DevCPE.dsize, DevCPM.cacheLineSize);(* gap to prevent cache line share between code and data*)
      Objects(DevCPT.topScope.right)
   END Allocate;


Модуль для проверки:

Код:
MODULE Test3;

VAR j* : INTEGER;

PROCEDURE Do1*;BEGIN  FOR j:=0 TO 100000000-1 DO END;INC(j);END Do1;
PROCEDURE Do2*;BEGIN  FOR j:=0 TO 100000000-1 DO END;INC(j);END Do2;
PROCEDURE Do3*;BEGIN  FOR j:=0 TO 100000000-1 DO END;INC(j);END Do3;
PROCEDURE Do4*;BEGIN  FOR j:=0 TO 100000000-1 DO END;INC(j);END Do4;

END Test3.

Test3.Do1

Test3.Do2

Test3.Do3

Test3.Do4



В старом Блэкбоксе выполнение последней процедуры очень долгое, так как данные и код попадают в одну строчку кэша процессора и он код постоянно из-за этого перезагружает при изменении данных.

Автор:  arisu [ Вторник, 25 Июнь, 2024 08:51 ]
Заголовок сообщения:  Re: BlackBox 2.0

спасибо! ещё начало цикла можно на четыре байта равнять: немножко, но помогает. надо будет глянуть — добавил ли я это, или только собирался. если добавил — то выдерну патч.

Автор:  Иван Денисов [ Среда, 31 Июль, 2024 18:56 ]
Заголовок сообщения:  Re: BlackBox 2.0

Обновил код StdStdCFrames, там немного упрощено вычисление цветов. Доработаны скроллбары, и сделано, чтобы элементы управления корректно масштабировались.

Осталось ещё сделать деревья, устранить баги в моей реализации многострочных полей, и это уже очень здорово!

Почти всё готово.

Автор:  arisu [ Воскресенье, 20 Октябрь, 2024 16:08 ]
Заголовок сообщения:  Re: BlackBox 2.0

драные в задницу дегенераты из гугеля в очередной раз положили на стандарты жопу, которая у них вместо головы. идиотский zopfli иногда генерирует deflate-потоки, в которых можно встретить смещение 32768. не спрашивайте: они гугель, им всё можно. стандарты — это для тупых биокарликов.

это я к чему? в inflate, которое с моей png-читалкой, надо сделать фикс:
в
Код:
   PROCEDURE (inf: Inflater) InflatedBlock (VAR btdest: ARRAY OF SHORTCHAR; beg, end: INTEGER): INTEGER, NEW;
, строку
Код:
               IF (offs < 0) OR (offs > 32767(*inf.dictEnd*)) THEN inf.SetErrorState; RETURN -1 END;   (* error! *)
следует заменить на две:
Код:
               IF (offs < 0) OR (offs > 32768(*inf.dictEnd*)) THEN inf.SetErrorState; RETURN -1 END;   (* error! *)
               offs := offs MOD 32768;

ну и чтобы два раза не вставать: в
Код:
   PROCEDURE (inf: Inflater) ProcessBlockHeader, NEW;
в CASE добавить:
Код:
| 3: inf.SetErrorState   (* invalid block code *)

это не критично, просто иначе вместо возврата ошибки на кривом потоке надувалка трапнется.

Автор:  arisu [ Среда, 23 Октябрь, 2024 03:54 ]
Заголовок сообщения:  Re: BlackBox 2.0

p.s.: окей. технически это дырка в RFC 1951 (который вообще очень плохо написан, кстати). там сказано, что смещение должно быть в диапазоне, но не сказано, считать ли диапазоном номера байтов, или размер словаря. технически 32768 — это получается «copy literal n times», причём сначала надо заполнить словать один раз (потому что RFC позволяет вставлять байты из неинициализированого словаря). я продолжаю считать, что нормальный компрессор не будет делать такие трюки, и хоть они легальны, но зопфля всё равно корявая.

Автор:  Иван Денисов [ Среда, 23 Октябрь, 2024 13:16 ]
Заголовок сообщения:  Re: BlackBox 2.0

Спасибо, внесу правку

Автор:  Иван Денисов [ Воскресенье, 10 Ноябрь, 2024 02:01 ]
Заголовок сообщения:  Re: BlackBox 2.0

Добавил выбор цвета по-умолчанию в настройках. Блэкбокс имел всегда такую опцию для сохранения цвета Ports.defaultColor, но не было возможности рисовать любым цветом этот самый defaultColor. Теперь в настройках любой цвет возможно выбрать для этой цели.

Опция удобна для работы светлым шрифтом по тёмному фону.

Страница 20 из 20 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/