среда, 7 декабря 2011 г.
Сайтов уже 5
Как не трудно догадаться, на первом удобно искать дешевые авиабилеты, а на втором выбирать и бронировать отели в Праге.
Что примечательно, что оба сайта делал в партнерстве с другими людьми, получилось, по-моему, не плохо.
Из того что не получилось сделать в этом году - это сайт по сравнению цен на хостелы по аналогии с hotelscombined, только hotelscombined сравнивает отели. К сожалению, не смог найти еще одного партнера, который бы предоставил XML-поиск по предлагаемым этим партнерам хостелам.
В планах на следующий год сделать еще несколько узкоспециализированных сайтов по поиску отелей в различных городах Европы и США.
Желаю всем хорошо встретить Новый год и конечно же удачи и счастья в новом году. Жизнь продолжается не смотря ни на что.
четверг, 4 ноября 2010 г.
Как я создавал свой 3-й сайт
Я не долго думая купил домен, подобрал шаблон сайта у Arcsin, переработал его под себя.
Много времени ушло на то, чтобы корректно обработать информацию, предоставляемую hotelclub своим партнером, еще больше на разработку самого сайта. И сегодня я его выложил на всеобщее обозрение.
Теперь отели Парижа или отели Рима бронируем на hotelclub.su.
Конечно же остались некритичные доработки, например, добавление на страницу отеля Normady возможности выбора дат в календаре, но в целом все работает.
понедельник, 30 августа 2010 г.
Вирусы
В конце прошлого года мой сайт впервые подвергся вирусной атаке. Какая-то гадость, которая проникла на мой компьютер, стащила пароль к ftp-доступу и дописала в конец каждого файла index*.* строку с вредным кодом, а так же заразила все файлы с расширением js. Лечится все это довольно просто, либо вручную удаляется вредноносный код, либо просто заново заливаются файлы из архива. В том году это было не критично, т.к. проект только стартовал, и посещаемость была так себе.
Повторной атаке я подвергся в пятницу, 27 августа. Открыл одну из страниц в Mozilla Firefox и комп как-то стал притормаживать, примерно через минуту антивирус Avira стал сильно пищать, какие-то скрипты остановил, но главную заразу не убил. В течение часа были заражены все файлы по описанному выше сценарию.
Последствия я заметил только в субботу. При открытии страниц сайта Firefox выдавал предупреждение о заражении. Я поменял пароль доступа, перезалил файлы из архива, и успокоился. Как оказалось, зря.
Зараза осталась на моем компьютере. Ни Касперский, ни DrWeb ее не убили. И заново все файлы на сайте были заражены.
Теперь это заметил и Yandex, и стал выдавать угрожающие предупреждения. Поток посетителей, приходящих от Yandex'а иссяк.
Я еще раз восстановил файлы из архива. Больше атак не было. А окончательно победить заразу помогли ребята из virusinfo.info, за что им большое спасибо.
Кстати, google довольно оперативно отреагировал на очистку сайта, и уже снял все свои ограничения, FireFox больше не ругается. А вот Yandex все думает, и сильно предостерегает от открытия страницы типа забронировать гостиницу в Риме. И ждать его еще несколько дней. Мало того, что среагировал с дневным, по сравнению с google, опозданием, так теперь еще и повторную проверку надо ждать. Обидно.
Теперь, при открытии подозрительный сайтов, буду всегда отключать JavaScript, а в случае заражения быстро восстанавливать файлы из архива на сайте.
пятница, 11 декабря 2009 г.
Фотографии от Panoramio на своем сайте
Сейчас я работаю над вторым сайтом созданным для самостоятельного бронирвоания путешествий - БукТрип.ру. Для предоставления возможности бронирования отелей собрал достаточно большую базу географических названий. Но вот для взаимодействия с API от Panoramio нужны координаты этих объектов. И эти координаты можно получить, воспользовавшись сервисом Google Geocoding. Чтобы определить координаты, надо сделать запрос к сайту maps.google.com следующего вида:
http://maps.google.com/maps/geo?q=Paris,fr&output=csv&key=ABQIAAAALkH7z-
7Yg6rN5Wgtte6WQxRhFePxzidMXG8dHw849BemzMV9YxRakAkV291BmrgJ5R_LgrNfgigIOQ
где q — адрес искомого объекта, output — формат ответа, key — ключ для работы с Google Maps, который можно получить на сайте . Ответом на запрос в примере будет строка
200,4,48.8566667,2.3509871200 — код ответа (200 — успешно, 403, 602 и прочие — нет), 4 — точность определения (страна, город, улица, дом и т.п.), 48.8566667,2.3509871 — искомые широта и долгота.
Получив координаты объекта остается определить только «диаметр» зоны, фотографии объектов в которой и будут показываться. Для получения крайних точек можно просто вычесть и прибавить к координатам центра
Получив от Panoramio список фотографий, путем несложных манипуляций с данными, я их вывел в виде слайд-шоу (скрипт для создания слайд-шоу можно посмотреть на ).
пятница, 27 ноября 2009 г.
Аналитические функции в MySQL
Рассмотрим на примере. Скажем, есть у нас 2 таблицы: товары с полями goods_id — идентификатор, grp — группа, name — наименование, и обобщенная таблица с продажами sales с полями goods_id — идентификатор товара, period — период, summa — суммарная стоимость проданных товаров за указанный период.
И вот требуется вывести по 10 самых продаваемых товаров из каждой группы за заданный период. В Oracle запрос бы выглядел вот так:
А в MySQL вот так:
SELECT grp, name, summa
FROM (
SELECT g.grp
,g.name
,s.summa
,row_number()
OVER (PARTITION BY g.group
ORDER BY s.summa) as rn
FROM goods g
,sales s
WHERE g.goods_id = s.sales_id
AND s.period = 2009101
)
WHERE rn <= 10
ORDER BY grp, name
SET @rows_count = 0;
SET @grp = NULL;
SELECT grp, name, summa
FROM (
SELECT g.grp
,g.name
,s.summa
,CASE WHEN IFNULL(@grp, '#') != grp THEN
@rows_count := 0
END q1
,CASE WHEN IFNULL(@grp, '#') != grp THEN
@tp := tp
END q2
,@rows_count := IFNULL(@rows_count, 0) + 1 as rn
FROM goods g
,sales s
WHERE g.goods_id = s.sales_id
AND s.period = 2009101
)
WHERE rn <= 10
ORDER BY grp, name
среда, 22 апреля 2009 г.
1000 меньше чем за 3
Я уже писал я 300 уникальных посетителях в сутки по самому консервативному счетчику LiveInternet. Вчера уникальных посетителей было 1031.
Еще в начале апреля количество посетителей подбиралась к 1000 (6 апреля - 977, 7-го - 971), но "рубеж" был взят только вчера, хотя я надеялся, что это произойдет немного раньше. Но, почему-то, количество посетителей с 8-го апреля начало падать, сначала не очень быстро, потом падение ускорилось. Я это связываю с изменением алгоритмов выдачи Yandex'а, сайта, который "поставляет" большую часть посетителей. Самое дно было достигнуто в эту субботу 18 апреля - 502 посетителя, а в воскресенье начался стремительный рост.
Я уже получил больше 10 статей с момента опубликования формы для ввода новых отзывов, причем 5 из них от постоянного автора, который, точнее которая, помимо интересных текстов публикует изумительные фотографии.
Так же не обошлось без неинтересных статей рекламного характера, которые я публиковать не стал. Хотя ничего не имею против рекламы, которая должна органично включаться в статью, т.е. статья должна быть именно статьей, а не рекламным объявлением. И если автор пишет, что ему понравился отель, или экскурсия, и оставляет координаты экскурсовода, то я оставляю эту информацию, т.к. она может быть полезной для моих читателей, для которых, собственно, все и создавалось.
В общем, "рубеж" в 1000 посетителей достигнут менее чем за 3 месяца. Для привлечения большей аудитории надо добавлять новые разделы, например, новости или что-то в этом роде. Может быть у кого-нибудь будут интересные предложения, которые я смогу реализовать?
пятница, 10 апреля 2009 г.
Ajax как способ показа информации из БД на статических html-страницах
Для отображения комментариев к статьям я решил воспользоваться технологией Ajax. А именно, в каждом html-документе создать div, и javascript-программой выводить в этом div'е комментарии, которые хранятся в БД на сервере, где и находится сайт.
Сначала я ознакомился с документацией по Ajax, сделал простейший скрипт, который работал только в IE, а ведь есть еще Opera, Firefox и т.д. И у всех браузеров свои особенности. Конечно, можно покопаться в интернете, изучить варианты для всех браузеров, установить у себя каждый из браузеров для отладки и т.д. Но мне нужно всего лишь добавить возможность отображения комментариев, а не изучать особенности интерпретации javascript браузерами!
Решение было найдено случайно, на каком-то из форумов кто-то писал про JsHttpRequest-библиотеку. Библиотека - это громко сказано, но решение, действительно стоящее.
Итак, что же из себя представляет JsHttpRequest - это 2 файла JsHttpRequest.js и JsHttpRequest.php, соответственно первый включаем в каждый html-документ, второй - в скрипт, который на сервере обрабатывает запросы.
Покажу на примере, как несложно пользоваться этим. Есть форма, состоящая из 2-х полей, при нажатии на Submit надо показать сумму значений в этих полях.
В text.html:
<html>
<script src="JsHttpRequest.js"></script>
<script type="text/javascript">
function cmnt(frm)
{
JsHttpRequest.query('/test.php',
{
'a1': document.getElementById('a1').value,
'a2': document.getElementById('a2').value,
},
function(result, errors)
{
if(result)
{
str = result["str"];
alert('Сумма: ' + str);
}
else
{
alert('Не удалось получить данные: ' + errors);
}
}
,false // do not disable caching
);
return true;
}
</script>
<form>
<input name="a1" id="a1" value="" type="text">
<input name="a2" id="a2" value="" type="text">
<input value="Отправить" type="button" onclick="cmnt();">
</form>
</html>
И test.php:
<?php
require_once "JsHttpRequest.php";
$JsHttpRequest =& new JsHttpRequest("windows-1251");
if($_REQUEST[a1] && $_REQUEST[a2])
{
$GLOBALS['_RESULT'] = array(
"str" => $_REQUEST[a1] + $_REQUEST[a2]
);
}
?>
Разумеется, с сервера получать сколь угодно много параметров, просто добавьте их в массив $GLOBALS['_RESULT'] в php-файле и обработку этих параметров в javascript.
