Open BlueDragon 1.0.1
Вышел очередной релиз бесплатного сервера Open BlueDragon – 1.0.1. Подробности – в официальном пресс-релизе.
Сколько пользователь тратит времени на просмотр страницы?
Интересный вопрос, и его себе задал Рэй Кэмден в своём посте. И, разумеется предложил наилучшее решение:
<cffunction name="onRequestStart" returnType="boolean" output="false"> <cfargument name="thePage" type="string" required="true"> <cfset var data = ""> <cfif arrayLen(session.pages)> <cfset session.pages[arrayLen(session.pages)].duration = dateDiff("s", session.pages[arrayLen(session.pages)].timestamp, now())> </cfif> <cfset data = {page=getCurrentURL(),timestamp=now()}> <cfset arrayAppend(session.pages,data)> <cfreturn true> </cffunction>
и
<cffunction name="onSessionEnd" returnType="void" output="false"> <cfargument name="sessionScope" type="struct" required="true"> <cfargument name="appScope" type="struct" required="false"> <cfset var data = ""> <cfset var filename = ""> <cfwddx action="cfml2wddx" input="#arguments.sessionScope.pages#" output="data"> <cfset filename = expandPath("./" & replace(createUUID(),"-","_","all") & ".txt")> <cfset fileWrite(filename, data)> </cffunction>
Очень интересное решение!
Полезность №5
Эй, а как средствами coldfusion определить разницу в двух датах? Легче не бывает. Для этого имеется функция datediff(), имеющая такой синтаксис:
datediff("на что сравниваем?", "дата №1", "дата №2")
Сравнивать разницу можно на:
- yyyy: годы;
- q: кварталы;
- m: месяцы;
- y: дни года;
- d: дни;
- w: дни недели;
- ww: недели;
- h: часы;
- n: минуты;
- s: секунды;
В общем случае функция обычно используется так:
//article.published - дата публикации, к примеру, статьи #datediff('d', article.published, now())#
Пригодится!
Полезность №4
Как выбрать из строки имя и фамилию при помощи ColdFusion? Как всегда – легко!
Для этого мы воспользуемся функцией gettoken():
<cfscript>
myname="Алексей Яковенко";
firstname=gettoken(myname, 1);
lastname=gettoken(myname, 2);
</cfscript>
Я немного доработал код до функции, которая очень примитивна, но показывает работу наглядно. Как вы понимаете, имена люди могут писать как без отчества, так и с ним, поэтому и вы можете получать доступ к частям ФИО:
<cfscript> //функция вернёт структуру function extractnames(names,extracttype) { //extracttype: "simple" - для двузначных имён. Или "notsimple" - для полного ФИО exnames=structnew(); if (arguments.extracttype eq "simple") { exnames.fname=gettoken(arguments.names, 1); exnames.lname=gettoken(arguments.names, 2); } else if (arguments.extracttype eq "notsimple") { exnames.fname=gettoken(arguments.names, 1); exnames.mname=gettoken(arguments.names, 2); exnames.lname=gettoken(arguments.names, 3); } else { exnames.error=true; } return exnames; } </cfscript>
Всё готово.
Полезность №3
Как сгенерировать при помощи coldfusion стойкий пароль? Хм… всего пару строк написать и готово:
<cfscript> npass=""; for(i=0; i lte 3; i=i+1) { //Генерируем пароль из букв и цифр, чередуя их. //В конце мы 8-символьный пароль npass=npass & chr(randrange(90,115)) & randrange(0,9); } </cfscript>
Разумеется, вы можете сделать пароль длиннее. А можете доработать этот пример в функцию, которая будет возвращать вам пароль заданной длины:
<cfscript> //параметр "n" - сколько символов должно быть в пароле function makepass(n) { npass=""; for(i=0; i lte ( (arguments.n/2) - 1); i=i+1) { //Генерируем пароль из букв и цифр, чередуя их. //В конце мы 8-символьный пароль npass=npass & chr(randrange(55,115)) & randrange(0,9); } return npass; } </cfscript>
В результате вы получите сгенерированный пароль. Примерно такие:
j480[2e2=6`7 @3f9n9=9L8M0 U8Z6K5>5[9H3 J6Y6X7L6?1^0 I4T2k5\2n7R4
Причём, если вы расширите диапазон генерируемых символов, у вас будут более стойкие комбинации. Но особенно увлекаться не стоит.
Как видите, coldfusion решает поставленную задачу очень быстро и элегантно.
Полезность №2
Если вам понадобится тихо показать cf-страницу, но сделать это без видимых редиректов – ну то есть, чтобы в статусной строке браузера оставались введённые/выбранные параметры, но при этом, к примеру, вы могли показать страницу с ошибкой или форму авторизации. Да к тому же, подгруженная таким способом cf-страница будет иметь доступ как параметрам, переданных через URL, так и через форму.
<cfscript>
function forward(u){
getPageContext().forward(u); //u - это и есть путь к вашей странице
}
</cfscript>
Как видите пользовательская coldfusion-функция очень проста, и если вы хоть чуток понимаете Java, то вам будет всё понятно.
Вызывается эта функция ровно также, как и все подобные ей:
<cfscript> //вызываем функцию и указываем какую страницу подгрузить и выдать браузеру //путь должен быть относительно текущего местоположения forward("views/dsp_recent.cfm");</cfscript>
На мой взгляд, это очень полезная функция, которая не раз вам пригодится
Coldfusion TV
Новенький ресур для coldfusion-разработчиков – ColdFusion.TV. Пока, разумеется, доступно мало видео-роликов, но если что – можете помочь ресурсу со своими
Полезность №1
Если вам потребуется когда-нибудь вставлять в ссылку какой-нибудь дополнительный элемент, например “rel=nofollow”, то делается это так:
<cfset oldlink = "текст со ссылкой"> <cfset newlink = replace(oldlink, ">", " rel=""nofollow"">","ONE")>
А если используете jQuery, то так:
$(document).ready(function(){
$('a[href^="http"]').attr('rel','nofollow');
});
Курс молодого бойца. Часть №2
В coldfusion имеется особенность, впрочем ею обладают наверное все языки программирования – резервные слова. Их не так много, но важно чтобы вы не использовали такие слова в качестве переменных.
Вот их список. В формах:
- _integer
- _float
- _range
- _date
- _time
- _eurodate
Курс молодого бойца. Часть №1
Итак, ColdFusion, а в дальнейшем я буду иногда сокращать это название до cf, родился как язык программирования достаточно давно – более 13 лет и на данный момент имеет восьмую версию.
После покупки компании macromedia, сейчас его развитием занимается Adobe.
Язык прост, но очень функционален. Лёгок в освоении и за пару дней вы сможете написать своё собственного работающее маленькое приложение. А может и не маленькое. Всё зависит от вашего желания.
Вот смотрите, вы сможете легко интегрировать в ваше приложения множество сервисов и компонентов, написанных на других языках программирования: Java, .Net, SOAP, CORBA, JMS, XMPP, AMF, COM и других.
Попытка нумбер…
Да, что-то всё никак не мог нормально вести этот блог. Хотя для этого было всё. И сейчас есть.
В общем, попробую.
