powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Модульность ИС
28 сообщений из 28, показаны все 2 страниц
Модульность ИС
    #34169135
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал в ветке Delphi тему о плагинах. С другой стороны мне эта тема интересна не толька в рамках одного языка, а в целом. Собственно вопрос такой - какие факторы и как они влияют на выбор разработчиком или архитектором той или иной технологии построения системы, а конкретно обеспечения ее наращиваемости.

Приведу оригинальный пост
авторТак как давно занимаюсь разработкой масштабирумых систем, вопрос по наращиванию и управлению функционалом приложений интересовал и интересует по сей день. В обзорах статей и собственной практике встретил несколько вариантов обеспечения расширяемости/настраивоемости. Исходные данные беру такие - есть некая ИС, в которой должен быть движок, управляющий поведением приложения. Требуется построить систему плагинов таким образом, чтобы функционал можно было расширять средствами самой ИС и(или) с помощью Delphi. Кросплатформенность и многоязыковость в большинстве случаев не нужна, но вот хотелось бы, я думаю меня поймут, чтобы поддерживались различные версии Delphi. Т.е. основное приложение пусть написано на D5, но вот плагины могли бы быть и на D6, D7 и т.д.

1) Скриптовый язык. По своей сути предоставляет командный интерфейс для манипулирования объектами приложения. Если к скриптовому движку приладить еще и дизайнер форм, то можно рисовать формы документов(делаем поправку на то что я занимаюсь ИС, в основном формы - это документы) не отходя от кассы. Из плюсов можно отметить то, что скрипты раз написанные будут работать оч.долго и не требуют привязки к версии программы. Здесь я имею ввиду то, что в большинстве случаев функционал программы будет пополнятся новыми функциями и написание этих функций не вызовет потребности пересмотра скрипта. Минусы очевидны - создать полноценную среду для разработки приложений сложно, для этого нужно сного опыта и сил, тем более когда есть полноценные IDE, которые давно написаны и протестированы.

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

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

4) BPL - пакеты. Специфичные библиотеки для Delphi-програм. Работают замечательно, вдобавок можно интегрировать со средой. Плюсы - расширяемы, наращиваемы. Минусы: любые изменения базовых классов и интерфейсов влекут за собой цепочку перекомпиляций зависимых модулей. Во-вторых написанные на одной версии Дельфи пакеты могут и не "поехать" с другой версией. Т.е. если пишем на D5, уж извините, тогда все все делаем на нем.

5) COM - plugins. По типу того как это реализовано в МС Офисе. Плюсы: Наращиваемо, при использовании диспинтерфейсов не возникает проблем со сменой версии интерфейса. Очень легко наладить связь между плагином и движком приложения. Минусы: работа с объектами требует определенных навыков и знаний, тем более, что многие разработчики считают, что в Дельфи не лучшим образом реализована поддержка COM. Второй минус - невозможность поддерживать разные версии библиотек, потому как они "железно" регистрируются в реестре. Еще важным минусом считаю то, как в COM реализована поддержка событий.

6) Интерфейсные BPL, DLL. Некий гибрид COM и DLL. Работа плагинов реализована не на доступе к компонентам, а доступе к объектам через интерфейс. Плюсы: нет привязки к версии Дельфи - плагин может быть скомпилирован на любом Дельфи, расширяемость тоже на высоте. Минусы - по принципу это теже DLL, COM-ограничен использованием регламентированных интерфейсов, про диспинтерфейсы можно забыть.

Хотелось бы услышать, кто какие технологии применяет для своих задач, или может быть их комбинации.
Какие доводы в пользу каждой из технологий можете привести?
Какую считаете более перспективной?
---
aka VIR. No pity. No mercy. No remorse. No Regret
...
Рейтинг: 0 / 0
Модульность ИС
    #34170114
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Infernal V. Ravenкакие факторы и как они влияют на обеспечения наращиваемости.
Способы наращиваемости в порядке применения:
1. Настройка штатными средствами, разработка отчетов штатными средствами
2. Написание обработчиков на встроенном языке по регламентам системы
3. Написание новых функциональных модулей средствами системы
4. Написание новых модулей сторонними средствами
...
Рейтинг: 0 / 0
Модульность ИС
    #34171586
alex108
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лично я решил вопрос маштабируемости достаточно станадартно.
Написано приложение, которое общается с сервером в специальном XML-протоколе.
Вся логика на сервере, весь интерфейс генерится на сервере и передается в виде XML клиенту, который его интерпретирует. Новые задачи - без изменения клиента - создаются мгновенно.
Клиент написан на powerbuilder, сервер Oracle.
Что-то типа XAML, XUL...
...
Рейтинг: 0 / 0
Модульность ИС
    #34176983
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод Infernal V. Ravenкакие факторы и как они влияют на обеспечения наращиваемости.
Способы наращиваемости в порядке применения:
1. Настройка штатными средствами, разработка отчетов штатными средствами
2. Написание обработчиков на встроенном языке по регламентам системы
3. Написание новых функциональных модулей средствами системы
4. Написание новых модулей сторонними средствами

1) Встроенный генератор отчетов? Тот же Crystal
2) Нужен ли встроенный язык, ведь его разработка весьма затруднена и дорогостоящая по мат. и временным затратам.
3) Это следует из 2)? Если нет то каким образом?
4) Логично
...
Рейтинг: 0 / 0
Модульность ИС
    #34176987
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex108Лично я решил вопрос маштабируемости достаточно станадартно.
Написано приложение, которое общается с сервером в специальном XML-протоколе.
Вся логика на сервере, весь интерфейс генерится на сервере и передается в виде XML клиенту, который его интерпретирует. Новые задачи - без изменения клиента - создаются мгновенно.
Клиент написан на powerbuilder, сервер Oracle.
Что-то типа XAML, XUL...Тут просматриваются сложности с реализацией такого протокола, а во вторых наращиваемости нестандартного функционала. Кстати как дела со скоростью?
...
Рейтинг: 0 / 0
Модульность ИС
    #34177139
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Infernal V. Raven1) Встроенный генератор отчетов? Тот же Crystal
Если он штатный для системы, то да.
Infernal V. Raven2) Нужен ли встроенный язык, ведь его разработка весьма затруднена и дорогостоящая по мат. и временным затратам.
Нужен, но в качестве такого языка лучше всего использовать какой-нибудь стандартный язык по правилам системы.
Написание новых модулей несколько шире чем просто вставки на языке - нужны еще правила оформления, подключения модулей, новые таблицы в БД, взаимодействие с другими модулями и т.д.
...
Рейтинг: 0 / 0
Модульность ИС
    #34177995
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую поискать по фразе "Hosting CLR" - не для дельфы, но вариант хороший.
...
Рейтинг: 0 / 0
Модульность ИС
    #34217471
stokito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это очень серйозная проблема.
Во первых нужно всё максимально делать на серваке. На каждую фигню заводите хранимую SQL процедуру. Тобто в самой программе меньше кода для работы с базой. Это так делается в фирме гда я сейчас работаю. Очень удобно для проверок. Но тысяча хранимых процедур понятность базы аж не улучшают. И потом ищеш вспоминаеш что куда ты всунул и откуда не высунул. Тогда при изминении вы сразу можете увидеть что где начало глючить.
Делать свой внутрений язык - глупо.
И все программы нужно делать модульными. Причём не просто модульными, а полностью! ЧТобы в exe'шнике ничего не было, кроме движка для плагинов. А сама функциональность приложения определяется модулями и их настройками.
Такой принцип применяется в Миранде. Обязательно изучите её структуру. Может она не совершенна, но многое ими уже разработано.
Но есть разработка фирмы IBM Eclipse. IBM в неё вгрохала 40 лимонов $ и открыла исходники.
Так вот - это самый крутой движок для разработки модулей. Круче миранды. Так что почитайте про неё. Я и сам скоро займусь её изучением
...
Рейтинг: 0 / 0
Модульность ИС
    #34217796
AIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник у меня такой вопрос по данной теме к людям, у которых реализована система с главным приложением в виде основы для подключения плагинов, и самими плагинами, реализующие различные действия с БД. Как реализован доступ к БД у плагинов, т.е. в каждом плагине реализованы свои подключения к БД (для примера, TADOConnection), компоненты для доступа и т.п., либо каким то образом используются компоненты основного приложения?


программист со знанием фотошопа
...
Рейтинг: 0 / 0
Модульность ИС
    #34217910
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIMВозник у меня такой вопрос по данной теме к людям, у которых реализована система с главным приложением в виде основы для подключения плагинов, и самими плагинами, реализующие различные действия с БД. Как реализован доступ к БД у плагинов, т.е. в каждом плагине реализованы свои подключения к БД (для примера, TADOConnection), компоненты для доступа и т.п., либо каким то образом используются компоненты основного приложения?


программист со знанием фотошопа
2 ответа:
- По слухам MS рекомендует делать коннект к серверу на короткое время (компонент TADOConnection лежит на форме и коннект открывается на открытие конкретной формы).
- Но МОДУЛЬНОСТЬ требует все доступы к БД делать через отдельный модуль. Например у нас это COM-объект с TADOConnection и ADOCommand и ADODataSet в одном флаконе. Если много потоков, то там-же пул коннектов.

Что выбрать каждый решает сам, чтобы не делать винегред из технологий :).
"Сложнее всего в мире достигнуть простоты - это крайняя граница опыта и последнее усилие гения".
George Sand.
...
Рейтинг: 0 / 0
Модульность ИС
    #34217927
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stokito
ЧТобы в exe'шнике ничего не было, кроме движка для плагинов. А сама функциональность приложения определяется модулями и их настройками.

ага!
В exe нет ничего, а зачем он тогда нужен?

EXE + плагин_главное_меню + плагин_контекстное_меню+ плагин_горячие_клавиши+ плагин______
?
ЗЫ. Модульность могут себе позволить "большие" коллективы разработчиков.
...
Рейтинг: 0 / 0
Модульность ИС
    #34218701
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ЗЫ. Модульность могут себе позволить "большие" коллективы разработчиков.
Мне кажется, Вы черезчур абсолютизируете собственный опыт, когда, судя по взгляду со стороны, вы заложили просто слишком громоздкую, слишком тяжелую для конкретного случая технологию.

Я сейчас позволил себе некоторые элементы модульности в проекте на три человека, и результат уже серьезно радует.
...
Рейтинг: 0 / 0
Модульность ИС
    #34218894
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Petro123ЗЫ. Модульность могут себе позволить "большие" коллективы разработчиков.
Мне кажется, Вы черезчур абсолютизируете собственный опыт, когда, судя по взгляду со стороны, вы заложили просто слишком громоздкую, слишком тяжелую для конкретного случая технологию.

Я сейчас позволил себе некоторые элементы модульности в проекте на три человека, и результат уже серьезно радует.
истина, она посередине опыта твоего и моего IMHA :)

Даже клиен-серверная технология не везде нужна, не говоря уже о плагинной ....

авторМне кажется, Вы черезчур абсолютизируете собственный опыт,

======
- в том что плагины это не ПУСТОЙ exe + плагины?
- в том что плагины это не самоцель и не любому приложению они нужны?
- в том что нужность плагинов надо обосновывать из бизнес-требований заказчика а не ВИДЕНИЕМ или ЛЮБОВЬЮ архитектора к плагинам?

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

====== да, см.выше.

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

===== значит см.выше у тебя по другому. И потом, ведь у тебя плагины не на COM?
...
Рейтинг: 0 / 0
Модульность ИС
    #34218907
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуй наиболее распространённый подход - клиент-сервер.
Разрабатываем множество компонентов - форм. Формы взаимодействуют с СУБД, которая является скелетом системы.
В масштабе целой системы такой подход позволяет наращивать её функции любыми средствами практически безгранично.

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

Иногда проще создать, протестировать и сопровождать нестолько версий EXE, чем кучу компонентов, которые могут соединяться в огромном количестве самых непредсказуемых конфигураций.
...
Рейтинг: 0 / 0
Модульность ИС
    #34219009
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
+1
...
Рейтинг: 0 / 0
Модульность ИС
    #34220316
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Даже клиен-серверная технология не везде нужна, не говоря уже о плагинной ....
Безусловно. С этим я и не собираюсь спорить; я исключительно о попытке ограничить технологию "большими командами" (далее подразумевается, что у этих команд есть лишнее время и лишние деньги, а вот нам, сирым, приходится заниматься делом).
...
Рейтинг: 0 / 0
Модульность ИС
    #34220742
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Infernal V. Raven

По поводу модульности свои мысли изложил здесь:

http://www.gotdotnet.ru/LearnDotNet/NETFramework/223738.aspx - постановка заачи, статья

http://www.gotdotnet.ru/Downloads/Examples/401713.aspx - реализация центра управления
сообщениями(ЦУС), включая и реализацию сервера коммуникаций. Все написано на C#. Проекты и исходники.

http://www.gotdotnet.ru/Downloads/Examples/408575.aspx - реализация сервера приложений в среде прототипа.

В основе лежит ЦУС, сервера коммуникаций и пул серверов приложений.

С уважением, Владимир.
...
Рейтинг: 0 / 0
Модульность ИС
    #34220815
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О господи, опять эта затычка.

Вы хоть с согласованностью данных-то разобрались? Или до сих пор предлагаете считать важные отчеты только по ночам, когда все спят и данные никто не меняет?
...
Рейтинг: 0 / 0
Модульность ИС
    #34220843
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer
>О господи, опять эта затычка.

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

С уважением, Владимир.
...
Рейтинг: 0 / 0
Модульность ИС
    #34220852
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевУважаемый,
терпимее пожалуйста к чужим идеям и мыслям (они могут быть и ошибочны, но на то и дискуссия) ,
Видите ли, любезный, с изрядной натяжкой, но я готов считать неграмотность "идеями и мыслями". К чему я не собираюсь быть терпимым, так это к тому, что одна и та же неграмотность, на которую уже не раз указывали, вылезает вновь и вновь в неизменном виде. Будучи "словесно опровергнутым, но неубежденным" Вы просто выдерживаете карантинный период молчания, после чего вновь вылезаете. По-моему, я уже говорил Вам, что Вы второй после ЧАЛа [не будем поминать его всуе, еще накличем], кто придерживается подобной методики.
...
Рейтинг: 0 / 0
Модульность ИС
    #34221334
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно вставить и свое ИМХО?

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

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

Фантазия? Нет. Так построена конктретная система БАС , которая исопользуется для различных задач. Действительно одна и та же база данных, один и тот же экзешник, но используются для, казалось бы, совершенно разных задач: бухучет, склады, зарплата, экономическая подготовка производства, производственный учет, биллинговые системы для работы с населением и юридическими лицами, банковские платежи и т.п. Здесь методика, которая лежит в ее основе . Потом уже языки, базы данных и т.п.
...
Рейтинг: 0 / 0
Модульность ИС
    #34221881
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP
Фантазия? Нет. Так построена конктретная система БАС ,
по той ссылке нет ничего, что бы раскрыло мрхитектуру модульности в БАС.
Просто статья про ООП в построении архитектуры. Только почему то это обозвали новыми терминами - Элементарный объект, Элементарная операция .

IMHO Все объектно-ориентированные методы, например, ООАП / OOAD (Object oriented Analysis & Design) построения приложений имеют понятия "элементарный объект".
...
Рейтинг: 0 / 0
Модульность ИС
    #34222038
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPМодульность это путь, посредством которого достигается масштабируемость.
При столь мощной фразе не лишним выглядело бы определение масштабируемости, которое Вы подразумеваете.

PVPМасштабирование - это возможность наращивания или урезания системы в зависимости от потребности без каких либо существенных переделок.
Это оно?

PVP Фантазия? Нет. Так построена конктретная система
Пошла реклама.

Нет, это не фантазия, о чем толковые авторы говорили еще за двадцать лет до появления конкретной системы. Что дальше?
...
Рейтинг: 0 / 0
Модульность ИС
    #34223338
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 PVP
Фантазия? Нет. Так построена конктретная система БАС ,
по той ссылке нет ничего, что бы раскрыло мрхитектуру модульности в БАС.
Просто статья про ООП в построении архитектуры. Только почему то это обозвали новыми терминами - Элементарный объект, Элементарная операция .

IMHO Все объектно-ориентированные методы, например, ООАП / OOAD (Object oriented Analysis & Design) построения приложений имеют понятия "элементарный объект".
Нет, здесь нет речи о методах программирования. К стати, ООП я вообще не владею, только слышал :). Речь идет о том, что надо задачу формализовать и потом уже на основе полученной формализации делать систему. Утрированный пример: формулу программировать проще, чем писать правила с помощью "если-то-иначе".
На счет модульной структуры БАС - посмотрите руководство программиста. В нем она подробно описана. Общая идея простая - каждый модуль - своя база. Создать новый модуль, значит скопировать наиболее похожую базу, удалить лишние настройки и добавить новые. Межмодульные связи реализуеются процедурами, обслуживающими те операции, где эти связи возникают.
...
Рейтинг: 0 / 0
Модульность ИС
    #34223345
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer PVPМасштабирование - это возможность наращивания или урезания системы в зависимости от потребности без каких либо существенных переделок.
Это оно?Да, с учетом приставки IMХО

softwarer PVP Фантазия? Нет. Так построена конктретная система
Пошла реклама.Да, есть немножко, уж простите. Но если посмотреть в контексте темы топика, то при желании, можно и не относить к рекламе. :)
...
Рейтинг: 0 / 0
Модульность ИС
    #34223377
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP Но если посмотреть в контексте темы топика, то при желании, можно и не относить к рекламе. :)
К рекламе я бы не относил фразу, скажем, "мы делаем вот так", здесь же направленность... прослеживается.

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

- у заказчика#1 есть модули А, Б и связь между ними
- у заказчика#2 есть модуль А
- у заказчика#3 есть модули А', Б' и связь' между ними
- у заказчика#4 есть модули А", Б" без связи между ними

?
...
Рейтинг: 0 / 0
Модульность ИС
    #34223455
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerА в контексте темы топика, признаться, я вижу одно существенное "но": автор спрашивает о плагинах-настройках-средствах конфигурационного управления, а Вы говорите по сути "берем наиболее похожее и адаптируем"А я вопрос не так понял. Давайте на него еще раз посмотрим Infernal V. RavenСобственно вопрос такой - какие факторы и как они влияют на выбор разработчиком или архитектором той или иной технологии построения системы, а конкретно обеспечения ее наращиваемости.
...
Рейтинг: 0 / 0
Модульность ИС
    #34223462
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer- у заказчика#1 есть модули А, Б и связь между ними
- у заказчика#2 есть модуль А
- у заказчика#3 есть модули А', Б' и связь' между ними
- у заказчика#4 есть модули А", Б" без связи между ними?Если в системе используются модули А и Б, то связи между ними не зависят от заказчика.
Но, если ближе к жизни, то даже один и тот же модуль, может содеражать, по требованию заказчика, дополнительные элементы. И между дополнительными элементами в разных модулях могут потребоваться дополнительные связи. От этого ни куда не деться. Но вот задача, что бы при добавлении новых связей не надо было трогать существующие, это реальная.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Модульность ИС
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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