Архивы за месяц: марта 2008

Анонс web приложения

Владимир | | RSS events.

RSS events logo
Хочу представить web приложение, разработку которого я только что закончил! С чем себя и поздравляю 🙂 !

Приложение называется RSS events и размещено по адресу rssevents.simplecoding.org.

По сути, это приложение – попытка создать web аналог программы-напоминалки (органайзера).

Идея очень простая. Вы создаете напоминания, для которых указываете заголовок, текст, дату и периодичность. Приложение автоматически формирует RSS ленту с напоминаниями за несколько следующих дней (количество дней можно менять).

После этого вы подписываетесь на эту ленту и просматриваете напоминания с помощью RSS ридера.

Естественно, использовать это приложение имеет смысл, только если вы регулярно читаете RSS.

Теперь несколько слов о принципе работы.

Как я уже говорил, для каждого напоминания указываются два параметра, которые определяют когда оно будет добавлено в ленту. Эти параметры «дата» и «периодичность».

Кроме того, в настройках можно указать, за сколько дней до даты напоминания оно будет помещено в ленту (по-умолчанию, 5 дней).

Например, дата напоминания – 20 июля 1998 года, периодичность – ежегодно, а в настройках указано, что нужно показывать напоминания за следующие 5 дней.
Это значит, что данное напоминание будет отображаться в ленте с 15 по 20 июля каждого года. Т.е. значение года в этом случае не играет никакой роли.

Еще один пример. Дата напоминания – 5 сентября 2005 года (понедельник), периодичность – еженедельно. В ленту включаем записи за последние 4 дня.
В этом случае запись будет отображаться в ленте с пятницы по понедельник каждой недели.

Как видите, все довольно просто.

Я буду рад услышать любые отзывы, пожелания, советы и замечания, которые вы можете оставить в комментариях или отправить мне на email (vova_33 at gala dot net).

Разработка на JavaScript. Эффекта морфинга с помощью Scriptaculous

Владимир | | CSS, HTML, JavaScript.

Логотип для статьи о морфинге
Думаю, ни для кого не секрет, что за последние несколько лет резко увеличилось число сайтов, использующих различные визуальные эффекты.

Хорошо это или плохо, разговор отдельный, но, наверное, все согласятся, что грамотное использование этих эффектов позволяет создать красивый web сайт с которым легко и приятно работать.

В этой статье мы рассмотрим пример использования очень интересного эффекта из библиотеки ScriptAculousморфинга.

По определению, морфинг – это плавное преобразование одного объекта в другой.

Он очень часто используется в компьютерных играх и кинематографе.

К сожалению, возможности JavaScript в плане работы с графикой значительно скромнее, чем у библиотек вроде DirectX или программ нелинейного видеомонтажа. Т.е. вы не сможете сделать прямоугольный блок с текстом круглым или плавно преобразовать один шрифт в другой.

Тем не менее, можно изменить цвет и размеры блоков и шрифтов, их границы, фон и т.п.

Как это работает
Читать дальше

Разработка на JavaScript. Управление выполнением кода во время работы эффектов Scriptaculous

Владимир | | HTML, JavaScript.

scriptaculous afterFinish
Недавно столкнулся с интересной особенностью работы эффектов в scriptaculous, о которой и хочу рассказать.

Примечание. Для тех, кто не слышал о scriptaculous, поясню. Это очень удобная JavaScript библиотека, которая значительно упрощает работу с элементами web страницы, позволяет создавать различные визуальные эффекты, элементы управления, поддержку drug&drop и т.п. В общем, советую попробовать.

Возвращаюсь к возникшей проблеме.

Нужно было применить эффект подсветки к блоку текста, а затем удалить этот блок.

На первый взгляд, кажется, что задача решается двумя строками кода:

new Effect.Highlight('textBlock', {startcolor:"#FFFFFF", endcolor:"#FF0000", duration:2});
$('textBlock').remove();

В первой строке создается эффект подсветки и применяется к элементу с id= 'textBlock'.
Параметры эффекта:
startcolor – цвет блока в начале эффекта;
endcolor – цвет блока в конце эффекта;
duration – длительнось эффекта в секундах.

Во второй строке функция remove() удаляет блок.

Но, оказалось, что этот код не работает. Т.е. блок удаляется до того как отработает эффект.

Проблема заключается в том, что эффекты работают параллельно с основным кодом страницы.

Решение

Специально для таких ситуаций каждый эффект scriptaculous имеет четыре свойства: beforeStart, beforeUpdate, afterUpdate, afterFinish (думаю, названия говорят сами за себя). Значением этих свойств должно быть имя функции, которую нужно выполнить на соответствующем этапе работы эффекта.

В качестве параметра эта функция принимает объект с информацией об эффекте и блоке, к которому он применяется.

Например, описанная задача решается как:

new Effect.Highlight('textBlock',
	{startcolor:"#FFFFFF",
	endcolor:"#FF0000",
	duration:2,
	afterFinish: function(o) {
		o.element.remove();
	}
});

Как видите, значением параметра afterFinish является анонимная функция, в которой и выполняется удаление текстового блока.

Примечание. Свойство element, параметра функции (o), позволяет работать с блоком страницы, к которому применяется эффект.

Если вы хотите больше узнать о библиотеке scriptaculous, советую почитать:
1) официальный сайт (англ.);
2) раздел JavaScript этого блога;
3) статью «Подсветка элементов web страницы»;
4) книгу «Prototype and Scriptaculous in Action» (англ.).
Кстати, если книга кому-нибудь нужна, пишите в комментариях, могу выслать на eMail или выложить для скачивания.

Удачи!

Ускоряем разработку. Шаблоны для Eclipse

Владимир | | Eclipse, PHP, Разное.

Логотип - шаблоны Eclipse
Вы никогда не задумывались, насколько эффективно используете программы, с которыми работаете? Ведь зачастую они содержат возможности, которые позволяют не только ускорить работу, но и сделать ее более комфортной.

Одной из таких возможностей является автодополнение кода. На сегодняшний день она реализована во многих редакторах, а в IDE стала стандартом де-факто.

Принцип работы этой функции простой. Набираете часть слова, нажимаете Ctrl+Space (может быть другое сочетание клавиш) и появляется список с возможными вариантами автодополнения.

Обычно самые распространенные шаблоны уже установлены в редакторе, но максимальный эффект можно получить если добавить к ним свои собственные.

В общем, небольшим набором таких шаблонов для Eclipse PDT я и хочу поделиться.

Этот набор я создавал для быстрой вставки комментариев в php код (используется формат phpDocumentor).

Скачать xml файл с шаблонами comments_templates.xml
Читать дальше

Как реализовать асинхронную загрузку файлов с помощью JavaScript и PHP

Владимир | | CodeIgniter, HTML, JavaScript, PHP.

Логотип к статье Асинхронная загрузка файлов

В комментариях к одной из предыдущих статей меня попросили показать пример загрузки файлов на север с помощью технологии AJAX и фреймворка CodeIgniter.

Тогда я ответил, что это несложно и пообещал показать пример. Но, я поторопился и забыл упомянуть о паре «нюансов», связанных с этой операцией 🙂 . Так что, исправляю ошибку.

Механизм отправки

Прежде всего, нужно четко понимать, что отправить (загрузить) на сервер файл с помощью AJAX нельзя.

Тем не менее, можно организовать процесс загрузки так, что с точки зрения посетителя загрузка будет выглядеть асинхронной. Т.е. посетитель укажет имя файла и нажмет кнопку «Загрузить». После этого, увидит умную надпись вроде «Подождите, идет загрузка…» или какую-нибудь анимацию. А после окончания загрузки – сообщение с результатами. Страница, которую он видит, перезагружена не будет.

Но при этом отправка файла будет выполнена обычным способом.

Идея заключается в использовании невидимого фрейма (iframe), атрибута формы target и JavaScript.
Читать дальше

Web разработка. Автоматическое создание методов на PHP

Владимир | | PHP.

Заставка к статье Автоматическое создание методов на PHP

Если вы занимались объектно-ориентированным программированием, то, безусловно, знаете, что в реальных приложениях количество методов классов может быть довольно большим. Причем во многих из этих методов код попросту повторяется.

Типичный пример – методы установки и чтения свойств (или, если использовать английскую терминологию, getters and setters). Названия этих методов обычно совпадают с названиями свойств класса, только к ним добавляется приставка get или set.

Примечание. Свойства и методы класса – это переменные и функции, объявленные в нем.

Написать такие методы несложно. По-идее, они должны просто возвращать/присваивать значение свойствам. Но на практике, при присваивании нужно еще и проверять полученное значение.

Теперь представьте, что вы пишите класс, который должен хранить данные одной записи из таблицы в базе данных. А в этой таблице 20 полей. Т.е. нужно написать 40 методов. Они, конечно, простые, тем не менее, каждый все равно должен быть протестирован, а это приличный кусок работы.

В этой статье я покажу способ, позволяющий автоматизировать написание свойств.

Идея заключается в использовании метода __call(). Если этот метод объявлен в классе, то вызовы всех несуществующих методов будут переданы ему. Первый параметр __call будет содержать имя вызванного метода, а второй – массив с переданными параметрами.

Рассмотрим небольшой пример. Допустим, у нас есть класс.
Читать дальше