Перегляд за місяцем: May 2009

 

Railo 3.1 Beta та безкоштовний Railo хостинг на пробу

Майже в один день з'явились добрі новини для любителів безкоштовного cf-сервера Railo.

Спочатку компанія Alurium в особі Пітера Емірі (Peter Amiri) оголосила про акцію, за умовами якої вони надають 60-денний trial-акаунт з обмеженими місцем та трафіком, але повними можливостями використання власне Railo серверу. Варто зауважити, що компанія пропонує цілком непогані умови як для CF-хостингу.

На підтвердження сказаного: ось, дійсно все працює, все на шару :)

Наступного ж дня в розробники Railo повідомили про вихід оновленої версії 3.1 (3.1.0.015), в якій було виправлено ряд помилок та проблем з швидкодією. Однією з приємних новинок є можливість швидко оновлюватись прямо з адмінки. Скачати можна на офіційному сайті проекту.

Автор: Сергій Галашин | Опубліковано: 30.05.2009 о 16:56 | Категорії: News - Railo -

 

Подводные камни remote-методов

Организовать удаленный доступ к данным в Coldfusion - дело достаточно простое. Любой метод Coldfusion-компонента может вызываться удаленно, достаточно лишь поставить модификатор доступа access="remote", вот простой пример:

  <cfcomponent displayname="myservice" hint="Service" output="false">
    
    <cffunction name="getStructure" access="remote" output="false" returntype="Struct">
        <cfset struct = StructNew() />
        <cfset struct["id"] = 213 />
        <cfset struct.refID = 321231 />
        <cfset struct["someName"] = "Foo Bar" />
        <cfreturn struct />
    </cffunction>

    <cffunction name="getQueryObject" access="remote" output="false" returntype="Query">
        <cfquery datasource="test" name="qry">
            SELECT id, someName, refID FROM test
        </cfquery>       
        <cfreturn qry />
    </cffunction>

</cfcomponent>

Однако на практике могут выскочить известные грабли.

- имена полей в объектах query возвращаются в UPPERCASE при вызове метода через SOAP;

Test case for query exposed with webservice


- имена полей в объектах query возвращаются точно так как написано в коде, если метод вызывается через Flash Remoting (осторожно, флешеры!). При этом название поля в БД не имеет значения. Если поле в БД называется id, а программист в коде SQL запроса выбрал его как Id, во Flash Remoting отразится именно так. Как известно, ActionScript различает case символов, а значит могут быть проблемы.

Test case for query exposed with flash remoting

- имена ключей в структурах возвращаются в UPPERCASE, если поле задано как struct.fieldName. При этом, case сохраняется в точности как задан, если поле задано как struct["fieldName"]. Сказанное справедливо для структур, возвращенных и через Web Service и через Flash Remoting.

Test case for structure

Автор: Родион Быков | Опубліковано: 30.05.2009 о 00:58 | Категорії: Gotchas -

 

Пропоновані зміни у визначенні функцій в CFScript

Нещодавно Шон Корфілд (Sean Corfield) опублікував замітку з циклу CFML Advisory, що пропонує ряд змін в синтаксисі в наступних версіях CFML (що стосуватиметься всіх серверів, що найприємніше).

Зокрема, при визначенні функції можна буде вказувати:

  • access (public, private, package, remote)
  • return type
  • argument types
  • default values

Наприклад, ось так:

public string function greet(string name, string greeting = "Hello") {
return greeting & " " & name;
}

Деякі речі можуть бути опущені:

function greet(name, greeting = "Hello") {
return greeting & " " & name;
}

Що аналогічне цьому:

public any function greet(any name, any greeting = "Hello") {
return greeting & " " & name;
}

Ну і обов'язкові агрументи, куди ж без них:

public string function greet(required string name, string greeting = "Hello") {
return greeting & " " & name;
}

 

Хтось резонно може зауважити, що це є черговий крок в сторону Java.

Ну й добре, аби було на користь розробникам, особливо любителям CFScript.

 

 

Автор: Сергій Галашин | Опубліковано: 17.05.2009 о 20:35 | Категорії: CFML - CFScript -

 

Кириличні заголовки постів у MangoBlog

З переїздом на Mango у нас відразу виникла проблема: при створенні токенів (імен) для URL постів на базі заголовку видалялись кириличні символи. Це відбувалось тому, що блоґ намагався зробити безпечні посилання, а в таких знаходилося місце тільки літерам латинки, цифрам та дефісам.

Наприклад, спробувавши створити такий пост:

mango_tokens_1_preface

Ми отримували не дуже гарне посилання на цей пост:

mango_tokens_2_problem

Найбільш серйозною проблемою була втрата унікальності URL'ів, коли "Мій пост про MySQL" мав би майже таке саме посилання, що й "Пост не тільки про MySQL". Майже, бо блоґ додав би якесь випадкове число для запобігання співпадінь.

Почухавши потилицю, я вирішив виправити це діло. Півгодини копирсання в коді дали зрозуміти, що найбільш безболісним буде шлях транслітерації заголовку до його "чистки".


Читати далі...
Автор: Сергій Галашин | Опубліковано: 17.05.2009 о 18:39 | Категорії: Mango Blog - Unicode - Gotchas -

 

Автологин в CFMBB

Существует не так много систем для создания форума на Coldfusion. Одной из самых распространенных (и бесплатных) является CFMBB, которая сама по себе является переработкой Galleon Forums. Лишенная недостатков последней, CFMBB можно рекомендовать для любых целей.

Мне понадобилось добавить автологин в форум на одном сайте, защищенном Basic авторизацией. После запроса браузером пароля, форум просил пароль снова чтобы можно было постить в форум. Простое решение (должно работать как в CFMBB 1.23-24 так и в Galleon Forums 2.2.x) - добавить такой кусочек кода в Application.cfm гдето в районе строки 230:

<!--- try to auto-aunteficate user --->
<cfif not StructKeyExists(request, "isLoggedIn") or request.isLoggedIn neq "Yes">
    <cflogin>
        <cfif IsDefined("cflogin")>
            <cfparam name="form.username" default="" />
            <cfparam name="form.password" default="" />
            <cfif Len(form.username) eq 0 and Len(form.password) eq 0>
                <cfset form.username = cflogin.name />
                <cfset form.password = cflogin.password />
                
                <cfset authResults = application.user.authenticate(username=trim(form.username), password=trim(form.password), ip=cgi.remote_addr) />
   
                <cfif authResults.errorCode gt 0>
                    <cfset variables.loginError = authResults.errorMessage />
                </cfif>
            </cfif>
        </cfif>
    </cflogin>
</cfif>

Если в запросе приходит Basic-авторизация, внутри блока <cflogin> становится доступной структура cflogin. В ней содержатся логин и пароль, введенные пользователем. Этот логин и пароль используется для аутентификации пользователя внутри форума.

Автор: Родион Быков | Опубліковано: 13.05.2009 о 12:34 | Категорії:

 

Бен Форта о страшном секрете Coldfusion

Автор: Родион Быков | Опубліковано: 11.05.2009 о 07:28 | Категорії: Humor - Video -

 

Coldfire - удобный дебаггер для Coldfusion

Coldfusion умеет выдавать debug информацию в специальном шаблоне, который добавляется внизу вызываемой страницы. Это удобно, доступна масса информации о выполняемом шаблоне. При этом вид страницы катастрофически страдает - три-четыре экрана текста после закрывающего тега <html> не придутся браузеру по душе. Решить эту проблему поможет плагин Coldfire. Он работает как дополнение Firefox, для его работы нужен установленный Firebug. Плагин состоит из двух частей - плагин (xpi) для Firefox и темплейт (coldfire.cfm) для Coldfusion.

План таков:

1. Скачиваем Firebug и устанавливаем, если это еще не сделано: http://getfirebug.com/

2. Скачиваем Coldfire: http://coldfire.riaforge.org/

3. Устанавливаем плагин coldfire.xpi для Firefox (проверено для Firefox 3.0.10, Firebug 1.3 и coldfire_v1.3.187.187.xpi)

4. Копируем coldfire.cfm в [CFROOT]/wwwroot/WEB-INF/debug/

5. В Coldfusion Administrator выбираем этот темплейт для отображения дебага (при этом сам дебаг должен быть включен, см. скриншот):

Coldfire debug settings

6. Сохраняем настройки, запускаем Firebug и пробуем выполнить какой нибудь CF шаблон на сервере. На закладке Coldfusion должна появится Debug информация. Добавляя нужные переменные в вывод, получаем требуемую информацию, не ломая дизайна сайта.

Coldfire debug result

Автор: Родион Быков | Опубліковано: 04.05.2009 о 21:53 | Категорії: Tips -