Архивы за месяц: января 2009

Вероятно Google сошел с ума :-)

Владимир | | Разное.

Буквально только что (31 января 2009г. 16:50) видел интересный глюк в поисковике Google.

Все сайты в выдаче отмечались как потенциально опасные, т.е. под основной ссылкой появлялась строка «Этот сайт может нанести вред Вашему компьютеру».

Специально сделал скриншот, чтобы запечатлеть этот исторический момент 🙂

google_crazy

Стрелками я выделил предупреждения Google.

Обратите внимание, в выдаче есть ссылки на на официальные сайты кодекса WordPress и Zend'а. Их я решил проверить и увидел очень интересную картинку.
Читать дальше

Оптимизируем WordPress

Владимир | | WordPress.

Наверное, ни для одного блоггера не секрет, что в новых версиях WordPress появилось несколько довольно спорных нововведений.

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

Поэтому появление плагинов, которые позволяют с этим бороться вряд ли кого-то удивит.

О таком плагине сегодня и пойдет речь. Называется он WP-Optimize и позволяет:

— удалить ревизии постов;

— удалить спамерские комментарии, т.е. те, которые в базе данных уже отмечены как spam;

— удалить комментарии, которые не прошли модерацию;

— оптимизировать базу данных;

— изменить имя администратора. Эту возможность, на мой взгляд, нужно было давно встроить в движок.
Читать дальше

Неожиданное поведение Eclipse

Владимир | | Eclipse, Web разработка.

Недавно я столкнулся с проблемой. Даже не проблемой, а просто нюансом в работе Eclipse. Но именно из-за таких «нюансов» эта IDE сбивает «с толку» новичков, да и не только их. Я даже где-то читал мнение, что Eclipse неустойчиво работает при количестве файлов в проекте больше 100 🙂

Итак, проблема была следующая.

Создаю статический web проект (Static Web Project). Он появляется в общем списке проектов, но не разворачивается. Я аж растерялся 🙂 Несмотря на то, что не первый год работаю с этой IDE раньше такого не видел.

Смотрю в проводнике. Папка проекта создана, вроде все правильно…

Перезапускаю IDE, нулевой эффект.
Читать дальше

Изменяем файлы с помощью Phing

Владимир | | Phing, Web разработка.

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

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

Представьте ситуацию. Вы делаете сайт, сначала тестируете его локально, а затем переносите на сервер. Естественно, перед загрузкой на сервер нужно будет как минимум изменить параметры подключения к БД.

Затем вы находите ошибку (или просто решаете что-то изменить) и процесс повторяется заново.

Каждый раз менять настройки вам быстро надоест, особенно если изменить нужно не один файл, а несколько. Да и забыть что-то очень легко.

В этой статье я покажу небольшой пример как с помощью Phing можно автоматизировать такие операции.

Примечание. Почитать о том что такое Phing и зачем нужен можно здесь.

Прежде всего, сформулируем задачу.
Читать дальше

Отмечаем место нахождения посетителя на Яндекс.Карте

Владимир | | HTML, JavaScript, PHP, Web разработка.

Эта статья о совместном использовании двух web сервисов: IPLoc и Яндекс.Карты.

Прежде всего, разберемся зачем нужны одновременно два сервиса.

С Яндекс.Картами, все просто. Этот сервис позволяет разместить на странице спутниковую или обычную карту. При этом карта будет интерактивной, т.е. посетитель сможет перемещать её, изменять масштаб, тип, измерять расстояния и т.д.

Сервис IPLoc, в свою очередь, позволяет определить географические координаты указанного IP адреса, т.е. широту и долготу. А это как раз те данные, которые нужны чтобы указать точку на Яндекс.Карте.

Примечание. Вместо Яндекс.Карт можно использовать Google Maps, о которых я уже рассказывал. В этот раз я выбрал Яндекс.Карты потому что они содержат более подробные карты с названиями улиц для городов СНГ.

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

Принцип работы.
Читать дальше

RSS лента переехала

Владимир | | WordPress, Разное.

Приветствую всех читателей!

И надеюсь, что вы сможете прочитать этот текст не только на странице сайта, но и в ваших RSS ридерах 🙂

Предыдущая фраза — это, конечно, шутка, но мало ли…

Теперь обо всем по порядку.

Думаю, большинство блоггеров уже в курсе, что всем пользователям сервиса FeedBurner необходимо в обязательном порядке перенести RSS ленты на аккаунт Google.

Естественно, можно и не переносить, а ограничится встроенными в движок блога возможностями. Но к преимуществам FeedBurner'а все уже привыкли и отказываться от них не хочется.

Честно говоря, неоднозначное у меня отношение к этому переносу. С одной стороны FeedBurner — сервис бесплатный и услуга предоставляется «as is» («как есть»). Но с другой — требования Google сильно смахивают на ультиматум, а это не очень приятно.

Итак, последовательность действий.

1) Заходим в свой аккаунт FeedBurner и видим сверху страницы надпись на желтом фоне с предложением перенести ленту.

2) Нажимаем на соответствующую ссылку, нам предлагают выбрать аккаунт Google на который мы будем переносить ленту.

3) Подтверждаем перенос и ждем письма с отчетом. В моём случае операция заняла минут 5-10.

4) Обновляем все ссылки на RSS ленту. Принцип следующий.

Старая ссылка выглядела так:
http://feeds.feedburner.com/simplecoding

Новая:
http://feeds2.feedburner.com/simplecoding

Т.е. feeds заменили на feeds2.

Как изменять ссылки — вопрос отдельный. Если вы прописали их прямо в шаблоне, то придется исправлять шаблон. Если использовали плагин — изменяете адрес в настройках плагина.

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

Статистика
Читать дальше

Закрываем доступ к сайту с помощью .htaccess и PHP

Владимир | | htaccess, PHP, Web разработка.

В этой статье я хочу исправить одну из моих ошибок, точнее не совсем ошибку, просто не очень удачный совет.

Дело в том, что недавно я просматривал собственные посты и заметил, что в одном из них задача решается далеко не лучшим образом. Речь шла о блокировке доступа к блогу на движке WordPress.

Решение, которое я тогда предложил, работоспособное и им вполне можно пользоваться. Но только какое-то оно сложное 🙂

Нужно было использовать несколько файлов .htaccess для разных папок блога. Доступ для администратора получался немного ограниченным, например, статические ссылки не работали.

И, самое главное. Как абсолютно верно заметил Олег Лобач в комментариях к тому посту, если сайт закрыт на обслуживание, то необходимо отправлять заголовок с 503 кодом (Service Unavailable).

Для посетителей этот код роли не играет, они все равно увидят страницу с описанием ошибки, но вот поисковые боты – другое дело. Думаю, никому не захочется, чтобы в индекс поисковика попала фраза «Зайдите позже» вместо контента блога.

В общем, сейчас хочу рассказать о другом, на мой взгляд, более удачном решении.
Читать дальше

Ограничиваем доступ к файлам на сервере

Владимир | | CodeIgniter, PHP, Web разработка.

В этой статье я хочу рассказать о нескольких вариантах ограничения доступа к файлам на сервере.

Т.е. мы сделаем так, чтобы посетитель перед загрузкой в обязательном порядке выполнил какие-то действия (например, вводил captcha).

Существует два основных варианта решения задачи.

1) Скачиванием файлов будет управляет PHP скрипт.

2) Скачивание происходит через web сервер, но только в том случае, если у посетителя есть соответствующее разрешение.

Прежде всего, разберем достоинства и недостатки обоих методов.

Первый вариант. Вообще-то единственное его достоинство – это возможность реализации на shared-хостинге.

Зато недостатки очень серьезные. Файл отправляется пользователю через PHP скриты, т.е. работают все ограничения, действующие на них. Например, если для скриптов установлено максимальное время работы 15 сек, то значит, файл должен быть загружен за это время. Тоже самое и с максимально допустимым объемом памяти.

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

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

Второй вариант выглядит значительно привлекательнее. Ситуация с достоинствами и недостатками полностью противоположная. Отдавать файлы будет Apache без использования PHP. Но чтобы реализовать проверку посетителей, нужно иметь доступ к конфигу сервера (httpd.conf).

Рассмотрим общий принцип загрузки файла

Читать дальше

Обработка произвольного количества полей на PHP

Владимир | | PHP, Web разработка.

В этой заметке я хочу показать пример небольшого PHP скрипта, который обрабатывает данные из форм с произвольным количеством полей.

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

Прежде всего немного теории.

Как известно, сколько бы полей форма не содержала, PHP скрипт получит все эти значения в массиве $_POST. Ключи элементов этого массива будут соответствовать атрибутам name полей формы. Используя эти ключи мы можем получить значение любого из полей.

Т.е. можно в цикле перебрать все элементы массива $_POST и узнать значения всех полей.

На этом можно было бы и остановиться, но на практике часто встречается такая ситуация. Форма содержит несколько обязательных полей и произвольное количество необязательных. Причем обычно необязательные поля содержат однотипные данные (которые и обрабатывать нужно отдельно).

Например. Нам нужна форма с помощью которой пользователь сможет создавать опросы. Т.е. необходимо ввести текст вопроса (обязательное поле) и варианты ответов (их количество может быть любым).
Читать дальше

Апгрейд движка WordPress и небольшой редизайн комментариев

Владимир | | WordPress, Разное.

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

Последняя версия (2.7) вышла довольно давно, но я все время тянул с обновлением. Дело в том, что некоторые новые функции пересекались с работой установленных у меня плагинов.

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

Кроме того, появились:

— возможность постраничного просмотра комментариев;

— множество новых классов, которые по-умолчанию присваиваются комментариям, что значительно упрощает их оформление;

— поддержка Gravatar'ок (об использовании этого сервиса можно почитать здесь);

— ссылки быстрого перехода на страницу редактирования комментариев (появляются, если у вас есть соответствующие права).

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