Прошло время, мои программистские скилы росли и я решил обзавестись собственным. Который хочу посвятить рассказам о программирование на PHP, JavaSript и прочих прелестных языках веб-разработки. В ближайшее время выпущу цикл статей про разработку собственного php фреймворка - отличный способ пересмотреть свое видение php-программирования, подходу к разработке веб-приложений. Также будет несколько обзоров полезных или просто прикольных JavaScript/jQuery виджетов и прочие статьи и обзоры по веб-программированию. Заинтересовавшихся и просто любопытных жду здесь: jakulov.ru
среда, мая 28
суббота, июня 16
Запускаю свой новый проект - "Десятка Лучших". Тольятти - первый город, в котором открывается проект.
Мы собираем на одном сайте всех профессионалов города в сфере потребительских услуг, даем им возможность иметь полноценное представительство в сети, целевую аудиторию, перспективы развития своего бизнеса.
Также для всех есть отличная возможность заработать вместе с нашим проектов. Для этого достаточно просто посоветовать знакомому специалисту участие в "Десятке Лучших", за что вы получите вознаграждение. Подробности акции смотрите в нашем блоге.
четверг, февраля 4
Получаем курсы валют (класс для PHP)
В очередном проекте встала тривиальная задача вывода курсов валют на страницах сайта. Но стандартные информеры курсов валют очень портили дизайн сайта, вследствие чего я решил написать парсер курсов валют с сайта Центрального Банка Российской Федерации.
В последнее время, я перешел на разработку проектов на Zend Framework, поэтому представленная реализация заточена для использования в PHP приложениях на ZF.
Итак, начнем с самого класса. Здесь все просто:
- есть public метод getValuta, который принимает буквенный код валюты и выдает ее курс относительно рубля
- он обращается к защищенному методу getXML, который инициализирует объект класса Zend_Rest_Client для обработки XML данных с курсами валют
- getXML проверяет наличие закэшированной копии данных и в зависимости от результата проверки создает новый кэш данных и читает оттуда курсы, либо обращается к существующему; делается это с помощью методов getNewXML и getOldXML соответственно.
Исходный код файла Kursi.php
- /**
- *
- * @author Jacob Akulov (Яков Акулов)
- * @desc Модель получения курсов валют по данным ЦБ РФ
- *
- */
- class Kursi {
-
- protected $_name = 'Kursi';
- protected $valutaClient;
- // определяем допустимые коды валют
- protected $valutaCodes = array(
- 'R01235'=>'USD',
- 'R01239'=>'EUR',
- 'R01035'=>'GBP',
- 'R01090'=>'BYR',
- 'R01335'=>'KZT',
- 'R01375'=>'CNY',
- 'R01720'=>'UAH'
- );
-
- //контруктор класса
- public function __construct() {}
-
- // получение курса вылют по коду
- public function getValuta($code) {
- self::getXML(); // получаем данные в виде XML (заносятся в объект Zend_Rest_Client, $this->valutaClient)
- // проверяем допустимость кода валюты
- if (!in_array($code, $this->valutaCodes)) {return false;}
- else {
- if($this->valutaClient) {
- $values = $this->valutaClient->key('Valute')->get()->Value(); // получаем значения курсов всех валют
- $codes = $this->valutaClient->key('Valute')->get()->CharCode(); // получаем их коды
- $currency = array_combine($codes, $values); // совемещаем все это в один масссив
- return $currency[$code]; // и выдаем результата
- }
- else {
- return false;
- }
- }
- }
-
- // создание клиента для обработки XML с курсами валют
- private function getXML() {
- // проверяем наличие кэшированной XML
- if(file_exists('public/kursi/valuta-'.date('Y-m-d').'.xml') && file_exists('public/kursi/metall-'.date('Y-m-d').'.xml')) {
- self::getOldXML(); // берем данные из кэша
- }
- else {
- self::getNewXML(); // иначе загружаем данные с сайта ЦБ РФ и кэшируем их
- }
- }
-
- // получение данных с сайта ЦБ РФ и создание локального кэша
- private function getNewXML() {
- $val = file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp'); // читаем данные из ЦБ РФ и пишем их в кэш
- file_put_contents('public/kursi/valuta-'.date('Y-m-d').'.xml', $val);
- // создаем REST клиента и получаем данныые
- $this->valutaClient = new Zend_Rest_Client('http://sitename/public/kursi/valuta-'.date('Y-m-d').'.xml');
- }
-
- // получение данных из кэша
- private function getOldXML() {
- $this->valutaClient = new Zend_Rest_Client('http://sitename/public/kursi/valuta-'.date('Y-m-d').'.xml');
- }
- }
* This source code was highlighted with Source Code Highlighter.
В данной реализации время обновление кэша будет в полночь по времени веб-сервера. Я не знаю, когда там Центробанк обновляет курсы, поэтому решил оставить так. Также в моем классе не предусмотрено удаления старых кэш копий XML файлов, т.к. в моем проекте есть сборщик мусорных файлов, который запускается по cron-у.
Дальше, после создания модели (класса) в реализации на Zend Framework мы создаем контроллер и вьюху (просто для наглядног представления результата). Они очень простые и не требует дополнительных пояснений:
Контроллер:
- class KursiController extends Zend_Controller_Action
- {
- function init() {
- $this->config = Zend_Registry::get('config');
- // загружаем класс для получения курсов
- Zend_Loader::loadClass('Kursi', $this->config->path->models_dir);
- // создаем его объект
- $this->kursi = new Kursi();
- }
-
- // экшн
- function indexAction() {
- // передаем во view сразу значения валют
- $this->view->assign('USD',$this->kursi->getValuta('USD'));
- $this->view->assign('EUR',$this->kursi->getValuta('EUR'));
- }
- }
* This source code was highlighted with Source Code Highlighter.
View:
- <ul class="kursi">
- <h3>Курсы валютh3>
- <li><span>$ Доллар СШАspan> <b>=$this->USD?>b>li>
- <li><span>€ ЕВРОspan> <b>=$this->EUR?>b>li>
- ul>
* This source code was highlighted with Source Code Highlighter.
Вы также можете скачать класс Kursi.php. С удовольствием приму ваши замечания и улучшения для описанного скрипта.
Реализация получения и вывода курсов валют (дополненная курсами драгоценных металлов) мою использована на сайте самарских ломбардов.
среда, января 27
Результаты эксперимента с хостингом картинок
Даю результаты исследования влияния хостинга изображений на сайта на их ранжирование поисковыми системами. В предыдущем посте подробно описан этот эксперимент. Сейчас, по прошествии достаточного времени, можно судить о результатах. Мы видим поиск по картинкам Яндекса:
Везде выше в поиске ранжируется страница, на которой размещена картинка, которая хостится на самом сайте. А страничка с картинкой, которую я залил на Яндекс.Фотки (т.е. внешний хостинг) в поиске оказалась ниже.
Вот собственно и весь эксперимент с его результатами.
Ярлыки:
картинки,
результаты,
Яндекс,
SEO
четверг, декабря 3
Где хостить картинки для сайта?
Раньше как-то не задумывался от том, как Яндекс и другие поисковики будут относиться к тому, если хостить изображения для своего сайта на стороннем фото-хостинге.
Так как встретился с проблемой high-load проектов, которые при этом должны быть грамотно спроектированы с точки зрения SEO, то решил проверить все в очередном эксперименте:
на известном нам подопытном сайте сделали две странички:
1. про блюдо румба в тумбочке,
1. про блюдо румба в тумбочке,
2. про танец румба в тумбочке.
На первой странице иллюстрация грузится на сайт с моего аккаунта Яндекс.Фоток, а на второй - с самого сайта.
Теперь ждем пару апов - смотрим результаты ранжирования этих двух страниц согласно запросу "румба в тумбочке", а после апа картинок - ранжирование подопытных изображений по этому же запросу но уже в поиске картинок.
Для чистоты эксперимента я постарался сделать страницы одинаково релевантные и взял картинки по возможности не относящиеся к запросу никак, прописал одинаково релевантные альты и сделал изображения одного размера.
Ярлыки:
картинки,
эксперимент,
Яндекс,
SEO
понедельник, июня 8
Первые результаты эксперимента с формами и SEO
Есть первые результаты эксперимента с использование атрибутов alt и title в тегах input, расположенных в формах на страницах. Результат подтвердил предположения того, что поисковики могут учитывать текст в таких атрибутах при ранжировании результатов поиска.
Такая вот выдача присутствует в Яндексе на данных момент:
На первом месте страница, где были использованы атрибуты alt, на втором - title, а на третьем страница, где не использовались атрибуты у тегов input. В атрибутах встречалось слово механизм, что и повлияло на выдачу.
Для чистоты эксперимента теперь переставим атрибуты alt на третью заявку, а title - на первую, тогда как вторая заявка останется без атрибутов. И после переиндексации страниц посмотрим на изменения в выдаче.
Далее еще планируется поэкспериментировать с тегом label
Ярлыки:
результаты,
эксперимент,
HTML,
SEO
воскресенье, июня 7
Результаты эксперимента по <H1>, <H2>
В эксперименте мы задались вопросом о том, как правильно с точки зрения SEO располагать теги заголовков на страницах, ну и стоит ли их вообще использовать.
Результаты выдачи по исследуемому запросу приведен ниже.
На первом месте стоит страница, где тег H1 стоит внизу, после тегов H2. На втором страница с последовательным использованием заголовков. На третьем ожидаемо - страница без заголовков.
Также хочется отметить особенности формирования сниппета. Обратите внимание на первую позицию: в сниппете два пассажа, один из которых не содержит ни одного ключа (вероятно он попал в описание из-за того, что выделен жирным). А если взглянуть на саму страницу, то мы увидим такую картинку:
Очевидно, что заголовок H1 содержащий только фразу "Трассировка нечеткого графа" выделен Яндексом в одельный пассаж (хотя и не отделен разделителем). Но данный пассаж не включен в сниппет, скорее всего из-за того, что в большой степени повторяет title страницы, или еще из-за того, что не содержит других слов, кроме как слов поискового запроса (или слов, содержащихся в title).
Если посмотреть на сниппеты других страниц, то видно, что там пассажи, содержажиеся в заголовках H2 включены в сниппет - они содержат слова, которые не содержутся в title страницы (или в запросе).
Вобщем результат эксперимента показал, что Яндекс не имеет предпочтений относительно расположения тегов заголовков на старнице. Хотелось бы посмотрет на выдачу Google, но им до сих пор проиндексировано лишь 4 странички подопытного сайта.
Ярлыки:
эксперимент,
Яндекс,
HTML,
SEO
суббота, июня 6
<strong>, <b>, <i>
Есть рузультат эксперимента с тегами выделения ключевых слов. Яндекс таким образом распределил результаты:
Если вы взлянете на код страничек, то найдете следующий порядок следования тегов:
<strong>, <b>, <i>
Я не думаю, что открыл здесь Америку, все это было известно и до меня. Просто такой вот наглядный опыт.
Ярлыки:
результаты,
HTML,
SEO
Подписаться на:
Сообщения (Atom)