Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
ColdFusion-когда использовать область "request"?
Я просматривал код моего предшественника и часто видел использование области "request". Как правильно использовать эту область?
Существует несколько областей, доступных для любой части кода: сеанс, клиент, файл Cookie, приложение и запрос. Некоторые из них нецелесообразно использовать определенным образом (т. е. использование области запроса или приложения внутри ваших пользовательских тегов или CFC; это связывание, нарушает принципы инкапсуляции и считается плохой практикой), а некоторые имеют специальные цели: файлы Cookie сохраняются на клиентском компьютере в виде физических файлов cookie, а переменные области сеанса являются пользовательскими и истекают вместе с сеансом пользователя на веб-сайте.
Если переменная крайне маловероятна для изменения (константа для всех намерений и целей) и может быть просто инициализирована при запуске приложения и никогда не записана снова, обычно вы должны поместить ее в область приложения, потому что это сохраняет ее между каждым пользователем и каждой сессией. При правильной реализации он записывается один раз и читается N раз.
Правильная реализация переменных приложения в Application.cfm может выглядеть следующим образом:
<cfif not structKeyExists(application, "dsn")>
<cflock scope="application" type="exclusive" timeout="30">
<cfif not structKeyExists(application, "dsn")>
<cfset application.dsn = "MyDSN" />
<cfset foo = "bar" />
<cfset x = 5 />
</cfif>
</cflock>
</cfif>
Обратите внимание, что существование переменной в области приложения проверяется до и после блокировки, так что если два пользователя создают условие гонки при запуске приложения, только один из них будет в конечном итоге устанавливать переменные приложения.
Преимущество этого подхода заключается в том, что он не будет постоянно обновлять эти сохраненные переменные при каждом запросе, тратя время пользователя и циклы обработки сервера. Компромисс заключается в том, что он немного многословен и сложен.
Это было значительно упрощено с добавлением Application.cfc. Теперь вы можете указать, какие переменные создаются при запуске приложения, и вам не нужно беспокоиться о блокировке и проверке существования и всех этих забавных вещах:
<cfcomponent>
<cfset this.name = "myApplicationName" />
<cffunction name="onApplicationStart" returnType="boolean" output="false">
<cfset application.dsn = "MyDSN" />
<cfset foo = "bar" />
<cfset x = 5 />
<cfreturn true />
</cffunction>
</cfcomponent>
Для получения дополнительной информации о Application.cfc, включая все доступные специальные функции и каждую мелочь о том, что и как использовать его, я рекомендую этот пост в блоге Рэймонда Кэмдена .
Подводя итог, можно сказать, что область запроса доступна везде в вашем коде, но это не обязательно делает его "right" для использования везде. Скорее всего, ваш предшественник использовал его, чтобы сломать инкапсуляцию, и это может быть неудобно для рефакторинга. Возможно, вам лучше оставить его as-is, но понимание того, какая область является лучшим инструментом для этой работы, определенно сделает ваш будущий код лучше.
Это очень субъективный вопрос, и некоторые даже утверждают, что никогда "appropriate" не будет использовать область запроса в современных ColdFusion приложениях.
Теперь, когда этот отказ от ответственности устранен, давайте определим, что такое область запроса и где он будет полезен.
Область запроса-это абсолютная глобальная область в одном запросе ColdFusion страницы. Это не общая область, как области приложений, серверов, клиентов и сеансов, поэтому блокировка не требуется, чтобы сделать его threadsafe (если только вы не создаете рабочие потоки из одного запроса с помощью тега CF8 CFTHREAD). Как глобальная область, это очень удобный способ сохранения переменных на любом уровне стека запроса без необходимости передавать их от родителя к вызывающему объекту. Это был очень распространенный способ сохранения переменных через вложенные или рекурсивные пользовательские теги в старых приложениях CF.
Обратите внимание, что хотя многие приложения используют эту область для хранения переменных уровня приложения (например, параметров конфигурации), большая (а иногда и незначительная) разница между областью запроса и областью приложения заключается в том, что значение одной и той же переменной области запроса может отличаться между отдельными запросами страницы.
Я бы предположил, что ваш предшественник использовал эту область как средство для удобного задания переменных, которые должны были пережить переход между инкапсулированными или вложенными единицами кода, не передавая их явно.
Ладно, я просто хотел прокомментировать ваш код. Пожалуйста, простите меня, если я покажусь вам сумасшедшей. Но вы уже проверили, что structKeyExists в самом начале. Поскольку вы знаете, что это будет правдой, нет смысла проводить еще одну проверку. Так что моя версия будет такой... Но это всего лишь я.
<cfif not structKeyExists(application, "dsn")>
<cflock scope="application" type="exclusive" timeout="30">
<cfset application.dsn = "MyDSN" />
<cfset foo = "bar" />
<cfset x = 5 />
</cflock>
</cfif>
Хорошо.
Я писал фреймворк своей компании, который будет использоваться для питания нашего сайта.
Я использую переменную запроса, чтобы установить определенные данные, которые были бы доступны для других CFC, я должен был сделать это, чтобы данные были доступны во всем приложении, без необходимости постоянно передавать данные. Я искренне считаю, что использование запроса и приложения, пока оно является статической функцией, тогда у вас не должно быть проблем. Я не уверен, что ошибаюсь в своем мышлении, но как только я выпущу фреймворк, мы увидим.