Guest № 0
You can also sign in by:



Aleksandr Chernyh

Sensei 31 31.10.1983 [Mon]

My diary

Утро. Взрывы и возможно катапультирование пилота

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

Когда написано: [2022-03-18 16:57:53] - [2022-03-18 17:15:08] 381
Теги:
#2022

Ещё взрыв

Ещё взрыв (в воздухе) - в сторону Курской обл, Мантурово...

буквально только, что неск. мин назад.

до этого был пролёт самолёта (или мне показалось...)

Когда написано: [2022-03-09 16:36:25] - [2022-03-09 16:49:31] 271
Теги:
теги не указаны

Всё печально...

....

(а, на фоне вновь за окном летит самолёт)


https://youtu.be/vmVi6tdvGC8?t=1881


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

Когда написано: [2022-03-07 00:08:30] - [2022-03-07 00:22:06] 357

Белгород. Летят вертолёты.

Сетрёнка с Зайкой переживают.

низко и горомко

Когда написано: [2022-03-06 21:42:58] - [2022-03-06 21:56:25] 87

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

Нашлись. Выяснили причину:

Причина - все мобилизовали для вывоза из Харькова иностранных студентов (в т.ч. из Китая, Южной Кореи, Вьетнама и др.).
На обратном пути 2 из них попали под обстрел.

Предположительно подобная мобилизация автобусов была со всей области (т.к. от сюда часа 2 пути до Белгорода, до Харькова все 3).

Когда написано: [2022-03-03 15:53:53] - [2022-03-03 16:09:26] 578

#Хроника: Летают военные самолёты (ок. 100 км от Белгорода)

Летают военные самолёты (ок. 100 км от Белгорода)

недалеко (ок. 6 км( от границы в с Харьковской обл. слышны выстрелы,
так же слышны из Белгорода (ок 30-45 км до границы)

24.02.2022 07:15
сообщение в корпоративный чат в WhatsApp отдела продаж Варианта

Когда написано: [2022-02-27 16:24:40] - [2022-02-27 16:41:27] 428

Вечное, разумное, всепомнящее существо - ...

Бесконечно (и по своим размерам и материи)

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

Когда написано: [2022-02-13 03:31:45] - [2022-02-13 03:50:14] 708

Единый (федеральный, глобальный, ....) центр профсоюзов и образовательный центр

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

вольная цитата: "желающие может есть, а вот знаний (и понимания "как") нет".


2) (старая идея) соц.сеть для профсоюзов и работников. Организация профсоюзов, управление, голосование, коммуникации и пр. механизмы
А, так же юр. помощь ( в т.ч. в проведении акций, в т.ч. и международных - "коминтерн")
Организация касс взаимопомощи и бюджетов профсоюзов.
Сбор профсозных взносов


Поддержание (платформы)

1) на основе пожертвованиях в 1 руб. (условно)

"даже 1 рубль - имеет значение"

локально по странам - так же от 1 единицы локальной валюты в мес.

2) взносов и пожертвований профсоюзов (возможно фондов и "неравнодушных" ... но, это под вопросом... что бы не возникало зависимости и пространства для коррупционной/"лоббистской" составляющей)



Место:

Медцентр "Поколение", Старый Оскол
(координаты - уточнить, подумать над вопросом передачи координат с телефона при раздаче через wi-fi)

Навеяно:
Разговор с таксистом (Сергеем) по дороге до медцентра

Когда написано: [2022-01-11 09:33:26] - [2022-01-11 09:33:26] 2289
Теги:
теги не указаны

Перекрёсток, евреи, нацисты, охранники и все все все.

Краткий пересказ на основе недавних событий и показаний в полиции:
----
19 августа 2021 ок 21-00 (основные события с ~ 21-00 до 21-19):

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

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

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

- Эй, еврей! Ведь ты еврей да?!

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

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

И, вот подходит этот самый "еврей" к весам кладёт туда три банана, и в руках держит ешё что-то из фруктов. Тут к нему подлетает фигура в чёрном, и ещё раз говорит ему:

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

И, вот это самый "еврей" ему отвечает:

- Да, что Вы себе позволяете! Я сейчас охрану позову!

- Я здесь охрана. Кого ты ещё позовёшь?!

И, если до этой фразы я думал, что ну мало ли просто бескультурный персонаж, детя гор, который впервые увидел человека внешне похожего на типичного стереотипного еврея, так этому резко удивился, что прям сама святая непосредственность словно ребёнок никогда не видевший в живую обезьян оказался в первые в зоопарке и на радостях кричит "Мама, папа, смотрите, обезьянка!"
(ну, или схожий анекдот, про жителей глубинки, детей и африканцев в до эпохи интернета))

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

В любом случае - этот нацист, ещё и охранник магазина, и причём не простого "на районе", на Перекрёсток! Т.е. проверенный службой СБ и поддержанной ею. И, не важно через свояков или без, не важно! ОН (или вернее ОНО!) поддерживается и спонсируется Перекрёстком, X5Retail Group и всё такой. Как же мне тогда отвратно стало.

- Да, осмотрел я его ещё раз с ног до головы, похоже охранник, весь в чёрном, типаж похож. Таких сейчас во все подобные крупные магазины набирают, и в целом это хорошие ребята, местами специфические, не оч. любящие работать по уставу, скорее всего его толком и незнающие, как и законы*. Но, зато сдержанные, отлично выполняющие свою работу, вызывающие уважение и своим видом демонстрирующие что данное заведение под защитой. Как в той же Билле, неподалёку с охранниками крепкими чеченцами бородачами)

А, "тут" (в Перекрёстке) вот такое го*но! Я тут же бросил продукты на лотки с картошкой, на правился к выходу и мыслью в голове, что здесь, да и во всей сети я больше никогда ничего покупать не будут! (что бы "это всё" не спонсировать, ни единой своей копейкой)

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

- Или может и ты меня осуждаешь?!, сказал он мне или что-то около того.

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

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

- Почему ты так говоришь?! - спросил, "агрессивно настроенный персонаж"

- Да, потому что ты докопался до человеку лишь внешне чем-то похожем на еврея, и лишь потому, что решил что он еврей. И, вот поэтому ты - нацист! И, мне без разницы, кто он на самом деле, и было бы без разницы если бы ты так же копался до лезгина, аварца, или (тут я призадумался, вспоминая национальность Алика (лакца), не помню успел ли произнести "лакца" или нет, но это уже не суть"

- Пойдём выйдем поговорим по-мужски. Или слабо/трусишь (или что-то вроде такого сказал, или же просто близкое по смыслу, не суть). Сможешь сказать в лицо без свидетелей?

- не нужно вестись, оно того не стоит, как и этот персонаж, - подумал я.

- Нет!, сказал я - Зачем?! Это бессмысленно!

- Почему?!

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

- Пойдём выйдем! Скажи это в лицо, без свидетелей и камер?! ("или слабо!")

- Нет, зачем! Это бессмысленно. Ты ведь нацист.

- Почему ты оскорбляешь?! Пойдём выйдем!

- Где я тебя оскорбляю?! Я лишь говорю что ты нацист! ("где тут оскорбление") И, сказал бы так - без разницы до какой нации ты бы докопался, евреев или каких других. Ты нацист и есть.

Он приблизился. У него странный вид и запах. "

Алкоголь?" подумал я, нет, что-то несильно чётко, не факт. возможно под чем-то ещё, но не факт.

- Ты почему вообще всё это делаешь так? Ты что пьян?

- Нет, не пьян.

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

- Ты почему вообще так относишься (не, помню точно формулировку), Ты сам-то из кого будешь? Кто ты (какой национальности)?

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

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

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

Я, и не ожидал удар, в тот момент когда пытался смягчить тем, переведя разговор в другое русло. Узнав кто он, переведя в тем обсуждений его нации, этноса, рода, обычаев, и родителей, вероятно можно было бы его чуть сдержать, и поумерить пыл. Т.к. старшие ( в семье/роде) их по-любому сдерживали, и за такое поведение скажем так "не поощряли". У него вероятно сработал бы триггер (боязни старших, и памяти как нужно вести себя дома, когда за такое могут спросить, и в итоге у семьи спросить). Однако в тот момент когда я это произносил он видимо уже становился в стойку для удара, делал замах и думал только об этом (если он вообще за всю эту нашу "беседу" хоть раз думал)))

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

НО! К своему стыду, я признаюсь, что совсем не умею отклоняться, или вернее - уклоняться, т.к. ещё пацанёнком прокачивал до автоматизма совсем другие навыки, даже потом, в школе, в которой я хоть и часто до некоторых пор дрался, но особо этому внимания не уделял, да и благо "спарринг партнёры", у меня были достойные во всех смыслах, и физически и при этом морально. Исподтишка не били - строго договоряк, по правилам за школой.
Про универ уже и говорить нечего - за все пять лет только пару раз - 1-ый когда попал на гоп-стоп на 1-ом или 2-ом курсе возвращаясь из лаборатории. Но, там резкий удар сзади, попытка оглушить, вырубить, серия резких ударов и всё., и 2-ой, уже на 5-ом, когда на районе после клуба, с утра пошёл за пельменями. Там тоже неожиданная резкая, но уже полноценная драка, толпа, разбитый нос (до сих пор мучаюсь)))), трещина челюсти и окровавленный белый пуховик. Несмотря на то, что тогда я огрёб знатно и кровушка то была моя, но вид алой крови на белом-белом пуховике, и буквально залитый ею же (кровью) капюшон, которым я сдерживал всё это кровеизвержение, меня почему-то заводил. Наверное просто адреналин. Адреналиновый кайф. (за то как было больно потом, и питание через "практически через трубочку")))

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

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

Но, благо "визави" - особо, придаваться раздумьям не позволил, упорно пытаясь вызвать на "пойдём выйдем, поговорим".

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

А, так наверное ещё и добавило и то, что я с тем же зычным голосом обратился к кассирше сидящей на кассе, и к подбежавшем охраннику (уже настоящему, небольшому не высокому парнише азербайджанцу с примечательной фамилией - Кадыров, и не менее замечательным именем, которое я сейчас слёт и не вспомню, что-то там на .....дин). Обратился с призывом, или даже чуть ли не приказом:
- Звоните в полицию! Сейчас же! Где охрана вообще?!

Повернувшись к охраннику
- Звони в полицию! Сейчас же!

Задавив что они ничего не делают, кассира сидит ровно не шелохаясь просто сидит, охранник стоит замерев, да подбежавший администратор (начальник смены, старший или кто там у них... такая не высокая хрупка девушка) просто тоже стоит и даже не тянется к телефонной трубке. Я думал, уже достать телефон свой и звонить...."но, там всего 5%, и он может вырубиться в любую секунду...".

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

- Да, о чём с тобой говорить?! Это бессмысленно, тебя не изменить. Вызывайте полицию - немедленно.

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

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

А, охранник... "метр с кепкой", или вернее может 150-160 +/-, и совсем не борцуха.

Как к слову и "персонаж", он хоть и дерзкий, и типа весь такой бурный боевой, и ... "уроженец", но всем не борцуха. Скорее всего на моё счастье.
Т.к. в меня ПОЛНОСТЬЮ открытого зарядить с размаху не повалить.... как позже Султан по телефону высказался "да, он лох!". Да, хороший поставленный удар, или "двоечка" и лежать мне на полу, как мин с сотрясением или в отключке, а при совсем "удачном стечении обстоятельств"...))) Было бы очень "весело"... (

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

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

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

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

И, вообще он (охранник, настоящий, который Кадыров), хороший парень, и даже намаз делает) (только не у себя в подсобке метр-на-метр на посту с камерами, а в хоз части, видимо на складе, или где-то там ещё, не суть, но делает)

Однако!

1) персонаж себя агрессивно вёл в магазине с другими покупателями, ещё и до т.н. "еврея"
2) говорил громко, делал громкие высказывания "националистического толка", проявлял явную агрессию по этническому или религиозному признаку... прям та самая 282-ая статья, по которой даже за мемасики, и комменты в ВК многолетней давности сажают. А, тут такой кадр.... Который представляется охранником магазина Перекрёсток. Своего рода офф. лицом данной точки наделённый властью.

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

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

Да, этот "персонаж", только в первом случае (т.е. рассмотрении только отделено этого магазина) УЖЕ за год получит таки убытки, что это "горе персонаж" и за несколько лет не заработает, скажем так.
Если если учесть пот. последствия для всей сети...

Ух... дичь. Думаю, дальше комментарии по повествование относительно того, что было бы дальше (с этим персонажем) - просто излишни.


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

Из замечаний к сотрудникам магазина Перекрёсток:
3) Отсутствие тревожных кнопок, отработанных навыков действия в данных случаях, либо же что тоже не менее вероятно - прямой или негласный запрет на вызов полиции - "абы чего не вышло", что бы шума не было / внимание руководства не привлекать.
4) Охрана... ну тут просто свезло... как потом в процессе беседы выяснилось, пока ждали полицию. Сегодня он один - двух других охранников то ли уволили, то ли не пустили на смену из-за прививок, или скорее их отсутствия.
5) Отдельно ещё раз напишу - не смотря ни на какие просьбы упорное нежелание вызывать полицию.



В итоге - на последних 5 процентах в 21-19 всё же позвонил со своего телефона на 112, там в первый раз ответили быстро. Спросили адрес, как зовут и телефон, не нужна ли скорая и мол ждите...скоро будут!

Вот только это скоро оказалось де-факто мин. через мин 40 - в ~21-56.
На самом деле даже чуть позже, потому что в это время предпринял вторую попытку позвонить в 112, и там "приятно" прозвучало "все операторы в данный момент заняты, пожалуйста оставайтесь на линии", и так на секунд 45, потом охранник заметил по камерам, что полиция всё таки подъехала и скоро будет.

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

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

Охх...

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

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

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

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

В отделение привезли 2-х девушек студенток, как понял 2-ой/3-ий курс. Учатся. Фрилансят. Одна как понял художница или что-то около того. Другая с короткой причёской, шортах и розовыми волосами - и видимо ставших триггером для "нашего" дерзкого горе нациста. Кузечное дело, и тренер по конному спорту)))

Так вот, к сожалению, я не в курсе всех деталей того, что у них произошло, но судя по времени (20-40 +/-), тот же район-маршрут Зоомагазин - Перекрёсток, и описанию внешности - как раз наш "герой".

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

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

К слову о "бутылках".

Когда мы уже ожидали полицию, сотрудники магазина несколько раз высказывались ну, мол зачем вызывать. Он, работает тут неподалёку за углом. Знаем его, зачем.

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

Мол
- ... слушай, будь мужиком. Не надо полиции. Оставь номер, я с ним поговорю. Решим дело. Он тебе ящик коньяка подгонит. Зачем полицию.

и, эти заходы были несколько раз, причём упорно те же самые словесные обороты про "будь мужиком".

И, даже на мои замечания:
- не называй меня мужиком. Это ты мужик. А, я мужчина.

Всё равно этого видимо не понимал, и пытался заводить ту же песню.

Про то, что не пью - что-нибудь другое подгонит, только не надо полицию.

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

С моей стороны ответ был прост:
- Если бы просто был пьяный, была бы драка. Фиг с ним! Ладно-ладно, полицию бы нафиг, нужно все дела. Но, ведь этот персонаж грёбанный нацист!
Ты бы хотел что бы к тебе такое было? или к твоим детям?
И, что бы вообще ты что за него впрягаешься? ты что с ним из одного аула? деревни? ты его старший? и можешь образумить? Ты кто вообще ему такой?

тот в ответ:
- да, мол не важно. просто знаю его и бу-бу-бу.

А, так не пределах. На мои отметки, что персонаж нацист. Шёл игнор. Вероятно либо не понимал о чём идёт речь, и что это такое, либо просто "понятийный", уходил в сторону.
И, даже на прямые вопросы - он что это разделяет (воззрения). Тот - "мол нет, я просто так"

- Ага, я сам не стрелял. Я просто так, только патроны подносил...

От тоже тип...

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

Хотя скорее всего звиздит по всем фронтам (имя, этнос)

Такой шупленкий, морщинистый, лет 50 - 50+.

На мой вопрос (контексте чего он "так просто прохожий", так упорно выступает против подключения полиции, может идейный?))
не из воров ли он?

тот мол что-то брякнул, что не понимает о чём идёт идёт речь)) и что это такое))

звиздит как дышит. Скорее всего сиделец. "Почтенный старичок" сиделец.


И, теперь уже в финал о самом "персонаже" и перспективах:

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

Если конечно не рассматривать детали... и 282.
И, то, что у одной или обоих девушке на которых он напал до инцидента.

1) родители из полиции
2) у по крайней мере, одной из них по отцовской линии чеченцы

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

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



Однако, что его (персонажа) ждёт?

Перевоспитывать/воспитывать его уже нет смысла - ок 25-30 лет. Капитально упоротый, дерзкий, хоть и несколько труслив, по видимому, но если ощущает в перспективе безнаказанность, то... такое ощущение что пределов у него не будет.

Что с ним делать? как быть?

Уголовка по хулиганке? но, там мелочёвка. Да, и родственники помогут (вероятно).
Да, и выйдя из неё уже даже охранником не везде устроится. И, будет ещё более безбашенным, и озлобленным т.к. терять ему будет нечего, меньше чем сейчас?

282, и если родители/родственники подсуетятся.... но, это опять же... что выйдет? и, в каком состоянии, озлобленности на мир, и ... он, и так бесполезен (ни знаний ни желания особо трудится у него нет)

Что будет?

И, что вырастет из тех кого он воспитает?....


Однако не наказывать - то же плохо... т.к. это породит беспредел (в его башке), плюс ещё большую уверенность в своей правоте и что именно так и надо.
Так он вероятно себя считает правым - и к девушкам он .... на фоне того что он считает своей верой, и к "еврею".
А, спросить ещё и назовётся себя... мусульманином (и, сделает это на духу, будучи свято уверенным что это так есть.) А, остальные "неправильные....". Так работает животная природа.... которой он следует, раз стопарей нет.

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

И, что тогда?

И, как быть сейчас?


Вопрос открытый....


.
-------------------------------------
* - в одном из магазинов был свидетелем ряда моментов, но там уж слишком явно человек провоцировал перегибая палку, да и вёл себя подозрительно и нарочито самоуверенно. Ребята (охранники) позже в разговоре между собой, сотрудниками магазина и покупателями говорили, это вор, он здесь не в первый раз. И, ту попался. Далее провокация, лёгкая быстрая драка и ритеровка т.н. "вора". Т.н. потому, что ещё это должно быть доказано в суде. А, сами охранникам стоило просто не вестись на провокацию, агрессию, знать устав своей работы, нейтрализовать нарушителя и вызвать полицию. Нет же сработала горячая кровь и бурный нрав. Ну, ладно. Эта повесть не об этом инциденте.

Позже я познакомившись с профессиональными шоплифтерами (ворами из магазинов), понял что весьма да, уже очень вероятно был вор. Как и понял, почему однажды стал свидетелем того, что охранник из FixPrice упорно не желал пускать в магазин посетителя с термосумкой (курьера), и очень настойчиво вплоть до конфликта просил оставить её на входе.
Понял почему. А, ведь в FixPrice-ах и подобных всю недостачу и кражу взыскивают с персонала / смены, и в т.ч. вот таких вот простых охранников... но, опять же не суть, сейчас не об этом.


** - очень подходящая метафора, особенно в силу "еврейской канвы" события




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

Сейчас уже 07:45... я так и не спал, как пришёл из полиции,
Заранее, или вернее уже постфактум приношу извинения, тем кто это будет, читать, в т.ч. возможно я сам в будущем)))) за сбитый слог в конце, и/или местами за совсем дурной тон и излишне свободную форму, но ....что есть-то есть.

Голова уже ватная...

Сейчас звонок, отправить пару писем по работе и отбой, по крайней мере на некс. часов)))

Хорошего настроения!)))


P.P.S.
Ах, да!

Талон заявления в полицию: № 2061, № по КУСП 18147. от 19.08.2021 23:56. 4992640287 (надпись вне полей на талоне)
Днём отфотографирую и приложу к записи.

Когда написано: [2021-08-20 02:03:08] - [2021-08-20 07:55:12] 49793

https://youtu.be/lbG8oUPjNMs?t=2262

Когда написано: [2021-07-04 21:55:52] - [2021-07-04 21:57:20] 35
Теги:
теги не указаны

Л.Н. Толстой

Толстой не просто великий человек, он именно ВЕЛИКИЙ ЧЕЛОВЕК! (и, да-да, всё с большой буквы и восклицательным знаком)


https://www.youtube.com/watch?v=J8ocvsj8AV4

Когда написано: [2021-06-12 15:24:08] - [2021-06-12 15:28:38] 261


Произошла ошибка! @vtatu.com __Shutdown_Decorator::renderErrorReport
Ошибка типа [1]: [
Uncaught *{DB\Exception}:
[1114][The table 'Statistics_RequestJournal_Records' is full]

BD={MySQL}
SQL=[INSERT INTO 
		`Statistics_RequestJournal_Records` 
 (
		`ID`, 
		`GUID`, 
		`POUUID`, 
		`ClassName`, 
		`ParentGUID`, 
		`OwnerGUID`, 
		`timeCreated`, 
		`timeModified`, 
		`timeAccessed`, 
		`Description`, 
		`Comments`, 
		`CodeID`, 
		`VersionString`, 
		`Name`, 
		`Hash`, 
		`Order`, 
		`Active`, 
		`timeSynchronized`, 
		`Owner_GUID`, 
		`Owner_POUUID`, 
		`Owner_ClassName`, 
		`Owner_Active`, 
		`ParentObject_GUID`, 
		`ParentObject_POUUID`, 
		`ParentObject_ClassName`, 
		`ParentObject_VersionString`, 
		`Tags`, 
		`REQUEST_METHOD`, 
		`UNIQUE_ID`, 
		`RequestTime_Start`, 
		`HTTP_SCHEME`, 
		`HTTP_HOST`, 
		`HTTP_URL`, 
		`QUERY_STRING`, 
		`HTTP_REFERER`, 
		`HTTP_REFERER_HOST`, 
		`Request_Headers_JSON`, 
		`SessionID`, 
		`Client_IP`, 
		`Client_UserAgent`, 
		`Client_IsRobot`, 
		`Client_IsSearchEngineCrawler`, 
		`Client_IsVulnerabilityScanner`, 
		`Client_Robot_Type`, 
		`Client_Robot_Fami
] в файле [/home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/core.moonlite13.ru/Modules/DBManagement/classes/class.DB_SQL.php] в строке [654]

Текущее(реальное) использование памяти [14'050'672] (14'680'064) из [512M] разрешённых
Участок с ошибкой:
00650:
        }
00651:
        //\System::LoadObjectsList($class_name, $Groups);
00652:
        //var_dump($query);
00653:
        
00654:        throw new \DB\Exception (
00655:
             sprintf(
00656:
                "*Ошибка при исполнении SQL запроса! <br /> MySQL error:[<b>%s</b>]\n While [<b>%s</b>] \n callstack:\n <pre>%s</pre>"
00657:
                ,$message
00658:
                ,$query
00659:
                ,$_tmp_debug_print_backtrace
00660:
            )


Файл целиком:
<?php
/**
 * Класс DB, обеспечивающий работу с SQL базами данных
 * 
 * 
 * @package     DBManagement
 * @author      Premier13 (Черных Александр) <alex@sensei.su>
 * @copyright   Sensei Media Concept(C) 2006
 *
 */
class DB_SQL
    
implements \JsonSerializable
{
    const 
DB_CATEGORY_SQL       "SQL";
    const 
DB_CATEGORY_NOSQL     "NoSQL";
    
    const 
DB_TYPE_MYSQL         "MySQL";
    const 
DB_TYPE_MSSQL         "MSSQL";
    const 
DB_TYPE_ORACLE        "Oracle";
    const 
DB_TYPE_POSTGRESQL    "PostgreSQL";
    
    
    const 
DB_ROLE_PERSISTENT    "Persistent Storage";
    const 
DB_ROLE_TEMPORARY     "Temporary Storage";
    
    
    
    
    const 
INDEX_TYPE_BTREE      "BTREE";
    const 
INDEX_TYPE_FULLTEXT   "FULLTEXT";
    const 
INDEX_TYPE_HASH       "HASH";
    const 
INDEX_TYPE_RTREE      "RTREE";
    
    
    
    
    protected 
$DB_CATEGORY  self::DB_CATEGORY_SQL;
    protected 
$DB_TYPE      self::DB_TYPE_MYSQL;
    protected 
$DB_ROLE      self::DB_ROLE_PERSISTENT;
    
    const 
PROVIDER_ID       NULL;
    
    
    
/**
     * Имя сервера
     *
     * @var string
     */
    
public $dbServer;
    
/**
     * Имя базы активной данных
     *
     * @var string
     */
    
public $dbName;
    
/**
     * Имя пользователя БД
     *
     * @var string
     */
    
public $dbUser;
    
/**
     * Пароль пользователя БД
     *
     * @var string
     */
    
public $dbPass;
    
    
    
    
/**
     * Ссылка на подключение к базе данных
     *
     * @var mixed
     */
    
var $dbConnection;
    
    
    
    
    
    
    
/**
     * Счётчик выполненных запросов к базе данных
     *
     * @var integer
     */
    
var $dbqQueryCounter;
    
/**
     * Лог запросов (текстовый)
     *
     * @var string
     */
    
var $QueryLog;
    
    
    
    var 
$QueryLog_microtime_b;
    var 
$QueryLog_microtime_e;
    var 
$QueryLog_delta;
    var 
$QueryLog_query;
    
    
    
/**
     * Суммарное время выполнения запросов
     *
     * @var float
     */
    
var $sum_delta;                 #time
    
    
    
    
    
    /**
     * Флаг разрешаюшие логирование запросов
     *
     * @var boolean
     */
    
var $enableLogging;
    
/**
     * Структура логов запросов (Порядковый номер, время, время исполнения, запрос)
     *
     * @var MemoryLog
     */
    
protected $_log;
    
    protected 
$_is_persistent_connection    =   false;
    
    protected 
$_is_persistent_connection_enabled    =   true;
    
    protected 
$_is_db_selected false;
    
    
    
//TODO: Реализовать!
    
var $_access_level;
    var 
$_access_rights;
    var 
$_alowed_operators;
    var 
$_alowed_queries;
    
    
    
    
    
    
    
/**
     * Конструктор
     *
     * @param string $server
     * @param string $name
     * @param string $user
     * @param string $pass
     */
    
public function __construct($server="localhost",$name="database",$user="root",$pass="rootpass")
    {
        
$this->dbServer         =   $server;
        
$this->dbName           =   $name;
        
$this->dbUser           =   $user;
        
$this->dbPass           =   $pass;
        
//
        
$this->sum_delta        =   0;
        
//
        
$this->enableLogging    =   true;
        
//
        
$this->_log             =   new MemoryLog();
    }
    
/**
     * Деструктор
     *
     */
    
public function __destruct()
    {
        if(!
$this->isConnectionPersistent())
        {
            if(
$this->isConnected())
            {
                
$this->disconnect();
            }
        }
    }
     
/**
     * Отключение возможности клонирования объекта.
     * Реализация шаблона Singleton
     *
     * @ignore
     */
    
private function __clone() {}
    
    
/**
     *
     * @return string
     */
    
function getProviderType()
    {
        return 
"MySQL";
    }
    
    
/**
     *
     * @return string
     */
    
function getLastErrorNo()
    {
        return 
mysql_errno($this->getDBConnection());
    }
    
/**
     *
     * @return string
     */
    
function getLastErrorMessage()
    {
        return 
mysql_error($this->getDBConnection());
    }
    
    
    
    
/**
     * Получить категорию БД
     *
     * @return string
     */
    
function getCategory()
    {
        return 
$this->DB_CATEGORY;
    }
    
    
/**
     * Получить тип базы данных
     * 
     * @return string
     */
    
function getType()
    {
        return 
$this->DB_TYPE;
    }
    
    
    function 
getRole()
    {
        return 
$this->DB_ROLE;
    }
    
    
/**
     * Получить имя сервера
     *
     * @return string
     */
    
public function getServerName ()
    {
        
$result =   $this->dbServer;
        return 
$result;
    }
    
    
/**
     * Получить имя активной базы данных в подключении
     *
     * @return string
     */
    
public function getDBName ()
    {
        
$result =   $this->dbName;
        return 
$result;
    }
    
/**
     * 
     * @param string $value
     * @return DB_SQL
     */
    
function &setDBName($value)
    {
        
$this->dbName $value;
        return 
$this;
    }
    
    
    
/**
     * 
     * @return string
     */
    
public function getUserName()
    {
        return 
$this->dbUser;
    }
    
/**
     * 
     * @return string
     */
    
public function getUserPassword()
    {
        return 
$this->dbPass;
    }
    
    
    
    
/**
     * Реализация метода интерфейса JsonSerializable (PHP 5 >= 5.4.0, PHP 7)
     *
     * Цель метода - исключение проблем с сериализацией объектов
     *  и в частности наличием в них переменных типа resource.
     *  
     * @see http://php.net/manual/ru/jsonserializable.jsonserialize.php
     *
     *
     *
     *
     * @return string
     */
    
function jsonSerialize()
    {
        
$result = array();
        
//
        
$result["Server"]   = $this->dbServer;
        
$result["Databale"] = $this->dbName;
        
$result["User"]     = $this->dbUser;
        
$result["Passowrd"] = $this->dbPass;
        
//
        
$result["IsPersistentConnection"]        = $this->_is_persistent_connection;
        
$result["IsPersistentConnectionEnabled"] = $this->_is_persistent_connection_enabled;
        
$result["IsDbSelected"]                  = $this->_is_db_selected;
        
//
        
$result["Connection"] = $this->dbConnection true false;
        
//
        
        
        
        
        
$result["enableLogging"] = $this->enableLogging;
        
//
        
$result["QueryLog"]        = $this->QueryLog;
        
        
        
$result["QueryLog_microtime_b"] = $this->QueryLog_microtime_b;
        
$result["QueryLog_microtime_e"] = $this->QueryLog_microtime_e;
        
$result["QueryLog_delta"]       = $this->QueryLog_delta;
        
$result["QueryLog_query"]       = $this->QueryLog_query;
        
        
// Суммарное время выполнения запросов
        
        
$result["TotalDBTimeUsed"]      = $this->sum_delta;
        
$result["TotalQueriesCount"]    = $this->dbqQueryCounter;
        
        
//
        
$result["sum_delta"]       = $this->sum_delta;
        
$result["dbqQueryCounter"] = $this->dbqQueryCounter;
        
        
//
        
        
        
        //
        //$this->_log             =   new MemoryLog();
        
        
        
        
        
        //return $this->toSimpleArray();
        //
        
return $result;
    }
    
    
    
/**
     * 
     * @return number
     */
    
function getTotalQueriesCount()
    {
        return 
$this->dbqQueryCounter;;
    }
    
/**
     *
     * @return number
     */
    
function getTotalDBTimeUsed()
    {
        return 
$this->sum_delta;;
    }
    
    
    function &
connect()
    {
        
//
        
$this->dbConnection     =   mysql_pconnect($this->dbServer$this->dbUser$this->dbPass);
        if(!
$this->dbConnection)
        {
            
// TODO: пересмотреть!
            
$_tmp_debug_print_backtrace =   "";
                
ob_start();
                    
debug_print_backtrace();
                    
$_tmp_debug_print_backtrace =   ob_get_contents();
                
ob_end_clean();
                
//
            
throw new DBException (
                 
sprintf(
                    
"Ошибка при подключении к серверу БД! <br /> MySQL error:[<b>%s</b>]\n While [<b>CONNECT TO BD Server</b>] \n callstack:\n <pre>%s</pre>"
                    
,mysql_error()
                    
//,$query
                    
,$_tmp_debug_print_backtrace
                 
)
                ,
503
              
);
            
//$result = false;
            
die("503");
            
//
        
}
        
$this->_is_persistent_connection    =   true;
        
//
        
        
if($this->isConnected())
        {
            
$this->onConnect();
        }
        
        return 
$this;
    }
    
    function &
disconnect()
    {
        if(
$this->isConnected())
        {
            
        }
        
        return 
$this;
    }
    
    
/**
     * Подключена ли БД
     *
     * @return boolean
     */
    
function isConnected()
    {
        return 
$this->dbConnection true false;
    }
    
    function 
isConnectionPersistent()
    {
        return  
$this->_is_persistent_connection;
    }
    
    function &
onConnect()
    {
        
$this->resetCounters();
        
//
        
$queries   = array();
        
$queries[] = "SET NAMES UTF8;";
        
$queries[] = "SET COLLATION_CONNECTION=UTF8_GENERAL_CI;";
        
        
        
// @todo только на текстовых полях и полях ввода пользователями (соц.сети)
        // Storage for variable-length columns includes length bytes, 
        // which are counted toward the row size. 
        // For example, a VARCHAR(255) CHARACTER SET utf8mb3 column 
        // takes two bytes to store the length of the value, so each value can take up to 767 bytes.
        //$queries[] = "SET COLLATION_CONNECTION=utf8mb4_unicode_ci;";
        
        // https://mathiasbynens.be/notes/mysql-utf8mb4
        //$queries[] = "SET COLLATION_CONNECTION=utf8mb4_unicode_ci;";
        
        //
        // The default SQL mode in MySQL 5.7 includes these modes: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.
        // SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00' for column
        
$queries[] = "SET SQL_MODE='ALLOW_INVALID_DATES';";
        
//
        
foreach($queries as $query)
        {
            
//$Result1    =   $this->ExecQuery($query,false);
            
            
if(!$this->execQuery($query,false))
            {
                
//
            
}
        }
        
//
        
return $this;
    }
    
    function 
selectDB($dbname)
    {
        return 
false;
    }
    
    
    
    function 
onConnectionError($errorno,$message)
    {
        
//
        
$_tmp_debug_print_backtrace =   "";
        
//
        
ob_start();
        
debug_print_backtrace();
        
$_tmp_debug_print_backtrace =   ob_get_contents();
        
ob_end_clean();
        
//
        
throw new \DB\Exception (
            
sprintf(
                
"Ошибка при подключении к серверу БД!"."<br />"
                
."Ошибка:[<b>%s</b>] (<b>%s</b>)"."<br />"
                
."Стэк вызова:"."<br />"
                
."<pre>%s</pre>"
                
,$message
                
,$errorno
                
//,$query
                
,$_tmp_debug_print_backtrace
            
)
            ,
503
            
,$this
        
);
        
$result false;
        
//
        
die("503");
        
//
        
return $result;
    }
    
    
    
    
    
    
    function 
onSwitchDbError($dbname,$errorno,$message)
    {
        
// Временное решение! TODO: довести до ума!
        
if(class_exists("__Shutdown_Processor"))
        {
            @
ini_set('display_errors'false);
        }
        
//
        //echo "<pre>";            debug_print_backtrace(); echo "</pre>";            die();
        //
        
$_tmp_debug_print_backtrace =   "";
        
ob_start();
        
debug_print_backtrace();
        
$_tmp_debug_print_backtrace =   ob_get_contents();
        
ob_end_clean();
        
//
        
throw new \DB\Exception (
            
sprintf(
                
"Ошибка при переключении на БД [<b>%s</b>]!"."\n<br />\n"
                
."Ошибка:[<b>%s</b>] (<b>%s</b>)"."<br />"
                
."\n<br />\n"
                
."\n<br />\n"
                
."Стэк вызова:"."<br />"
                
,$dbname
                
,$message
                
,$errorno
                
,$_tmp_debug_print_backtrace
            
)
            ,
503
            
,$this
            
,""
            
,debug_backtrace()
        );
        
//
        
$result false;
        die(
"503");
        
//
        
return $result;
    }
    
    
    
    
    
/**
     * 
     * @global Engine $engine
     * 
     * @param string $query
     * @param string $errorno
     * @param string $message
     * @throws DBException
     * @return boolean
     */
    
function onQueryError($query,$errorno,$message)
    {
        global 
$engine;
        
        
// Временное решение! TODO: довести до ума!
        
if(class_exists("__Shutdown_Processor"))
        {
            @
ini_set('display_errors'false);
        }
            
        if(
$engine->isDevServer())
        {
            echo 
sprintf(
                 
"[%s]< br />"
                
,$message
                
//,$query
            
);
        }
        
        
$_tmp_debug_print_backtrace =   "";
        
        
ob_start();
        
debug_print_backtrace();
        
$_tmp_debug_print_backtrace =   ob_get_contents();
        
//die($query);
        //
        
ob_end_clean();
        
//
        
        
        
if(1)
        {
            
error_log($query);
            
//error_log($_tmp_debug_print_backtrace);
            
            
$_trace_stack debug_backtrace();
            
array_shift($_trace_stack);
            
            
            
$___log "";
            
            foreach(
$_trace_stack as $key => $record)
            {
                
//
                // Борьба с наличием рекурсии
                //$backtrace = unserialize(    serialize(debug_backtrace()));
                //
                //$___args    =   NULL;
                //$___args    =   (isset($_trace_stack[$key]["args"])) ? unserialize(serialize($_trace_stack[$key]["args"])) : $___args;
                //
                
$___log .= sprintf(
                    
"#%s [%s] [%s][%s][%s] (%s); on [%s:%s] \n"
                    
,$key
                    
,(isset($record["object"])                                          ? get_class($record["object"])  : "")
                    ,(isset(
$record["class"]))                                          ? $record["class"]              : ""
                    
,(isset($record["type"]))                                           ? $record["type"]               : ""
                    
,(isset($record["function"]))                                       ? $record["function"]           : ""
                    
/*,(isset($_trace_stack[$key]["args"])
                    AND is_array($_trace_stack[$key]["args"]))
                    ?
                    //implode(",",$_trace_stack[$key]["args"])
                    //"I::".
                    \Debug::implode_func_arg($_trace_stack[$key]["args"])
                    //."<br />".print_r($_trace_stack[$key]["args"],true)
                      :
                     ((isset($_trace_stack[$key]["args"]))                                       ? \Debug::implode_func_arg($_trace_stack[$key]["args"])           : "")
                    */
                    
,"..."
                    
,(isset($record["file"]))                                       ? $record["file"]           : "?"
                    
,(isset($record["line"]))                                       ? $record["line"]           : "?"
                
);
            }
            
error_log($___log);
            
//error_log(Debug::Bugtrace("ext",true,false,$_trace));
        
}
        
//\System::LoadObjectsList($class_name, $Groups);
        //var_dump($query);
        
        
throw new \DB\Exception (
             
sprintf(
                
"*Ошибка при исполнении SQL запроса! <br /> MySQL error:[<b>%s</b>]\n While [<b>%s</b>] \n callstack:\n <pre>%s</pre>"
                
,$message
                
,$query
                
,$_tmp_debug_print_backtrace
            
)
            ,
503
            
,$this
            
,$query
            
,debug_backtrace()
        );
        
$result false;
        die(
"503");
        
        return 
$result;
    }
    
    
/**
     * 
     * @param mixed $handle
     * @return NULL
     */
    
function &instantiateQueryResult($handle=NULL)
    {
        
$result = new \DBQueryResult();
        
//
        
if($handle)
        {
            
$result->setHandle($handle);
        }
        
//
        
return $result;
    }
    
    
    
    
    
    
    
    
    function &
resetCounters()
    {
        
//
        
$this->dbqQueryCounter  =   0;
        
$this->sum_delta        =   0;
        
//
        
return $this;
    }
    
    
/**
     * 
     * @return self
     */
    
function &disableLogging()
    {
        
$this->enableLogging false;
        
//
        
return $this;
    }
    
/**
     * 
     * @return self
     */
    
function &enableLogging()
    {
        
$this->enableLogging true;
        
//
        
return $this;
    }
    
    
    
/**
     * Инициализация подключения к БД
     *
     */
    
public function dbInit()
    {
        
$this->connect();
    }
    
/**
     * Закрытие подключения к БД
     *
     * @return boolean
     */
    
public function dbClose()
    {
        
$this->disconnect();
    }
    
    
    
    
    
    
    
    
    
    
    
    
/**
     * Исполнение SQL запроса
     *
     * @global $engine
     * @param string $query SQL запрос
     * @param boolean $do_dbselect флаг разрешающий выбор SQL БД при исполнении запроса
     * @return resource результат выполения запроса (mysql_result)
     */
    
public function &ExecQuery($query,$do_dbselect=true)
    {
        
$result NULL;
        return 
$result;
    }
    
    
    
    
/**
     * Расширенная функция (метод) выполнения SQL-запроса
     *
     * @param SQLQuery $query
     * @param boolean $do_dbselect
     * @throws DBException
     * @return DBQueryResult
     */
    
public function &ExtendedExecQuery($query,$do_dbselect=true)
    {
        
$result NULL;
        return 
$result;
    }
    
/**
     * 
     * @param \SQLQuery $query
     * @param boolean $do_dbselect
     * @return \DBQueryResult
     */
    
public function &execQueryExtended($query,$do_dbselect=true)
    {
        if(
is_string($query))
        {
            return 
$this->instantiateQueryResult($this->ExecQuery($query));
        }
        
//
        
return $this->instantiateQueryResult($this->ExecQuery($query->toSQL()));
        
    }
    
    
    
        
    
    
    
    
/**
     * Получение числа записей получаемых при выполнении SQL запроса
     *
     * @param string $query SQL запрос
     * @param boolean $do_dbselect флаг разрешающий выбор SQL БД при исполнении запроса
     * @return integer $this->ExecQuery($query,$do_dbselect);
     */
    
public function getQueryRowsCount($query,$do_dbselect=false)
    {
        
$result NULL;
        
//
        
$query         =   str_replace(" * "," COUNT(*) as `num_count` ",$query);
        
//
        
$dbresult      =   $this->ExtendedExecQuery($query,$do_dbselect);
        
//
        
if($dbresult)
        {
            
$row_recordset =   $dbresult->getCurrentRowRecordset("assoc");
            
$result        =   $row_recordset['num_count'];
            
//
            
$dbresult->free();
        }
        
//
        
return $result;
    }
    
    
/**
     * 
     * 
     * @deprecated
     * 
     * @param string $query
     * @param boolean $do_dbselect
     * @return array
     */
    
function DBQueryResultAsArray($query,$do_dbselect=true)
    {
        
$result = array();
        
//
        
$dbresult      =   $this->ExtendedExecQuery($query,$do_dbselect);
        
//
        
if($dbresult)
        {
            
$result        =   $dbresult->asArray(true);
        }
        
//
        
return $result;
    }
    
    
    
    
    
    
/**
     * Получение списка имён баз данных на текущем сервере
     * (Замена mysql_list_dbs($this->dbConnection);)
     *
     * SHOW databases [ LIKE wild-card ]
     *
     * @return array
     */
    
public function getDBs ()
    {
        
$result =   array();
        
//
        
$query      =   'SHOW DATABASES';
        
$dbresult   =   $this->ExtendedExecQuery($query,false);
        
//
        
while ($rec_db  =   $dbresult->getCurrentRowRecordset(DBQueryResult::FETCH_MODE_INDEX))
        {
            
$result[]   =   $rec_db[0];
        }
        
//
        
$dbresult->free();
        
//
        
return $result;
    }
    
    
    
    
    
/**
     * Получение списка имён таблиц выбранной базы данных
     *
     * @param string $db_name имя базы данных
     * @return array
     */
    
public function getDBTables ($db_name=NULL)
    {
        
$result =   array();
        
//
        
if(!mb_strlen($db_name))
        {
            
$db_name      =   $this->getDBName();
        }
        
//
        //SHOW [FULL] TABLES [FROM db_name]  [LIKE 'pattern' | WHERE expr]
        //
        
$query      =   "SHOW TABLES FROM ".$this->quoteIdentifier($db_name).";";
        
//
        
$dbresult   =   $this->ExtendedExecQuery($query,false);
        
//
        
while ($row  =   $dbresult->getCurrentRowRecordset(DBQueryResult::FETCH_MODE_INDEX))
        {
            
$result[]   =   $row[0];
        }
        
//
        
$dbresult->free();
        return 
$result;
    }
    
    
/**
     * 
        Table
        Non_unique
        Key_name
        Seq_in_index
        Column_name
        Collation
        Cardinality
        Sub_part
        Packed
        Null
        Index_type
        Comment
        Index_comment

     * @param string $table_name
     * @param mixed $filter
     * @param array $options
     * @return mixed[]|NULL[]
     */
    
function getDBTableIndexes($table_name,$filter=NULL,$options=array())
    {
        
$result =   array();
        
//
        
        //
        /*
        $default_filter = array(
            "Index_type" => array(),
        );
        */
        //
        
$query      =   "SHOW INDEX FROM ".$this->quoteIdentifier($table_name).";";
        
//
        
if(count($filter))
        {
           if(isset(
$filter["Index_type"]) AND count($filter["Index_type"]))
           {
               
$condition = \DBPropertyCondition::instantiate("Index_type"                   ,$filter["Index_type"]    ,"IN");
               
               
               
//System::PrintArray($condition->toSQL());
               
               
               
$query      =   "SHOW INDEX \n FROM \n".$this->quoteIdentifier($table_name)."\n WHERE \n".$condition->toSQL().";";
               
           }
        }
        
//
        //System::PrintArray($query);
        //
        
$dbresult   =   $this->ExtendedExecQuery($query,false);
        
//
        
while ($row  =   $dbresult->getCurrentRowRecordset(DBQueryResult::FETCH_MODE_ASSOC))
        {
            
//$result[]   =   $row[0];
            
$result[]   =   $row;
        }
        
//
        
$dbresult->free();
        return 
$result;
    }
    
    
/**
     * 
     * @param string $table_name
     * @param string $fields
     * @param string $index_name
     * @param array $options
     * @return DBQueryResult
     */
    
function &addFullTextIndexTo($table_name,$fields,$index_name NULL,$options=array())
    {
        
//$fields_string = "";
        //
        
        //
        
$fields_quoted = array();
        
//
        
foreach ($fields as $key => $field_name)
        {
            if(
strlen($field_name))
            {
                
$fields_quoted[$key] = $this->quoteIdentifier($field_name);
            }
        }
        
//
        
$sql_query sprintf(
            
"ALTER TABLE %s ADD FULLTEXT %s (%s);"
            
,$this->quoteIdentifier($table_name)
            ,
strlen($index_name) ? $this->quoteIdentifier($index_name) : ""
            
,implode(","$fields_quoted)
        );
        
//
        
$dbresult   =   $this->ExtendedExecQuery($sql_query,false);
        
//
        
return $dbresult;
    }
    
    
/**
     * 
     * @param string $table_name
     * @param string $index_name
     * @param array $options
     * @return DBQueryResult
     */
    
function &dropIndexByName($table_name,$index_name,$options=array())
    {
        
// ALTER TABLE `VTatu_Artists` DROP INDEX `TextSearch_Index_Names_2`;
        //
        
$sql_query sprintf(
            
"ALTER TABLE %s  DROP INDEX %s;"
            
,$this->quoteIdentifier($table_name)
            ,
$this->quoteIdentifier($index_name)
        );
        
//
        
$dbresult   =   $this->ExtendedExecQuery($sql_query,false);
        
//
        
return $dbresult;
    }
    
    
    
    
    
    
    
    
    
    
/**
     * Получение информации о полях таблицы
     * 
     * SHOW COLUMNS FROM `UsersManagement_Authentication_Credentials`
     * SHOW FULL COLUMNS FROM `UsersManagement_Authentication_Credentials`
     * 
     * 
     *      [Field] => id
            [Type] => int(7)
            [Null] =>
            [Key] => PRI
            [Default] =>
            [Extra] => auto_increment
     *
     * @param string $tblName
     * @param string $dbName
     * @param string $full
     * @return array
     */
    
public function getFieldsList($tblName,$dbName=NULL,$full=true)
    {
        
//
        
$query sprintf(
            
$full "SHOW FULL COLUMNS FROM %s;" "SHOW COLUMNS FROM %s;"
            
,$this->quoteIdentifier($tblName)
        );
        
//
        
if($dbName !== NULL)
        {
            
$query sprintf(
                
$full "SHOW FULL COLUMNS FROM %s;" "SHOW COLUMNS FROM %s.%s;"
                
,$this->quoteIdentifier($dbName)
                ,
$this->quoteIdentifier($tblName)
            );
        }
        
        
$dbresult $this->ExtendedExecQuery($query);
        
        if(
$dbresult)
        {
            
$result   =   $dbresult->asArray(true);
        }
        
        
        
//$str = "";
        
        
foreach($result as $key => $value)
        {
            
//
            
if(!isset($result[$key]["TypeModificator"]))
            {
                
$result[$key]["TypeModificator"] = NULL;
            }
            
//
            
$result[$key]["FullType"] = $result[$key]["Type"];
            
//$result[$key]["Type"]     = NULL;
            //
            
$matches NULL;
            
//
            
if(preg_match("/^([^\(\)]*)\((.*)\)(.*)$/uis"$result[$key]["FullType"],$matches))
            {
                
$result[$key]["Type"]            = trim($matches[1]);
                
$result[$key]["TypeModificator"] = trim($matches[3]);
                
                
//$result[$key]["_"]["Type"]       = $value["FullType"];
                
                
                
if(!key_exists("Length"$value))
                {
                    
$result[$key]["Length"] = $matches[2];
                }
                
                
                
                
$result[$key]["."]              = $matches;
            }
            
//
        
}
        
//
        
return $result;
    }
    
    
    
    
    
    
    
    
    
    
/**
     * Проверка на наличие указаной БД на сервере
     * 
     * @param string $name
     * @param string $reset_cache
     * @return boolean
     */
    
function existsDB($name=NULL,$reset_cache=false)
    {
        static 
$dbs NULL;
        
        if(
$dbs === NULL OR $reset_cache)
        {
            
$dbs $this->getDBs();
        }
        
        if(
$name === NULL)
        {
            
$name =  $this->getDBName();
        }
        
        return 
in_array($name$dbs);
    }
    
    
/**
     * Исполнить запрос на создание базы данных
     *
     * @param string $db_name
     * @param boolean $if_not_exists
     * @return boolean
     */
    
function createDB($db_name='',$if_not_exists=true)
    {
        
$query  =   sprintf(
             
"CREATE DATABASE IF NOT EXISTS %s %s;"
            
,$this->quoteIdentifier($db_name)
            ,
'DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci'
        
);
        return 
$this->ExecQuery($query,false);
    }
    
/**
     * Получение числа записей в таблице выбранной базы данных
     *
     * @param string $db_tablename
     * @param string $db_name
     * @return integer
     */
    
public function getCountDBTableRecords ($db_tablename='',$db_name='')
    {
        
$result =   -1;
        
//
        
if(mb_strlen($db_name) < 1)
        {
            
$db_name      =   $this->getDBName();
        }
        
//
        
$query  =   sprintf(
            
"SELECT COUNT(*) as `num_count` FROM %s.%s;"
            
,$this->quoteIdentifier($db_name)
            ,
$this->quoteIdentifier($db_tablename)
        );
        
//
        //
        
$dbresult   =   $this->ExtendedExecQuery($query,false);
        
//
        
if($dbresult)
        {
            
$row_recordset  =   $dbresult->getCurrentRowRecordset(DBQueryResult::FETCH_MODE_ASSOC);
            
$result         =   $row_recordset["num_count"];
            
$dbresult->free();
        }
        
//
        
return $result;
    }
    
    
/**
     * Получение информации о таблицах базы данных
     *
     * @param string $dbname имя базы данных
     * @return array
     */
    
public function gatherTablesInfo($dbname="")
    {
        
$result =   array();
        
//
        
if(mb_strlen($dbname) < 1)
        {
            
$dbname      =   $this->getDBName();
        }
        
//
        
$query  =   sprintf("SHOW TABLE STATUS FROM %s;",$this->quoteIdentifier($dbname));
        
//
        
$dbresult   =   $this->ExtendedExecQuery($query,false);
        
//
        
if($dbresult)
        {
            while (
$row  =   $dbresult->getCurrentRowRecordset(DBQueryResult::FETCH_MODE_ASSOC))
            {
                
$result[$row['Name']] =   array();
                
$result[$row['Name']]['Name']         =   $row['Name'];
                
$result[$row['Name']]['Data_length']  =   $row['Data_length'];
                
$result[$row['Name']]['Index_length'] =   $row['Index_length'];
                
$result[$row['Name']]['Rows']         =   $row['Rows'];
            }
            
$dbresult->free();
        }
        
//
        
return $result;
    }
    
    
    
    
/**
     * Проверка наличия таблицы в активной базе данных
     *
     * @param string $table_name имя таблицы базы данных
     * @return boolean
     */
    
public function askTableExists ($table_name,$do_dbselect=true)
    {
        
$result =   NULL;
        
//
        
if(mb_strlen($table_name) < )
        {
            return 
$result;
        }
        
//
        
$query  =   sprintf("SHOW TABLES LIKE %s;",$this->quoteString($table_name));
        
//
        
$dbresult   =   $this->ExtendedExecQuery($query,$do_dbselect);
        
//
        
if($dbresult)
        {
            
$result $dbresult->getRowsCount();
            
$dbresult->free();
        }
        
//
        
return $result;
    }
    
    
/**
     * Проверка наличия базы данных на активном сервере
     *
     * @param string $dbname имя базы данных
     * @return boolean
     */
    
public function askDatabaseExists ($dbname)
    {
        
$result =   NULL;
        
//
        
if(mb_strlen($dbname) < 1)
        {
            return 
$result;
        }
        
//
        
$query  =   sprintf("SHOW DATABASES LIKE %s;",$this->quoteString($dbname));
        
//
        
$dbresult   =   $this->ExtendedExecQuery($query,false);
        
//
        
if($dbresult)
        {
            
$result $dbresult->getRowsCount();
            
$dbresult->free();
        }
        
//
        
return $result;
    }
    
    
    
    
    
    
    
    
    
    
    
/**
     * Проверка наличия таблицы в активной базе данных
     *
     * @param string $table_name имя таблицы базы данных
     * @return integer
     */
    
public function TableExists ($table_name,$do_dbselect=true)
    {
        if(!
$this->askTableExists($table_name,$do_dbselect))
        {
            
//return -1;
            
return false;
        }
        
//
        
return 1;
    }
    
    
    
/**
     * Проверка наличия базы данных на активном сервере
     *
     * @param string $dbname имя базы данных
     * @return integer
     */
    
public function DatabaseExists ($dbname)
    {
        if(
$this->askDatabaseExists($dbname))
        {
            return -
1;
        }
        
//
        
return 1;
    }
    
    
    
    
    
/**
     * Добавление нового поля в таблицу БД, если оно отсутствует
     *
     * @param string $tblName имя таблицы
     * @param string $clName имя добавляемого поля
     * @param string $clParams параметры добавляемого поля
     * @param string $PredclName имя поля передшествующего добавляемому
     * @return boolean
     */
    
public function addColumnIfItDoesNotExist($tblName,$clName,$clParams,$PredclName)
    {
        
$result NULL;
        
//
        
$query sprintf(
            
"SHOW COLUMNS FROM %s LIKE %s;"
            
,$this->quoteIdentifier($tblName)
            ,
$this->quoteString($clName)
        );
        
//
        
$dbresult   =   $this->ExtendedExecQuery($query,false);
        
//
        
if($dbresult)
        {
            
$exists $dbresult->getRowsCount();
            
$dbresult->free();
        }
        
//
        
        
if(!$exists)
        {
            
$query 
                 
"ALTER TABLE "." ".$this->quoteIdentifier($tblName)." "
                
."ADD COLUMN {$this->quoteIdentifier($clName)} {$clParams} "
                
."AFTER {$this->quoteIdentifier($PredclName)}"
                
.";"
            
;
            
$result_cmd $this->ExecQuery($query);
            if(!
$result_cmd)
            {
                
$result false;
            }
        }
        
//
        
return $result;
    }
    
    
    
    
    
/**
     * Переключиться на другую БД в текущем <b>подключении</b>
     *
     * Возвращает имя установленой БД
     *
     * @param string $db_name
     * @throws DBException
     * @return string
     */
    
function switchDB($db_name)
    {
        
$this->selectDB($db_name);
        
$this->dbName $db_name;
        
        return 
$this->dbName;
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
/**
     * Получить отчёт о текущем состоянии сервера
     *
     *
     * @param boolean $print
     * @return string
     */
    
function getServerStats($_format="struct",$print=false)
    {
        
        
$result    =  NULL;
        
//
        
$status explode('  'mysqli_stat($this->dbConnection));
        
//Returns a string with the status for uptime, threads, queries, open tables, flush tables and queries per second.
        // For a complete list of other status variables, you have to use the SHOW STATUS SQL command
        
switch(mb_strtolower($_format,"UTF-8"))
        {
            case 
"string" :
            {
                
$result    =  print_r($status,true);
                break;
            }
            case 
"array" :
            case 
"struct" :
            {
                
$result =   $status;
                break;
            }
        }
        
        return 
$result;
    }
    
    
    
    
    
    
    
    
/**
     * Получить отчёт о текущем состоянии сервера
     * 
     * @deprecated use getServerStats
     *
     * @param boolean $print
     * @return string
     */
    
function ServerStats($_format="struct",$print=false)
    {
        return 
$this->getServerStats($_format,$print);
    }
    
    
    
    
    
    
/**
     * Получить лог запросов
     *
     * @return MemoryLog
     */
    
function &getQueryLog()
    {
        return 
$this->_log;
    }
    
    
    
/**
     * Получить ссылку на логгер (SQL) запросов
     *
     * @todo: Написать логгер SQL запросов (запись в файл построчно, с сериализацией, каждого отдельного запроса. заголовок лога? (с отдалочной информацией, в т.ч. и по формату)
     *
     * @return MemoryLog
     */
    
function &getQueryLogger()
    {
    
        return 
$this->_log;
    }
    
    
    
    
/**
     * Формирование информации о выполныенных запросах в соответствии с указанным шаблоном
     * 
     * @deprecated
     *
     * @param string $_rec_tmpl шаблон строки информации о выполненносм запросе (формат sprintf, порядок: порядковый номер, время выполенения запроса, время затраченное на запрос, запрос)
     * @return string
     */
    
public function QueryLogAsText($_rec_tmpl=NULL)
    {
        
$_result =   '';
        
        if(
$_rec_tmpl === NULL)
        {
            
$_rec_tmpl "<br />[<strong>%s</strong>][%s][<strong>&Delta;=%s</strong>][%s]<br />";
        }
        
        
        
#
        #   Рендеринг данных
        #
        
$_data  =   $this->_log->GetRawData();
        
#
        #
        
foreach($_data as $record)
        {
            
$_result .= sprintf(
                
#"<br />[<strong>%s</strong>][%s][<strong>&Delta;=%s</strong>][%s]<br />"
                 
$_rec_tmpl
                
,$record['No']
                ,
$record['DateTime']
                ,
$record['delta']
                ,
$record['Query']
            );
        }
        
#
        #
        
return $_result;
    }
    
    
    
/**
     * Формирование информации о выполныенных запросах в соответствии с указанным шаблоном
     * 
     * @deprecated
     *
     * @param string $_rec_tmpl шаблон строки информации о выполненносм запросе (формат sprintf, порядок: порядковый номер, время выполенения запроса, время затраченное на запрос, запрос)
     * @return string
     */
    
public function renderQueryLog()
    {
        
$_result =   "";
        
//
        
$_data  =   $this->_log->getRawData();
        
//
        
$_result '<table class="table table-bordered table-striped table-hover">';
        
        foreach(
$_data as $record)
        {
            
$_result .= "<tr>";
            
            
$_result .= "<th>".$record['No']."</th>";
            
            
$_result .= "<td>".$record['DateTime']."</td>";
            
            
$_result .= "<td>[<strong>&Delta;=".$record['delta']."</strong>]</td>";
            
            
$_result .= "<td>".\SMC\HTML::TextAsHTML($record['Query'])."</td>";
            
            
$_result .= "</tr>";
        }
        
        
$_result "</table>";
        
//
        
return $_result;
    }
    
    
    
    
    
/**
     * Получить сводку о базе данных (хранилище/источнике)
     * 
     * 
     * @var array $exclude_tables
     * @return array
     */
    
function getSummary($exclude_tables=array())
    {
        
$result = array();
        
//
        
$result["Stats"] = array();
        
$result["Stats"]["nTables"]  = 0;
        
$result["Stats"]["nRecords"] = 0;
        
$result["Stats"]["DataSize"] = 0;
        
//
        
        
        
$DBResult $this->extendedExecQuery("SHOW TABLE STATUS;");
        
        
$tables_info $DBResult->asArray(true);
        
//
        
foreach ($tables_info as $data)
        {
            if(
in_array($data["Name"], $exclude_tables))
            {
                continue;
            }
            
            
$result["Stats"]["nTables"]++;
            
$result["Stats"]["nRecords"] += (double) $data["Rows"];
            
$result["Stats"]["DataSize"] += (double) $data["Data_length"];
        }
        
//
        
$result["Category"] = $this->getCategory();
        
$result["Type"]     = $this->getType();
        
$result["Server"]   = $this->getServerName();
        
$result["Name"]     = $this->getDBName();
        
//
        
$result["Role"]     = $this->getRole();
        
//
        
return $result;
    }
    
    
    
    
    
    
    
    
    
    
    
/**
     * PostgreSQL requires double quotes for identifier (SQL standard)
     * 
     * Both Oracle and MySQL let you use reserved words as object names by representing the name with a quoted identifier. However, MySQL allows some reserved words such as DATE and TIMESTAMP to be used as unquoted identifier for object names, although this is not allowed in Oracle.
     * SQL Developer appends an underscore (_) to the name of a MySQL object that is an Oracle reserved word.
     * 
     * //MySQL allows to use single and double quotes for data and for identifiers
     * //PostgreSQL requires single quotes for data (SQL standard)
     * 
     * @return string
     */
    
function getIdentifierQuotationCharacter()
    {
        switch (
$this->DB_TYPE)
        {
            case 
self::DB_TYPE_POSTGRESQL:
            {
                
// PostgreSQL requires double quotes for identifier (SQL standard)
                
return '"';
                break;
            }
            
            case 
self::DB_TYPE_MYSQL:
            case 
self::DB_TYPE_ORACLE:
            default:
            {
                
//Both Oracle and MySQL let you use reserved words as object names by representing the name with a quoted identifier. However, MySQL allows some reserved words such as DATE and TIMESTAMP to be used as unquoted identifier for object names, although this is not allowed in Oracle. SQL Developer appends an underscore (_) to the name of a MySQL object that is an Oracle reserved word.
                
return "`";
                break;
            }
        }
    }
    
    
    
    
    
    
    
    function 
real_escape_string($string)
    {
        return 
"'".$string."'";
    }
    
    function 
quote_string($value)
    {
        if(
$value === NULL)
        {
            
$value    =   "NULL";
        }
        else
        {
            
//$value    =   "'".$this->real_escape_string($value)."'";
            
$value    =   "".$this->real_escape_string($value)."";
        }
        
//
        
return $value;
    }
    
    
    
    
    
    
    function 
quoteIdentifier($value)
    {
        
$value    =   "`".$this->real_escape_string($value)."`";
        
        
//
        
return $value;
    }
    
    function 
quoteString($value)
    {
        if(
$value === NULL)
        {
            
$value    =   "NULL";
        }
        if(
$value === false)
        {
            
$value    =   0;
        }
        else
        {
            
$value    =   "'".$this->real_escape_string($value)."'";
        }
        
//
        
return $value;
    }
}

[Debug::Bugtrace] - не определена!

#0  __Shutdown_Decorator->renderErrorReport(Array ([type] => 1,[message] => Uncaught *{DB\Exception}:
[1114][The table 'Statistics_RequestJournal_Records' is full]

BD={MySQL}
SQL=[INSERT INTO 
		`Statistics_RequestJournal_Records` 
 (
		`ID`, 
		`GUID`, 
		`POUUID`, 
		`ClassName`, 
		`ParentGUID`, 
		`OwnerGUID`, 
		`timeCreated`, 
		`timeModified`, 
		`timeAccessed`, 
		`Description`, 
		`Comments`, 
		`CodeID`, 
		`VersionString`, 
		`Name`, 
		`Hash`, 
		`Order`, 
		`Active`, 
		`timeSynchronized`, 
		`Owner_GUID`, 
		`Owner_POUUID`, 
		`Owner_ClassName`, 
		`Owner_Active`, 
		`ParentObject_GUID`, 
		`ParentObject_POUUID`, 
		`ParentObject_ClassName`, 
		`ParentObject_VersionString`, 
		`Tags`, 
		`REQUEST_METHOD`, 
		`UNIQUE_ID`, 
		`RequestTime_Start`, 
		`HTTP_SCHEME`, 
		`HTTP_HOST`, 
		`HTTP_URL`, 
		`QUERY_STRING`, 
		`HTTP_REFERER`, 
		`HTTP_REFERER_HOST`, 
		`Request_Headers_JSON`, 
		`SessionID`, 
		`Client_IP`, 
		`Client_UserAgent`, 
		`Client_IsRobot`, 
		`Client_IsSearchEngineCrawler`, 
		`Client_IsVulnerabilityScanner`, 
		`Client_Robot_Type`, 
		`Client_Robot_Fami,[file] => /home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/core.moonlite13.ru/Modules/DBManagement/classes/class.DB_SQL.php,[line] => 654), html) called at [/home/www-master/www/vhosts/htdocs/preload.moonlite13.ru/.preload/classes/Processor.php:492]
#1  __Shutdown_Processor->_DislpayErrorReport(Array ([type] => 1,[message] => Uncaught *{DB\Exception}:
[1114][The table 'Statistics_RequestJournal_Records' is full]

BD={MySQL}
SQL=[INSERT INTO 
		`Statistics_RequestJournal_Records` 
 (
		`ID`, 
		`GUID`, 
		`POUUID`, 
		`ClassName`, 
		`ParentGUID`, 
		`OwnerGUID`, 
		`timeCreated`, 
		`timeModified`, 
		`timeAccessed`, 
		`Description`, 
		`Comments`, 
		`CodeID`, 
		`VersionString`, 
		`Name`, 
		`Hash`, 
		`Order`, 
		`Active`, 
		`timeSynchronized`, 
		`Owner_GUID`, 
		`Owner_POUUID`, 
		`Owner_ClassName`, 
		`Owner_Active`, 
		`ParentObject_GUID`, 
		`ParentObject_POUUID`, 
		`ParentObject_ClassName`, 
		`ParentObject_VersionString`, 
		`Tags`, 
		`REQUEST_METHOD`, 
		`UNIQUE_ID`, 
		`RequestTime_Start`, 
		`HTTP_SCHEME`, 
		`HTTP_HOST`, 
		`HTTP_URL`, 
		`QUERY_STRING`, 
		`HTTP_REFERER`, 
		`HTTP_REFERER_HOST`, 
		`Request_Headers_JSON`, 
		`SessionID`, 
		`Client_IP`, 
		`Client_UserAgent`, 
		`Client_IsRobot`, 
		`Client_IsSearchEngineCrawler`, 
		`Client_IsVulnerabilityScanner`, 
		`Client_Robot_Type`, 
		`Client_Robot_Fami,[file] => /home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/core.moonlite13.ru/Modules/DBManagement/classes/class.DB_SQL.php,[line] => 654), html, 1) called at [/home/www-master/www/vhosts/htdocs/preload.moonlite13.ru/.preload/classes/Processor.php:274]
#2  __Shutdown_Processor->shutdown(int)

Информация о данных текущего запроса


SERVER

Array
(
    [UNIQUE_ID] => ZuiTVIrJsaoAAFo9LBMAAAAU
    [CMF_ML13_MAIN_URL] => http://www.vtatu.ru/
    [ml13_PathTo_HostSystem] => /home/www-master/www/apps/HostSystem
    [ml13_PathTo_SharedApps] => /home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/core.moonlite13.ru
    [ml13_SystemFilesLocationPath] => /home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/core.moonlite13.ru
    [CMF_ML13_SharedCoreMode] => 1
    [HTTPS] => on
    [SSL_TLS_SNI] => vtatu.com
    [SSL_SERVER_S_DN_CN] => vtatu.ru
    [SSL_SERVER_I_DN_C] => US
    [SSL_SERVER_I_DN_O] => Let's Encrypt
    [SSL_SERVER_I_DN_CN] => R10
    [SSL_VERSION_INTERFACE] => mod_ssl/2.4.10
    [SSL_VERSION_LIBRARY] => OpenSSL/1.0.1t
    [SSL_PROTOCOL] => TLSv1.2
    [SSL_SECURE_RENEG] => true
    [SSL_COMPRESS_METHOD] => NULL
    [SSL_CIPHER] => ECDHE-RSA-AES256-GCM-SHA384
    [SSL_CIPHER_EXPORT] => false
    [SSL_CIPHER_USEKEYSIZE] => 256
    [SSL_CIPHER_ALGKEYSIZE] => 256
    [SSL_CLIENT_VERIFY] => NONE
    [SSL_SERVER_M_VERSION] => 3
    [SSL_SERVER_M_SERIAL] => 0428BDF4C0AAE673CCD1852158AA70E0EDED
    [SSL_SERVER_V_START] => Jun 28 20:20:14 2024 GMT
    [SSL_SERVER_V_END] => Sep 26 20:20:13 2024 GMT
    [SSL_SERVER_S_DN] => CN=vtatu.ru
    [SSL_SERVER_I_DN] => CN=R10,O=Let's Encrypt,C=US
    [SSL_SERVER_A_KEY] => rsaEncryption
    [SSL_SERVER_A_SIG] => sha256WithRSAEncryption
    [SSL_SESSION_RESUMED] => Initial
    [HTTP_ACCEPT] => */*
    [HTTP_USER_AGENT] => Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
    [HTTP_ACCEPT_ENCODING] => gzip, br, zstd, deflate
    [HTTP_HOST] => vtatu.com
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    [SERVER_SIGNATURE] => 
Apache/2.4.10 (Debian) Server at vtatu.com Port 443
[SERVER_SOFTWARE] => Apache/2.4.10 (Debian) [SERVER_NAME] => vtatu.com [SERVER_ADDR] => 95.217.151.145 [SERVER_PORT] => 443 [REMOTE_ADDR] => 3.144.227.239 [DOCUMENT_ROOT] => /home/www-master/www/vhosts/htdocs/www.vtatu.ru [REQUEST_SCHEME] => https [CONTEXT_PREFIX] => [CONTEXT_DOCUMENT_ROOT] => /home/www-master/www/vhosts/htdocs/www.vtatu.ru [SERVER_ADMIN] => [no address given] [SCRIPT_FILENAME] => /home/www-master/www/vhosts/htdocs/www.vtatu.ru/diary/index.php [REMOTE_PORT] => 40516 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => UUID=a8f1228e-3d9a-4df2-dcff-343cdf406521&back_url=%2Fuser%2F%3FUUID%3Da8f1228e-3d9a-4df2-dcff-343cdf406521&class=Users%5CUser [REQUEST_URI] => /diary/?UUID=a8f1228e-3d9a-4df2-dcff-343cdf406521&back_url=%2Fuser%2F%3FUUID%3Da8f1228e-3d9a-4df2-dcff-343cdf406521&class=Users%5CUser [SCRIPT_NAME] => /diary/index.php [PHP_SELF] => /diary/index.php [REQUEST_TIME_FLOAT] => 1726518100.079 [REQUEST_TIME] => 1726518100 )

GET

Array
(
    [UUID] => a8f1228e-3d9a-4df2-dcff-343cdf406521
    [back_url] => /user/?UUID=a8f1228e-3d9a-4df2-dcff-343cdf406521
    [class] => Users\User
)

POST

Array
(
)

FILES

Array
(
)

SESSION

Array
(
)

COOKIE

Array
(
)
[]