Сегодня: Пятница, 19.04.2024, 20:34 (МСК)| Здравствуйте, Гость| Мой профиль | Регистрация | Вход | RSS

Популярно об ИИ.
Третий сезон

Визуальная среда Flowstone

Blu-ray приводы для ПК

Наушники. Как выбирать?

Плагины Sonnox Oxford
Главная » WEB

Ответы на письма. Вопросы по web-технологиям

03.01.2012

Представляю вашему вниманию подборку ответов на наиболее интересные вопросы, присланные ко мне в 2011 году по теме web-технологий. 


***


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

Сам метод далеко не нов, использовался очень давно при создании анимаций за счет спрайтов, и в частности анимированных кнопок, которые состоят из нескольких изображений, объединенных в одно, и при определенных событиях (наведение курсора мыши, нажатие) просто меняются координаты. Сейчас действительно можно найти более развернутые предложения по объединению графического контента в специальные файлы изображений. Такой метод нередко используется в обычном программировании, а чаще всего в геймдеве. Выигрыш именно для веба получается в силу уменьшения количества запросов к серверу, а также в ряде случаев уменьшения размера (веса) страницы. С точки зрения обычной верстки вас ожидает довольно много сложностей, если вы не используете более удобный вариант CSS Sprites.

Что касается объединения всего графического контента именно в одно изображение — это не очень удобно, потому как лучше объединять все по группам, например, не повторяющиеся изображения, повторяющиеся по горизонтали (repeat-x), повторяющиеся по вертикали (repeat-y).
А в целом, если ваша страница не перегружена графикой, учитывая современные скорости Интернета, можно и вовсе задуматься, а нужна ли вам такая оптимизация. Это во-первых, а во-вторых, нередко бывает так, что долго борешься за 4-5%, а где-то есть брешь, устранение/оптимизация которой даст эффективность в 40%.  


***

«Как сделать меню для сайта в виде выпадающего списка с переключением на другие страницы?»

Уф-ф, вариантов реализации может быть очень много. Я вам покажу простейший пример комбобокса на JavaScript. Более сложные вещи делаются по схожей методе. Допустим, у нас есть онлайн-магазин, продающий строительные товары для ремонта в трех позициях: обои, плитка и краски, которые отображаются на соответствующих страницах http://мой_сайт/wallpapers, http://мой_сайт/tile и так далее.
Теперь откройте Блокнот либо любой другой текстовый редактор и скопируйте либо введите следующий небольшой фрагмент кода: 

<script language="JavaScript" type="text/JavaScript">
<!--
function JumpMenu(selObj){ 
window.location=selObj.options[selObj.selectedIndex].value;
}
//-->
</script>
<div style="padding-top:8px;">
Регион: МОСКВА
<form target="_blank">
<tr><td valing=middle  width=200px>
<select name="goodsmenu" onChange="JumpMenu(this)"  size="1"  style="width:100%;padding-right:0px;">
<option value="" selected>Выберите товар</option>
<option value="wallpapers">Обои</option>
<option value="tile">Плитка</option>
<option value="paints">Краски</option>
</select>
</td></tr>
</form>
</div>

Теперь сохраните этот файл с расширением *.html и откройте в браузере. В результате вы увидите простейший комбобокс. 


Результат приведенного кода

В качестве основы мы используем то, что находится в контейнерах option и сохраняется в свойстве selectedIndex, в частности значение value может содержать в себе абсолютные или относительные гиперссылки (в нашем примере относительные). Далее в функцию JumpMenu передается ссылка на конкретный объект, и мы можем обращаться к его свойствам, а именно выбранной ссылке, хранящейся в переменной selObj.options[selObj.selectedIndex].value. В результате по нажатии на соответствующую надпись в выпадающем списке открывается соответствующая страница.


***


«Здравствуйте, уважаемый Кристофер. Начал писать программу эмуляции «однорукого бандита» на флэше. Пока все выглядит уныло и есть много вопросов… И еще вопрос: как защитить swf-файл, чтобы мой «однорукий бандит» не попал на другие сайты? Буду благодарен за быстрый ответ»

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

Алгоритмы же вывода результатов…:). В любом случае должно выигрывать казино, причем такое правило применяется и для других автоматов типа покера или «21». Если вы будете использовать обычный random для всех трех или четырех барабанов, то вероятность выигрышей будет мало предсказуемой. Поэтому необходимо составить более четкий и сложный алгоритм, в рамках которого учитываются вероятности выпадения тех же «ягодок» или «семерок» и так далее. В принципе, игровые автоматы таковые алгоритмы и имеют, но открывать их особенности на широкую публику никто не будет. Другими словами, проще в данном случае разрабатывать все самостоятельным образом. 

Что касается защиты, конечно, swf-файлы в стандартном виде могут скопировать и разместить у себя на сайтах заинтересованные в этом лица. Раньше предлагалось сделать защиту путем проверки URL, а именно, вычленением доменного имени сайта, на странице которого воспроизводится flash-ролик, причем сама проверка производится в рамках его (этого ролика) кода. Этот же вариант используется часто и сейчас, только к нему нередко добавляют и другие степени защиты. 

Например, в случаях, когда владелец стороннего ресурса получит конкретную ссылку на swf-файл и будет загружать его с вашего сайта и отображать у себя. Во избежание этого момента нередко практикуют периодическое переименование swf-файла с соответствующими изменениями в HTML-странице. Даже я как-то давно писал на заказ подобную программу, которая меняла имя файла и ссылку на него в HTML один раз в сутки. Сделать таковую довольно легко с помощью различных средств и по разным методикам, поэтому углубляться в данную тему большого смысла нет. 


***


«Какие библиотеки наиболее актуальны для внедрения в сайт Ajax?»   

Ситуация довольно изменчива, поскольку постоянно появляется что-то новое и интересное. Но в целом, можем дать небольшой список.
  • jQuery — на сегодня, пожалуй, одна из самых популярных библиотек, по которой есть много практической документации в том числе и русскоязычной. В рамках ее использования вы можете включать в страницу множество интерактивных элементов.
  • Dojo — одна из самых крупных библиотек поддержки Ajax, состоящая из множества небольших. 
  • Mochikit — Ajax-библиотека JavaScript, сделанная в стиле языков Python и Objective-C.
  • Prototype — довольно перспективная и серьезная библиотека, которая изначально выросла из части платформы разработки веб-приложений на Ruby on Rails. 
  • MooTools — довольно интересное решение, подразумевающее модульную систему загрузки, в результате чего можно конфигурировать свою комплектацию из компонент библиотеки.
В целом и гранды рынка не остаются в стороне. Например, как только все начали активно говорить о Ajax, большую популярность приобрела библиотека компонент графического интерфейса YUI — Yahoo! User Interface, которая хорошо раскрутилась в рамках сообщества пользователей сервисов от Yahoo!


***


«Существуют ли какие-нибудь потери в цвете при переходе от RGB к CMYK?»

Да, потери имеются в силу различного цветового охвата, хотя если вы говорите о программной конвертации, то в большинстве случаев используются самые лучшие алгоритмы. Причем RGB в CMYK переводится менее проблематично, чем CMYK в RGB (в этом случае нужна дополнительная корректировка черного цвета).


***


Здравствуйте!
Подскажите, что лучше использовать для создания своего интернет-радио? У нас сеть магазинов, и мы хотим вещать на нее через интернет. Специалисты советуют использовать Shoutcast, как вы относитесь к этому серверу? Заранее благодарна за ответ.
Алена Н.

Честно сказать, с SHOUcast’ом близко не сталкивался, хотя однажды делал некоторые настройки для него. Не думаю, что предложенный вам вариант чем-то плох. Интернет-радио я делал на другой очень схожей базе, а именно, использовал сервер Icecast2 (http://icecast.org), а для кодирования входящего аудиопотока брал модуль DarkIce (http://code.google.com/p/darkice/). Просто передо мной тогда поставили несколько иную задачу, а именно, нужно было снимать аудио-поток с входа звуковой карты, преобразовывать его в mp3 (DarkIce) и отдавать на вещание по Интернету (Icecast2), но при этом сохранять этот поток на самом сервере (DarkIce) в виде файлов mp3 с разбиением по часам (архив трансляций). В общем, схема была такая (это может кому-то пригодиться): звуковая карта -> DarkIce -> Icecast2 -> клиенты. На всю настройку и полноценный запуск вещания в рамках базовой конфигурации ушло около двух часов. 

Это было сделано для обычного варианта радио, которому нужно было открыться в Интернете. Если же вы хотите работать в Icecast2 конкретно с плейлистами, составляя их из уже имеющейся базы музыкальных треков на жестком диске, то DarkIce вам не нужен, а потребуется другой модуль — icegenerator (http://sourceforge.net/projects/icegenerator/). 

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


***


Недавно купил газету с вашими статьями в киоске и подумал, что вы сможете мне помочь. Проблема вроде проста. Есть две версии сайта: на русском и английском. Нужно, чтобы сайт автоматически открывался с той, которая нужна клиенту. Например, если он из Европы, то английская, из России и Беларуси — русская. Пример — Google, нужно как у них. Долго лазил по интернету, но ничего путного не нашел, даже запутался в этих «локализациях», «интернационализациях». Надеюсь на ваш быстрый ответ.
Игорь, студент

А вы, собственно, вообще не там ищите. Вам нужно не что иное, как геотаргетинг. Языковую локализацию или же интернационализацию (смотря как у вас там все на сайте) вы уже провели, создав две версии. А геотаргетинг — это определение географического месторасположения посетителя по его IP с дальнейшей целью предоставления актуального для него контента. Используется не только для автоматического переключения языковых версий, но и для рекламы, а также в крупных поисковых системах для оптимизации и локализации выдачи, согласно регионам.

Как вы можете заметить, геотаргетинг используется в основном в крупных проектах, для которых это является необходимостью. Вариантов реализации переключения может быть несколько, в зависимости от вашей конфигурации, на которой функционирует сайт. Но в любом случае вам нужно иметь либо свою локальную базу данных по IP-адресам, либо воспользоваться специальными сервисами, которые вам высылают данные по географическому расположению согласно IP в отправленном вами запросе. В качестве примера последнего можно привести http://ipgeobase.ru, в рамках которого имеется база IP-адресов по России и Украине с точностью до городов, а также вся Европа, но там просто указываются страны. Этот сервис активно используется многими разработчиками сайтов для переключения версий. Например, в Санкт-Петербурге актуальна одна информация и цены, в Москве другая, для остальной России — третья. Базы по IP-адресам ipgeobase.ru можно также скачать прямо у них на сайте.  

Если вы наберете в поисковике слово «геотаргетинг», то получите много информации, но в большинстве своем она носит общий характер, да, и само понятие охватывает сразу несколько направлений. Поэтому проще воспользоваться поисковым запросом «редирект по IP». В этом случае вы найдете полезные рекомендации по реализации переключения в рамках .htaccess (файла конфигурации в Apache), а также всевозможные решения на уровне скриптов как со стороны сервера, так и клиента. То есть решения есть.


***


Добрый день, Кристофер. Сначала расскажу историю… У нас был форум… Сейчас мы пришли к выводу, что нужно сделать небольшую социальную сеть для учителей, не подскажете, на какой CMS это проще и удобнее сделать?

Многоточия — это я, да простит меня написавшая, пропускаю объемные куски текста, потому как, вероятнее всего, она является учительницей языка и литературы:), причем из культурной столицы России. Целый рассказ, а не письмо: «Сначала расскажу историю, ведь до принятия такого решения нами была проведена сложная, подчас утомительная и всегда занимавшая много времени работа»:)). И так на две страницы примерно. А теперь к серьезному. Ну, что же, дело правильное. И, что более странно, у меня сейчас схожая задача:), а именно создание небольшой соцсети. Есть несколько вариантов, которые широко обсуждаются в интернете, хотя я для скорости реализации выбрал свой, кстати, пока мало где описанный. Взял CMS Drupal, а точнее, не ее, а уже готовую собранную социальную сеть drupal.commons (https://github.com/acquia/commons/ или http://acquia.com/products-services/drupal-commons-social-business-software), распространяющуюся по лицензии GPL. На сайте самих разработчиков есть достаточно документации по установке и настройке под свои нужды. Другую сопутствующую информацию можно получить на сайтах drupal.org и drupal.ru. 



Кристофер

Перепечатка материалов или их фрагментов возможна только с согласия автора







Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ассоциация боевых роботов
Рекомендуем...
Новости

Разделы

Опросы

Какой язык программирования вы считаете наиболее актуальным сегодня?
Всего ответов: 329

Друзья

3D-кино






Найти на сайте:








Об авторе       Контакты      Вопрос-ответ        Хостинг от uCoz