CFusion — Adobe ColdFusion во всей красе

30Янв/090

Open BlueDragon 1.0.1

Вышел очередной релиз бесплатного сервера Open BlueDragon – 1.0.1. Подробности – в официальном пресс-релизе.

Связано с категорией: Новости Нет комментариев
26Янв/090

Сколько пользователь тратит времени на просмотр страницы?

Интересный вопрос, и его себе задал Рэй Кэмден в своём посте. И, разумеется предложил наилучшее решение:


<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>

Очень интересное решение!

Связано с категорией: Полезности Нет комментариев
22Янв/090

Полезность №5

Эй, а как средствами coldfusion определить разницу в двух датах? Легче не бывает. Для этого имеется функция datediff(), имеющая такой синтаксис:

datediff("на что сравниваем?", "дата №1", "дата №2")

Сравнивать разницу можно на:

  • yyyy: годы;
  • q: кварталы;
  • m: месяцы;
  • y: дни года;
  • d: дни;
  • w: дни недели;
  • ww: недели;
  • h: часы;
  • n: минуты;
  • s: секунды;

В общем случае функция обычно используется так:

//article.published - дата публикации, к примеру, статьи
#datediff('d', article.published, now())#

Пригодится! :)

Связано с категорией: Полезности Нет комментариев
22Янв/092

Полезность №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>

Всё готово. :)

Связано с категорией: Полезности 2 Комментарии
21Янв/091

Полезность №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 решает поставленную задачу очень быстро и элегантно.

Связано с категорией: Полезности 1 комментарий
20Янв/090

Полезность №2

Если вам понадобится тихо показать cf-страницу, но сделать это без видимых редиректов – ну то есть, чтобы в статусной строке браузера оставались введённые/выбранные параметры, но при этом, к  примеру, вы могли показать страницу с ошибкой или форму авторизации. Да к тому же, подгруженная таким способом cf-страница будет иметь доступ как параметрам, переданных через URL, так и через форму.

<cfscript>
function forward(u){
    getPageContext().forward(u); //u - это и есть путь к вашей странице
}
</cfscript>

Как видите пользовательская coldfusion-функция очень проста, и если вы хоть чуток понимаете Java, то вам будет всё понятно.

Вызывается эта функция ровно также, как и все подобные ей:


<cfscript>
//вызываем функцию и указываем какую страницу подгрузить и выдать браузеру
//путь должен быть относительно текущего местоположения
forward("views/dsp_recent.cfm");</cfscript>

На мой взгляд, это очень полезная функция, которая не раз вам пригодится

Связано с категорией: Полезности Нет комментариев
18Янв/090

Coldfusion TV

Новенький ресур для coldfusion-разработчиков – ColdFusion.TV. Пока, разумеется, доступно мало видео-роликов, но если что – можете помочь ресурсу со своими :)

Связано с категорией: Полезности Нет комментариев
15Янв/091

Полезность №1

Если вам потребуется когда-нибудь вставлять в ссылку какой-нибудь дополнительный элемент, например “rel=nofollow”, то делается это так:

<cfset oldlink = "текст со ссылкой">
<cfset newlink = replace(oldlink, ">", " rel=""nofollow"">","ONE")>

А если используете jQuery, то  так:

$(document).ready(function(){
  $('a[href^="http"]').attr('rel','nofollow');
});
Связано с категорией: jQuery, Полезности 1 комментарий
15Янв/090

Курс молодого бойца. Часть №2

В coldfusion имеется особенность, впрочем ею обладают наверное все языки программирования – резервные слова. Их не так много, но важно чтобы вы не использовали такие слова в качестве переменных.

Вот их список. В формах:

  • _integer
  • _float
  • _range
  • _date
  • _time
  • _eurodate
13Янв/090

Курс молодого бойца. Часть №1

Итак, ColdFusion, а в дальнейшем я буду иногда сокращать это название до cf, родился как язык программирования достаточно давно – более 13 лет и на данный момент имеет восьмую версию.

После покупки компании macromedia, сейчас его развитием занимается Adobe.

Язык прост, но очень функционален. Лёгок в освоении и за пару дней вы сможете написать своё собственного работающее маленькое приложение. А может и не маленькое. Всё зависит от вашего желания.

Вот смотрите, вы сможете легко интегрировать в ваше приложения множество сервисов и компонентов, написанных на других языках программирования: Java, .Net, SOAP, CORBA, JMS, XMPP, AMF, COM и других.

13Янв/090

Попытка нумбер…

Да, что-то всё никак не мог нормально вести этот блог. Хотя для этого было всё. И сейчас есть.

В общем, попробую.

Связано с категорией: Без рубрики Нет комментариев