пятница, 16 декабря 2016 г.

Матричные представления гиперкомплексных чисел

Матричное представление 2x2 бикватернионов

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

Матричное представление 4x4 кватернионов

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

Матричное представление 2x2 кватернионов

В предыдущем разделе было описано как можно представить кватернионы матрицами. Получились матрицы размером 4x4, что для 4-мерного и 4-компонентного числа выглядит несколько расточительным. Конечно, есть интерес определить, возможно ли представить кватернион, который сам 4-компонентный, также 4-х компонентной матрицей, или матрицей 2x2.

понедельник, 12 декабря 2016 г.

Матричное представление 2x2 бикомплексных чисел

Для получения матричного представления бикомплексных чисел матрицами размера 2x2 используем матричное представление комплексных чисел:

пятница, 9 декабря 2016 г.

Матричное представление 4x4 бикомплексных чисел

Для получения матричного представления бикомплексных чисел раскроем произведение двух бикомплексных чисел:

Матричное представление дуальных чисел

Для получения матричного представления дуальных чисел выпишем покомпонентно результат произведения дуальных чисел так же, как и в случае с комплексными числами:

Матричное представление паракомплексных чисел

Для получения матричного представления паракомплексных чисел выпишем покомпонентно результат произведения паракомплексных чисел так же, как и в случае с комплексными числами:

Матричное представление комплексных чисел

Для получения матричного представления комплексных чисел выпишем покомпонентно результат произведения комплексных чисел

Уравнения аналитичности функции одного бикватернионного переменного

Статья посвящена выявлению возможности построения для функции бикватернионного переменного уравнений аналитичности, аналогичных уравнениям Коши-Римана для функции комплексного переменного.

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

четверг, 8 декабря 2016 г.

Долго держались, но решились. О разработке для HP OpenVMS, Itanium и Aplha.

Не могу не прокомментировать небольшое, но знаковое, событие в мире софтвера.

среда, 7 декабря 2016 г.

Скалярно-пространственные повороты в кватернионах

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

Скалярная проекция гиперкомплексных чисел

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

вторник, 15 ноября 2016 г.

Про серебро в рекламе

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

понедельник, 5 сентября 2016 г.

О тензорном произведении матриц в MathCAD

В Маткаде есть масса операций с матрицами, но при попытке найти операцию тензорного произведения матриц выяснилось что штатные средства такого не поддерживают. Далее выяснилось, что, тем не менее, это в Маткаде "немножко есть". И далее выяснилось, что это "немножко" "немножко недоделано". Далее по порядку.

воскресенье, 17 июля 2016 г.

О странном турецком путче

Путч в Турции со стороны выглядит очень подозрительно.

Не похож Эрдоган на Сальвадора Альенде, который с автоматом в руках и с единомышленниками защищал свою страну.

вторник, 21 июня 2016 г.

Начала анализа в области дуальных чисел

Введение


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

понедельник, 20 июня 2016 г.

Извлечение корней в гиперкомплексных числах

Введение


В этой статье речь пойдет об операции, являющейся парной и обратной к операции произведения, в случае если в произведении участвуют одинаковые числа. Речь пойдет о взятии корня. А именно, если известно число $A$ такое, что

суббота, 18 июня 2016 г.

Потенцирование дуальных кватернионов

Рассмотрим операцию потенцирования дуальных кватернионов и её результат в покомпонентной записи.

Элементарные функции матриц

Введение


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

вторник, 14 июня 2016 г.

Скалярное произведение матриц

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

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

суббота, 4 июня 2016 г.

Задача 7. Градиент скалярного произведения

Задача: Описать выражение градиента скалярного произведения.

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

воскресенье, 29 мая 2016 г.

Программирование

Серия статей по разным поводам на обще-программерские темы.

Индексирование в MUMPS

Серия статей из книги "MUMPS СУБД" о индексах в MUMPS системах, их возможностях, алгоритмах и структурах индексов.

MUMPS: Многоиндексная выборка (zig-zag)

Многоиндексной выборкой, иначе называемой шаговой или зиг-загом, называется выборки идентификаторов записей по нескольким индексным структурам одновременно. Также часто встречается название zig-zag ordered scan. Принципиальным моментом является слово ordered, или упорядочение искомых идентификаторов. Применяется для выборки из двух или более индексов.

MUMPS: Индексация уникального атрибута

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

MUMPS: Операции с древовидными индексами

К операциям с древовидными индексами относятся операции, использующие деревья с индексами и реализующие над ними теоретико - множественные операции. К таким операциям относят логические операции над множествами: OR (ИЛИ), AND (И), и другие. При этом деревья используются для хранения множеств - операндов и результата операции.

MUMPS: Сортировка по индексу

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

MUMPS: Простой индекс

Простой индекс в некоторой литературе ещё называется обратным списком. Если структуры основных данных отображают идентификатор записи (назначенный программистом или поддерживаемый автоматически системой) на запись как совокупность значений атрибутов, то простой индекс отображает значение индексируемых атрибутов на идентификатор или набор идентификаторов записей.

MUMPS: Выборки по индексу

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

MUMPS: Индекс поиска по фрагменту

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

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

MUMPS: Совмещение древовидных и битовых индексов

Рассмотрим технические детали совмещения в одной выборке битовых и древовидных индексов. Для такого совмещения следует построить модель абстрагирования от реализации, то есть рассматривать индексные операции как таковые безотносительно их реальной внутренней реализации. И, используя абстрактные операции, реализовать механизм совмещения двух разнородных структур.

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

вторник, 24 мая 2016 г.

MUMPS: Массовое перестроение индексов

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

MUMPS: Индексация длинных атрибутов

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

понедельник, 23 мая 2016 г.

MUMPS: Индексация для шаблона (like)

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

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

MUMPS: Индексация данных

Термин индекс здесь и далее используется строго в целях обозначения дополнительных поисковых или оптимизирующих структур. Основным языком примеров выбрано стандартное подмножество языка МUMPS. Но, хотя по возможности применяется страндартный синтаксис, в некоторых исключительных случаях для большей читаемости применяются Cache Object Script и MiniM Database Server - расширения. Их применение ограничено и допускает альтернативную замену на эквивалентные выражения в иных диалектах МUMPS. Применение битмап индексов ограничено теми MUMPS системами, которые поддерживают расширенные $BIT функции.

MUMPS: Дифференциальное индексирование

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

MUMPS: Межтабличный индекс

Межтабличным индексом называется индексная структура, объединяющая в себе данные не для одного, а для двух или более логических наборов данных. Записи в межтабличном индексе перестраиваются при добавлении, изменении и удалении записей в наборах записей, данные из которых входят в этот индекс. Основным назначением межтабличного индекса является сокращение операций соединения таблиц.

воскресенье, 22 мая 2016 г.

Cache: Смотрим план SQL запроса

В Cache5 появилась утилита показа плана выполнения запроса ShowPlan^%apiSQL.

MUMPS: Покрывающий индекс

Покрывающим индексом (cover index) называется индекс, который может быть использован для нескольких задач выборки данных, в том числе для тех, для которых он изначально не планировался. Название отражает не вид структуры, а различные возможности ее применения.

MUMPS: Индекс с условием на вставку

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

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

суббота, 21 мая 2016 г.

MUMPS: Составной индекс

Если простой индекс отображает значение одного атрибута на идентификатор или набор идентификаторов строк, то составной индекс отображает совокупность значений двух или более атрибутов на идентификатор или набор идентификаторов строк.

MUMPS: Нормирование значений в индексах

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

Ключевой операцией для использования индекса является обращение к искомому значению в глобал или локаль, и поиск выполняет непосредственно СУБД, поскольку значения индексов в MUMPS хранятся сортированно.

MUMPS: Индекс на вычисляемый атрибут

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

MUMPS: Битслайс индекс (bitslice)

Резаный битовый индекс представляет собой совокупность структур, отображающих фрагменты значений атрибутов на набор идентификаторов строк данных. Структурно аналогичен битовому индексу (bitmap), но представляет собой N битовых индексов, работающих для всех значений атрибутов. Индексации подвергаются только числовые атрибуты либо те, которые могут быть приведены к числовому виду. Значение N зависит от типа выбранного атрибута.

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

MUMPS: Операции с битовыми индексами

Здесь поведем речь о реализации теоретико-множественных операций над битовыми индексами.

Битовый индекс структурно представляет собой отображение значений атрибутов на набор идентификаторов в виде сопоставления с каждым значением битовой последовательности. При этом в силу того, что технически неограниченная последовательность не может быть реализована, она разбивается на сегменты. Единичному биту в такой последовательности сопоставляется признак, что номер этого бита в общей последовательности (с учетом всех предшествующих сегментов) представляет собой числовой идентификатор индексированной записи.

MUMPS: Битмап индекс (bitmap)

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

четверг, 19 мая 2016 г.

Эклиптики звезд и галактик и темная сила

На это размышление натолкнул факт, что наши планеты вокруг нашей звезды летают по орбитам не просто так, а в так называемой плоскости эклиптики. В общем и целом к эклиптике относится движение в плоскости или очень близко к плоскости орбиты Земли. Относительно большими отклонениями плоскостей от этой условно общей плоскости обладают Меркурий и Плутон, у них наклоны плоскостей орбиты соответственно примерно 7 и примерно 20 градусов. И эти величины, относительно небольшие, выглядят заметными. Факт наблюдается в том, что, хотя по теории Ньютона наши планеты могут летать по совершенно любым плоскостям, ибо единственная значимая сила для них это сила гравитации от Солнца, тем не менее в действительности планеты летают в некоей плоскости или в некотором ограниченном коридоре.

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

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



Еще более интересно становится если увидеть как движется и само Солнце в Галактике.



И вот так выглядит условная анимация движения Солнца в Галактике:

среда, 18 мая 2016 г.

MUMPS: Память и сборка мусора

Одним из важных практических вопросов применения MUMPS систем является отношение к памяти, принятое в системах такого класса и исторически сложившиеся традиции или поведение систем, наиболее ожидаемое разработчиками.

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

MUMPS: Функция $BIT

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

Битовый индекс представляет собой совокупность сегментов, каждый из которых это последовательность байт, и каждый бит в ней значим, может иметь значение либо "объект с идентификатором, равным номеру бита, существует" (1), либо "не существует" (0). Кроме того, применяется правило умолчания, что если бит находится за пределами реально физически существующих байт, либо строка байт вообще не существует, то логически для битовых операций это эквивалентно последовательности нулей.

В техническом отношении битовые операции могут быть добавлены к MUMPS системе внешними по отношению к ней функциями в динамической библиотеке. Автору довелось участвовать в проектах, где использовался именно такой вариант. Разработки блестяще работали в режиме OLAP и имели некоторые непреодолимые недочеты в режиме OLTP.

MUMPS: Интерпретатор

Как уже было описано в разделе косвенности, язык MUMPS содержит определения синтаксических конструкций, не позволяющих выполнить систему выполнения кода по схеме традиционных компиляторов с одним только неизменяемым исполняемым кодом. Этому препятствуют и операции косвенности, и команда XECUTE.

Все имеющиеся реализации MUMPS систем в той или иной мере являются интерпретаторами. Это либо интерпретаторы интерпретирующего типа или интерпретаторы компилирующего типа или комбинированные.

MUMPS: О модулях

Модулями в языках программирования называют программные элементы, группирующие определение алгоритмов, данных, типов в относительно цельную по смыслу группу.

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

вторник, 17 мая 2016 г.

Routine Editor for Intersystems Cache / Windows / Linux / MacOSX

MUMPS project MiniM Database Server have builtin MiniM Routine Editor. Some time ago this tool has been ported to working on with Intersystems Cache database.

MUMPS + JSON

How to get data in JSON format from the MUMPS?

среда, 11 мая 2016 г.

Обратимость времени

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

Положим, что есть формула движения тела x=f(t).

По ней, подставляя различные значения t, можем определить соответствующие значения x. Необычность ситуации здесь состоит в том, что мы можем подставить в эту формулу значения времени t отстоящие в прошлом.

вторник, 10 мая 2016 г.

Почему векторное произведение - это площадь?


У формулы векторного произведения, построенного на двух 3-мерных векторах, есть две формулы его величины: 1) формула на словах определяющая направление результата и описывающая величину в виде произведения модулей векторов на синус угла между ними и 2) формула задающая значения каждой из компонент результата на основе компонент исходных векторов.

Как ни странно, но обе эти формулы есть выражение одной и той же величины, и это площадь параллелограмма натянутого на исходные векторы. Формулы настолько разные, но описывают одно и то же, почему так?

вторник, 19 апреля 2016 г.

Как объяснить инопланетянину по радио, что такое левое и правое?

Эта страничка посвящена проблеме, вынесенной в заголовок. Есть такая идея, что понятие левого и правого органически присуще трехмерным вращениям и, вообще говоря, не имеют смысла в двумерном пространстве. Так же есть идея, что существование левых и правых троек векторов есть проявление одного из видов сопряжения. Пока хочу собрать разведданные о том, что может стать известно без разработки специальных разделов математики. Все приведенные на странице материалы являются общедоступными и могут быть получены из иных источников либо принадлежат мне.

понедельник, 18 апреля 2016 г.

Христиан Феликс Клейн. Лекции о развитии математики в XIX столетии. Гамильтон.


Отрывок перепечатан по изданию

Клейн Ф. Лекции о развитии математики в XIX столетии: в 2-х томах. Т. I: Пер с нем. / Под ред. Постникова. - М.; Наука. Гл. ред. физ.-мат. лит., 1989.
ISBN 5-02-013920-3.

воскресенье, 17 апреля 2016 г.

Cache': Вызываем метод базового класса

Эта заметка описывает способы вызова метода базового класса на языке Cache ObjectScript.

Положим, что существует два класса, один из которых наследован от другого и наследник переопределяет одну из функций базового класса. В переопределенной функции требуется вызвать такую же функцию базового класса. Положим, имя базового класса BaseClass, имя наследника DerivedClass. Положим, что переопределяемый метод называется Func.

суббота, 16 апреля 2016 г.

Cache': Обращаемся к своему свойству

В методе объекта обратиться к своему свойству можно 4-мя способами. Когда какой предпочтительней и какая между ними разница?

Комментарии в Cache

Комментарии в Cache есть. Это специальным образом отмеченная программистом последовательность символов, которая не используется компилятором. В них можно писать разные полезные слова, которые останутся и которые потом можно будет прочитать, например ругательства. В комментариях можно писать на любом языке. Это общеизвестные факты. Теперь посмотрим какие именно комментарии поддерживает Cache и какие у них есть особенности.

MUMPS: Техника группировки

В этой статье рассмотрим техническую часть группировки данных. В качестве базы данных выберем СУБД Cache' или MiniM, поскольку в них существует возможность самостоятельно использовать собственные структуры данных. Из общих слов на тему "зачем" можно сказать, что типа такие задачи возникают при составлении отчетов, что это очень важно, не всегда понятно, и прочее. Все вопросы на тему "зачем" в дальнейшем будем опускать и займемся вопросом "как". А именно, как сделать так, чтобы работало, работало хорошо и чтобы было понятно, какие возможности предоставляет техника группирования.

пятница, 15 апреля 2016 г.

Cache': Отладка callout-модуля

Callout-модуль для Cache' для Win32 представляет собой dll, которая динамически подгружается процессом Cache'. Для проведения отладки dll нужно предпринять необходимые действия:
  • Использовать средства разработки, содержащие отладчик dll. В примере используется Borland C++ Builder 5.
  • Собрать dll с отладочной информацией.
  • Оговорить правила размещения dll.
  • Вызвать хост-процесс из-под отладчика.
Из приведенных пунктов вызвать какие-либо затруднения могут только последние два, остальные достаточно очевидны. Продемонстрирую на примере проекта для Borland C++ Builder как именно решить возникшие вопросы.

MUMPS: проверка корректности синтаксиса

Как проверить корректность синтаксиса в MUMPS системе?

MUMPS: Очередность выполнения и вычисления выражений

Одна из основных проблем языка mumps состоит в недостаточно точном понимании программистами очередности вычисления выражений и выполнения операций в языке. Так, что это не совсем проблема языка, а некоторого его отличия от других. В других языках точно так же присутствует модель вычисления выражений и определенные соглашений, которые могут поставить программиста в тупик при смене языка. Например выражение
int i = 5;
i = ++i + ++i;
в разных языках может дать различные результаты:
C++      14
cl       14
bcc      14
lcc      13
gcc      13
php      13
C#       13

Cache': Где наша переменная цикла?

Исследуя поведение Cache при выполнении циклов я обнаружил, что система имеет существенное отклонение от стандарта MUMPS при работе команды for с переменной цикла.

Cache': Удаляем русскую локализацию

При первоначальной установке Cache (все описания относятся к версии Cache 5.2.0.329 и на других версиях не проверялись), в каталоге CacheSys\Bin (каталог по умолчанию) устанавливаются специальные dll локализации, содержащие локализованные сообщения и диалоги для разных языков. Для использования английского языка в Cache на Windows с русским языком, dll с ресурсами русского языка необходимо переименовать или удалить (если кто-то помнит, то в версии Cache 5.0.х существовала настройка в Configuration Manager "English Mode Only").

Caché: Борьба с deadlock

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

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

четверг, 14 апреля 2016 г.

Как измерить эквивалентность гравитационной и инертной массы?

В теории гравитационная и инертная массы равны. Или считаются равными без доказательства. Или постулируются равными. Так ли это на самом деле и можно ли это измерить?

Cache': О безопасности csp приложений

Что я рекомендую сделать для повышения безопасности Cache' при выставлении csp приложений в интернет.

Cache': Передача аргументов

Эта заметка посвящена передаче аргументов в функции на Cache Object Script. Изложение материала предполагает понимание различия между формальными и фактическими параметрами.

Cache': Дефект в косвенности аргумента команд

При исследовании особенностей выполнения argument indirection в различных реализациях MUMPS, я натолкнулся на дефект его реализации в cache и msm.

Cache' Backdoors Guide

Installing a 100% Secured Cache' System

Как измерить размерность пространства?

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

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

вторник, 12 апреля 2016 г.

Cache': Как спрятать данные от команды kill?

В работе с Cache на совсем низком уровне, как-то возникла задача что-то записывать и запоминать в локальных данных процесса, но таким образом, чтобы это не было видно обычным командам и в первую очередь команде kill. Интерес представляет что-то более масштабируемое чем чтение - запись переменной $DEVICE или установка блокировок и чтение ^$LOCK.

Cache': zobj команды и $zobj функции

Далее по тексту используется сленг, слово oref означает Object REFerence, ссылка на объект. В приведенном списке те функции и команды которые не указаны в документации на Вашу версию Каше, являются недокументированными. В различных версиях Каше поведение недокументированных функций и команд может отличаться, или некоторые команды и функции могут отсутствовать. Кроме того крайне рекомендуется трижды проверить необходимость использовать нижеприведенные функции и команды и тщательно изучить документацию на используемую Вами версию Каше, при возможности обратиться к консультантам Intersystems и детально проверить поведение команд и функций в ошибочных ситуациях. При нормальном течении разработки приложений нижеприведенные материалы скорее всего не должны понадобиться.

понедельник, 11 апреля 2016 г.

Cache': Как написать свою функцию агрегации для group by?

В некоторых случаях, при использовании выборки с группировкой (group by), хотелось бы использовать свой алгоритм агрегации значений. Как это сделать в Cache?

Cache': Как сделать двунаправленный запрос

Мне давно было интересно, можно ли сделать в Cache' такой запрос, чтобы его можно было бы прокручивать назад, например что-то вроде команды, парной к Fetch, например Prior. Собственные средства Cache' почему-то не предоставляют такой возможности. Для этого я изучил характер взаимодействия sql-движка с Cache Object Script. В результате исследований выяснилось, что это возможно, хотя и не столь гладко, как бы того хотелось. Надеюсь, читатель с пониманием отнесется к возникшей некрасивости.

Cache': Как сделать select from limit

В некоторых случаях, при использовании sql, нужно ограничить выборку числа строк, указав с какой строки выдать и сколько строк выдать. Как сделать то же самое в Cache?

Cache': Как параметризовать select from in?

Как в cache sql передать через параметр несколько значений в выражение in?

Cache': Как развернуть значение параметра в несколько строк

В некоторых случаях при использовании хранимых процедур ну очень хочется иметь механизм получения нескольких строк в select где значения строк определяются содержанием параметра запроса. Как это сделать в Cache?

воскресенье, 10 апреля 2016 г.

Cache': Как сделать select from dual

В некоторых случаях, при использовании хранимых процедур, ну очень хочется иметь механизм аналогичный псевдотаблице dual из Oracle. Как сделать то же самое в Cache?

Cache': Где наши данные?

Как получить доступ к данным с нестандартным размещением через объектный и sql интерфейсы?

Caché: Прямой доступ через ODBC


Caché: Прямой доступ через CacheObject

В качестве одного из основных способов доступа к базе данных Caché InterSystems предлагает COM - библиотеку CacheObject. Это библиотека, реализующая объектный интерфейс на стороне клиента к объекту на стороне сервера. Благодаря тому, что COM - объекты поддерживают динамическое изменение типа, становится технически возможным использование одной библиотеки типов, которая может поддерживать различные классы. Что и было реализовано в CacheObject.

Создав объект класса CacheObject.Factory, мы можем в соединенном с базой данных состоянии создать экземпляр любого объекта Caché. При этом клиентская сторона не нуждается в переписывании и пересборке при изменении серверной части.

Вызываем Cache!

Данный материал является справочным. Статья ни в коем случае не призвана заменить официальную документацию Intersystems и предназначена только для использования в качестве CookBook.

Основным общедоступным механизмом доступа к объектам Cache по стратегии Intersystems является набор COM объектов, организованный в библиотеку CacheObject.dll. Библиотека располагается в каталоге установки Cache c:\cachesys\bin. При корректной инсталляции все необходимые интерфейсы регистрируются в системе и библиотека доступна к использованию. Описание интерфейсов библиотеки находится в c:\cachesys\docs\activexref\index.html. Каталоги указаны в том виде, в котором они предлагаются инсталлятором по умолчанию.

Три трюка с макросами

Приведу три довольно полезных трюка с макросами в Cache'.


суббота, 9 апреля 2016 г.

Проверка строки на "списочность"

В конференции CACHE_RU проходило обсуждение вопроса о возможности определить является ли строка корректным списком CACHE'. Было выяснено при обобщении информации поступившей из различных источников, что
  • Можно сформировать строку произвольного содержания, не пользуясь списковыми функциями
  • Строка, сформированная списковыми функциями, ими же обрабатывается корректно
  • В ситуации, когда строка сформирована несписковыми функциями, в некоторых случаях она может некоторыми функциями как список, а другими как не список
  • Существуют строки, при определении которых на списочность процесс завершается аварийно
  • Существуют программы, которые не могут определить происхождение строки и была ли она сформирована списковыми функциями или нет
  • Спустя некоторое время представители фирмы Интерсистемс сообщили, что исправления проблемы войдут в билд 5.0.5 и более поздние. Выдержка из внутренней технической документации:
    Prodlog Item 34439  Edited by Sorenson,Chuck
    ------------------------------------------------------------
    MOST RECENT CHANGES:
    4) 2003-10-31 16:58:09 Modified by Sorenson,Chuck
    DEVCHANGE changed to: CDS346
    FIXER changed from: Unknown  to: Sorenson,Chuck
    STATUS changed from: Dev  to: Test
    
    COMMENT:
    I ported CDS346 and CDS405 to 5.0.6 build 1006
    and 5.0.5 build 912.
    
  • После довольно бурного обсуждения проблемы вопрос был объявлен модератором группы оффтопиком, поэтому все последующие его обсуждения следует производить вне группы CACHE_RU.
Собственно, это и было причиной появления этой заметки.

Cache': Как в списке удалить или вставить элементы?

Вопрос. Если есть список полученный с помощью $listbuild(), то как в нем вставить другие элементы в заданной позиции или удалить элементы из заданной позиции? Как взять подсписок из списка?
Ответ. Эти операции выполняет трехаргументная форма функции $list().

пятница, 8 апреля 2016 г.

Cache': перенос классов без исходников

При распространении коммерческих приложений иногда возникает вопрос о сокрытии исходного кода приложения. При написании приложения для Cache' перенос приложения выполняется путем переноса объектного кода. На машине разработчика производится экспорт рутин в объектном формате, на целевой машине они импортируются. Поскольку для работы интерпретатора требуются только объектники, то приложение работает нормально.

В современных условиях программисты все чаще прибегают к применению объектных технологий, в том числе при разработке приложений для Cache'. Но перенос классов с сокрытием исходного кода уже не такая простая задача. Формально предоставляемые средства предполагают экспорт класса в файл в формате cdl либо в формате xml в более современных версиях. При переносе же в этом формате предполагается перенос и исходного кода классов, его импорт на целевой машине и компиляция. Какие могут быть варианты сокрытия исходного кода при работе с классами?

М-системы: нестандартный $tr

Интересный способ использования функции $translate состоит в использовании её в неочевидных на первый взгляд перестановках.

Книжки про MUMPS

Литература, которую можно скачать и почитать про язык программирования MUMPS, кроме штатной документации от производителей MUMPS систем.

Доступ к MSSQL из Cache' на платформе Linux

Поделитесь пожалуйста опытом, у кого работает связь с MSSQL 2000 из под Cache' 5.0.20 (ну или других версий) на платформе Linux. Cache' должна выступать в качестве клиента, MSSQL соответственно сервера. Какие драйвера ODBC используются?

Cache: Ищем в потоке или в сегментированных данных

Как найти подстроку в потоке или в данных, которые представлены последовательностью строк?

MUMPS и объекты

Когда появился MUMPS мне точно не известно, я считаю что где то в 70 годы прошлого столетия. Он был стандартизован в США достаточно быстро одним из первых языков программирования. Что говорит о его неординарных свойствах. Меня он поражает компактностью, логической целостностью, полнотой, выразительностью и завершенностью. С помощью минимального набора средств он решает огромный круг задач. Современные языки имеют не богатый набор команд и как правило большие стандартные библиотеки. Совокупность этих 2 элементов собственно и есть языковое средство. И если сами языки более менее компактен , то библиотеки достаточно сумбурны. На их фоне MUMPS и его стандартная библиотека резко выделяются компактностью. Возможности MUMPSа несмотря на это в части обработки данных значительно шире за счет того что в язык включены иерархические структуры данных хранимые на дисках (глобали).

четверг, 7 апреля 2016 г.

MSM: Компиляция исходных текстов

Обзор

MSM-Server, начиная с версии 4.3 и MSM-Workstation позволяет писать программный код в исходниках. При этом появляется замечательная возможность использовать в исходниках макроопределения. Такие исходники компилируются в обычные М-программы при сохранении их на диск. При этом сами исходные тексты сохраняются в глобали:
  • ZMSMMAC - библиотеки макроопределений
  • ZMSMSRC - исходники.
Похожая возможность есть и в Cache'. Там при создании программы редактор спрашивает какой тип кода надо создать. Есть три возможных варианта.

Cache': Просмотр базы read-only

Если в каше смонтировать базу данных в режиме "только чтение", то проводник не показывает список имеющихся глобалов с сообщением об ошибке.
---------------------------
Сообщение об ошибке
---------------------------
<PROTECT>onedir+2^%GXLINFO
---------------------------
ОК
---------------------------

CacheObject: SetOutput в Delphi

Основной механизм соединения с Cache' при построении клиент-серверных систем и традиционных средств разработки класса Delphi, Borland C++ Builder и других - это ActiveX-комплект CacheObject.

При его использовании без VB может быть потеряна функциональность callback, а именно так называемый механизм получения терминального вывода процесса. В VB используется конструкция
set CacheFactory = CreateObject("CacheObject.Factory")
CacheFactory.SetOutput( TextBox)
Здесь TextBox - это компонент многострочного вывода.

При вызове на сервере метода какого-либо класса, который возвращает информацию не в виде возврата функции, а отправляя в текущее устройство вывода, например, $System.OBJ.ExportCDL(), объект CacheFactory перенаправляет вывод в компонент VB, указанный в SetOutput. Поскольку в Delphi и BCB нет бейсикового textbox, возникает проблема.

Cache': О непечатном

Как посмотреть что именно содержится в строке если команда write выводит какие-то непонятные непечатные символы?

Cache emergency mode

На случай непредвиденных обстоятельств, таких как отказ системы безопасности, либо утеря паролей пользователей и т.д., Cache предоставляет доступ в специальном аварийном режиме (emergency mode).

Cache': Торможение при индексировании

Пытаюсь проиндексировать float-значение у всего-то двух миллионов записей:
f i=1:1:2000000 d
. s ^A4Test("I",$r(1000000)/100,i)=""
. w:'(i#10000) i,!
До 790000 процесс идет достаточно шустро, после чего производительность катастрофически падает (4.1.10 и 5.0). Это лечится? Есть какие-нибудь рекомендации по этому поводу?

Cache': Политика обработки ошибок в приложениях

Данный документ представляет собой пример "политики по обработке ошибок". Сформулированные здесь правила представляют собой свод проверенных на практике приемов и решений по обработке ошибок в Cache приложениях. Вы можете использовать ее в качестве примера для разработки правил обработки ошибок в своем коллективе.

Cache': перехват текущего устройства

Эта заметка описывает программный перехват ввода-вывода текущего устройства в Cache'. Неудобство стандартных устройств mumps, а точнее определенного их поведения состоит в том, что если выполняется программный код, осуществляющий ввод-вывод через него, то этот процесс сторонним кодом не управляем иначе как установкой возможных опций устройству. В то время как в некоторых случаях очень нужно иметь возможность выполнить так называемый унаследованный (legacy) код, который оперирует текущим устройством, но при этом в самих операциях ввода-вывода произвести дополнительные действия.

Синхронные луны

Мы привыкли к нашей Луне. И к звездам. Они для нас движутся так, как будто скользят по небу. Собственно говоря, многие века люди полагали что так оно и есть. Расхождение было лишь в том, плоская Луна или это конус, скользящий круглым торцом по стеклянному небосводу. Потом конечно разобрались, что Луна так движется потому, что повернута к нам строго одной стороной.


понедельник, 4 апреля 2016 г.

Caché: профилируем программу

Для профилирования программы в Cache' версии 5.0.4 появилась утилита ^%MONLBL. Эта утилита предоставляет интерфейс к механизму сбора статистики выполнения программ. Для ее использования следует
  • запустить утилиту профилирования
  • выполнить профилируемый код
  • остановить профилирование и вывести результаты

воскресенье, 3 апреля 2016 г.

М-программисты настолько суровы...

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

Пользовательские z-переменные и z-функции в Cache'

Cache' позволяет определить пользовательские z-функции и z-переменные таким образом, что они будут доступны из любой области. К переменным относятся объекты, синтаксически употребимые в контексте переменных, например:

s <varname>=<varvalue>
w <varname>

При этом в <varname> входят только символы латинских букв, цифры и специальные символы таким образом, что лексема <varname> может быть подставлена вместо локальной переменной. Для того, чтобы создать пользовательскую системную переменную, в Cache' зарезервированы рутины в области %SYS c %ZLANGV00.INT до %ZLANGV08.INT.

Вырабатываем командный голос или zz-команды в Cache

Cache позволяет создавать пользовательские команды, получившие название zz-команды. Пользовательская команда - это команда, написанная пользователем и использующаяся интерпретатором Cache наравне с другими командами.

Определяемые пользователем команды должны иметь, согласно стандарту, первые два символа zz. После чего любые латинские буквы и цифры. Например, zzab34. Регистр символов роли не играет. Определять команду нужно в верхнем регистре, а использовать ее можно в любом регистре, соответствие ставится приведением по латинице.

Почему я не люблю Что-Где-Когда

Я не люблю не только передачу "Что где когда", но и еще несколько, дело не именно в ней, но эта передача характерна. В чем она состоит? Собираются люди, умные, эрудированные, и им даются вопросы, на которые надо дать ответ за короткое время. В передаче дается 1 минута, но это не суть важно сколько. Во многих других передачах также предлагается ответить на вопросы за короткое время.

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

Онлайн калькуляторы

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

Когда учился в институте, у меня был калькулятор Б3-32, имевший встроенное вычисление корней квадратного уравнения и решение системы линейных уравнений второго порядка. Примерно такой как на фото:
Этот калькулятор, помнится, очень сильно помогал в написании массы курсовых, и именно за счет таких специализированных вычислений. Теперь, когда есть компьютеры и браузеры с языком программирования JavaScript, такие специализированные калькуляторы могут быть всегда под рукой.

Решение онлайн квадратного уравнения

Введите параметры уравнения, нажмите "Решить". В браузере должна быть включена поддержка JavaScript. Ввод дробных чисел - через точку, например, 3.1415.

Решение онлайн уравнения третьего порядка

Введите параметры уравнения, нажмите "Решить". В браузере должна быть включена поддержка JavaScript. Ввод дробных чисел - через точку, например, 3.1415.

Нахождение онлайн факториала

Введите число, нажмите "Вычислить". Число n должно быть целым.

Нахождение онлайн биномиального коэффициента n / m

Введите параметры, нажмите "Вычислить". Числа m и n должны быть целыми.

среда, 30 марта 2016 г.

Нахождение онлайн наибольшего общего делителя

Введите числа, нажмите "Вычислить". Числа должны быть целыми.

Обращение онлайн матрицы 2-го порядка

Введите коэффициенты исходной матрицы, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415.

Обращение онлайн матрицы 3-го порядка

Введите коэффициенты исходной матрицы, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415.

Обращение матрицы 4-го порядка

Введите коэффициенты исходной матрицы, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415.

Возведение онлайн матрицы 2-го порядка в степень

Введите коэффициенты исходной матрицы, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415. Показатель степени должен быть натуральным числом.

Возведение онлайн матрицы 3-го порядка в степень

Введите коэффициенты исходной матрицы, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415. Показатель степени должен быть натуральным числом.

Возведение онлайн матрицы 4-го порядка в степень

Введите коэффициенты исходной матрицы, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415. Показатель степени должен быть натуральным числом.

Решение онлайн системы линейных уравнений с 2 неизвестными

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

Решение онлайн системы линейных уравнений с 3 неизвестными

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

Решение онлайн системы линейных уравнений с 4 неизвестными

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

Нахождение онлайн числа сочетаний из n по m

Введите параметры, нажмите "=". Числа m и n должны быть целыми.

вторник, 29 марта 2016 г.

Произведение онлайн матриц 2-го порядка

Введите коэффициенты матриц, нажмите "Вычислить". Ввод дробных чисел
- через точку, например, 3.1415. Можно использовать выражения, например 12+(2*56)

Георгиевская ленточка в HTML

Вот такой вот HTML код:

<table width=400 align=center  bgcolor=#FF9900>
<tr><td bgcolor=#000000>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td bgcolor=#000000>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td bgcolor=#000000>&nbsp;</td></tr>
</table>

дает вот такую вот георгиевскую ленточку:

   
   
   
   
   

Произведение онлайн матриц 3-го порядка

Введите коэффициенты матриц, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415. Можно использовать выражения, например 12+(2*56)

Задача 6. О принципе наименьшего действия в дифференциальной форме

Имеются два утверждения:

1) При движении тела интеграл некоторой функции вдоль пути движения экстремален.
2) В каждой точке пути тело движется вдоль направления, являющегося экстремумом некоторой функции (градиентом скалярной функции).

Показать, в каких случаях эти два утверждения эквивалентны и в каких неэквивалентны.

воскресенье, 27 марта 2016 г.

Произведение онлайн матриц 4-го порядка

Введите коэффициенты матриц, нажмите "Вычислить". Ввод дробных чисел - через точку, например, 3.1415. Можно использовать выражения, например 12+(2*56)

Вычисление онлайн процента скидки

Введите параметры, нажмите "Вычислить".

Вычисление онлайн величины скидки

Введите параметры, нажмите "Вычислить".

Задача 5. Решить уравнение поворота в кватернионах

Решить уравнение в кватернионах:

A = X * B * X~ 

где X~ - X сопряженное, A и B заданы, найти X.

Задача 4. Решить уравнение для делителей нуля

Решить или предложить общий метод решения уравнения

A*X = B 

если A - делитель нуля 

Задача 3. Получить ортогональный вектор

Задан кватернион V с действительными коэффициентами, имеющий
ненулевую скалярную и векторную части.

Требуется: используя константные кватернионы и операции сложения и
умножения найти один из кватернионов, имеющий векторную часть,
ортогональную векторной части V.

Задача 2. Решить уравнение для некоммутативного переменного

Решить уравнение

A*X + X*B = C 

для случаев:
  1. A,B,C,X - квадратные матрицы
  2. A,B,C,X - кватернионы

Задача 1. Дифференциал экспоненты

Пусть x есть число некоммутативной ассоциативной алгебры.
Показать, что дифференциал функции exp(x) равен:
d exp(x) = exp(x/2) dx exp(x/2)

пятница, 25 марта 2016 г.

Контрольная сумма онлайн для штрихкодов EAN-8, EAN-13, EAN-14 (ITF-14), UPC-A, UPC-E

Штрихкоды задаются последовательностью цифр, а для средств автоматического считывания представляются также в виже штриховой последовательности. Последовательность штрихов лишь кодирует последовательность цифр, и баркод может быть введен вручную по представленным (если присутствуют) цифрам. Последняя цифра в написании штрихкода является контрольной цифрой и служит для подтверждения правильности считывания или ручного ввода за счет введения избыточности. Также контрольную цифру называют цифрой в контрольном разряде (разряд - это место для цифры). Значимыми цифрами в штрихкоде являются все кроме нее. Для вычисления контрольной цифры введите значимые цифры штрихкода без контрольной цифры.

Гиперкомплексные числа в физике. Библиография.

Библиография составлена Смолиным Александром Львовичем и приведена в книге
Смолин А.Л. Гиперкомплексные преобразования Лоренца, эфир и остальная физика.-М.: Диалог-МГУ, 1999.-105с. ISBN 5-89209-477-4
Библиография размещена в интернете с разрешения автора.

Преобразования гиперкомплексных чисел. Библиография

Библиография из книги Каратаев Е. А. "Преобразования гиперкомплексных чисел"

Дополнительная библиография применения кватернионов

Библиографию составил Акименко Виталий Владимирович.

Александр Концедалов. Часть 1. История началась

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
Моя программистская история началась во второй половине 1974 года. Хотя я по образованию был тогда специалистом радио и многоканальной электросвязи, в том году мне довелось работать в строительной организации и заниматься исследовательской работой - изучать причины, влияющие на производительность труда рабочих в строительстве.

Александр Концедалов. Часть 2. MUMPS – Массачусетские утилиты многопрограммной системы

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
Для того, чтобы представить почему эти утилиты упали на благодатную почву и дали прекрасные всходы придется кратко описать общую обстановку в это время в мире компьютерных технологий.

Александр Концедалов. Часть 3. Появление MUMPS в СССР

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
Запрет на поставку MUMPS в страны восточного блока был нарушен как с Востока, так и с Запада.

Александр Концедалов. Часть 4. Первая конференция пользователей MUMPS в СССР: 1985 год

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
Итак, когда Г.П. Остапенко обнаружил меня в своем кабинете и еще узнал, что меня интересуют некоторое тонкости инсталляции MUMPS на компьютере, он пришел в большое возбуждение. Посыпались вопросы: «Где Вы взяли диструбутив системы?» (Ведь ИНЭУМ еще ее официально не сдал, а кто-то украл дистрибутив и нелегально его распространяет… комментировал свои вопросы Георгий Павлович), «Как Вы вообще попали в мой кабинет?» - сюда посторонним категорически нельзя!!!!

Александр Концедалов. Часть 5. Вторая конференция пользователей MUMPS в Алма-Ате в 1986 г

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
В первой конференции участвовало не очень много пользователей, однако этого количества участников было достаточно для того, чтобы к 1986 году система получила распространение и признание на всей территории СССР от Прибалтики до Дальнего Востока. По моим оценкам, за год число действующих реализаций прикладных систем в среде этой системы увеличилось не менее чем на три тысячи единиц. Система оказалась удобной как в промышленных приложениях, так и в различных конторах Советской власти, типа МВД и др.

четверг, 24 марта 2016 г.

Александр Концедалов. Часть 6. Ассоциация «Союз-ДИАМС»

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
После Алма-Атинской конференции 1986 года пользователи вернулись к своим обычным занятиям, имея в руках отлично выверенный дистрибутив системы DSM-11.

Кроме этого, многие участники конференции увезли с собой бесценный опыт общения с единомышленниками и носителями новых идей. Разумеется, личные контакты даже в нынешние дни с интернет-коммуникациями ничем заменить невозможно. Еще раз скажу, что общение в кулуарах конференции приносит больше пользы, чем даже сами доклады в зале заседаний.

Александр Концедалов. Часть 7. Советский MUMPS: системы MIDUS и NTSM

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
Я неосторожно назвал эти системы "советскими" только потому, что они возникли еще во времена СССР, но способ их создания был явно другим - создавались они по частной инициативе весьма энергичных людей.

Александр Концедалов. Часть 8. Встреча MUMPS-миров: американцы в Москве

Александр Концедалов, истории о MUMPS в СССР, как это было.
Почтовый адрес: un7gak@mail.ru
Коротковолновый позывной: UN7GAK
Официально зарегистрированная ассоциация пользователей «Союз-Диамс» немедленно стала получать официальное признание на западе у наших коллег. Настал своеобразный «карнавал конференций MUMPS». Первая зарубежная конференция, где наша страна была представлена официально, состоялась в Праге. Затем в Копенгагене. Я не участвовал, хотя и был приглашен. Причина тому весьма прозаическая - поездки следовало финансировать за свой счет (и отрываться от текущей рутины на работе).

История (Hardhats) «Каски»

Георгий Тимсон (George Timson)
История проекта Hardhats, и связанных проектов VA Vista / Fileman
(в переводе А. Концедалова un7gak@mail.ru)

Интервью с Константином Аристовым

Константин Аристов согласился дать интервью по ICQ. Живет в Санкт-Петербурге, женат, двое детей, e-mail littlecat.spb@gmail.com. Интервью брал Евгений Каратаев.
EK. Привет, Костя, вопрос есть. Дай мне интервью по асе? Мне интересно сделать серию интервью среди технарей, занимающихся или раньше работавшими с М.

КА. :-) Ну давай, я попробую :-)


Интервью с Александром Дроздовым

Работает в Москве, женат, двое детей. Интервью брал Евгений Каратаев.
ЕК. Привет. Дай мне интервью по асе? Мне интересно сделать серию интервью среди технарей, занимающихся или раньше работавшими с М.

АД. И куда ты его? На сайт?

ЕК. Да.

АД. Ну, на, бери...


Книга "Преобразования гиперкомплексных чисел"


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

Интервью с Алексеем Коломийцем

1963г. рождения. Женат, двое девочек. Запорожье, организация ООО "Марка".

ЕК. Алексей, добрый день. Дайте мне интервью по асе?

АК. Евгений, добрый день. Я сейчас постоянно бегаю. Как будет время, я Вам скажу.
За рабочим местом сижу не более 3 минут. С завода на завод.

АК. Если можно частями отвечать, то готов.


А. Лебедев. Откуда вы, господин ПК?

Сегодня человек, сидящий за клавиатурой персонального компьютера, правильно делает, если не ломает себе голову над вопросом, поставленном в заголовке. Ему надо выполнять текущую работу или получать наслаждение от интересной игрушки, или погружаться в дебри интернетовской паутины, или разглядывать цифровые фотографии... Интересного и полезного - море, а возможностей еще больше. Думать о том, что было на заре компьютерной эры в это время так же нелепо, как если бы хозяйка, гладящая белье программируемым утюгом "Tefal", пыталась представить себе свою прабабушку, разглаживающую свадебное платье чугунным утюжком, набитым раскаленными древесными угольками. Но представим себе, что за клавиатурой сидит не просто пользователь ПК, а программист, и не просто программист, а Профессионал с большой буквы. Для него история становления избранной им области человеческой деятельности не может быть безразличной. Это, прежде всего, важная часть его общей профессиональной культуры, как, например, история музыки для серьезного композитора. Но есть и другая важная сторона вопроса. Сегодня она больше похожа на сказку, но при определенных обстоятельствах, полностью забыв истоки своей современной технической цивилизации, человечество рискует попасть в такую ситуацию, которая описана в одном из фантастических рассказов.

Рекомендации по написанию диалоговых окон

Диалоговые окна предназначены для ввода-вывода информации в форме, требующей обязательного внимания пользователя. Если обязательность обращения внимания пользователя не требуется, предпочтительным вариантом организации ввода-вывода является либо SDI - интерфейс, либо MDI - интерфейс.

Чем мне не нравится SQL

Наболело. Сталкиваясь с SQL-based движками СУБД, иной раз буквально чувствуешь над собой дамоклов меч проклятия SQL. Что любые потуги что-то сделать запросто могут нарваться на "низзя". Когда-то, когда концепция SQL ещё была несерьезной из-за ресурсоемкости, к ней относились с насмешкой и мало кто верил что завтра это станет обычным делом. Однако, стало.

среда, 23 марта 2016 г.

Стенды и макеты

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

New, new, new

Не надо писать new в названии чего-либо. Раздражает, мешает, запутывает.

Про иконки

Хочу поговорить об иконках, которые показываются в списках слева от надписи.

У нас нет цветных байтов

Если отладка это избавление от ошибок, то программирование - их создание.

Книга "MUMPS СУБД"


Весной 2013 года в издательстве Солон-Пресс вышла книга "MUMPS СУБД". Книга описывает язык программирования MUMPS, встроенные системные команды и функции, описывает технику построения и применения индексов, принципы обработки ошибок и применение СУБД на основе MUMPS для построения информационных систем и их интеграцию с другими системами, а также множество технических нюансов как самого языка MUMPS, так и отличия в различных реализациях.

О метафорах

Когда читаешь компьютерные или околокомпьютерные книги и издания иного рода, иногда, более-менее часто, сталкиваешься с метафорами.

Метафоры по своему назначению есть проведение параллели между разработкой и чем-то иным. Считается что упрощенное описание иной предметной области помогает понять компьютерную проблему. Может быть.

Может быть, это у меня одного такие проблемы с метафорами и предпочтения к прямолинейности и точности. Может быть. Но мне метафоры чаще мешают.

Про GOTO

Заметка для тех, кто знает, что такое оператор goto и особенно для тех, кто его переводит как "пошел на...".

Проектирование классов в шутку и всерьез

Иногда так бывает - соберутся люди и начинают обсуждать серьезные проблемы. И устают уже, а все равно продолжают. Остановиться уже не могут, потому как несерьезно получится. И мысли уже кончаются. И тут кто-то говорит шутку и все смеются и ситуация разряжается. Как такая шутливая разрядка и появилась эта работа. Несмотря на шутливость и кажущуюся несерьезность, доля интересного и полезного в ней есть.

Как проектировать классы?

Классы есть определения понятий и отношений между ними, выраженные на каком - либо объектном языке. Когда говорят, что объекты - это ново, модно и все такое, мне это трудно понять, поскольку ничего кроме объектов никогда не писал. Скорее уж программирование без объектов - вот это действительно новость.

Интерфейсы как решение проблем множественного наследования

В этой работе разбирается проблема множественного наследования в языке программирования С++ и возможное ее решение путем применения абстракций интерфейсов.

Прикладной или системный?

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

6 квадратов проектирования

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

Агрегация или наследование?

Добавление функциональности к классу в новом классе через агрегацию и через наследование. Плюсы - минусы.

Полезна ли параллельность?

В каких случаях параллельность исполнения процессов или обслуживания запросов реально может помешать?

Управляемость выборов с многоступенчатым голосованием

Можно ли вмешаться в результат выборов если результат голосования определяется большинством голосов?

Перспективные направления программного обеспечения

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