JavaScript Обновление картинки с постоянным URL

raggakings

Всем добрый день. У меня такой вопрос, может быть кто-нибудь сталкивался.
В каренте так как необходим быстрый ответ. Соррии за кроспост!
Если некоторая ссылка (например http://lnfm1.sai.msu.ru/image/weather_ura.png%29 изображение по которой периодически обновляется.
1) Можно ли написать скрипт который бы, скажем раз в 10 сек скачивал новыю картинку (по одной и той же ссылке) и выдавал ее на страницу.
2) Можно ли сделать так что бы выдача(обновление) осуществлялась только когда изображение полностью загружено.
Большое спасибо.

stalker33rus10

Синтаксис Jcript не помню, но вот основные соображения, а дальше google в помощь
1) Чтобы картинка перечитывалась каждый раз достаточно представить урл в виде
'http://lnfm1.sai.msu.ru/image/weather_ura.png?id=' + random(1000000)

т.е. урл как бы каждый раз меняется, но на самом деле на то что после ? в данном случае всем пофиг
Чтобы выполнить процедуру раз в 10 секунд см. jcript-функцию SetTimeout
2) Точно не скажу, но вроде можно прятать элемент как меняешь его урл, и открывать по событию onload. Но здесь могу ошибаться, пусть поправит кто знает точнее.

raggakings

За идею с random спасибо!

uncle17

новыю
по ЕГЭ поступал, небось?

IPlayImbaRace

если нужно, чтобы ссылка была постоянной, то тут AJAX нужен

Werdna

'http://lnfm1.sai.msu.ru/image/weather_ura.png?id=' + random(1000000)
Что за ебалайтунг!
Вместо того, чтобы сервер отдава no-cache, ты предлагаешь говнометодику. :(

doublemother

Если это нужно для двух картинок на сервере, то правка конфига - это исключительно усложнение и пляски. И доступа к конфигу может и не быть вообще.

Werdna

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

ifani

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

Andbar

1) Можно ли написать скрипт который бы, скажем раз в 10 сек скачивал новыю картинку (по одной и той же ссылке) и выдавал ее на страницу.
имхо, обновлять каждые 10 секунд картинку из инета - плохая практика

hwh2010

Во-вторых, клиент может находиться за кэширующим прокси, которому покласть на все заголовки, запрещающие кэширование
ну блин
в-третьих, у человека может быть браузер, который при получении заголовков на тему кеширования поджигает машину и орёт благим матом

Yaha420

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

Andbar

Погода не так быстро и существенно меняется, чтобы даже 1кб данных тащить каждые 10 секунд. Если что-то на столько быстро меняется, есть более эффективные методы динамического обмена информацией между веб-сервером и клиентом.

Dasar

. Если что-то на столько быстро меняется, есть более эффективные методы динамического обмена информацией между веб-сервером и клиентом.
в том числе и для графики в html-е?

Andbar

в том числе и для графики в html-е?
например, графики величина - время не нужно обновлять каждый раз целиком, достаточно получать последние данные и дорисовывать. Сам график вовсе не обязательно делать в виде картинки.

Dasar

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

Helga87

в html же очень бедные возможности по изменению изображений.
Canvas? Flash?

Dasar

Canvas?
он в стандарт уже вошел?
и сколько браузеров его уже поддерживает?
последний раз когда я этим интересовался - в стандарте его не было, и поддерживал его какой-то один браузер (FF - вроде)
Canvas? Flash?
на сколько я понимаю - и с тем, и с другим есть одиннаковые проблемы:
1. плохо поддерживаются - особенно как только делается шаг в сторону от wintel в сторону недокомпьютеров, мобильников и т.д.)
2. низкая скорость - прямой доступ к памяти они не дают, попиксельное изменение будет тормозным
значит все будет упираться насколько высокоуровневый и оптимизированный api для изменения изображения они дают.
api и там, и там базовый? лишь рисование графических примитивов? или есть что-то мощнее - например, применение фильтров, слияние изображений и т.д.?

Helga87

он в стандарт уже вошел?
wikipedia
The canvas element is part of HTML 5 and allows for dynamic scriptable rendering of bitmap images.
Т.е. входит в драфт стандарта.
и сколько браузеров его уже поддерживает?
Все, кроме IE. Для IE есть библиотеки вроде ExplorerCanvas и ему подобных, которые предоставляют тот же функционал через flash.
последний раз когда я этим интересовался - в стандарте его не было, и поддерживал его какой-то один браузер (FF - вроде)
Это неверная информация. Первым canvas стал поддерживать webkit. Потом подтянулся firefox, потом opera.

Helga87

на сколько я понимаю - и с тем, и с другим есть одиннаковые проблемы:
1. плохо поддерживаются - особенно как только делается шаг в сторону от wintel в сторону недокомпьютеров, мобильников и т.д.)
2. низкая скорость - прямой доступ к памяти они не дают, попиксельное изменение будет тормозным
значит все будет упираться насколько высокоуровневый и оптимизированный api для изменения изображения они дают.
api и там, и там базовый? лишь рисование графических примитивов? или есть что-то мощнее - например, применение фильтров, слияние изображений и т.д.?
Я прямо удивлен. Ты в самом деле не знаешь, что сейчас может HTML и Flash? На Flash есть real time face detection, например. Flash дает прямой доступ в память. Есть компилятор Alchemy из C во Flash. Например, уже скомпилен Doom I. Последняя версия flash дает доступ к шейдерам на видеокарте. Эффекты типа блюра уже давно можно было делать на проце с тем же интерфейсом шейдеров.
Ну т.е. есть ощущение, что ты совсем давно с web не сталкивался.

Dasar

Flash дает прямой доступ в память.
а вопрос с безопасностью как решается?

Dasar

Я прямо удивлен. Ты в самом деле не знаешь, что сейчас может HTML и Flash?
что может html знаю.
что может flash не знаю, но знаю что может делать RIA, а что не может. и чистого прямого доступа к памяти у RIA не может быть.

Dasar

Flash дает прямой доступ в память. Есть компилятор Alchemy из C во Flash.
почитал про alchemy, там нет именно прямого доступа к памяти, есть доступ к памяти через byte-код - со всеми сопутствующими проверками на безопасность.
As a reminder, the Alchemy pipeline is the following :
.c file -> LLVM intermediate bytecode -> AVM2 bytecode
However, in general, doing so reduces a lot the performances. Especially since the abstraction level of the AVM2 bytecode is a lot higher than the one of the LLVM bytecode, it means that all arbitrary operations such as pointer and memory manipulation which are done in C must be wrapped by using the memory-safe mechanisms which are available in AVM2, such as a flash.utils.ByteArray to represent the memory data.
http://ncannasse.fr/blog/adobe_alchemy
и мне интересно, насколько это быстро работает, потому что, например, в C# прямой доступ к памяти через fixed-поинтер, и доступ к массиву сильно отличается особенно на сложных алгоритмах, когда оптимизатору тяжело понять - можно ли убирать проверки или нельзя.

Helga87

что может html знаю.
что может flash не знаю, но знаю что может делать RIA, а что не может. и чистого прямого доступа к памяти у RIA не может быть.
Извиняюсь за несколько негативный тон — дико не выспался.
Что ты понимаешь под прямым доступом в память? (это, конечно, офтоп, но зато вопрос, интересный мне)

Dasar

Что ты понимаешь под прямым доступом в память? (это, конечно, офтоп, но зато вопрос, интересный мне)
чистый доступ к памяти - это отсутствие накладных расходов при обращении к памяти (таких как range check, проверка security, вызов функций и т.д.)
например, таким доступом является - обращение по поинтеру и к массиву в C/C++, обращение по fixed-поинтеру в C#.

Dasar

в качестве тестовых задач где важен доступ к памяти можно взять:
замена одних цветов на другие в изображении
заливка произвольной области
прогонка матричного фильтра (например, 3x3)
и все это допустим для изображения 2000x2000x32
и соответственно, интересно, насколько хорошо они оптимизируется на flash

Helga87

во flash это очень эффективно делается через пиксельные шейдеры (которые запускаются либо на CPU во много потоков, либо на видеокарте).

Dasar

во flash это очень эффективно делается через пиксельные шейдеры (которые запускаются либо на CPU во много потоков, либо на видеокарте).
можешь показать как через них решится, например, задача заливки?

raggakings

Погода дана для примера. Нужно обновлять каптинки с веб-камер наблюдания, они находятся на сервере с медленным (спутниковым) каналом. Сервера стоят в горах

Helga87

можешь показать как через них решится, например, задача заливки?
http://www.pixlr.com/editor/ — задача решается хорошо

Dasar

http://www.pixlr.com/editor/ — задача решается хорошо
сам-то хоть проверял? :)
создаешь максимальный документ 3500x3500, жмешь залить - подвисает секунд на 5-10.
после 4-ой перекраски, и пары рисований пером - вообще, все перестало рисоваться - наверное, что-нибудь переполнилось - FF при этом гиг отожрал - хотя изображение всего 40 метров должно весить.
сложность задачи закраски = 3500*3500*4 = 4*10^7
кол-во выполняемых тактов на современном процессоре можно оценить как 10^10тактов/секунда
т.е. куда-то как минимум делось три порядка. 1000 тактов на точку - это как-то много.
Оставить комментарий
Имя или ник:
Комментарий: