<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Insight IT</title><link>https://www.insight-it.ru/</link><description></description><atom:link href="https://www.insight-it.ru/tag/izobrazhenie/feed/index.xml" rel="self"></atom:link><lastBuildDate>Sun, 13 Feb 2011 10:44:00 +0300</lastBuildDate><item><title>Инструменты для минимизации размера изображений</title><link>https://www.insight-it.ru//frontend/2011/instrumenty-dlya-minimizacii-razmera-izobrazhenijj/</link><description>&lt;p&gt;В то время как масштабируемость серверной части интернет проекта -
сложное дело, требующее тщательного планирования, большинству сайтов
можно обойтись существенно более простыми способами для повышения
визуального быстродействия с точки зрения пользователей. О небольшой
части из них я и хотел Вам сегодня рассказать.
&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 id="motivatsiia"&gt;Мотивация&lt;/h2&gt;
&lt;p&gt;Если воспользоваться инструментами для анализа времени загрузки страницы
(например Firebug или Chrome Developer Tools), то не сложно обратить
внимание на тот факт, что во многих случаях существенную часть ожидания
загрузки страницы проходит в процессе загрузки внешних файлов, требуемых
для рендеринга страницы:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Изображения&lt;/li&gt;
&lt;li&gt;Файлы стилей&lt;/li&gt;
&lt;li&gt;Файлы JS-скриптов&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;На этот интервал времени абсолютно никак не влияет используемый язык
программирования и баз данных, основных способов повлиять на него в
меньшую сторону несколько:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Вынести на отдельный (под)домен (позволяет браузеру качать больше
    файлов одновременно)&lt;/li&gt;
&lt;li&gt;Отредактировать HTML для избежания блокировок (так называемого
    "водопада")&lt;/li&gt;
&lt;li&gt;Настроить HTTP-сервер на предмет правильных заголовков Expires и
    Etags&lt;/li&gt;
&lt;li&gt;Воспользоваться для отдачи статики nginx или аналогом&lt;/li&gt;
&lt;li&gt;Сменить интернет-канал у сервера или сам сервер&lt;/li&gt;
&lt;li&gt;Воспользоваться услугами CDN (Content Delivery Network)&lt;/li&gt;
&lt;li&gt;Уменьшить размер передаваемых файлов&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Сейчас я хочу остановиться на последнем пункте в отношении изображений,
про скрипты, стили и остальные методы стоит поговорить отдельно в другой
раз.&lt;/p&gt;
&lt;h2 id="vybor-pravilnogo-formata-izobrazhenii"&gt;Выбор правильного формата изображений&lt;/h2&gt;
&lt;p&gt;Первым шагом по снижению объемов изображений должен быть выбор
адекватного назначению изображения формата:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JPEG&amp;nbsp;- для всех фотографий&lt;/li&gt;
&lt;li&gt;GIF&amp;nbsp;- исключительно для анимации (например для крутящейся загрузки)&lt;/li&gt;
&lt;li&gt;PNG - для всего, что не является фотографией или анимацией: иконки,
    графики, элементы интерфейса&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="gif"&gt;GIF&lt;/h2&gt;
&lt;p&gt;На многих сайтах до сих пор по старинке используется этот формат
изображений, не смотря на то, что PNG при таком же качестве имеет
меньший размер файлов.&lt;/p&gt;
&lt;p&gt;Рецепт лежит на поверхности: конвертируйте все GIF в PNG. Проще всего
это сделать с помощью &lt;a href="https://www.insight-it.ru/goto/71cf44a6/" rel="nofollow" target="_blank" title="http://www.imagemagick.org/"&gt;ImageMagick&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# Конкретный файл&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;convert foo.gif foo.png

&lt;span class="c"&gt;# Все файлы в директории&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;mogrify -format png *.gif

&lt;span class="c"&gt;# Или&amp;nbsp;OptiPNG:&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;optipng *.gif
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Дальше все просто: работаем с этими изображениями как и с остальными
PNG, о чем пойдет речь ниже.&lt;/p&gt;
&lt;h2 id="png"&gt;PNG&lt;/h2&gt;
&lt;p&gt;К сожалению, многие редакторы изображений сохраняют PNG-файлы совершенно
не заботясь об их размере.&lt;/p&gt;
&lt;p&gt;Но за многие годы была разработана масса различных утилит, исправляющих
данную ситуацию. Основных принципа, на которых они основываются, четыре:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Удаление лишнего:&lt;/strong&gt; так как PNG - расширяемый формат, далеко не
    все данные и заголовки требуются для отображения изображения в
    браузере. Их можно смело выкинуть.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Изменение типа PNG:&lt;/strong&gt; использование только оттенков серого или
    произвольной палитры приемлемо для многих случаев, что по сравнению
    с полной гаммой существенно снижает размер изображения&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Использование подходящего "фильтра":&lt;/strong&gt; они являются шагом перед
    сжатием изображения, правильный фильтр позволяет компрессии работать
    эффективнее&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Оптимизация самой компрессии:&lt;/strong&gt; использование более эффективного
    алгоритма&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Примеры использования наиболее эффективных инструментов:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# optipng&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;optipng -o7 foo.png

&lt;span class="c"&gt;# pngcrush&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;pngcrush -rem alla -brute -reduce foo.png foo.png.temp
&lt;span class="nv"&gt;$ &lt;/span&gt;mv foo.png.temp foo.png

&lt;span class="c"&gt;# pngout&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;pngout foo.png

&lt;span class="c"&gt;# advpng&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;advpng -z4 foo.png
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="jpeg"&gt;JPEG&lt;/h2&gt;
&lt;p&gt;В отличии от PNG и GIF каждое сохранение JPEG файла приходят к потерям
данных и, как следствие, снижению качества фотографии, без потерь могут
выполняться только изменение комментариев, метаданных и повороты на
90/180/270 градусов. Основным инструментом для минимизации JPEG без
потери качества является &lt;a href="https://www.insight-it.ru/goto/4ee62c2b/" rel="nofollow" target="_blank" title="http://www.phpied.com/installing-jpegtran-mac-unix-linux/"&gt;jpegtran&lt;/a&gt;, используется достаточно просто:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# обычный режим&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;jpegtran -copy none source.jpg &amp;gt; destination.jpg

&lt;span class="c"&gt;# режим progressive&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;jpegtran -copy none -progressive source.jpg &amp;gt; destination.jpg
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Прогрессивный режим заслуживает отдельного внимания:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Основная особенность - в нормальных браузерах (не IE) такой JPEG
    быстро отображается в низком качестве, а по мере загрузки файла
    полностью качество изображения улучшается (обычный JPEG грузится
    сверху вниз)&lt;/li&gt;
&lt;li&gt;По объему файла этот тип JPEG начинает выигрывать у обычного начиная
    от размера файла в 10Кб&lt;/li&gt;
&lt;li&gt;Изображение менее 10Кб все равно слишком маленькое, чтобы от самого
    процесса прогрессивной загрузки был какой-либо толк&lt;/li&gt;
&lt;li&gt;Если хочется подробнее разобраться - читаем
    &lt;a href="https://www.insight-it.ru/goto/85664134/" rel="nofollow" target="_blank" title="http://yuiblog.com/blog/2008/12/05/imageopt-4/"&gt;здесь&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="zakliuchenie"&gt;Заключение&lt;/h2&gt;
&lt;p&gt;Использование простых инструментов, описанных выше, позволяет сократить
общий размер используемых на веб-странице изображений порой до 30%, а то
и больше. Эффект, который дает этот процесс, конечно же зависит от
"запущенности" ситуации, но в большинстве случаев тоже измеряется
десятками процентов от общего времени загрузки страницы. Чтобы
воспользоваться ими требуется всего несколько минут, что существенно
меньше, чем попытки оптимизировать код или запросы к базе данных, не
говоря уже о полной переработке архитектуры системы.&lt;/p&gt;
&lt;p&gt;Если кто-то знает более эффективные приемы по уменьшению размеров
изображений - прошу в комментарии. Про скрипты и стили поговорим
отдельно :)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Основным источником информации послужила &lt;a href="https://www.insight-it.ru/goto/54bb0fc6/" rel="nofollow" target="_blank" title="http://www.phpied.com/big-list-image-optimization-tools/"&gt;статья Stoyan Stefanov&lt;/a&gt;,
которую я сильно подсократил до тех инструментов, которыми пользуюсь сам
на практике, и моментов, которые считаю интересными. Желающим покопаться
в этой тематике поглубже рекомендую изучить весь его блог - можно найти
много интересного. Про &lt;a href="/feed/"&gt;подписку на Insight IT&lt;/a&gt; тоже не
забываем)&lt;/em&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Sun, 13 Feb 2011 10:44:00 +0300</pubDate><guid>tag:www.insight-it.ru,2011-02-13:frontend/2011/instrumenty-dlya-minimizacii-razmera-izobrazhenijj/</guid><category>gif</category><category>ImageMagick</category><category>jpeg</category><category>jpegtran</category><category>optipng</category><category>png</category><category>изображение</category><category>инструменты</category><category>клиентская оптимизация</category><category>компрессия</category><category>оптимизация</category><category>разработка</category><category>утилиты</category></item><item><title>it's a pic</title><link>https://www.insight-it.ru//misc/2008/its-a-pic/</link><description>&lt;p&gt;&lt;img alt="it's a pic logo" class="left" src="https://www.insight-it.ru/images/itsapic-logo.png" title="логотип"/&gt;
Не удивлюсь, если заголовок этого поста вам не сказал ровным счетом
ничего - это вполне логично. Именно эту ситуацию я и хотел бы сегодня
исправить: &lt;strong&gt;it's a pic&lt;/strong&gt; представляет собой...
&lt;!--more--&gt;
...очередной интернет-проект. Хотели увидеть что-то более
грандиозное? - читайте дальше!&lt;/p&gt;
&lt;p&gt;Начать наверное стоит с обозначения основной сути: поисковая система
изображений, ориентированная на глобальный рынок. Да-да, мы уже видели
поиск картинок в исполнении Google/Yahoo!/MSN/Яндекс/Рамблер (нужное
подчеркнуть) - скажете вы, так в чем же разница?&lt;/p&gt;
&lt;p&gt;Сейчас объясню. Никогда не возникало мысли, что частенько поиск картинок
в обычных поисковых системах по большей части выдает всякий бред, очень
слабо коррелирующий с тем, что Вы на самом деле искали? Основная их
проблема заключается в том, что способов провести ассоциацию между
текстом и изображением не так-то много. Чаще всего в их распоряжении
лишь HTML-документы, ссылающиеся на изображение. То есть на основании
атрибута &lt;code&gt;alt&lt;/code&gt; у тэга &lt;code&gt;&amp;lt;img /&amp;gt;&lt;/code&gt; и изредка anchor-текста обычных
ссылок, поисковая система должна составить представление о том, что же
на самом деле изображено в графическом файле. Варианты ручного
построения таких соответствий тоже существуют, но либо нужно платить
огромнейшему количеству человек за рутинную работу (что-то на грани
фантастики - количество изображений в Сети измеряется числом с слишком
большим количеством нулей) или подталкивать людей заниматься этим
бесплатно, оформив это, например, в виде online-игры. Обычно в таких
играх двум участникам одновременно предоставляется один и тот же набор
изображений, а их задачей является последовательно вводить свои
ассоциации связанные с текущим изображением. Если они оба ввели одно и
то же слово - оно ассоциируется с изображением, а пользователям
начисляются виртуальные очки. В общем поиск изображений по ключевым
словам - задача, связанная с массой проблем и неточностей.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It's a pic&lt;/strong&gt; является как раз поисковой системой, призванной избавить
людей, ищущих изображения от всех этих проблем с неточностью и
некорректностью результатов. Чтобы не придумывать каких-то временных
решений проблемы было решено искоренить основательно: основная идея
заключается в использовании в качестве критерия поиска не набор ключевых
слов, а просто изображение. Сказать, что два изображения похожи,
компьютеру намного проще, чем сказать что на картинке нарисован,
например, жираф - именно на это и делает ставку этот проект.&lt;/p&gt;
&lt;p&gt;Выглядит это примерно следующим образом: допустим Вы хотите найти
побольше изображений заката и выбрать наиболее приглянувшееся, для этого
достаточно загрузить в систему с локального компьютера изображение
заката (хотя если оно уже присутствует в Сети - можно и просто указать
URL) и собственно говоря нажать кнопку "Найти" - вот и все! Вот ваши
результаты:&lt;/p&gt;
&lt;p&gt;&lt;img alt="пример работы it's a pic" class="responsive-img" src="https://www.insight-it.ru/images/itsapic-scr.jpg" title="пример работы"/&gt;&lt;/p&gt;
&lt;p&gt;Наверное Вы уже заметили, что написав приличную часть поста я так до сих
пор и не дал ссылки на саму поисковую систему. У этого есть достаточно
простая причина - проект находится в стадии закрытого
&amp;beta;-тестирования (что вы собственно говоря могли
прочитать и на скриншоте чуть выше). Так что недостаточная точность
поиска вполне объясняется скромной базой данных изображений - можно
заметить на все том же скриншоте семизначную цифру количества
изображений в его базе. Но даже из такого небольшого количества
изображений системе удается достаточно точно выбрать похожие на образец
экземпляры и отсортировать их в соответствии с их релевантностью
оригиналу.&lt;/p&gt;
&lt;p&gt;Наверняка у Вас снова напрашивается вопрос: а как же я собственно попал
в закрытую бету проекта и узнал так много о нем еще до его запуска? Нет,
мне никто так до сих пор и не дает эксклюзивной информации о проектах,
но эта информация была получена и не из Сети. Не буду тянуть и раскрою
все карты: я просто-напросто с недавних пор участвую в этом проекте.
Собственно говоря одной из основных моих задач является вывод этой
системы из закрытой бета-версии в открытую, то есть обеспечить
работоспособность алгоритмов при несколько больших нагрузках, чем
один-два разработчика одновременно, ищущих что-то просто для проверки и
тестирования.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Tue, 27 May 2008 19:35:00 +0400</pubDate><guid>tag:www.insight-it.ru,2008-05-27:misc/2008/its-a-pic/</guid><category>it's a pic</category><category>online</category><category>архитектура</category><category>изображение</category><category>информационные технологии</category><category>поиск</category><category>поисковые системы</category></item><item><title>Прозрачный рабочий стол</title><link>https://www.insight-it.ru//misc/2008/prozrachnyjj-rabochijj-stol/</link><description>&lt;p&gt;Наверняка многие из Вас стояли перед выбором изображения, которое будет
использоваться в качестве фонового рисунка рабочего стола Вашего
компьютера. Задача естественно не простая, но используемые по-умолчанию
в большинстве операционных систем обои не оставляют выбора - приходится
все-таки отправляться на поиски подходящего изображения на просторах
Сети.&lt;/p&gt;
&lt;p&gt;Но ведь мало кто в курсе, что можно оставить рабочий стол и вовсе
пустым...&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;&lt;strong&gt;Правда, к сожалению, возможно это лишь на фотографиях.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Чтобы хоть как-то связать эту запись с тематикой сайта, позволю себе
рассказать в чем заключается подвох этой фотографии и как сделать
что-либо подобное своими руками в случае, если возникнет такое желание.&lt;/p&gt;
&lt;p&gt;Наверняка у многих читателей при виде этого изображения в голове
проскользнула мысль, состоящая из одного слова - &lt;em&gt;Photoshop&lt;/em&gt;. Но, как ни
странно, этот программный продукт не имеет ничего общего с конкретно
этим изображением. Да, это наиболее распространенный и популярный
графический редактор, но это вовсе не значит что он незаменим.&lt;/p&gt;
&lt;p&gt;На мысль о создании этого изображения меня подтолкнул небезизвестный
ресурс под названием &lt;a href="https://www.insight-it.ru/goto/1f806118/" rel="nofollow" target="_blank" title="http://www.stumbleupon.com"&gt;Stumble Upon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Для подготовки &lt;a href="https://www.insight-it.ru/images/notebook.jpg"&gt;этого изображения&lt;/a&gt;
использовался opensource растровый графический редактор под названием
&lt;strong&gt;The GIMP&lt;/strong&gt;, а также две фотографии ноутбука с одного и того же
ракурса: с открытой и закрытой крышкой. &lt;em&gt;Продолжать?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Если Вы еще не отправились на поиски фотоаппарата, бросив чтение записи
на полпути, то я с Вашего позволения расскажу о тех элементарнейших
действиях, которые надо произвести в Вашем любимом графическом редакторе
с Вашими двумя фотографиями, необходимые для получения подобного
изображения:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Расположить фотографии слоями друг над другом. В верхнем слое крышка
    должна быть открыта.&lt;/li&gt;
&lt;li&gt;Стереть содержимое рабочего стола (которое возможно имело смысл
    сделать монотонным)на верхнем слое любым известным Вам способом,
    начиная с банального Eraser'а, заканчивая Color to Alpha или Magic
    Wand'ом.&lt;/li&gt;
&lt;li&gt;Совместить оба слоя таким образом, чтобы создалась иллюзия того, что
    часть нижнего слоя находится "за" экраном ноутбука.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Как видете, все просто до безобразия, главное лишь проявить немного
воображения. В качестве "подопытного кролика" был выбран ноутбук просто
благодаря несложности организации всего процесса, на настольном
компьютере конечно можно было бы провернуть что-то подобное, но
перспектива двигать монитор, который весит далеко не один десяток
килограмм у меня особо желания не возникло.&lt;/p&gt;
&lt;p&gt;Очень надеюсь, что &lt;a href="https://www.insight-it.ru/images/notebook.jpg"&gt;это изображение&lt;/a&gt;
подтолкнуло Вас на какие-либо идеи и новые мысли, иначе эта запись была
написана зря.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Sat, 19 Jan 2008 01:15:00 +0300</pubDate><guid>tag:www.insight-it.ru,2008-01-19:misc/2008/prozrachnyjj-rabochijj-stol/</guid><category>The GIMP</category><category>wallpaper</category><category>графика</category><category>изображение</category><category>прозрачный рабочий стол</category><category>рабочий стол</category></item><item><title>7 способов защитить свой интернет-ресурс от нежелательной информации</title><link>https://www.insight-it.ru//security/2008/7-sposobov-zashhitit-svoj-internet-resurs-ot-nezhelatelnoj-informacii/</link><description>&lt;p&gt;В одном из предыдущих постов я поднял &lt;a href="https://www.insight-it.ru/security/2008/otkuda-voznikaet-spam-i-kak-s-nim-borotsya/"&gt;тему о технологии под названием captcha&lt;/a&gt;, которая является одним из самых распространенных и эффективных способов борьбы с автоматическим заполнением интернет-ресурсов нежелательным контентом. В этом же посте хотелось бы развить начатый разговор повествованием о различных способах воплощения этой технологии в жизнь.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3 id="1-klassicheskii-variant-graficheskaia-realizatsiia"&gt;1. Классический вариант - графическая реализация&lt;/h3&gt;
&lt;p&gt;Самым популярным вариантом реализации является "графическая" captcha
(позволю себе "обращаться" к этому слову в женском роде, просто из-за
того, что по-моему оно так лучше звучит, не смотря на то, что по логике
все же стоило использовать "он", так как при дословном переводе
получилось бы слово "тест" с кучкой прилагательных
и определений). Она представляет собой изображение, содержащее чаще
всего какой-либо сильно искаженный текст или набор цифр, и перед
посетителем ставится задача воспроизведения в текстовом поле,
находящемся неподалеку, того что он/она видит на изображении.
Большинству людей не составит труда прочесть и набрать на клавиатуре
даже искаженный до неузнаваемости текст, а вот для программы данная
задача является как минимум нетривиальной.&lt;/p&gt;
&lt;p&gt;Существует некоторое количество алгоритмов (называются &lt;a href="/tag/ocr/"&gt;&lt;abbr title="Optical Character Recognition"&gt;OCR&lt;/abbr&gt;&lt;/a&gt;), позволяющих программе
пытаться понять что же за текст расположен на изображении. Эти алгоритмы
разрабатывались для вполне мирных целей - для оцифровки книг и любых
других напечатанных на бумаге документов. Но все же эти алгоритмы
предназначены для распознавания аккуратно написанного текста черным
шрифтом на белом фоне и являются плохо приспособленными для
распознавания &lt;a href="/tag/captcha/"&gt;captch'и&lt;/a&gt;. Но все же существует довольно
большое количество модификаций этих алгоритмов, приспособленных для
чтения даже искаженного текста.&lt;/p&gt;
&lt;p&gt;Казалось бы это существование таких алгоритмов делает бессмысленным
использованием такого рода "защиты", но на практике это далеко не так:
большинство из них пригодны только для распознавания только узкого
набора реализаций графических &lt;a href="/tag/captcha/"&gt;captch&lt;/a&gt;, особенно это
актуально для популярных готовых решений реализации этого типа защиты
находящимся в свободном доступе в сети Интернет, а также сервисов,
предоставляющих услуги по генерации такого рода изображений. Что делает
довольно актуальным написание собственной реализации графической
&lt;a href="/tag/captcha/"&gt;captch'и&lt;/a&gt; для появления уверенности в отсутствии готовой
модификации &lt;a href="/tag/ocr/"&gt;&lt;abbr title="Optical Character Recognition"&gt;OCR&lt;/abbr&gt;&lt;/a&gt; алгоритма, для преодоления используемой
преграды. Об этом и пойдет речь в &lt;a href="https://www.insight-it.ru/php/2008/zashhita-internet-resursov-v-kartinkax/"&gt;записи про собственноручную реализацию технологии CAPTCHA.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Но запись еще далека от завершения, ведь описанная выше графическая
реализация, не является единственной. Во-первых, стоило упомянуть пару
несколько реже используемые модификации визуальных тестов:&lt;/p&gt;
&lt;h3 id="2-sommon-sense"&gt;2. Сommon sense&lt;/h3&gt;
&lt;p&gt;Эта категория модификаций основывается на вопросах построенных на так
называемом &lt;em&gt;common sense&lt;/em&gt;, то есть на каких-то общеизвестных вещах,
очевидных для любого человека, но не поддающимся четкому осознаванию
программой с помощью какого-либо алгоритма. К сожалению, этот факт
вместе с тем порождает и основной недостаток этой категории проверок-
такой тест невозможно автоматически сгенерировать, что делает реализацию
существенно более трудоемкой и неэффективной, что собственно и
обуславливает редкость их применения на практике.&lt;/p&gt;
&lt;h3 id="3-matematicheskii-test"&gt;3. Математический тест&lt;/h3&gt;
&lt;p&gt;Помимо просто перенабирания некоторого набора цифр с изображения, авторы
captch'и могут попросить своего посетителя выполнить какую-либо
несложную операцию (например: &lt;code&gt;2 x 2 = ???&lt;/code&gt;). Но такого рода тесты также далеки от идеала, так как в подавляющем большинстве алгоритм их решения прост для безобразия - вполне достаточно бывает базового &lt;a href="/tag/ocr/"&gt;&lt;abbr title="Optical Character Recognition"&gt;OCR&lt;/abbr&gt;&lt;/a&gt; и реализации калькулятора внутри &lt;a href="/tag/crawler/"&gt;crawler&lt;/a&gt;'a, чтобы он смог преодолеть такого рода барьер.&lt;/p&gt;
&lt;h3 id="4-vybor-izobrazheniia"&gt;4. Выбор изображения&lt;/h3&gt;
&lt;p&gt;Хочется также упомянуть один из достаточно оригинальных вариантов
реализации, являющийся по сути вариацией на тему common sense captch'и,
который меня как минимум удивил, когда я его впервые увидел на сайте
одного из мобильных операторов рядом с формой для &lt;strong&gt;online&lt;/strong&gt; отправки SMS. Суть его заключалось в том, что предлагался набор небольших фотографий, из которых предлагалось выбрать 2-4 изображения обладающих каким-либо свойством, например являющимися живыми объектами. Помимо позитивненького оформления и симпатичных фотографий, чисто технически такой подход является достаточно эффективным и легко реализуемым, единственное предъявляемое к такой реализации требование - достаточно обширная база данных изображений.&lt;/p&gt;
&lt;h3 id="5-vykhod-za-ramki-standartov"&gt;5. Выход за рамки стандартов&lt;/h3&gt;
&lt;p&gt;Большинство вещей, предназначенных для массового использования, принято
делать по принципу "чем проще тем лучше". Обусловлено это тем, что
количество пользователей обратно пропорционально уровню требований, к
ним предъявляемых. Формы на интернет-страницах, как ни странно,
исключением из этого принципа не являются, что является причиной их
построения с использованием только базовых языков разметки -
&lt;a href="/tag/html/"&gt;HTML&lt;/a&gt;, &lt;a href="/tag/xhtml/"&gt;XHTML&lt;/a&gt; или в крайнем случае
&lt;a href="/tag/xml/"&gt;XML&lt;/a&gt;. Именно такую форму и ожидает увидеть spider, попадая на
страницу. Но если поступиться этим принципом - легко поставить программу
в тупиковое положение, задействовав какую-либо непривычную для нее
технологию. В качестве примера в голову приходит Flash-ролик вместо
изображения в &lt;em&gt;графическом&lt;/em&gt; варианте реализации.&lt;/p&gt;
&lt;p&gt;Этот способ является очень эффективным, но обладает существенными
недостатками, такими как, например, необходимость использования
современных браузеров с определенными plug-in'ами.&lt;/p&gt;
&lt;h3 id="6-skrytie-razmetki"&gt;6. Скрытие разметки&lt;/h3&gt;
&lt;p&gt;В качестве продолжения предыдущей мысли: &lt;em&gt;&lt;a href="/tag/javascript/"&gt;JavaScript&lt;/a&gt;&lt;/em&gt;
предоставляет далеко не один способ скрыть внутри себя код разметки, что
позволяет сделать вид, что формы &lt;em&gt;как бы&lt;/em&gt; не существует (в основном
базирующиеся на обратимом шифровании), заставляя программу подумать "да
тут и заполнять-то нечего" и пройти мимо на какой-нибудь другой сайт.
Все бы хорошо, только посетители сайта с отключенным
&lt;em&gt;&lt;a href="/tag/javascript/"&gt;JavaScript&lt;/a&gt;&lt;/em&gt;'ом формы тоже не увидят...&lt;/p&gt;
&lt;h3 id="7-zvukovoe-voploshchenie"&gt;7. Звуковое воплощение&lt;/h3&gt;
&lt;p&gt;Как не трудно было заметить, что все варианты, которые я упомянул до
этого момента, так или иначе базировались на визуальном восприятии
информации. И вполне обосновано - для большинства людей зрение играет
роль основного чувства, но существуют и интернет-ресурсы, для которых
важен абсолютно каждый посетитель, в том числе и люди с ограниченными
способности, для которых стандартные проверки являются непреодолимыми.
Для такой категории людей были сделаны альтернативные варианты,
основывающиеся на таком чувстве, как слух. Суть же от этого изменилась:
посетителя просят набрать с клавиатуры нечто услышанное при
воспроизведении аудио-записи, либо ответить на какой-либо вопрос,
основывающийся на уже упомянутом принципе &lt;em&gt;common sense&lt;/em&gt; и заданный тоже
с помощью в аудио-файле.&lt;/p&gt;
&lt;p&gt;Вместо заключения хотелось бы предложить Вам &lt;a href="/feed/"&gt;подписаться на RSS этого блога&lt;/a&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Thu, 03 Jan 2008 20:41:00 +0300</pubDate><guid>tag:www.insight-it.ru,2008-01-03:security/2008/7-sposobov-zashhitit-svoj-internet-resurs-ot-nezhelatelnoj-informacii/</guid><category>captcha</category><category>common sense</category><category>JavaScript</category><category>OCR</category><category>online</category><category>защита интернет-ресурсов</category><category>изображение</category><category>классификация</category><category>проверка</category><category>реализация</category><category>технология</category><category>форма</category></item></channel></rss>