среда, 2 октября 2019 г.

Коротко. Юникод

Вчерне доделал индексацию и поиск в юникодных текстах. Даже формулы ищутся. Много всяких приколов вылезло. Особенно со смешением кодировок. Например есть "кириллический игрек Y". Или альфа вместо А в русских словах. Умляуты, там где не надо. Штрихи оформленные маленькими буквами I в виде надстрочного индекса. Ну и всякое такое. Запрограммировал всё в "функциональном стиле". Вход преобразуется функтором, ну и так по цепочке. Конвейер.

Сделал функцию - ParseByFunctors.
Принимает строку и набор функторов, которые эту строку преобразуют в другую строку или даже набор строк.

Детали может быть позже.

P.S. Например есть слово Yamaha - написано вроде так. А а не ищется. Начинаем разбираться - НИ ОДНОГО латинского символа там нет.
Есть кириллическая Y.
Кириллические A.
Татарская (!) h.
Ну и да - соврал. Один латинский - m.
ОДИН латинский - есть. Ну и тому подобное. А в документе - Yamaha.

А IIV. Римская цифра. Где одна из I это не латинская, а греческая буква.

А заглавная АЛЬФА вместо А?

Или вроде "греческая сигма", заглавная. Ан нет. Есть похожая ЛАТИНСКАЯ буква - называется почти как немецкая "эсцет".
"Латинская Эш" - вот она как называется.

А ещё например метры квадратные то м2 - с верхним индексом. То м и специальный символ - верхняя 2.

Или скажем текст "запылился". Искажения. И получилось Z с черточкой, а не просто Z.

Или слово дОлжным, где над О ударение в виде штриха. Так - в первоисточнике.

А такие штрихи ещё и разные бывают.

Или о-умляут вместо О в русском слове, потому что на бумаге была грязь.

Или слово РОССИЯ, где русские только И и Я. Все остальные - латинские, а то и вообще греческие.

вторник, 10 сентября 2019 г.

Offtopic. Эссе про Айкидо

Центр Айкидо АЙКИКАЙ «Койнобори Додзё»
Эссе: «Почему я занимаюсь айкидо в клубе «Койнобори»

Текущая степень______3 кю_______год, когда была присвоена__2012______
Общий стаж занятий айкидо___14 лет___из них в Койнобори___14 лет______

Айкидо я занимаюсь с 2005 года с некоторыми перерывами. За это время моё личное отношения к занятиям Айкидо менялось и трансформировалось. Попробую описать текущее положение вещей и мой нынешний взгляд на занятия Айкидо.
Как ни банально звучит, но в данный момент в первую очередь я рассматриваю занятия Айкидо как деятельность сильно полезную для здоровья. При этом на рубеже 45 лет я пришёл к пониманию, что Айкидо можно заниматься по-разному. Можно занимать интенсивно  и резко, а можно вдумчиво и плавно. В зависимости от текущей физической формы. В детстве и юности я занимался классической борьбой около 10 лет. А также, на волне общей моды, около полутора лет карате. Так во сравнении скажем с борьбой или карате — по моему личному ощущению Айкидо сильно выигрывает в плане возможности варьирования стиля и интенсивности занятий учитывая текущую физическую форму.
Также для меня занятия Айкидо это самоорганизация и преодоление. Выстраивание режима дня. Режима жизни. Поскольку опаздывать на тренировки, а тем более пропускать их я считаю не комильфо, то приходится выстраивать свой график таким образом, чтобы везде успевать. И на работу и на тренировки, и на другие немаловажные дела.
После двух лет занятий у меня было ощущение, что «английский я уже знаю». Потом стало приходить понимание, что всё далеко не так просто. И многое совсем не лежит на поверхности. Чем дальше занимаешься, тем больше обращаешь внимание на детали и сложности.
И это хорошо, что многое сразу не получается. Хорошо, что далеко не всё сразу и легко даётся. Есть над чем работать. Трудности порождают интерес. Если бы всё легко давалось, то и ценность занятий была бы куда меньше. С каждым годом открываются всё новые и новые грани. Постепенно приходит понимание тех вещей о которых раньше не задумывался. Развитие по спирали.
Что же касается именно клуба Койнобори, то мне особенно  не с чем сравнивать. С другими инструкторами я мало сталкивался, равно как и с занимающимися из других клубов.
Но мне нравится заниматься в клубе Койнобори отчасти тем, что у клуба есть какая-то общая линия, более менее стандартизированный подход и общие требования. Но при этом у каждого из инструкторов, у которых я занимался или с которыми я пересекался на семинарах или тренировках, есть свой личный подход, в рамках общей «клубной традиции». И это очень здорово. С одной  стороны есть базис, на котором основано всё, а с другой — каждый инструктор приносит своё виденье и свои личные вариации.
Также немаловажным аспектом занятий в клубе Койноборе я считаю то, что регулярно проводятся семинары Секи сенсея. Каждый его семинар насыщен и интересен. У Секи сенсея очень открытый подход. Он вызывает искреннюю симпатию.
Я за время своих занятий в клубе посетил около 7 или 8 семинаров Секи сенсея. И каждый раз было что-то новое. Какие-то новые подробности, важные детали. Но при этом опять же в рамках определённого общего базиса. Постоянство с одной стороны, а также совершенствование техники с другой, очень подкупает.
Ну и также мне нравится, что инструкторы клуба подходят ко всем занятиям крайне серьёзно, и требуют серьёзности отдачи от занимающихся. Они настоящие подвижники своего дела.
В общем — хочется продолжать заниматься и далее и пытаться достичь какого-то качественно нового уровня в технике и форме.
Будем заниматься.

Дата  «24»___мая______2019 г                                                                 Город__Москва_______


ToDo. TArchiStorageTest переписать на скрипты

TArchiStorageTest переписать на скрипты.

А потом - TArchiStorageVersionTest.

Ну и "покрутить" с виртуальностью и "наследованием" тестов.

А также с эталонами.

И пред- и постусловиями.

Возможно вынести в постусловие сравнение файлов с эталонами.

Не знаю. Надо подумать.

среда, 21 августа 2019 г.

ToDo. Заменить где возможно memoryChain на TReadOnlyBuffer

Заменить где возможно memoryChain на TReadOnlyBuffer.

ToDo. Сделать константные буфера

Сделать константные буфера.
Которые пишутся только при чтении из файла. А потом "закрываются" через VirtualProtect.
Чтобы пользователь буфера не смог его испортить.
По аналогии с sharedConstString.

Типа:

var
 Buffer : TBuffer;
 Processor: TSomeMemPoolProcessor;
 aStream: IStream;
While true do
Buffer := TBuffer.Create(aStream);
// - создаётся буфер с фреймом из файла.
// там внутри VirtualAlloc и VirtualProtect.
// которые делают mem_readOnly
If Buffer = nil then Exit;
// - если ничего не прочитали, то выходим
Processor.DoBuffer(Buffer.AsPointer);
// - там буфер доступен только на чтение
Buffer.Free;
// - освобождаем буфер
end;// - переходим к следующему фрейму

Там естественно try..finally, чтобы буфер не тёк.