вторник, 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, чтобы буфер не тёк.

четверг, 15 августа 2019 г.

Хоккей с памятью и методами

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

Получилось что-то типа TVirtualInterface.

Только со связыванием в Compile-Time.
Почти. Но On Demand.

Про реализацию - чуть позже напишу.

Побочным эффектом получилось, что можно отдавать класс "как интерфейс", но без лишнего подсчёта ссылок. Делегат что ли это называется.

Грубо говоря у класса получаются ДВЕ реализации IUnknown, одна с подсчётом ссылок, а другая - БЕЗ оного.

Чем то схоже с Protocol в Objective-C.

Ну и DuckTyping там где-то рядом.

Класс может выдать себя в качестве "утки, которая умеет махать крыльями".

При этом он не является IDuck или TDuck.

Построено всё на перекрытии NewInstance и распределении дополнительной памяти "за объектом". И в этой дополнительной памяти "варим" виртуальные таблицы для каждого из "интерфейсов"/protocol'ов. По образу и подобию того как это в Delphi сделано, только эта таблица инициализируется "на лету" из метода FillProtocolVMT. Туда пихаются указатели на методы нашего объекта.

Можно в принципе вообще "на лету" варить такие таблицы, совсем "onDemand". Например в QueryInterface. Только я пока не придумал зачем.

Ну и пока у меня есть ограничения на типы и количество параметров. Таких методов.

Попутно я научился цеплять к каждому классу свой менеджер памяти. С возможностью кеширования только определённого количества экщемпляров. Ну и попутно научился делать память экземпляров immutable, через virtualAlloc и virtualProtect. Экземпляры таких классов реально immutable. Они могут модифицироваться только в конструкторах и деструкторах. А во всё остальное время жизни экщемпляров - они readOnly. Доступ к полям на запись, даже "случайный" вызывает pageFault.

То есть можно делать реально константные кешируемые объекты.

Ну это функциональными языками "навеяло".

Дальше можно делать expressionOnDemand. Выражения, вычисляемые и кеширумые по мере необходимости.

Правда вся эта конструкция пока несколько "шаткая" и до конца не отлажена, но ничего. Отлажу.

Для начала могу опубликовать реализацию реально константных кешируемых строк. Эта конструкция уже отлажена. Она в производстве уже год как.