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

15Мар/100

Начинаем осваивать CFBuilder

Рэй Кэмден опубликовал на DZone простую и наглядную табличку основных навыков работы в CFBuilder. Посмотреть её можно по этой ссылке.

11Ноя/090

Презентация CF Wheels

10Окт/090

Adobe MAX-2009: CF9

7Сен/090

Match-II и ColdSpring: статья для нубов

Олли Джонс написал отличную статью для новичков Match-II и ColdSpring. Там всё разжёванно, что у вас не останется никаких вопросов.

19Мар/090

CF Curriculum

На сайте Adobe появился отличный специальный обучающий раздел для новичков coldfusion-программирования.

Тут вы найдете множество материалов, рассказывающих и о работе с БД, компонентами, массивами и структурами и etc. Рекомендую.

2Мар/090

CF & Apache Derby

Как вы знаете, CF умеет работать с БД от Apache – Derby. Посмотрите видео о том как это делается:

17Фев/093

Борьба с SQL-инъекциями

CF не более уязвим от такого рода инъекций, чем иной другой язык, поэтому я покажу основы того, как защититься от SQL-инъекций1 при разработке cf-приложений.

Как вообще эти инъекции работают? Хм, ну это просто. Какой-нибудь негодяй может модифицировать GET- или POST-запрос таким образом, что выполнятся либо дополнительные SQL-инструкции, либо вовсе не те, которые должны были. Соответственно, негодник получит доступ к данным, которые предназначены не для его глаз – как правило это приватная информация пользователя или сразу группы оных.

Чтобы проверить ваше приложение еще на уровне разработки, подвержено оно SQL-инъекциям или нет, вы можете воспользоваться чудным и бесплатным к тому же air-инструментом – SQLFury.

А теперь, чтобы понять от чего нам защищаться, давайте поглядим на обычный cf-запрос:

<cfquery name="q" datasource="d">
   select * from posts where postsid=#url.id#
</cfquery>

Как видно, тут мы пытаемся сделать выборку сообщения, с числовым идентификатором переданным через URL. А что будет, если передать не число, а текст? Правильно – ошибка.

Но, можно модифицировать запрос:

http://localhost/?id=75%union%select%BASE_SCHEMA_VER%as%id,name%as%strmodelname,%name%as%strModelDescription%from%sysobjects

То есть передать такой sql-запрос:

union select BASE_SCHEMA_VER as id,name as strmodelname, name
as strModelDescription from sysobjects

И это уже будет не хорошо.

  1. Смотрите в wiki, что это такое в подробностях. []
10Фев/090

Ресайзим изображение при помощи CF и .Net

Нашёл тут отличный пример того, как отличается выполнение одних и тех же задач в Coldfusion и .Net – а именно, ресайз изображений с 1024х700 до 250 пикселей по ширине.

Вот CF-код:

<cfimage
        action = "resize"
        height = ""
        width = "250"
        source = "#sourceFile#"
        destination = "#resizedFile#"
        overwrite = "yes">

А вот .Net-код:

static void ResizeImageByWidth(string orgName, string resizeName, int resizeWidth)
    {
        String src = orgName;
        String dest = resizeName;
        int thumbWidth = resizeWidth;

        //Get the source image to a System.Drawing.Image object
        System.Drawing.Image image = System.Drawing.Image.FromFile(src);

        //Create a System.Drawing.Bitmap with the desired width and height of the thumbnail.
        int srcWidth = image.Width;
        int srcHeight = image.Height;

        Decimal sizeRatio = ((Decimal)srcHeight / srcWidth);
        int thumbHeight = Decimal.ToInt32(sizeRatio * thumbWidth);
        Bitmap bmp = new Bitmap(thumbWidth, thumbHeight);

        //Create a System.Drawing.Graphics object from the Bitmap which we will use to draw the high quality scaled image
        System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);

        //Set the System.Drawing.Graphics object property SmoothingMode to HighQuality
        gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

        //Set the System.Drawing.Graphics object property CompositingQuality to HighQuality
        gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

        //Set the System.Drawing.Graphics object property InterpolationMode to High
        gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

        //Draw the original image into the target Graphics object scaling to the desired width and height
        System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, thumbWidth, thumbHeight);
        gr.DrawImage(image, rectDestination, 0, 0, srcWidth, srcHeight, GraphicsUnit.Pixel);

        //Save to destination file
        bmp.Save(dest);

        //dispose / release  resources
        bmp.Dispose();
        image.Dispose();
    }

Как говорится разницу легко заметить.

10Фев/094

Секреты CF8

Предлагаю вашему вниманию запись выступления Чарли Айрехарта на Adobe MAX, посвящённую секретам Coldfusion:

А кому лень смотреть видео, тот может скачать .pdf с презентацией.

Связано с категорией: Курс молодого бойца 4 Комментарии
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 и других.