Моделируемый OLAP

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

Из последней рабочей спецификации для window.close() :

Метод close() для объектов Window должен, если выполняются все следующие условия, закройте контекст просмотра A :

  • Соответствующий контекст просмотра [ является script-closable .
  • Контекст просмотра действующего сценария знаком с контекстом просмотра A .
  • В контексте просмотра действующего сценария разрешено перемещаться по контексту просмотра A .

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

blockquote>

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

Chrome разрешает это исключение, которое не применяется к пользовательским скриптам, однако Firefox этого не делает. Исключительные состояния реализации Firefox. :

Этот метод разрешен только для окон, открытых скриптом с использованием метода window.open.

blockquote>

Если вы попытаетесь использовать window.close из Greasemonkey / Tampermonkey / userscript, вы получите: Firefox: сообщение об ошибке, «Scripts may not close windows that were not opened by script.» Chrome: просто молча.


Долгосрочное решение:

Лучший способ справиться с этим - это сделать расширение Chrome и / или дополнение Firefox. Они могут достоверно закрыть текущее окно.

Однако, поскольку риски безопасности, создаваемые window.close, намного меньше для сценария Greasemonkey / Tampermonkey; Greasemonkey и Tampermonkey могли бы разумно предоставить эту функциональность в своем API (по сути, упаковывая работу по расширению для вас). Рассмотрите возможность создания запроса функции.


Хакерные обходные пути:

В настоящее время Chrome уязвим для эксплойта «самоперехвата». Так что код, подобный этому, использовался для работы в целом:

open(location, '_self').close();

Это ошибочное поведение, IMO, и теперь (примерно в апреле 2015 года) блокируется в основном. Он все равно будет работать с , введенным кодом только , если вкладка только что открыта и не имеет страниц в истории просмотра. Так что это полезно только при очень небольшом наборе обстоятельств.

Тем не менее, вариант по-прежнему работает на Chrome (v43 и v44) плюс Tampermonkey (v3.11 или новее). Используйте явные @grant и обычные window.close(). EG:

// ==UserScript==
// @name        window.close demo
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant       GM_addStyle
// ==/UserScript==

setTimeout (window.close, 5000);

Благодаря zanetu для обновления. Обратите внимание, что это не сработает, если открыта только одна вкладка. Он закрывает дополнительные вкладки.

Firefox защищен от этого эксплойта. Таким образом, единственным способом javascript является повреждение настроек безопасности, по одному браузеру за раз.

Вы можете открыть about:config и установить allow_scripts_to_close_windows на true.

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

В настоящее время для Chrome нет эквивалентных настроек.

9
задан juan 3 September 2008 в 20:19
поделиться

5 ответов

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

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

Что касается открытого исходного кода, Вы могли испытать Palo - сервер MOLAP с открытым исходным кодом и фронтэнд Excel.

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

10
ответ дан 4 December 2019 в 13:06
поделиться

Я нахожу, что это - схема, которая вызывает большинство людей проблем, имеют с запросами базы данных. OLAP вынуждает Вас или к плоской таблице или к Звезде/схеме "снежинка", которую легко запросить и сравнительно быстрее к источнику oltp таблицы. Таким образом, если Вы ETL Ваш источник к плоской таблице или схеме "звезда", необходимо получить 80% того, что Вы получаете от OLAP, при этом 20% является MDX и аналитические функции и производительность.

Обратите внимание, что необходимо получить повышение перфекта со схемой "звезда" в реляционной базе данных также, и Oracle, вероятно, имеет аналитические функции в МН / SQL так или иначе.

3
ответ дан 4 December 2019 в 13:06
поделиться

Еще несколько мыслей об этой теме:

На самом деле Стандарт Oracle действительно имеет средство OLAP на основе потомка Экспресса встроенным в механизм базы данных и хранение его внутренних структур данных в БЛОБАХ в основных табличных областях. Используя это технически возможно, но не обязательно желателен по следующим причинам:

Это использует очень нестандартный механизм запроса OLAP с очень небольшой сторонней поддержкой инструмента (AFAIK ArcPlan является единственным сторонним фронтендом OLAP, поддерживающим 10 г + OLAP), плохая документация для языка запросов и почти никакой сторонней литературы, описывающей это. Это будет работать с B.I. Бобы, если Вы испытываете желание писать фронтенд JSP. Это не совместимо с MDX вообще. По состоянию на начало 2006 года лучшая Oracle могла сделать, когда ее спросили о drillthrough (эта функциональность не поддерживалась в Исследователе 'Селезень'), должен был рекомендовать создать JSP apllication использующий B.I. Бобы.

Причина, что нет никакого миграционного пути от Стандарта до Предприятия, состоит в том, что Предприятие на самом деле, что раньше было Аналитикой Siebel. Стандартом является старая Oracle потомок OLAP/экспресса, которого Oracle Partners рекомендовал избежать даже, прежде чем Oracle выкупила Seibel. Oracle даже не попыталась поддерживать миграцию.

С этой точки зрения Mondrian является на самом деле самым экономически эффективным решением OLAP для Oracle Standard Edition магазин. Можно получить поддерживаемую версию от комплекта оборудования по имени Pentaho1. Следующей самой дешевой является Analysis Services, которая идет с SQL Server. Следующий, что Вы в подобных Hyperion Essbase, который будет порядком величины, более дорогим, чем SQL Server или любой поддерживаемый вирион Mondrian.

1
ответ дан 4 December 2019 в 13:06
поделиться

Попробуйте OLAP-сервер с открытым исходным кодом под названием 'Mondrian'. IIRC API XMLA на этом достаточно совместим с AS для одурачивания Pivot Table Services, которая позволила бы Вам использовать его с ProClarity или Excel.

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

2
ответ дан 4 December 2019 в 13:06
поделиться

Пока SQL Server MS предлагает OLAP, Вам будет нужна Корпоративная лицензия для использования куба в продуктивной среде, которая является направлением сети.

0
ответ дан 4 December 2019 в 13:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: