powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] "Архитектура"
41 сообщений из 41, показаны все 2 страниц
[gt.m] "Архитектура"
    #38962215
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просветите про "архитектуру" gt.m...

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

В Кащее есть БД и области... Как дальше, все вкурсе...

Как какова архитектура в gt.m?
----------
Cache for Windows (x86-64) 2012.2.2 (Build 801) Fri Dec 7 2012 12:08:23 EST
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962253
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962273
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriukrvsa,
Тема была
http://www.sql.ru/forum/1033138/gt-m-nastroyka-direktoriy-i-baz-dannyh?hl=
В этой теме не написано про саму архитектуру... Вот про нее-то и хочется узнать с самого начала.

Там звучит понятие "глобальная директория" это аналог кащейской области? Это просто некая папка линуксовая?
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962315
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот картинка "описывающая" архитектуру ГТ.М



Т.е. есть какие-то файлы... Они разбиты на сегменты... Которые потом собраны в какие-то Regions.
Кто такой Regions?
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962363
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто такой Segments?

Файлы *.dat это базы данных?

Что за файлы *.mjl?
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962385
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЧто за файлы *.mjl?журналирование
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962451
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorkrvsaЧто за файлы *.mjl?журналирование
Одно прояснили.

Интересно узнать про остальное...
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962504
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Можно пойти по этому адресу и скачать AcculturationWorkshop.zip
Там более детально описаны процедуры создания глобальных директорий.
И не только.

http://sourceforge.net/projects/fis-gtm/files/GT.M Acculturation Workshop/0.9/
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962577
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если короче.
Каждой области где находятся наши Глобалы соответствует Regions
Regions-это все что касается свойств Глобалов(длина строки, размер ключа итд...) (смотрите show -region )
Эти параметры можно менять(change -region ... итд)
change -segment
Каждому региону соответствует Segments
Segments -это все что касается файловой системе (размер блока, итд) (смотрите show -segment )
Эти параметры можно менять (change -segment ... итд)

.dat - это база данных (только Глобалы !)
.mjl - журналы баз.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962578
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuМожно пойти по этому адресу и скачать AcculturationWorkshop.zip
Если поговорить про это (архитектуру) нет желающих, остается только "пойти"...
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962593
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuRegions-это все что касается свойств Глобалов(длина строки, размер ключа итд...)
Каждому региону соответствует Segments
Segments -это все что касается файловой системе (размер блока, итд)
Т.е. Regions и Segments физически (в файловой системе Линукса) никак не представлены? Это просто некие "сущности" отвечающие за детальные настройки или описания?

Valeriu.dat - это база данных (только Глобалы !)
.mjl - журналы баз.
Тут понял.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962600
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если перейти к файловой системе...

Что есть "Глобальная директория"? Это линуксовая папка?

Если папка - что будет внутри нее?

С какой целью могут быть созданы те Сегменты и регионы? Т.е. вообще с этим стоит заморачиваться или нет?
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962688
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Т.е. Regions и Segments физически (в файловой системе Линукса) никак не представлены? Это просто некие "сущности" отвечающие за детальные настройки или описания? Выходит так.
Что есть "Глобальная директория"? Это линуксовая папка?да
Если папка - что будет внутри нее?
Например папка: /home/test
baza.dat -
baza.mjl -
baza.gld -
Еще две папки в этой же папки для рутин:
1. /home/test/r - текст самих рутин (routine.m)
2. /home/test/o - обьектные модули рутин (routine.o)
Все это настраиваем в переменные окружения.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962694
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuНапример папка: /home/test
Это и будет глобальная директория?

Valeriu baza.gld
А это кто?
На картинке таких файлов нет...
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962700
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
:) это просто пример

.gld а это информация о директории где находится база(Global Directory)
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38962751
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriuэто просто пример
Так если нет теоретического курса на русском, тогда и примеры могут дать хоть какое-то понятие о изучаемом "объекте"...
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38963403
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
может что-то изменилось - но три года назад было именно так
файл /что-то там.gld - это описание базы данных
(ну там где именно находится собственно база, и ее параметры - размер ключа, размер собственно данных и т.д) - он небольшой 1024 байт
соответствующий ему файл
/что-то там.dat - это собственно база данных
остальные расширения типа \что-то там.log \что-то там.mjl - в общем-то совершенно никому не нужная ахинея требуемая стандартом MUMPS - на них не стоит заморачиваться

С уровнями NAMES, REGIONS, SEGMENTS заморачиваться тоже не стоит -
тут товарищ Blashkar сам себя перехитрил - попробовал объять необъятное
и в общем-то реализовал - но как пользоваться наверное только он и знает
NAMES - если грубо - то можно задавать диапазоны - типа от ^А*** до ^К*** хранится - там (в одном файле xxx.dat) а от ^L*** до ^Z*** совсем не там - в другом файле (yyy.dat)
очень сомневаюсь что на практике это используется где нибудь
REGION - описание параметров базы данных
1. Размер ключа (не знаю как сейчас, а совсем недовно было всего 55 символов)
что такое размер ключа
^ZZZ("qqqq","wwwww","eeee") - это ключ
размер ключа - длина этой строки
(если не ошибаюсь включая первый ^ и кавычки
2. размер записи - если, скажем record_size=4080 то это размер записи вместе с ключем
сменить примерно так
$gde -region DЕFAULT -key_size=255 -record_size=4080

SЕGMENT - в общем-то неудачная попытка сделать кипы подобные MSM
тут можно подключать к одному *.gld несколько *.dat - и когда-то при проводимых экспериментах у меня это получалось - сейчас не вспомню как да и не нужно
сменить примерно так
$gde change -segment DEFAULT -block_size=4096 -allocation=5000 -extension=10000 -global_buffer_count=1000 -file_name=\что-то там

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


посмотрите визуально просмотром на ваш файл что-то там.gld
Вы увидите там среди всего прочего ссылку на файл .\что-то там.dat
.\ - означает - в текущем каталоге - и это бомба замедленного действия
ДОЛЖЕН БЫТЬ ПОЛНЫЙ ПУТЬ что-то типа
\usr\каталог1\каталог2\каталог2\что-то там.dat
и для этого нужна та самая опция при создании базы данных
-file_name=\usr\каталог1\каталог2\каталог2\что-то там.dat

Резюме
1. Делаем свой профиль для создания базы данных
2. NAMES, REGION, SEGMENT не заморачиваемся - все DEFAULT, за исключением
вышесказанного

и все-таки можно сделать что-то подобное КИПАМ MSM
роли КИПов выполняют каталоги линукса
КИП1=\usr\каталог1\каталог2\КИП1\
КИП2=\usr\каталог1\каталог2\КИП2\
КИП3=\usr\каталог1\каталог2\КИП3\
КИП4=\usr\каталог1\каталог2\КИП4\
В КИПАХ лежат файлы *.m *.o программ и файлы КИП1.gld КИП1.dat
в программах вместо $view при переходе в КИП используете
для программ конструкцию $zr=\usr\каталог1\каталог2\КИП2\
для глобалов $zg=\usr\каталог1\каталог2\КИП2\файл.gld
или , как альтернативу полную глобальную ссылку
^[\usr\каталог1\каталог2\КИП2.gld]global
причем выражение в скобках может быть переменной
s A="\usr\каталог1\каталог2\КИП2.gld"
s B=^[A]global
























SEGMЕNT - тут мне кажется попытка реализовать MSM-овские кипы





все по умолчанию

за исключением параметров базы данных - а именно
1. Размер ключа (не знаю как сейчас, а совсем недовно было всего 55 символов)
что такое размер ключа
^ZZZ("qqqq","wwwww","eeee") - это ключ
размер ключа - длина этой строки
(если не ошибаюсь включая первый ^ и кавычки
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38963413
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И скачайте с сайта Евгения Каратаева minimdb.com
мой alt-nc
Во первых он прекрасно работает c gt/m
Во вторых вы там найдете в фале %aZGTM реализацию многих функций
о котрорых тут задавались вопросы
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38963536
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за такое подробное описание!
Картинка стала складываться.

Удивило, что "размер ключа" всего 55 символов... Думал, что в "стандарте" это таки 255.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38963729
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew000999NAMES - если грубо - то можно задавать диапазоны - типа от ^А*** до ^К*** хранится - там (в одном файле xxx.dat) а от ^L*** до ^Z*** совсем не там - в другом файле (yyy.dat)
очень сомневаюсь что на практике это используется где нибудьНе знаю, как в GT.M, а в Cache' подобная функция (namespace global mapping) достаточно востребованная: отобразить в БД CACHETEMP временные глобалы/подглобалы с "нетемповыми" именами - святое дело. Кашисты хорошо знают достоинства CACHETEMP, не знаю, есть ли аналог в GT.M.

Другая возможная причина - отправить глобал(ы), в которые идёт активная запись, но редкое чтение, в отдельную БД, которая находится на физически отдельном томе, чтобы не замедлять доступ к основной БД. Приходилось и такое делать.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964025
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovДругая возможная причина
И еще одну добавлю: вынести определённые глобалы, данные в которых должны быть общими для группы различных областей, в одну отдельную базу.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964030
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П.С.М.И еще одну добавлю: вынести определённые глобалы, данные в которых должны быть общими для группы различных областей, в одну отдельную базу.
Какой выигрыш это дает?

Напомню так же, что тут про ГТ.М и там нет понятия области.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964041
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же дополнительно спрошу про отдельные файлы с глобалами...

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

Или для ГТ.М все равно где находятся такие файлы? Все решается банальным описанием "переменных окружения"?
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964254
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Или для ГТ.М все равно где находятся такие файлы? Все решается банальным описанием "переменных окружения"?
Примерно так, но я думаю какой-то порядок для самого себя надо соблюдать. Если у вас на Линухе много пользователей прописано, тогда в файле /home будут присутствовать папки с ихними именами ...
Например пользователь zapl (допустим здесь пользователю(ям) что имеют отношения к заработной плате) будет соответствовать папка /home/zapl
Вот для этой папки пишите свои "переменных окружения" . Это для порядка и наглядности.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964269
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все правильно
GT.M все равно где находятся файлы базы данных
и доступ к ним через переменную окружения gtmgbldir
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964339
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew000999Все правильно
GT.M все равно где находятся файлы базы данных
и доступ к ним через переменную окружения gtmgbldir
Ясно.
Т.о. понятие "глобальной директории" это, в общем смысле, просто понятие, некая объединяющая сущность. И к "линуксовой папке в которой все и лежит" имеет опосредованное отношение.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964342
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriuно я думаю какой-то порядок для самого себя надо соблюдать
Разумеется.
Просто для создания того "порядка" хотелось бы прояснить для себя, что вообще можно будет построить...
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964671
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет
понятие "глобальной директории" происходит в общем-то
от лени и нежелания разобраться с документацией
я думаю процентов 90 пользователей GT/M тупо используют ОДИН файл базы данных
сваливая в него десятки тысяч глобалов (я о реализации Висты (в америке так называется
крутейшее (общенациональная) программное обеспечение ветеранов ихних вооруженных сил там, изначально реализованное на MUМPS когда я мальчишкой был.
Суть:
есть некая директория где лежит запускаемый профиль GTM
скажем
/usr/gtm/profile
если
в этом же каталоге лежат программы *.m *.о
и тут же лежит mumps.gld и mumps.dat (кстати названия файлов менять можно как хочешь)
то этот сценарий особо одаренные и называют "глобальная директория"
нет такого понятия в GT/M
в переменной окружения gtmgbldir можно задавать что угодно - любой существующий файл
/что-то/что-то/что-то.gld
и тут сразу подводный камень
по умолчанию программа *GDE создаст в файле /что-то/что-то/что-то.gld в соответсвующей позиции строку ./mumps.gld
которая означает - ишем mumps.dat в текущем каталоге
но мы то запускали профиль из каталога /usr/gtm/profile и текущий в общем то он
и нет там никакого mumps.dat и ошибка - а нет такого mumps.dat


Резюме - это пояснение того почему нужно про проектировании базы данных GT/M ВСЕГДА использовать полный путь к файлу.dat

как это делается - в предыдущем посте
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964682
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
немного соврал
есть такое понятие как глобальная директория
расширение *.gld это в общем-то и означает global directory
но суть того что я сказал - это не меняет
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964779
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew000999немного соврал
есть такое понятие как глобальная директория
расширение *.gld это в общем-то и означает global directory
Т.е. реально линуксовая папка где располагается "запускаемый профиль GTM"?
Теперь правильно?
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964782
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew000999нужно про проектировании базы данных GT/M ВСЕГДА использовать полный путь к файлу.dat
Заметано! Будем всегда и у всего использовать полный путь.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964857
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лень опровергать конкретные неверные представления, поэтому просто скажу так:
-глобальная директория (ГД) это файл, где, помимо всего другого, присутствует связь имен глобалей с файлами, где они размещаются.
-есть переменная окружения с путём на ГД (при старте же надо определить где текущие глобали находятся), есть системная переменная с путем на текущую ГД, которой разрешено присваивание
-можно иметь доступ по полной ссылке '^|всякие_разные_ГД|имя'
-в зависимости от использования полных,относительных или вообще без путей, использования иных переменных окружения в путях к ГД, в путях к файлам в самой ГД, можно наворачивать всяко разное.

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

Насчёт длины ключа.
Есть длина по умолчанию при создании ГД, а есть максимально возможная, так вот она в текущей версии равна 1019 байт, а не 55 или 64 или ещё какие мелькавшие числа в дискуссии. Ведь, если включить соображалку, как можно представлять о таких маленьких значениях с учётом уникод-версий gt.m :)

Господа программисты, призываю не фантазировать, оставив это дело менеджерам, а читать документацию, что и должен делать инженер :)
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964863
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
У меня скрипты для перемещениям по директориям(базам,uci как хотите называете)
стоят отдельно в папке где установил дистрибутив(допустим папка /usr/gtm603/uci)
Т.е. сколько у меня баз-столько и скриптов и естественно столько и папок
соответственно в /home/nameDB.
При вызове этих скриптов, мы и перемещаемся по областям.
Конечно процесс еще имеет дополнительные особенности, но суть в этом.
Например одна из база для работы с персоналом(cadre)
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
##################### Script file text(source file) ######################
cd /home/cadre
gtm_dist="/usr/gtm603"; export gtm_dist
gtmgbldir="/home/cadre/cadre.gld" ; export gtmgbldir
if [ "$gtm_chset" = "UTF-8" -o "$gtm_chset" = "utf-8" ] ; then
        if [ -e $gtm_dist/utf8 ] ; then
                gtm_dist="$gtm_dist/utf8"; export gtm_dist
        fi
fi
gtmroutines="/home/cadre/o(/home/cadre/r) /usr/gtm603"; export gtmroutines
gtm="$gtm_dist/mumps -direct"; export gtm
mupip="$gtm_dist/mupip"; export mupip
lke="$gtm_dist/lke"; export lke
gde="$gtm_dist/mumps -r ^GDE"; export gde
dse="$gtm_dist/dse"; export dse
PATH=$PATH:$gtm_dist
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964897
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca-глобальная директория (ГД) это файл, где, помимо всего другого, присутствует связь имен глобалей с файлами, где они размещаются.
Ясно.

gluconat_caГоспода программисты, призываю не фантазировать, оставив это дело менеджерам, а читать документацию, что и должен делать инженер :)
Я не могу читать литературу на аглицком языке. Всего-то...

Если есть что-то на русском - поделись, я с удовольствием почитаю.
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964909
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_caНасчёт длины ключа.
Есть длина по умолчанию при создании ГД, а есть максимально возможная, так вот она в текущей версии равна 1019 байт
Про максимальную понятно... А какова длина по умолчанию?
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38964954
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
64 по умолчанию
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38965743
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
55 по умолчанию
а Вас теория
а я на практике пробовал
правда очень давно - лет 10 назад
цикл у меня закончился на цифре 55
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38965745
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О чем спорим
это ведь легко проверить простым циклом - до возникновения ошибкм
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38965750
andrew000999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил
я не прав
моя программа не считала запятые
в итоге все таки 64 минимальный ключ
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38965753
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew000999,
Правильно.
-K[EY_SIZE]=size (bytes)
DEF - 64
MIN - 3
MAX - 1,019
...
Рейтинг: 0 / 0
[gt.m] "Архитектура"
    #38965756
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В доке
минимальное значение - 3
64 - по умолчание
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] "Архитектура"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]