Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как сделать свой информер


Автор: rew 12.2.2012, 12:47
Доброго дня всем!!!

У меня такой вопрос как сделать свой собственный информер? То есть пользователь 
заходить на мой сайт копирует кусок кода, затем вставляет себе на сайт и у него 
отображается информация с моего сайта. Мне нужен информер на подобия курс валют или погоды.

PS: Модераторы Прошу прошения если не туда пишу

Автор: $дмитрий 12.2.2012, 15:01
1. Запрашиваешь информацию с сайта(если погода гисметиа.ру, валюта цбр)
2. С помощью GD/IM создаешь изображение и сохраняешь в файле
3. При запросе отдаешь сохраненную картинку

Технически тут самый интересный 3 шаг, но его будет смысл обсуждать когда выполнишь первые 2

Автор: rew 12.2.2012, 17:18
Спасибо Дмитрий за ответ, я тоже склонялся к такому решению. 
Это решение мне напоминает создание captcha.

Автор: Gold Dragon 13.2.2012, 08:43
Цитата($дмитрий @  12.2.2012,  16:01 Найти цитируемый пост)
Технически тут самый интересный 3 шаг, но его будет смысл обсуждать когда выполнишь первые 2 
кстати, ничего интересного smile Если на втором этапе не сохранять картинку, сразу её отдавать, то третий этап выглядит просто 
Код

<img src="http://my_site.ru/kartinka.php?id=1234" />

где по id например можно узнавать пользователя и отдавать ему картинку с особыми параметрами

Автор: krundetz 13.2.2012, 09:36
Цитата(Gold Dragon @  13.2.2012,  08:43 Найти цитируемый пост)
Если на втором этапе не сохранять картинку, сразу её отдавать, то третий этап выглядит просто 

Тем самым увеличим нагрузку почти экспоненциально росту числа размещенных информеров и количеству их загрузок.

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

Автор: $дмитрий 13.2.2012, 10:11
krundetz правильно пишет, немного дополню

Цитата

где по id например можно узнавать пользователя

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

Цитата

Твой вариант будет рационален только в случае постоянного изменения данных на картинке

Операция с картинками требует немало ресурсов, при большОй посещаемости и частой обновлении информации стоит подумать нат тем, чтобы переложить часть вычислений на клиента, либо искать альтернативную поточную технологию

Автор: MoLeX 13.2.2012, 10:27
и я бы не советовал использовать GD

Автор: gta4kv 13.2.2012, 10:29
Цитата(MoLeX @ 13.2.2012,  10:27)
и я бы не советовал использовать GD

м?

Автор: MoLeX 13.2.2012, 11:35
http://www.php.net/manual/ru/book.image.php
http://www.php.net/manual/ru/book.imagick.php
есть что сравнить)

а если изображения генерятся на лету, то лучше использовать стороннее решение, незачем такое на РНР вешать

Автор: krundetz 13.2.2012, 11:43
Цитата($дмитрий @  13.2.2012,  10:11 Найти цитируемый пост)
на выдачу правильных хедеров.

это самое интересное
Цитата(MoLeX @  13.2.2012,  10:27 Найти цитируемый пост)
и я бы не советовал использовать GD 

почему?
Цитата($дмитрий @  13.2.2012,  10:11 Найти цитируемый пост)
Операция с картинками требует немало ресурсов, при большОй посещаемости и частой обновлении информации стоит подумать нат тем, чтобы переложить часть вычислений на клиента, либо искать альтернативную поточную технологию 

Зависит ещё от сложности картинки. Можно сделать пере сбор картинки не по каждому запросу, а только по интервальному, как например на LiveInternet сделан счетчик посетителей. На нем картинка выдается предыдущая. Картинка же с новой информацией будет отдана позже. То есть картинка пере генерируется с интервалом, за это время информация для нее может быть обновлена несколько раз.
Как ты предлагаешь переложить вычисления на сторону клиента?

Цитата(MoLeX @  13.2.2012,  11:35 Найти цитируемый пост)
а если изображения генерятся на лету, то лучше использовать стороннее решение, незачем такое на РНР вешать 

аргументы если можно. пока я их не увидел.

Автор: $дмитрий 13.2.2012, 20:25
IM безусловный лидер, причины:

- СКОРОСТЬ ОБРАБОТКИ
Тестировал, в свое время, ресайз 1МБ картинки. Результаты 1/20. Причем с увеличением размера файла соотношение только растет. Почему GD тормоз? Как рассказывал один знакомый(который непосредственно учавствовал в разработки GD) причины кроются в кривых алгоритмах обработки. Короче не математики ЭТО писали. Результаты подтверждают эти слова

- ФУНКЦИОНАЛЬНОСТЬ
Тут и комментировать особо нечего, лучше http://www.imagemagick.org/image/examples.jpg. GD не обладает таким широким функционалом

- МЕНЬШЕ ПИСАНИНЫ
Совсем недавно писал модуль ресайза. Если у пользователя есть поддержка IM подрубается он, иначе GD. Функциональность и того и другого идентичная. В итоге IM - 30 строк, GD - 129  smile

Так что ребята у кого есть возможность пользуйтесь IM

Автор: krundetz 14.2.2012, 00:19
Цитата($дмитрий @  13.2.2012,  20:25 Найти цитируемый пост)
Так что ребята у кого есть возможность пользуйтесь IM 

Это само собой, просто хотелось развернутый ответ услышать. Спасибо за него.
Хотя мне больше от тебя хотелось услышать как переложить вычисления по обработке изображений на пользователя?

Автор: $дмитрий 14.2.2012, 00:46
Таааак с первым вопросом разобрались идем дальше  smile
Цитата

Хотя мне больше от тебя хотелось услышать как переложить вычисления по обработке изображений на пользователя? 

От сервера получаешь текстовые данные, формируешь изображение с помощью JS/Canvas/Flash. Обычно такое встречается в графиках реального времени.

Или на примере этого форума, подсветкой синтаксиса тоже занимается клиент, а не сервер

Не стоит забывать что клиент это тоже РЕСУРС, хоть и не надежный

Автор: Gold Dragon 14.2.2012, 07:27
Canvas? А не получится что код будет больше размером чем картинка? и про Осла можно забыть smile

Автор: rew 14.2.2012, 07:30
народ, а если сделать так.
когда в первый раз идет запрос к моему сайту я созданю картинку и сохраняю у себя на сервере, 
а  при последующих обращениях я просто буду ее возвращать. информация на информере не меняется в течении всего дня.

Автор: Gold Dragon 14.2.2012, 07:33
ну это само собой.. сделать простенькое кеширование

Автор: $дмитрий 14.2.2012, 08:02
Цитата

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

Да

Цитата

А не получится что код будет больше размером чем картинка?

Это смотря какая задача/условия, где-то лучше сразу отдавать картинку, где-то распределять вычисления. В данном случаи конечно картинкой и не парится

Цитата

и про Осла можно забыть

Для 7/8 вроде есть хак

Автор: krundetz 14.2.2012, 09:59
Цитата($дмитрий @  14.2.2012,  00:46 Найти цитируемый пост)
От сервера получаешь текстовые данные, формируешь изображение с помощью JS/Canvas/Flash. Обычно такое встречается в графиках реального времени.

Я тебя понял. Хотя думал немного о другом, а именно частичной обработке растрового графического файла на клиенте. Примерно так:
1. Клиент запрашивает графический файл.
2. Если файл в актуальном виде есть на сервере, сервер отдает его.
3. Если файл на сервере имеет неактуальное состояние, сервер отдает заготовку на него и говорит как ее необходимо обработать.
4. Клиент производит необходимую обработку и актуализирует файл на сервере.
И сразу возникает вопрос как проверить правильность обработки?
 smile 
Цитата($дмитрий @  14.2.2012,  00:46 Найти цитируемый пост)
Не стоит забывать что клиент это тоже РЕСУРС, хоть и не надежный 

об этом я помню, поэтому и интересовался.
Цитата(rew @  14.2.2012,  07:30 Найти цитируемый пост)
когда в первый раз идет запрос к моему сайту я созданю картинку и сохраняю у себя на сервере, 
а  при последующих обращениях я просто буду ее возвращать. информация на информере не меняется в течении всего дня. 

вариант неплох если данные меняются 1 раз в сутки.

Автор: $дмитрий 14.2.2012, 10:30
Цитата

И сразу возникает вопрос как проверить правильность обработки?

Задача конечно абстрактная, но сам вопрос интересен

С одним клиентам никак, а вот если их несколько можно проверять процент совпадений. Насколько я понял, примерно так работает рекаптча

Автор: krundetz 14.2.2012, 12:01
Цитата($дмитрий @  14.2.2012,  10:30 Найти цитируемый пост)
С одним клиентам никак, а вот если их несколько можно проверять процент совпадений. Насколько я понял, примерно так работает рекаптча 

при условии обновления данных во временном интервале, безусловно это выход, а если же данные для разных клиентов обрабатываются по разному то нет (((

Автор: solenko 14.2.2012, 19:56
Цитата($дмитрий @  14.2.2012,  09:30 Найти цитируемый пост)
С одним клиентам никак, а вот если их несколько можно проверять процент совпадений. Насколько я понял, примерно так работает рекаптча 

В рекапче не зря два слова. Одно она знает, а второе вы распознаете за нее.

Добавлено через 1 минуту и 41 секунду
Цитата($дмитрий @  14.2.2012,  09:30 Найти цитируемый пост)

С одним клиентам никак, а вот если их несколько можно проверять процент совпадений. Насколько я понял, примерно так работает рекаптча 

мне вот интересно, алгоритм сравнения и _выбора_ верного будет более ресурсоемок, чем сама обработка? )

Автор: krundetz 14.2.2012, 22:20
Цитата(solenko @  14.2.2012,  19:56 Найти цитируемый пост)
мне вот интересно, алгоритм сравнения и _выбора_ верного будет более ресурсоемок, чем сама обработка? )

склоняюсь к тому что да, либо равнозначен ему, иначе вопрос не озвучил

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

чтобы оторваться от абстракции, возьмем в пример сайт генератор бэкгроундов.
Предположим что на сайте пользователь может нарисовать свой бэкграунд, скомпоновав имеющиеся заготовки, а потом его опубликовать. Допустим мы нашли вариант при котором клиент может сгенерировать растровую картинку. После того как картинка создана, пользователь хочет ей похвастаться, для этого ее можно опубликовать, на том же ресурсе. Вот здесь икроется подвох, надо быть уверенным что:
1. картинка сгенерированна правильно, то есть другой пользователь сможет спокойно сделать подобную картинку, изменив только основные цвета. Будет очень непросто, когда, другие пользователи, погребут владельца сайта, в ворохе жалоб на его работоспособность, из-за неккоректности опубликованной картинки.
2. картинка не является целенаправленой вредительской акцией. Репутация сайта будет подмочена, если все примеры пользовательских бэкграундов будут содержать матерные слова и т.д. и т.п.
3. просто не забываем про принцип, что все данные пришедшие от пользователя должны проверяться.

Автор: $дмитрий 15.2.2012, 06:14
Цитата

мне вот интересно, алгоритм сравнения и _выбора_ верного будет более ресурсоемок, чем сама обработка? )

Нет, если сравнивать хеши в разумном количестве

Автор: $дмитрий 15.2.2012, 06:31
Цитата

В рекапче не зря два слова. Одно она знает, а второе вы распознаете за нее.

В каптче нас интересует только это:
"Неизвестное системе слово, введённое пользователем, сохраняется и используется в качестве возможного варианта распознания. Конечное распознание слова определяется путём вычисления наиболее часто используемого слова для ввода."

Автор: Aleks1 30.10.2012, 06:01
Цитата($дмитрий @ 13.2.2012,  20:25)
IM безусловный лидер, причины:
...
- ФУНКЦИОНАЛЬНОСТЬ
Тут и комментировать особо нечего, лучше http://www.imagemagick.org/image/examples.jpg. GD не обладает таким широким функционалом
...

интересует вопрос: есть ли в GD реализация эффекта "plasma"?
можно ли его реализовать комбинацией GD-фильтров? 

Автор: baldina 30.10.2012, 09:38
Цитата(Gold Dragon @  14.2.2012,  07:27 Найти цитируемый пост)
 А не получится что код будет больше размером чем картинка?

от данных зависит. для валюты или погоды данные невелики - строчка до 50 символов

Добавлено через 1 минуту и 22 секунды
кажется, уже сказали...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)