пятница, 28 июля 2017 г.

Off-topic. Извините

Надо читать "настоящие книги".

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

http://ruslit.traumlibrary.net/book/sbornik-nikogda-ne-zabudem/sbornik-nikogda-ne-zabudem.html

https://www.ozon.ru/context/detail/id/5519357/

https://www.ozon.ru/context/detail/id/27428785/

ToDo. ToValue

ToValue для записей сделать методом записи, а не static.

четверг, 27 июля 2017 г.

ToDo. Capture & Seq:

Попробовать Capture с Seq:

И seq и joinWithLambded - перенести в асиоматику.

ToDo. Перевести sort и compareItems на оператор less

Перевести sort и compareItems на оператор less.

Для обеспечения симметричности сравнения.

ToDo. WordOrBox

Сделать WordOrBox.

Перевести на него do и работу с массивами.

И списки слов.

Поддержать wordBox на capture.

ToDo. JoinWithLambded

JoinWithLabded переделать на zip.

Использовать Capture где надо.

Убрать array:copy.

Сделать array:sort. "Хитрый".

Fold - тоже.

А map - назвать transform. Как "людей".

ToDo. Slice

Сделать, чтобы slice возвращал массив.

Сразу станет легче жить.

Скрестить его с unzip. 

64 бита

Перевёл наш основной проект на 64 бита. Один из основных.

Даже почти всё работает. Не работают очень специфические сторонние вещи типа docX etc.

Даже "велосипедная" сторонняя БД - работает. И наши собственные хранилища.

ToDo. Сделать comparable

Сделать Comparable. И перевести на него. =, !=, <, >

Аналогично - add - +, sub - -, etc.

ToString, GetHash, ToPrintable etc.

Также публиковать в скриптовой машине function of object. Это пожалуй последнее, что осталось неопубликовано.

ToDo. Итераторы

Сделать итераторы в стиле C++.

Перевести на них скрипты.

Сделать их совместимыми с enumerator Delphi xe. http://wiki.freepascal.org/for-in_loop/ru

Перевести потом на них всё остальное.

Сделать кроме for ещё и forIf.

среда, 26 июля 2017 г.

Ни о чём. Хотя и о "многом". Как посмотреть

Вообще - "функциональщина" - она "рулит" - http://programmingmindstream.blogspot.ru/2017/07/blog-post.html?m=1

Вспоминается LISP и FORTH. И "множество скобочек".

А ещё я сделал реализацию "алгебры отношений" для кодогенерации.

Вместо:

Elem a
 Elem b
  Elem c
  End c
  Elem d
  End d
  Elem e
  End e
 End b
End a

Я сделал:

Elem a
Elem b
Elem c
Elem d
Elem e

Relation Children a ( b )
Relation Children b ( c d e )

То есть я сначала вытянула все "понятия" в плоский список (буквы словаря опрелелил), а потом ОТДЕЛЬНО определил "отношения" (слова) - между "понятиями".

И стало возможно определять другие "отношения":

Relation Uses b ( a )
Relation Inherits d ( c )
Relation Implements d ( e )

И дальше уже пошла чистая "алгебра отношений" или говоря проще для ремесленников - операции над коллекциями. Их фильтрация, трансформация, сортировка, объединение, вычитание, удаление дубликатов и т.д. И т.п.

b .Uses .join ( d .Inherits ) .filter ( != c ) .transform .toString .sort .stringCompare .forEach .print

- надеюсь "интуитивно понятно".

Объединяем элементы используемые b с элементами унаследованного от d. Выкидываем те, что равны c. Результат преобразуем к массива строк. Сортируем. Перебирается поэлементно. Каждый элемент - печатаем.

И тут уже вспоминается Prolog и его "атомы" и "предикаты".

LINQ для Delphi. Набор ссылок

LINQ для Delphi. Набор ссылок.

https://m.habrahabr.ru/post/203970/

https://www.devart.com/entitydac/

http://blog.devart.com/using-linq-in-entitydac.html

https://www.osp.ru/pcworld/2009/09/10333910/

http://www.sql.ru/forum/1157390/linq

При "всём богатстве выбора" - я всё же планирую сделать собственную реализацию - http://programmingmindstream.blogspot.ru/2017/07/todo-linq.html?m=1

Сделал стабы для вызова локальных функций под Win64

Аналог "анонимных функций". Но более гибко.

Если интересно - могу подробно расписать.

http://programmingmindstream.blogspot.ru/2016/12/1321.html?m=1

http://programmingmindstream.blogspot.ru/2016/12/1323-win64.html?m=1

ToDo. Сделать "аналог" LINQ

http://programmingmindstream.blogspot.com/2017/07/blog-post.html

Через промежуточную примеси и промежуточный интерфейс.

.transform можно сделать через "кеш интерфейсов". Это надо ещё обдумать.

На Delphi XE - понятно как делать. А вот под Delphi 7 - "задачка". Но решаемая.

вторник, 25 июля 2017 г.

Функциональщина

Конструкция вида:

Vector1 .filter .IsClass
.join ( Vector2 .transform .Parent .filter .IsUnit )
.join ( Vector3 .filter .IsRecord )
.transform .TypeName
.sort .stringCompare
.forEach .print

Или:

0
[ 1 2 3 4 ]
.join [ 5 6 7 8 9 ]
.revert
.filter ( != 5 )
.transform ( + 2 )
.forEach +
.print

- это - "ураган"!

Начинаю проникаться "функциональщиной".

Это на "моих скриптах. На современных Delphi подобное тоже возможно. Несколько более многословно. Но возможно.

Очень продуктивный подход. Учитывая константность объектов и возможность кеширования результата.

У Штефана Глинке есть конечно, что-то подобное.

Ну и на LINQ (https://ru.m.wikipedia.org/wiki/Language_Integrated_Query) похоже.

Ну и вспоминаются "fluent-interface'ы".

понедельник, 24 июля 2017 г.

Off-topic. Интересная книга

http://knihi.by/knihi/kraina-bielarus-vialikaje-kniastva-litouskaje-druhi-varyjant-vokladki

Интересная книга. Но спорная.

Off-topic. Люди. Они разные

#байка

Я вам расскажу другую историю...

Ездили мы лет 10 назад с приятелем "по лесам и болотам".

И занесло нас в Волоколамск. В монастырь. Иосифо-Волоцкий.

Мы переночевали в лесу. А с утра пошли осматривать достопримечательности.

И тут - храм открыт. Утренняя служба.

Приятель мой - в храм пошёл.

Стоит, крестится. Службу слушает.

Ну а я - мнусь на крыльце.  Курю. Дождь идёт. Курю и мёрзну.

И тут батюшка подходит. Говорит - что мол на крыльце. Заходите мол в храм.

А я говорю - я атеист и коммунист. Нечего мне в храм ходить.

А батюшка мне - так замёрзли мол и дождь. Войдите в храм. Погрейтесь. Я вам фрески интересные покажу.

И показал. И рассказал. Очень интересно было и душевно.

Люди, все, они - разные бывают.

вторник, 18 июля 2017 г.

Off-topic. Прадед

http://www.computer-museum.ru/connect/peresyp2.htm

"В середине июня поступил тревожный сигнал от начальника Центральной междугородной станции И. М. Тупанова. Он доложил, что в последние дни стала неустойчиво работать телефонная связь с городами Европы. Телефонистки Берлинской телефонной станции, через которую шли многие транзитные связи, чинили препятствия и не соединяли с другими европейскими столицами. Ссылаются на войну, на неисправность телефонных каналов, другие технические неполадки.

Было ясно, что это делается умышленно. [Количество недовольных невозможностью получить разговор с абонентом западноевропейского города все время росло. Особенно возмущались дипломаты и иностранные корреспонденты, аккредитованные в Москве. Начали поступать письменные жалобы. Немедленно была написана докладная в Совет Народных Комиссаров. Впоследствии я узнал, что она была переслана в Наркомат иностранных дел (и безмятежно подшита в папку)]. Положение со связью на Европу так и не изменилось вплоть до начала войны."

И.М. Тупанов - это мой прадед.

пятница, 14 июля 2017 г.

Off-topic. Про "математику"

А ещё бывает...

Вот человек рассказывает про то "какая математика крутая тут задействована, функциональный анализ, теория множеств, вектора... И всё такое...."

Думаешь - "да круто".

Присмотрелся. "Ну и какая математика".

Ну контейнеры...

 Ну в частности "вектора". Stl (Степанов).

Но не линейная алгебра.

Но! Ни тебе "скалярного произведения, ни векторного, ни нормы в Евклидовом пространстве".

Ни самого "завалящего определителя матрицы".

Не то что "принципа максимума Понтрягина или уравнения в частных производных, ну или пространства Минковского или Гильберта или принципа динамического управления, ну или на худой конец симплекс-метода или задачи Дейсктры или комивояжера".

Ну или "метод хи-квадрат".

Может быть какое-нибудь уравнение какой-нибудь поверхности?

Ничего!

Банально - ничего!

А всё туда же! "Крутая математика".

Ну скажем похожесть документов (к примеру) решается нахождением угла между векторами. Осталось только методику в Евклидовом пространстве определить. Та ещё задачка.

Это к примеру.

А "туда же крутая математика"....

Никакой "математики" на самом деле нет.

Есть "ремесленничество". Аккуратное. Грамотное. Конкретное.

Но! Ремесленничество. Просто умение ГРАМОТНО и АККУРАТНО обращаться с контейнерами stl.

ГРАМОТНОЕ перекладывание из одной stl-коллекции в другую. ХОРОШЕЕ знание stl и C++.

Но! Не более того.

Да! Грамотно и ХОРОШО сделано. Но зачем про математику тогда говорить?

2х2=4 - ну сложно назвать "применением сложной математики".

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

Я просто - "аккуратно использую метод, который заучил или вызубрил".

Ну и "на закуску" - совсем немного про математику:

http://programmingmindstream.blogspot.ru/2014/07/blog-post_7.html?m=1

Я к чему всё это написал?

Не к тому, чтобы кого-то "поругать".

Упаси боже.

Мне бы просто "хоть одним глазком" взглянуть на применение "принципа максимума Понтрягина" - в жизни.

Чтобы "работало". И "руками пощупать".

Off-topic. Ну и жести...

Когда меня спрашивают, а "почему функция XXX возвращает, YYY и имеет побочный эффект ZZZ". А объект OOO имеет ответственность RRR и RRR' (штрих), RRR'' (два штриха).

Я терпеливо начинаю рассказывать - "ну так уж повелось ещё с 17го года".

А "мол на самом деле было ещё и RRR1 и RRR2, но их героически изжил,та на самом деле..."

Тут многие начинают зажимать нос и говорить, что "оно дурно пахнет"...

Не все добираются до RRR3 и RRR4, а тем более до RRR'4.5.

Некоторых тянет "на воздух".

Но всему "есть очевидные причины"...

И далеко не все смогли "распутать этот клубок" и отрефакторить его...

Хотя "на самом деле"....

Так и задумывалось... By design...

Шучу...

Off-topic. И ещё

Что касается "зависти". Каждому своё. Не поймите меня только тут неправильно.

У меня в юности был знакомый. Хороший знакомый. Практически друг.

И тогда я ходил в горы. Что-то "там уже сделал". Для своих лет - вполне.

По своим ощущениям - был "крутым волком со страниц Джека Лондона" (это сарказм конечно).

И мы с этим знакомым сначала сходили куда-то в подмосковье.

На байдарках.

Потом куда-то в горы.

А потом ездили на тренировки. Я учил ходить его на кошках, зарубаться, держать ледоруб.

Потом мы вместе ещё куда-то несколько раз ходили.

И я был "техническим лидером", а он "так верёвки подавал".

А потом у меня наступила "стабильная работа". Вырваться в горы стало сложно. Некогда и всё такое.

А товарищ мой стал круто ходить. Сделал несколько крутых походов. Закрыл даже то ли КМС, то ли МС. Сходил на несколько семитысячников. А я даже пик Ленина "слил".

И меня несколько "заедало". Мол как же так. Мол - "я его учил ходить на кошках и держать ледоруб".

Юношеский максимализм... Пусть "белая", но зависть...

Но потом он погиб. В горах. По нелепой случайности. Совершенно на пустом месте.

Не хотел бы я "оказаться в его туфлях", как говорят китайцы....

четверг, 13 июля 2017 г.

Off-topic. Ну и ещё. Извините. На технические темы, что-то пока не пишется

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

А даже на какой-то момент вдохновился. Мол "движемся в правильном направлении".

Но потом получил массу критики и от "своих" и от "чужих".

От "своих" - даже больше.

И вернулся в состояние "скепсиса". Даже если и "самолёты", то с "обратной стреловидностью". И всё равно - "на коленке".

Надо много над этим думать.

Off-topic. Ну и так бывает

А ещё бывает...

Вот ты "пишешь на коленке".

"Изобретаешь велосипед".

Все "смеются". Мол так никто не делает.

Потом проходит время.

Берёшь "крутой фреймворк". От крутого производителя. Начинаешь "прикручивать".

И понимаешь, что "эта полечка мне уже знакома".

И точно! Крутой производитель сделал так же как ты.

Лучше КОНЕЧНО. НО! МЫСЛИ те же.

Ну и радостно как-то становится.

Не зря "велосипед" изобретал....

Тут даже есть пример из жизни - CoreText.

Или даже IUnknown.

А бывает и круче. Сделал "велосипед".

Он не пошёл в серию. Использует его лишь пара сотен "пострадавших".

Потом проходит 10 лет. Приходит твой "коллега" из соседней комнаты (условно) и ты должен прикрутить его фреймворк.

И ты прикручиваешь, а "полечка опять знакома".

И - да! Знакома! На новом витке он сделал то же самое. ЛУЧШЕ конечно.

И ты ему потом даёшь свой старый "велосипед". А он "вдруг" берёт из него "гайку", которой "ему не хватало".

И кайф!

Не зря делал...

Ну и "на закуску" - http://programmingmindstream.blogspot.ru/2017/07/blog-post.html?m=1

Тоже "велосипед".

Off-topic. И так тоже бывает

Расскажу "сложнее". "Абстрактно". Вот работал человек. Прогрессировал. Радовал. Потом прогрессировать. Перестал. Его даже "менее умные" коллеги стали "обгонять". А у него - "отговорка" - мол "денег мало". Хотя зарплата "иногда" и повышалась. Но - не прогрессирует и всё. Хотя "виды были".

А потом "вдруг" - всем зарплату повысили. И ему "заодно". Все счастливы. Он - тем более.

Работает "хорошо". Но прогрессировать - окончательно перестал.

Off-topic. И так бывает

А есть скажем другой человек. "Блуждает в потёмках. Совсем не прогрессирует. Тыкается как "слепой котёнок". Дёргает за всякие ручки. Работает "перебором". И Не раз хотели уволить. "Недалёк". Но усерден.  Пытается решить задачу во что бы то ни стало. И его "вроде побоку". Так "с губы" - мол сделай хоть что-нибудь. А он упорен. Дёргает ручки. Ищет. И вдруг.. бац и прогрессирует... И вдруг.. бац.. И задачу сам решил... И вдруг бац.. И уже СПЕЦИАЛИСТ.

А не ценили. А человек - ВЫРОС.

Off-topic. Брюзжу

Крайне плох тот факт, что "опозиционные настроения" людей перекидываются и "локально" на работу. Повсеместно уже. Мол "кругом бардак", "да и коллеги до меня тут дурно пахнущего понаделали". Ну и что мол "я буду рвать жопу" (извините). Лучше я "поржу" и "покритикую". И в "детали" вдаваться не буду.

"Всё равно бардак".

Сам грешен...

Сам "люблю" побрюзжать. А уж покритиковать или посмеяться над бывшими коллегами - "так вообще хлебом не корми".

Но что-то я устал уже от "критики" и "подтрунивания".

Но я сам лично теперь себя даже "охранителем" чувствую, а не "оппозиционером". Стою теперь на тех позициях - "пусть и дурно пахнет" - зато своё и работает. Можешь сделать лучше - всегда пожалуйста. Не можешь - отойди. Но тогда - не смейся и не критикуй.

Хотя грешен. Да.

К сожалению от "оппозиционности" - всего лишь один шаг до "все козлы, что тут с ними разговаривать".

суббота, 8 июля 2017 г.

Off-topic. Байка

#байка
#полячки
#Эльбрус
#польки
#незамутненнаяюность

Тут неожиданно вспомнилось одна история. Реально произошедшая в жизни.

Про полячек.

Как правильно тут поправили - про полек.

Ходили мы в году 97м на Эльбрус.

Мы сделали полукольцо (или почти кольцо) вокруг Эльбруса и собирались на восхождение.

И надо было нам с приятелем сбегать в посёлок Хурзук за заброской продуктов. Которую мы прежде там оставили.

Туда мы сбегали. Заброску забрали.

А вот обратно - не успели.

И нам маячила перспектива спать под открытым небом.

Но тут на наше счастье мы повстречали группу поляков, которые уже заканчивали свой маршрут и стояли лагерем в посёлке Хурзук на своей завершающей ночёвку.

Они нас приветливо встретили. Накормили горячим ужином. Выделили спальные места под тентом и какие-то фольгированные коврики , правда спальников лишних конечно не было.

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

Собственно полячки нас ужином и кормили. А молодые люди - самоустранились.

Русский они "типа не знали". Или делали вид.

Не стали с нами общаться.

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

Мы уже ложились спать под своим тентом, как нашему взору открылась картина. Одна из полячек сходила в "летний душ". Вышла из него в одном полотенце. Подошла к палатке. Скинула полотенце и, в чём мать родила - "рыбкой" нырнула в палатку.

Тут я сказал - "Ох держите меня семеро".  Наступила гробовая тишина.

Поляки, сидевшие у костра, тут же "вспомнили русский" и сначала "кинулись меня держать", а потом дружно заржали. ;)

После этого мы уже с ними мило пообщались.

Много общих тем сразу нашли.

Даже звали друг-друга в гости, но адресами не обменялись.

Ночь прошла спокойно ;)

На утро мы распрощались с полячками и поляками.

Опять дружно поржали.

Уже все говорили по-русски.

И каждый двинулся в свою сторону.

P.S. Когда в следующий раз накатит вдохновение (или моча в голову ударит) - я напишу как мы заносили и завозили ту самую заброску в Хурзук и чуть не ушли в Грузию.

Как я катался на "волге" с местными авторитетами. И меня пытались поить местным самогоном. Не отрываясь от руля.

Потом ехал на внешней подвеске на тракторе Беларусь.

И пытался спать на бетонной плите. И меня чуть не забрала скорая, приняв за труп. А потом уборщица пустила меня спать в пустой автовокзал. Который запирала  на ключ.

И получал погранпропуска.

Но это - отдельная история.

четверг, 6 июля 2017 г.

Off-topic. В преддверии 43летия

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

А тут пришли "злые дяди" и говорят, что мне надо "денацифицироваться".

Я, как послушный мальчик, сказал "яволь", взял под козырёк и пошёл "денацифицироваться".

И стал милым и послушным.

И организовал Евросоюз из общества "Германо-Французской стали и угля".

Но!

Только - Я - не ОН.

Я не тот "послушный немецкий мальчик". И это МОИ ДЕДЫ - выиграли эту войну.

Хотя и "были заодно" при разделе Польши в 39м.

ДАЖЕ ЕСЛИ ТАК!

НИКТО НЕ ТЯНУЛ Гитлера воевать против СССР. НАОБОРОТ.

"Дядюшка Джо" делал всё возможное, чтобы войны не было.

И НИКТО НЕ заставлял Гитлера строить крематории и решать "восточный" и "еврейский" вопросы.

Для справки - крематории задымили в декабре 41го года.

Когда Гитлеру показалось, что он "поймал удачу за хвост". И что он более не ответственнен не перед кем.

И всё же - МОИ деды выиграли эту войну.

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

Я беру под козырёк, говорю "есть" и "декоммунизируюсь".

И готов к "примирению" и "прощению".

И читаю "архипелаг гулаг" и "проникаюсь".

Проходит ещё 20 лет и "оказывается", что Гитлер не такая уж сволочь. А Власов, Бандера, Шкуро, Маннергейм, Шухевич - так вообще - приличные люди.

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

Говорю лично ЗА СЕБЯ.

А потом люди начинают скакать и орать "москалей на ножи", "кто не скачет тот москаль".

Мне продолжать "декоммунизироваться"?

Нет уж рыбяты... дудки!

Ну сколько можно меня мордой в дерьмо макать?

При том, что это МОИ деды ВЫИГРАЛИ ту страшную войну, а не деды того белобрысого мальчика, который пел "ди фане хох".

Извините.

Наши либералы любят Высоцкого. Мне кажется, что они его не поняли. Даже "всего лишь час дают на артобстрел, всего лишь час пехоте передышка".

Хотя... кто знает....

Так вот я - тот самый белобрысый мальчик.

И меня пришли денацифицивать через 40 лет после той страшной войны.

А я - не хочу. Извините.

Это моя наверное проблема.

И пел я лично, не "до фане хох", а "как здорово, что все мы здесь сегодня собрались".

А меня всё денацифицируют и денацифицируют.

Извините.

Накатило.

День рождения....