Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

ExCode.ru - программирование на высоком уровне


Информационный Канал Subscribe.Ru

ExCode.ru - программирование на высоком уровне
Выпуск №14 ( 2005.10.29 )
Здравствуйте, уважаемые подписчики!

Сегодня 29 октября, сегодня мой День Рожденья, мне уже стукнуло 19, еще чуть-чуть и будет 20, сума сойти можно! Сегодня для вас выложил статью по JAVA. Вообще за последнюю неделю на сайте появилось огромное количество новых статей (около 500). По Delphi и JAVA. Вообще JAVA очень перспективный язык, поэтому советую всем его изучить.


Новости копьютерного мира:
2005-10-28    ОС Solaris 10: зарегестрировано более 3 миллионов скачиваний
Корпорация Sun Microsystems объявила о том, что с 31 января (момента официального выпуска ОС) было распространено 3 065 092 зарегистрированных лицензий на использование ОС Solaris 10. Пользователи продолжают бесплатно загружать ОС Solaris 10 - каждую неделю регистрируется около 80 000 новых лицензий.
Меньше чем за год ОС Solaris 10 установила свыше 46 мировых рекордов производительности и заслужила признание более 1500 независимых поставщиков программного обеспечения.

2005-10-28    США переживают SMS-бум
Первоначально родившаяся на территории стран Азии и Тихоокеанского региона, технология обмена короткими текстовыми сообщениями (SMS), быстро завоевала популярность. Однако, как и с большинством других подобных разработок, наибольшая популярность их длительное время наблюдалась именно в вышеупомянутых регионах.

2005-10-28    Samsung выпускает первые чипы GDDR4
Компания Samsung Electronics разработала самую быструю в отрасли память для графических подсистем. Пробные образцы уже представлены ведущим производителям графических плат для тестирования. Память GDDR4 (Graphics Double Data Rate 4th Generation) способна работать с данными на скорости 2,5 Гбит/с. Первые выпущенные чипы имеют плотность 256 Мб.

2005-10-28    В Армии США запретили гражданскую электронную почту
ВВС и ВМС США запретили своим военнослужащим пользование коммерческими почтовыми интернет-службами. В сухопутных войсках эта мера пока не введена.

2005-10-28    Беларусь построит собственную "силиконовую долину"
Президент Белоруссии Александр Лукашенко требует незамедлительно приступить к созданию Парка высоких технологий в Белоруссии. Во вторник глава государства посетил место, где будет создана белорусская "силиконовая долина".

2005-10-28    Sun выпускает Jini по лицензии Open Source
Компания Sun Microsystems предложила свой инструмент разработки Jini по лицензии Open Source Apache.

2005-10-28    Вышла новая версия MySQL 5.0
Компания MySQL AB, разработчик самой популярной в мире базы данных Open Source, предоставили MySQL 5.0 - самое значительное обновление за десятилетнюю историю компании. Программу можно скачать по адресу http://dev.mysql.com/downloads/mysql/5.0.html.

Статья номера:

Скрипт фотогалереи с кэшированием изображений


Скрипт гарантированно работает в Internet Explorer версии 5.0 и выше (с другими версиями не тестировался, но также должен работать).

Список изображений галереи задается в коде скрипта в виде массива.
Из-за достаточно небольшого объема кода можно, например, легко производить его генерацию с помощью серверного скрипта, либо включать его фрагменты в страницу с помошью SSI. Таким образом достаточно просто организовать фотогалерею из нескольких разделов с разными списками изображений.
Далее приведен код скрипта, в html-документе.


<html>
<body>

<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><a href="#" onclick="o.prev()">< предыдущая</a></td>
<td><img src="images/sp.gif" width="40" height="40" name="eq"
onclick="o.reload()" style='cursor:hand'
alt="перегрузить текущую" hspace="5" vspace="5">
</td>
<td><a href="#" onclick="o.next()">следующая ></a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td align="center"><a href="#" onclick="OpenWin(pic.src)"><img
src="" name="pic" id="pic" width="150" border="0" alt="">
</td>
</tr>
<tr>
<td><div id="img_descr"></div></td>
</tr>
<tr>
<td><div id="img_list"></div></td>
</tr>
</table>

<script language="JavaScript">
function img_obj()
{
var errorImg = "images/sp.gif",
waitImg = "images/sp.gif",
eq_img = "images/eq.gif",
spacer_img = "images/sp.gif",
load_time_wait = 30,
loop_index = 0,
ArrayImg = new Array(),
ArraySrc = new Array(
{"src":"3d_462.jpg","descr":"3d_462"},
{"src":"3d_463.jpg","descr":"3d_463"},
{"src":"3d_466.jpg","descr":"3d_466"},
{"src":"3d_467.jpg","descr":"3d_467"},
{"src":"3d_468.jpg","descr":"3d_468"},
{"src":"3d_469.jpg","descr":"3d_469"},
{"src":"3d_470.jpg","descr":"3d_470"},
{"src":"3d_471.jpg","descr":"3d_471"},
{"src":"3d_472.jpg","descr":"3d_472"},
{"src":"3d_473.jpg","descr":"3d_473"},
{"src":"3d_482.jpg","descr":"3d_482"},
{"src":"3d_483.jpg","descr":"3d_483"},
{"src":"3d_484.jpg","descr":"3d_484"},
""),
index = 0,
url = "",
CreateListFlag = true,
count = ArraySrc.length-2,
timer_id, url_str;

this.init =
function ()
{
url = "gal/";

if(CreateListFlag)
{
str = "<ol>";
for(i=0;i<=count;i++)
{
str += "<li><a href='#' onclick='OpenWin(\""+
url+ArraySrc.src+"
\")'>"
+
ArraySrc.descr+"</a><br>";
}
document.getElementById("img_list").innerHTML =
str+"</ol>";
}
change_img();
}

tm = function (obj)
{
if (obj.complete)
{
eq.src = spacer_img;

if (obj.fileSize < 0)
{
pic.src = errorImg;
document.getElementById("img_descr").innerText =
"Время загрузки истекло";
}
else
{
pic.src = obj.src;
document.getElementById("img_descr").innerText =
ArraySrc[index].descr;
}

clearInterval(timer_id);
loop_index = 0;
}
else
{
loop_index++;

if (loop_index >
load_time_wait)
{
eq.src = spacer_img;

loop_index = 0;
pic.src = errorImg;
document.getElementById("img_descr").innerText =
"Время загрузки истекло";
clearInterval(timer_id);
}
}
}

change_img =
function()
{
pic.src = waitImg;
ArrayImg[index] = new Image();

ArrayImg[index].src = url+ArraySrc[index].src;
obj = ArrayImg[index];

eq.src = eq_img;

clearInterval(timer_id);
timer_id = setInterval("tm(obj)",1000);
}

this.reload =
function ()
{
if (!ArrayImg[index].complete)
{
pic.src = waitImg;
obj = ArrayImg[index];
eq.src = eq_img;
clearInterval(timer_id);
timer_id = setInterval("tm(obj)",1000);
}
}

this.next =
function ()
{
if (index < count)
{
index++;
change_img();
}
else
{
alert("больше изображений нет");
}
}

this.prev =
function ()
{
if (ArraySrc[index-1])
{
index--;
pic.src = waitImg;
obj = ArrayImg[index];
eq.src = eq_img;

clearInterval(timer_id);
timer_id = setInterval("tm(obj)",1000);
}
else if (index-1 >
= 1)
{
index--;
change_img();
}
else
{
alert("вы уже в начале");
}
}
}

function Init()
{
o = new img_obj();
o.init();
}

Init();

function OpenWin(url)
{
www = window.open(url,'img','resizable=1,scrollbar=yes,'+
'toolbar=0,status=0,menubar=0,'+
'width=700,height=500');
www.focus();
}
</script>

</body>
</html>


Скрипт конфигурируется путем изменения значений переменных:

errorImg - задает URL изображения, которое будет отображено вместо картинки из галереи при возникновении ошибок ее загрузки (по умолчанию - прозрачный однопиксельный GIF).

waitImg - задает URL изображения, отображаемого вместо очередной картинки из галереи в процессе ее загрузки (по умолчанию - прозрачный однопиксельный GIF).

eq_img - задает URL изображения, отображаемого над изображением галереи в процессе его загрузки (по умолчанию - анимированный GIF).

spacer_img - задает URL изображения, отображаемого над картинкой из галереи в периоды времени, когда не производится загрузка очередной картинки (тогда отображается изображение, задаваемое eq_img). По умолчанию это все тот же однопиксельный GIF.

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

ArraySrc - представляет собой массив структур, содержащий информацию о изображениях галереи. Фактически это массив структур, каждая из которых определяет имя файла изображения галереи и его описание, которое будет отображено на генерируемой скриптом странице.

url - значение присваивается в методе init объекта типа img_obj и задает URL каталога картинок.

--- * ---

Вся функциональность скрипта реализуется методами объекта типа img_obj.
Далее приведено описание этих методов.

init - этот метод выполняет генерацию страницы галереи и вызывает метод change_img для начала загрузки первого изображения галереи.

change_img - инициализирует процесс загрузки очередного изображения галереи (номер изображения определяется переменной index) и запускает таймер для отслеживания момента превышения допустимого интервала времени загрузки картинки (задается переменной load_time_wait). Обработчиком событий таймера является метод tm.

tm - в данном методе проверяется состояние процесса загрузки изображения (свойство complete объекта img). Если изображение загружено, то производится вывод описания изображения и останавливается таймер, запущенный в методе change_img. Если изображение не загружено, то производится проверка на превышение максимально допустимого интервала времени загрузки картинки. И если интервал превышен, то на странице выводится соответствующее сообщение, вместо изображения из галереи выводится изображение, URL которой задан в переменной errorImg и останавливается таймер.

reload - выполняет перезагрузку текущего изображения.

next - выполняет загрузку следующего по списку (массив ArraySrc) изображения.

prev - выполняет загрузку предыдущего по списку (массив ArraySrc) изображения.

Также скрипт содержит две глобальные вспомогательные функции: Init() - создает объект типа img_obj, вызывает его метод init, что приводит к генерации содержимого страницы галереи и началу загрузки первой страницы.

OpenWin(url) - открывает новое окно браузера для просмотра изображения галереи в масштабе 100%. Эта функция вызывается из обработчиков onclick списка ссылок, сгенерированных на странице.


Новые статьи на сайте ExCode.ru:
НазваниеРаздел
Скрипт фотогалереи с кэшированием изображенийJAVA / JavaScript
JavaScript. СправочникОбзор книг » JAVA
Практические занятия по JavaScriptОбзор книг » JAVA
Построение Wi-Fi шлюза на Perl Perl » Общие
То, чего не хватало - JDesktop Integration ComponentsJAVA / JavaScript » Java
The Spring framework: ОсновыJAVA / JavaScript » Java
State Machine – расширение языка Java для эффективной реализации автоматовJAVA / JavaScript » Java
Модификация открытого кода пакета apache xml-rpc в JavaJAVA / JavaScript » Java
Самораспаковывающиеся jar-файлыJAVA / JavaScript » Java
Использование Java классов и объектов в Oracle8iJAVA / JavaScript » Java
Особенности работы с представлением данных и манипуляциями со столбцами в объекте JTableJAVA / JavaScript » Java
Реализация возможности выбора цвета в ячейке JTable с помощью JComboBoxJAVA / JavaScript » Java
Как стать "тигром"JAVA / JavaScript » Java
Как хранить настройки java программ?JAVA / JavaScript » Java
Использование select для высокоскоростного сетевого взаимодействияJAVA / JavaScript » Java
Транзакции в J2EEJAVA / JavaScript » Java
Java-апплеты и Gif-анимацияJAVA / JavaScript » Java
Компонентная объектная модель JavaBeansJAVA / JavaScript » Java
Доступ к COM портуJAVA / JavaScript » Java
Переход к реализованной IBM 64-разрядной JVM для 64-разрядного издания Windows 2000JAVA / JavaScript » Java
JNI: взаимодействие Java с другими языкамиJAVA / JavaScript » Java
C++ и Java: совместное использованиеJAVA / JavaScript » Java
Совместная отладка Java и C/C++ кодаJAVA / JavaScript » Java
Динамическая графика в Java сервлетахJAVA / JavaScript » Java
Java Server Pages (JSP) и библиотеки custom тэговJAVA / JavaScript » Java
Сравнение объектов в JavaJAVA / JavaScript » Java
Сортировка в Java - легко!JAVA / JavaScript » Java
Обработка событий с помощью анонимных внутренних классовJAVA / JavaScript » Java
Доступ к базам данных из Java-программ и проблемы русификацииJAVA / JavaScript » Java
Научитесь эффективно использовать reference classes (ссылочные классы)JAVA / JavaScript » Java
String против StringBufferJAVA / JavaScript » Java
Java. Объектно-ориентированное программирование с интерфейсамиJAVA / JavaScript » Java
Краткое введение в технологию Enterprise JavaBeansJAVA / JavaScript » Java
Java и UnicodeJAVA / JavaScript » Java
Борьба за чистоту, или прелюдия к схватке за JavaJAVA / JavaScript » Java
Аргументы в пользу портлетовJAVA / JavaScript » Java
Смертельная схватка: .Net против J2EEJAVA / JavaScript » Java
EJB-ить или не EJB-ить, вот в чем вопросJAVA / JavaScript » Java
Введение в SWINGJAVA / JavaScript » Java
Системы безопасности для клиентов. Создание доверенного апплета для реализации цифровой подписи с использованием криптосистем открытого ключаJAVA / JavaScript » Java
Системы безопасности для клиентов. Создание доверенного апплета в JDK1.3JAVA / JavaScript » Java
Создание и использование архивов JavaJAVA / JavaScript » Java
Множественное наследование в Java. Противоречия и способы их решенияJAVA / JavaScript » Java
Использование OpenGL в JavaJAVA / JavaScript » Java
Java-приложение: заглянем внутрьJAVA / JavaScript » Java
Настройка переменных окруженияJAVA / JavaScript » Java
Создаем клиент-сервер на сокетахJAVA / JavaScript » Java
Java: Русские буквы и не только...JAVA / JavaScript » Java
Java: Конфигурация программJAVA / JavaScript » Java
Java: Управление ресурсамиJAVA / JavaScript » Java
Условная компиляция Java на основе XML и XSLJAVA / JavaScript » Java
Подключение к базе данных с помощью JDBCJAVA / JavaScript » Java
JSP: Java Server PagesJAVA / JavaScript » Java
Ведущий рассылки: LedWorm
ExCode.ru 2005

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.excode
Архив рассылки
Отписаться
Вспомнить пароль

В избранное