RuFact

22 июня, 2012
4 минут(ы) чтения

Если контент не отображается, включите VPN.

%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA

2012

26 янв. Доделал RSS на сайте

Сегодня была проделана работа по внедрению RSS потока на сайт Интересности. Выглядит все это как-то так http://interesnosti.16mb.com/main/rss/feed_rss.php

28 янв. Доделал систему навигации

Сегодня доделал систему навигации для сайта интересности. Теперь нет никакого мусора, никаких битых ссылок и прочего барахла. Все тихо и спокойно работает 🙂

8 февр. Установил плагин shadowbox

Решил использовать плагин shadowbox.js вместо устаревшего простого открытия в новом окне

23 февр. Стиль сайта

Закончил работу над стилем сайта. CSS3 работает на полную катушку. Трансформация, масштабирования, тени блоков и текста и плавные градиенты

1 мар. Подключил phpmorphy

Решил использовать для поисковых запросов библиотеку phpmorphy. Эта библиотека морфологического анализа написанная на PHP.

2 мар. Опять PRO дизайн

На этот раз решил не заморачиваться с дизайном и построить на подобие «листков заметок». В идеале все должно обрабатываться через child из jquery

%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA
Стиль заметок

5 мар. Выделение слова поискового запроса

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

%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2B%25281%2529

6 мар. Доделал стиль для ShadowBox

Взял немного стиля из ВК, из Хабра и еще пары сервисов

%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2B%25282%2529
Поделиться в социальных сетях

11 мар. Добавил кнопку «вверх», и доделал стиль для input

Кнопка вверх. При нажатии, происходит скроллинг к началу страницы. Работает на всех браузерах, вплоть до IE 5. На чистом JS. Использовал scrolltopcontrol.

Наконец-таки доделал стиль для кнопок input. Пришлось порядком переписать код, изменил уже устаревший вариант

text-indent: -9999px;

На более продвинутый, о котором узнал на хабре

text-indent: 100%;
white-space: nowrap;
overflow: hidden;

Предполагается, что при таком стиле кнопки никогда не смогут выехать к границе экрана. К мониторам over 9000px в ширину, я уже готов 🙂

14 мар. Про стиль для футера

Кардинально изменил стиль футера.

16 мар. Отслеживание данных пользовательской деятельности

Сперва выбор пал на создание отдельной таблицы для MySql, в которой хранились ip адреса.Такой выбор оказался со множеством недостатков. На данный момент используется протокол ipv4, который морально устаревает на глазах. Моя версия Php плохо работала с протоколами ipv6. А вместе со слабым mysql на сайте эта затея оказалась слишком затратной. Сейчас стараются экономить на адресах пользователей и давать либо динамические адреса, либо через прокси юзать один адрес.
Поэтому пришлось присмотреться к cookies. Решение
казалось очевидным — использовать cookies где угодно, но реальность оказалась слишком суровой. Многие пользователи стараются выключать cookies, другие удаляют, третьи могут постоянно менять браузеры. К тому же место под cookies очень ограниченное — около 4кб. Оставалось два варианта — web sql и local storage.

Web sql — это отличная вещь, к тому же большинство браузеров уже умеют с ними работать. Однако, после просмотра сайта W3C — узнал, что рекомендация одна — не использовать его.

Для отслеживания пользовательской деятельности на сайте решил использовать localStorage. Это локальное хранилище данных, созданное специально для HTML 5 и имеющая множество достоинств, таких как — увеличенный объем хранилища (на разных браузерах варьируется между 5мб до 10мб), полное взаимодействие с javascript.

Opera 11+, IE 8+, Firefox 4+ уже умеют работать с localStorage. Самое сложное оказалось подружить его с php через ajax. Т.к. local Storage это клиентский инструмент, я не нашел ничего удобнее чем при помощи jQuery передавать данные на сервер, который генерировал и выдавал мне нужный id.
В конечном итоге, пришлось писать также и поддержку Cookies — мало ли что. Объем кода оказался не большим, а вот тестирование с незнакомой технологией всегда идет на пользу.

20 мар. Установка Google Analytics

Сегодня с успехом прикрутил к сайту данные от Google Analytics

В дальнейшнем, я думаю, что придется переделать под графики написанные для HTML5. Уж больно я не люблю этот flash.

6 апр. Гугл гаджет

Гаджет устанавливается на панель iGoogle.

%25D0%25B2%25D0%25B8%25D0%25B4%25D0%25B6%25D0%25B5%25D1%2582
Установить можно тут

9 апр. Yandex Виджет

Случайный факт в вашем Яндексе

10 апр. Завершил создание «Интересных фактов»

Главное

Спустя почти три месяца работы в свободное время, я завершил создание interesnosti.16mb.com сайта. Первый мой проект на PHP получился достаточно интересным.

Решения

При создании были использованы достаточно технологичные решения как:

  • морфологический разбор слова с помощью библиотеки phpmorphy
  • RSS Atom рассылка
  • html 5 и css 3 отвечают за плавное появление и другие эффекты без использования javascript
  • jQuery
  • VKApi — одновременный постинг текста на серверы вконтакта и собственно на сайт, а также считывание лайков с высокой периодичностью
  • shadowbox — открывает iframe страницу с включенными скриптами социальных сетей и закладок. Это позволило уменьшить главную страницу в размере на, около, 400 кб.
  • amcharts.com отображает графики с Google Analytics, причем данные обновляются каждый день.
    публичная страница http://vk.com/rufact
    гаджеты для Yandex и Google

zakladki

гаджеты для Yandex и Google

13 апр. Купил домен rufact.info

Специально для интересностей, купил доменное имя rufact.info

22 июн. Что означает «плохо протестировал»

Прошло около двух месяцев спустя выкладывания interesnosti.16mb.com. В день на сайте от 3-7 человек!

Как назло нашлась ужасно дебильная моя ошибка — все из-за плохого тестинга (было бы лучше, если хостинг предлагал возможность работать с удаленной mySQL базой не только через свой домен).
Сам я вообще-то не нахожу факты, их просто парсит «мудренный» скрипт при помощи библиотеки simple_html_dom.

Ну а проблема в следующем — скрипт не кидает в БД различные строки в ANSII кодировки. Думаю, проблема в следующей регулярке на PHP, либо в дурацкой поддержки UTF-8 на PHP 5.3.

function DelTags($text) {
    $text = strip_tags($text);
    $text = preg_replace("/&S+;/i", "" ,$text); // <= баг
    $text = trim($text);
       
    return $text;
}

function GetFacts($siteurl) {
    $html = file_get_html($siteurl);
    $str;
   
    switch ($siteurl) {
        case "http://www.censored.ru/" : {
            $txt = $html->find('div[id=main] #content');// находим факт   
           
            //Проверка
            if($txt != "")
            {
                $str = DelTags($txt[0]);
            }
        } break;
           
        case "http://www.censored.ru/random/" : {
            foreach($html->find('small, span, br, a, .share') as $tmp)
                    $tmp->outertext = ''; //удаляем мусор    
                      
            $txt = $html->find('.fact h1', 0)->innertext;// находим факт
              
            if($txt != "")
            {
                $str = DelTags($txt); 
            }         
        } break;
     
        default: break;
    } 
   
    // подчищаем за собой
    $html->clear();
    unset($html);
   
    return $str;
}
%25D0%25BF%25D1%2580%25D0%25BE%25D0%25B1%25D0%25BB%25D0%25B5%25D0%25BC%25D0%25B0%2B%25D1%2580%25D0%25B5%25D0%25B3%25D1%2583%25D0%25BB%25D1%258F%25D1%2580%25D0%25BA%25D0%25B8
Результат позорной работы скрипта 🙁

P.S. В любом случае переделывать скрипт лень, лето, как-никак 😀
P.S.S. Хорошо что в Vk группу постится все нормально (однако в этой группе до сих пор 0 человек :))

Денис Сергеевич Басковский

Философ, изобретатель и поэт.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
hap
Следующая статья

htmlagilitypack пример простого проекта