Недавно я с удивлением обнаружил, что, оказывается, толковых туториалов по Oracle Application Express (он же APEX, он же апекс, но не путать с языком apex, который используется в Salesforce) в природе не существует.
Это не самая распространенная технология, конечно, но, тем не менее, довольно востребованная. Есть десятки блогов об апексе (англоязычные, в основном), пара тысяч вопросов на Stackoveflow, специальный раздел по апексу на официальных форумах оракла, сам апекс существует уже 15 лет и все время развивается. Я был уверен, что и хороших туториалов полно. Но нет!
Мне тут же пришла в голову гениальная мысль восполнить этот пробел.
Оглавление
Почему существующие туториалы — плохие
Вводная информация
Обзор IDE
App builder
Страница приложения
Application properties
Shared Components
Page Designer
SQL Workshop
Object Browser
SQL Commands
Почему существующие туториалы — плохие
Я немного поясню, почему я считаю существующие туториалы плохими. Апекс — это не язык программирования, это такой очень высокоуровневый инструмент разработки, ближайшим идейным аналогом которого я бы назвал MS Access. Соответственно, большая часть разработки на апексе состоит из работы с веб-интерфесом этой среды: нажимания на кнопки, перехода по ссылкам, заполнение полей с названиями компоментов, выбора значений из списков и так далее. Что делает типовой туториал? Он показывает скриншоты этих самых экранов с подписями "нажмите туда-то". При этом сама IDE достаточно удобная и понятная, почти все элементы снабжены справочными пояснениями, есть встроенная помощь. В итоге, если нужно объяснить пользователю, как создать приложение, в туториале будет большой скриншот, объясняющий, как нажать на кнопку "Create a new app". Вот, посмотрите сами на официальный оракловый туториал:
Они бы еще объяснили со скриншотами, что "клик" — это однократное нажатие на левую кнопку манипулятора типа "мышь".
Конечно, полезная информация в таких туториалах тоже есть, но ее там крохи. Процентов на 80 туториалы состоят из таких вот скриншотов, причем по своему опыту я могу сказать, что человек, не читавший никаких туториалов вообще, самостоятельно найдет, как создать приложение, добавить страницу, поместить на нее отчет и так далее. А потом ему нужно будет организовать более-менее нетривиальное взаимодействие нескольких элементов апекса, и оказывается, что этот вопрос туториалом почти не покрывается. Приведу аналогию: вы только-только учитесь программировать, изучили переменные, массивы, циклы, условия, и получили задание, в рамках выполнения которого вам нужно отсортировать массив. Как-то отсорировать массив — достаточно просто, но как только задание усложнится до "отсортировать большой массив быстро", окажется, что имеющихся у вас знаний недостаточно. Погуглив, покопав Stackoverflow и форумы, вы найдете алгоритм быстрой сортировки. Конечно, кто-то и сам переизобретет этот алгоритм рано или поздно, но более эффективным путем было бы сразу прочитать книжку с разбором типовых алгоритмов. И вот как раз такого набора "типовых алгоритмов" для апекса обычно нигде нет, а на помощь приходят те же самые метод научного тыка, поисковики, форумы и Stackoverflow (и, я надеюсь, этот туториал).
Вводная информация
Предполагается, что читатель знаком с Oracle Database версии хотя бы с 11-й, SQL, PL/SQL и особенно с тем, что такое EXECUTE IMMEDIATE
и как оно работает.
IDE апекса значительно изменилась при переходе с версии 4.2 на 5.0 (релиз был как раз 4 года назад, в марте 2015-го). С тех пор IDE меняется мало, но иногда добавляются новые возможности. Я буду делать скриншоты на apex.oracle.com, где сейчас установлена версия 19.1, но если у вас где-то используется более ранняя версия (5.х, 18.х), вы без труда найдете нужный элемент, если только он не появился в более поздней версии, чем ваша.
Я начну с обзора наиболее часто используемых разделов IDE. Я тоже покажу несколько скриншотов. Куда же без них, раз всё здесь сделано из визуальных компонентов. Но их будет не так много, как в плохих туториалах, и в основном они будут в начальных главах, а дальше я буду просто указывать название раздела IDE, в котором находятся необходимые вещи. Сразу обращу ваше внимание, что это просто первое знакомство с IDE. Более подробная информация о том, когда на какую кнопку нажимать и где что смотреть, будет дана дальше, когда я перейду к конкретным темам.
Поехали.
Обзор IDE
Стартовый экран, который вы увидите сразу после входа в IDE:
Главные элементы здесь — это 4 большие кликабельные картинки:
- App Builder — это, собственно, то место, где можно создавать приложения и где вы будете проводить до 99% времени.
- SQL Workshop — заменитель обычной IDE для работы с СУБД Oracle. Там вы можете посмотреть объекты БД (таблицы, индексы, пакеты, и т. п.) и выполнять SQL-запросы. Если у вас есть возможность делать все это через "обычные" IDE (вроде Oracle SQL Developer или PL/SQL Developer) — делайте через них. Тем не менее, этот раздел тоже может быть полезен и о нем я тоже расскажу.
- Team Development — инструменты для командной разработки. Честно говоря, я ни разу не видел, чтобы хоть кто-то ими пользовался на практике (включая меня). Любопытства ради я туда тоже заглядывал и совсем бесполезным этот раздел я бы не назвал, хотя и очень хочется.
- App Gallery — раздел с демо-приложениями. К тому моменту, когда он появился, я уже неплохо знал апекс и почти не заглядывал туда, но начинающим, думаю, это будет полезно. Там много разных простеньких приложений, на их примере можно изучать, как использовать те или иные возможности.
В меню в самом верху страницы продублированы эти же 4 пункта.
Кроме этого, есть еще несколько малополезных вещей: ниже есть некоторое количество статистической информации (типа наиболее часто редактируемых приложений или наиболее активных разработчиков). И есть колонка справа, где также немного статистики и дополнительных ссылок.
Рассмотрим App Builder и SQL Workshop подробнее.
App builder
Эта страница выглядит примерно вот так:
Основные элементы этой страницы: четыре большие кнопки как на предыдущей странице, список уже имеющихся приложений, правая колонка со списком последних измененных приложений и дополнительными действиями. Четыре кнопки — это:
- "Create" — создать новое приложение. Эта же функция продублирована чуть ниже (синяя кнопка "Create" над отчетом со списком приложений). Кнопка запускает мастер создания приложений.
- "Import" — импортировать приложение. Апекс позволяет переносить приложения с одного сервера на другой в виде текстовых файлов (которые, по сути, являются длииииными PL/SQL скриптами с вызовами функций создания всех элементов приложения).
- "Dashboard" — малополезное сборище статистики разработки приложений. Кто, когда, где, сколько изменений сделал. Думаю, даже вашему начальнику будет неинтересно туда смотреть.
- "Workspace Utilities" — набор дополнительных инструментов для управления приложением. Честно говоря, туда я тоже почти не заглядываю.
Так же хочу обратить ваше внимание на вот такую маленькую кнопочку в панели отчета:
Она переключает вид отчета с такого, как на скриншоте выше (с "картинками" приложений) на отчет в виде таблицы:
Похожие отчеты встречаются и в других разделах IDE. Я предпочитаю табличный вид, поэтому далее все скриншоты будут с ним.
Страница приложения
После того, как вы создадите приложение или откроете существующее, вы увидите следующую страницу (очень похожую на предыдущую по структуре):
На эту страницу вы будете заходить очень часто, и полезных функций здесь тоже очень много. Большие кнопки с картинками:
- "Run Application". Эта кнопка запускает ваше приложение. Оно откроется в отдельном окне. По умолчанию — именно в окне, а не во вкладке браузера, но это поведение настраивается (об этом позже).
- "Supporting Objects". Этот раздел служит для решения вопросов, связанных с установкой, обновлением и удалением приложений. Обычно им почти не пользуются.
- "Shared Components" — я бы сказал, это первый или второй по важности раздел IDE (еще один — редактор страниц). Если вы будете много разрабатывать на апексе, то очень скоро заметите, что выучили структуру этого раздела как "Отче наш".
- "Utilities" — еще один набор (мало)полезных вспомогательных функций.
- "Export / Import". Позволяет экспортировать или импортировать приложения или отдельные части приложения.
И две дополнительные кнопки, которые обведены оранжевой рамкой на скриншоте:
- Кнопка "Edit application properties". Нажав на нее, вы попадете на страницу настроек свойств приложения. Возможно, вы не будете заходить в этот раздел часто, но он очень важен, потому что там хранятся настройки приложения, от которых много чего зависит. Далее, если я буду упоминать где-то "свойства приложения" — ищите их в этом разделе.
- В кои-то веки полезная функция в правой панели: "Delete this Application". В то время как многие функции в апексе продублированы в разных местах, эта функция есть только здесь, и с непривычки первый раз ее найти сложно.
Application properties
Здесь прежде всего интересна организация доступа к большому количеству настроек.
Настройки сгруппированы в 4 группы (см. верхнюю рамку), а в каждой группе есть еще по нескольку подгрупп (см. нижнюю рамку), у каждой группы есть свое название. Похожим образом настройки организованы в очень многих местах в апексе. В дальнейшем я буду просто указывать путь к нужной настройке примерно так: "Application Properties" — "Definition" — "Name" — "Version".
Также, если вы посмотрите на хлебные крошки вверху страницы, вы увидите, что там написано "Edit Application Definition", хотя заходили вы, казалось бы, в "Application Properties". Просто не обращайте внимания.
Shared Components
Shared Components — это наше всё. Этот раздел является промежуточным пунктом на пути к конкретным компонентам приложений. Покажу здесь общий вид, просто чтобы вы представляли, где что находится:
Совсем неважной ерунды здесь почти нет. Каждый раздел вам так или иначе может понадобиться. Названия разделов говорят сами за себя, добавить почти нечего:
- Application Logic — средства управления логикой приложения.
- Security — вопросы безопасности и управления доступом к приложению целиком и к отдельным компонентам в зависимости от ролей пользователей.
- Other Components — это "все остальные компоненты". По-хорошему, этому разделу следовало бы быть последним, но он почему-то здесь. А подпункт "List of Values" я бы вообще в Application Logic перенес.
- Navigation — компоненты приложения для обеспечения навигации.
- User Interface — настройка внешнего вида приложения, стилей и т. п.
- Files — раздел для файлов (например, css или js). Незаменим, если у вас нет доступа к ОС, и все равно удобен, даже если доступ есть.
- Data Sources — работа с источниками данных (для загрузки и выгрузки).
- Reports — отчеты, очевидно.
- Globalization — раздел для перевода приложений на другие языки.
Перевод приложений в апексе сделан просто ужасно (честно, я пытался придумать, как сделать его хуже — и не смог), и нет никаких свидетельств того, что в будущем станет лучше.
Ужасно с точки зрения архитектуры и удобства работы над переводом. Могу только сказать разработчикам: "Спасибо, что хотя бы без багов" (но тут как посмотреть: переводы устроены так, что некоторые особенности их работы мало чем отличаются от багов).
Приходится с этим жить.
Page Designer
Page Designer — редактор страниц. Это, наверное, главное место в IDE. Здесь вы будете создавать то, с чем напрямую взаимодействует пользователь. Здесь просто куча функций, почти как в кабине самолета. На скриншоте разноцветными рамками выделены основные составляющие редактора:
Панель кнопок вверху (в красной рамке):
- Поле для ввода номера страницы, стрелки вверх и вниз и кнопка "Go": навигация по страницам приложения. Каждая страница имеет номер, тут вы можете либо ввести номер нужной страницы, либо стрелками перейти к следующей/предыдущей, либо нажать на самую левую кнопку и в появившемся модальном окне выбрать страницу из списка.
- Кнопка с замком: позволяет заблокировать страницу от изменений другими разработчиками.
- Кнопки Undo/Redo
- Две кнопки с доступом к вспомогательным функциям.
- Кнопка-ссылка на Shared Components. Полезная, потому что туда-сюда ходить приходится постоянно. (Я сам, правда, предпочитаю просто держать Shared Components в отдельной вкладке — так еще быстрее).
- Кнопка "Save" — сохраняет изменения на странице.
- Кнопка "Run" — "запускает" страницу, то есть вы ее видите так, как ее потом увидит пользователь.
Слева (в оранжевой рамке) — панель с компонентами приложения. В этой панели есть 4 закладки:
- "Rendering" — показывает, из каких составных частей состоит страница, какие процессы выполняются при рендеринге;
- "Dynamic Actions" — действия, выполняемые на клиенте (например, обработчики событий javascript);
- "Processing" — серверные процессы, связанные со страницей;
- "Page Shared Components" — для прямого перехода к используемым на странице общим компонентам (те самые Shared Components).
По центру (в зеленой рамке) — панель, содержащая много разнородной информации. В верхней части панели есть 5 закладок, на которых можно найти:
- "Layout" — показывает примерное расположение компонентов на странице;
- "Component view" — по большому счету, это пережиток прошлого (похожим образом выглядел редактор страниц в 4-й версии апекса, в версии 5.0 или 5.1 этот старый "вид" получил статус deprecated, хотя и использовался параллельно с новым, а теперь тут осталась лишь его бледная тень);
- "Messages" — тут будут сообщения об ошибках (например, сообщение о том, что не заполнено какое-нибудь обязательное поле);
- "Page Search" — поиск на странице. Ищет искомую строку во всех местах, где вы можете что-то вводить (в коде, в текстах сообщений, в названиях компонентов и т. д.);
- "Help" — помощь. Довольно толковая, хотя и не всегда. Можно выбрать какое-нибудь свойство компонента и посмотреть его описание.
Также центральная панель имеет снизу еще одну дополнительную панель, которую можно использовать для быстрого добавления компонентов на страницу.
Справа (в синей рамке) — панель свойств. Тут все просто — она показывает свойства выбранного в данный момент компонента.
SQL Workshop
Как я уже говорил, SQL Workshop — это заменитель обычной IDE (если у вас по каким-то причинам нет возможности ее использовать).
Он состоит из 5 разделов:
- Object Browser — браузер объектов БД (таблиц, пакетов, функций и процедур, индексов, сиквенсов и прочего);
- SQL Commands — раздел, где можно выполнить любой SQL запрос или PL/SQL код;
- SQL Scripts — здесь можно загрузить текстовый файл со скриптом и выполнить его;
- Utilities — разные дополнительные возможности, связанные с БД: например, есть графический построитель запросов (но не только);
- RESTful Services — создание REST сервисов. Апекс тоже имеет REST (причем давно, еще в версии 4.2 они уже были)!
Object Browser
Здесь есть все, что нужно для работы с объектами БД: создание, изменение, удаление, просмотр свойств объектов, ввод данных в таблицы — для всего этого в этом разделе есть графический интерфейс. Вверху слева в выпадающем списке можно выбрать тип объектов (на скриншоте показаны таблицы), вверху справа можно выбрать схему, объекты которой вы можете посмотреть. В списке доступных схем вы не увидите все схемы сразу — это нормально. Как сделать схемы видимыми в апексе, я расскажу, когда дойду до администрирования.
Также я не вижу большого смысла описывать этот раздел подробнее: если вы знаете, что значит фраза "добавить столбец в таблицу", вы без труда догадаетесь, когда вам нужно будет нажимать на кнопку "Add Column" и что вас может ждать дальше.
SQL Commands
В этом разделе можно выполнять SQL запросы и PL/SQL код.
По возможностям этот раздел почти не уступает полноценным средам разработки. Не хватает разве что автодополнения кода и подсветки синтаксиса (а в Object Browser подсветка синтаксиса есть, кстати). Имеющиеся возможности:
- выполнение SQL, в том числе с параметрами (для ввода значений параметров появится отдельное окно);
- выполнение PL/SQL с возможностью вывода текста через dbms_output (вывод появится в окне ниже);
- выполнение только выделенной части кода (выделить текст мышкой, затем "Run");
- просмотр плана запроса;
- сохранение запросов.
***
Это, как вы понимаете, далеко не всё, что есть в IDE APEX, но на данном этапе не имеет смысла углубляться дальше. Отдельные элементы интерфейса апекса будут разобраны более подробно в темах, которые имеют к ним непосредственное отношение.
P. S. Я пока не могу сказать, что четко продумал структуру этого туториала, возможно, в будущем я добавлю еще скриншоты и описания в эту статью или опишу дополнительные возможности в других статьях. Осталось придумать, как оповещать заинтересованных о значительных правках старых статей.
Комментарии (21)
PavelGhost
30.03.2019 15:22Было бы интересно посмотреть варианты использования внешних источников данных и реализация REST API
StrangerInTheKy Автор
30.03.2019 17:58Мне тоже ;) Я пробовал осилить REST еще в версии 4.2, но не осилил. Но тогда мне это было совсем не нужно, да и я не понимал я толком, что это за REST и зачем он нужен. Осилю и напишу.
vav180480
30.03.2019 17:57Вспоминаю как страшный сон, меня хватило на 2 месяца
migelle74
31.03.2019 10:35Непонятно, что там такого страшного? ИМХО уникальный инструмент, который позволяет очень быстро сделать отображение данных из БД. Да еще с таким простым входом для новичков.
Мне наоборот печально, что ничего подобного нет, например, для Postgres-a. А в свете нынешних реалий очень бы хотелось иметь подобный инструмент.PavelGhost
31.03.2019 13:06Абсолютно согласен. Ещё в APEX есть уже внутри полный набор инструментов для коллективной разработки, поддержки версионности, переносимости приложений и пр.
По поводу PostgreSQL был прецендент — в APEX делал небольшое приложение — отчёты по старой системе тикетов, данные которой хранились в PostgreSQL. В Oracle можно сделать db_link к любой базе через odbc (не считая «родных» gateways). Собственно, так и было сделано — APEX приложение работало со схемой Oracle, данные в которую выбирались из внешней PostgreSQL базы. Есть определённые танцы с бубном для типов данных, но это решаемо. DB_Link позволяет и писать данные в удалённую базу, но такой метод, считаю, может как-то работать только для каких-то простых случаев и, конечно, ни разу не заменит родного APEX для PostgreSQL, если бы он был.
Я думаю, всё-таки подобные решения в природе есть — в принципе этому почти любой ORM можно научить (вопрос — сколько времени и сил убить на это), просто PG админы слишком брутальны, чтобы их использовать :)
StrangerInTheKy Автор
31.03.2019 16:00Непонятно, что там такого страшного?
На 100% не уверен, конечно, но мне кажется, что для человека, пришедшего откуда-нибудь из мира фронтенд-разработки, нормальная реакция. Я-то сам с БД разработки начинал, первые лет 5 тоже был в диком восторге.migelle74
31.03.2019 22:27Я начинал разработки еще с дос-овского клариона. Поэтому апекс пришелся вообще идеально.
vav180480
01.04.2019 07:28Очень быстро позволяет отобразить данные из БД банальный Excel, какой то там разовый отчет, быстро накидал (или тебе дали уже готовую форму, они часто уже имеются именно в Excel) один раз выгрузил и забыл. Система где прописал что то в одном окошке, перешел к какой то формочке, еще что то прописал ущербна по своей сути. Из серии очень быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой. А эти «простые вещи» обязательно нужно будет сделать. Начинается дикое нагромождение костылей, которые потом «интересно» разбирать если нагромождал их не ты. Специалист APEX это как специалист 1С — раб довольно окукленной технологии, брррр
migelle74
01.04.2019 16:54Очень быстро позволяет отобразить данные из БД банальный Excel
Банальный excel в сравнении с апексовским интерактивным отчетом/гридом это как велосипед и супекар. Его интерактивный отчет позволяет закрыть потребности пользователей в отчетах процентов на 85. Это вообще несравнимые вещи.
Система где прописал что то в одном окошке, перешел к какой то формочке, еще что то прописал ущербна по своей сути
Что значит ущербна? Другого подхода в этих системах просто не бывает. Посмотрите на 1С, R3 и т.п. у них примерно такой подход везде.
быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой
Тут просто надо принять апексовский подход к решению проблем, а не пытаться его заставить его делать то, для чего он не предназначен.Специалист APEX это как специалист 1С — раб довольно окукленной технологии,
Это да. Но об этом и пишется, что технология заслуживает большего распространения.vav180480
02.04.2019 06:01Есть другой подход, сел в любимой IDEшечке, открыл проектик на одном из гораздо более распостраненных фреймоврков с MVK и маршрутизацией, который уже имеет из коробки классы и шаблоны для отображения таблиц и форм и начинаешь писать.
Ну а насчет «не пытаться заставить» тут такое дело, в общем случае не программисту решать что пытаться а что не пытаться доводом от заказчика будет «а я там вот видела что там вот так сделано». У меня впечатление от APEXа это как попытка Oracle создать свой лунапарк.StrangerInTheKy Автор
02.04.2019 11:41открыл проектик на одном из гораздо более распостраненных фреймоврков с MVK и маршрутизацией, который уже имеет из коробки классы и шаблоны для отображения таблиц и форм и начинаешь писать.
А в апексе, надо полагать, всего этого нет? Чтобы показать страницу с результатом выполнения SQL запроса в апексе, нужно сделать примерно 10 кликов мышкой и написать SQL запрос. Больше не надо ничего вообще. Никакой другой «обычный фреймворк» такого не позволяет. Лично мне есть с чем сравнивать: в 2010-м году я начал делать свой проектик для веба (не зная о вебе ничего вообще) на апексе (не зная апекса вообще и попутно его изучая), и за два-три месяца довел его до более-менее вменяемого рабочего состояния. В 2016-м я попробовал начать делать другой свой проектик на Spring Boot (не зная Spring Boot вообще и попутно его изучая), но к тому моменту я уже намного больше знал, что и как устроено в вебе, при этом три месяца спустя в проекте все еще конь не валялся. Так что по уровню входа и по скорости разработки у апекса конкурентов нет. Проблемы появляются, когда нужно сделать что-то, не предусмотренное фреймворком. Тогда да, скорость разработки падает до обычной, как везде.
У меня впечатление от APEXа это как попытка Oracle создать свой лунапарк.
Смешно, особенно на фоне чуть ли не каждую неделю выходящих на Хабре статей о том, что новые фронтенд-«лунапарки» для js выходят каждые полгода. Оракл, на секундочку, создал этот «лунапарк» в 2004-м, как сейчас модно говорить — «до того, как это стало мейнстримом» ;)vav180480
02.04.2019 12:52Чтобы показать страницу с результатами SQL запроса вообще никакого фреймворка не нужно:) А если ты не в первый раз в жизни это делаешь или это не первая страничка в проекте с результатом некоего запроса, там вообще все копипастом делается, просто имена колонок на русском прописать:) Ну и я бы хотел посмотреть на оракловский лунапарк образца 2004.
StrangerInTheKy Автор
01.04.2019 17:47Из серии очень быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой.
Это применимо вообще к любому фреймворку.
Специалист APEX это как специалист 1С — раб довольно окукленной технологии
В целом да, но специалист 1С — специалист только на территории бСССР, а за ее пределами он — никто. А специалист по APEX — специалист во всем мире (и как правило, он еще и специалист по Oracle, что все еще востребовано также во всем мире).vav180480
02.04.2019 06:06Не к любому, фреймворки гораздо гибче. И еще раз работать с проектом на уровне файлов из IDE гораздо проще чем в конгломерате окошек с кусками кода и формочек с настройками.
StrangerInTheKy Автор
02.04.2019 11:43Апекс совершенно не мешает вам писать PL/SQL и javascript в виде файлов в IDE. Я сейчас, например, параллельно с написанием этого туториала делаю пару плагинов для апекса, и процентов 90 времени делаю это в Intellij IDEA. Вам тоже никто так не запрещает.
vadim_bv
31.03.2019 21:11АРЕХ — крутая вещь. Если к нему правильно прикручивать AJAX-обработчики, он вполне современен, а функционален — почти из коробки.
Было бы очень интересно почитать про нагрузочное тестирование APEX-приложений. Мои кривые руки полагают, что при нескольких десятках пользователей, они вешают сервер намертво. Мб, я что-то делал не так, но при всех достоинствах АРЕХа на нем почти нет сайтов в Интернете (навскидку, только askTom).
А приложения для ограниченного количества внутренних пользователей успешно работают, например, во многих банках.migelle74
31.03.2019 22:25Навскидку, из больших сайтов знаю только shop.oracle.com. Но, насколько я понимаю, apex идеальнее всего подходит для интранета, и в нем существуют большинство проектов на апексе.
StrangerInTheKy Автор
01.04.2019 00:09В администрировании я понимаю чуть больше чем ничего, но буквально недавно мне попадалось на глаза это: ora-00001.blogspot.com/2015/07/installing-oracle-xe-ords-and-apex-on-centos-linux-part-four.html
На просторах интернета попадались упоминания о том, что на подходщем железе до 2К пользователей апекс держит (но это уже не XE версия оракла должна быть).
PavelGhost
Спасибо большое — отличная статья.
Я пользовался APEX раньше много и часто. Это практически единственный быстрый способ для DBA донести какую-то информацию в «человеческом» виде без знания дизайна, framework, всякого программирования GUI и прочего. Очень помогает для внутренних каких-то систем метаданных, Inventory.
Было очень полезно вспомнить какие-то моменты и узнать новые — как раз активно пользовался до выхода 5-й версии.
Единственно, может это глюк приложения Habr под Android, но из TOC по любой ссылке на начало статьи просто переходит.
StrangerInTheKy Автор
StrangerInTheKy Автор