• Главная
  • Оглавление
  • Обратная связь
  • Лента RSS
  • Правила
Что здесь уже нашли

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




Найдено страниц: 50 [показано 10]

  1. Файлы vs базы данных.

    Степень соответствия запросу: 59,5%
    Фрагменты текста поста :
    ... Файлы vs базы данных... ... В последнее время все чаще нахожу в интернете статьи, которые расхваливают сайтовые движки, созданные без использования баз данных , т... ... сохраняющие данные в файлах... ... Непонятно почему, но народ истово верит в то, что именно такой подход (отказ от использования систем управления базами данных и хранение данных в файлах) дает гораздо большую производительность... ... Давайте рассмотрим процессы, проистекающие на сервере при работе КМС "на файлах" и сравним их с аналогичными процессами при использовании СУБД... ... автор скрывает исходники, шифруя все в байт-код с помощью Zend-Guard), но общие выводы можно сделать просто проанализировав содержимое файлов, хранящих статистические данные... ... Пользователям скриптов других производителей, также использующих файлы в качестве хранилища данных этот пост также должен быть интересен... ... Вся эта информация сохраняется в файл и позже, на ее основе, генерируются графики посещаемости по дням, «хит-парад» страниц сайта, сайтов-источников трафика и используемых для просмотра броузеров и прочая мега-полезная отчетность... ... Нам гораздо важнее узнать, насколько оптимально использовать для этой работы файлы и действительно ли это быстрее, чем работа с базой данных... ... Особенность хранения данных Lasto-блогом такова, что статистика хранится в нескольких файлах: hits... ... db — данные о хитах (метка времени хита, IP-адрес источника, User-Agent клиента, хост источника, страница сайта к которой обратился клиент)... ... Кстати, анализируя этот файл можно увидеть, какие страницы сайта проиндексированы какими поисковыми системами (были посещены поисковыми ботами) и когда это произошло... ... Странно, что Lasto не встроил какого-либо культурного просмотрщика и анализатора этих ценных данных... ... db — данные об обращениях RSS-ридеров... ... В данный момент нам эта инфа не интересна... ... db — а вот на этот файл стоит обратить особое внимание... ... В нем хранятся те данные, которые выводятся на странице статистики блога... ... Структура такова: allsein — данные о заходах с поисковиков по разным запросам хост | искомая фраза дата, количество заходов... ... agent — данные о броузерах и ботах user-agent броузера дата, количество заходов... ... pages — данные о посещенных страницах страница дата, количество заходов... ... rss_agent — данные о запросах от RSS-ридеров user-agent ридера дата, количество заходов... ... source — данные об источниках трафика URL страницы-источника дата, количество заходов... ... В первом «разделе» (данных о поисковиках и искомых фразах) разделителем данных является символ вертикальной черты... ... Скрипт считывает в память ВЕСЬ файл статистики, не взирая на размер ( если посещаемость высокая или статистика собирается за большой срок, то это могут быть десятки или даже сотни мегабайт )... ... Итак, скрипт загружает текстовый файл и преобразует его в массив... ... Тут можно немного оптимизировать процесс и сделать обращение вида Пример кода $ar['allsein']['google... ... Случаи когда с данной поисковой машины еще не было посетителей и нужно создавать целую ветку массива рассматривать не будем... ... Серилизация (склейка элементов массива в строку) и перезапись (опять же) ВСЕГО файла статистики... ... тут затронута обработка данных только из одного «раздела» статистики (а ведь скрипт еще должен скорректировать данные и в остальных), не описан блок, который проверяет доступность сайта для данного юзер-агента и хоста-источника (а он жрет времени тоже немало), не учтены потери на выделение/освобождение памяти и копирование целых веток массива, если автор решил (для упрощения программирования) отделить часть массива например так: Пример кода $as = $ar['allsein']... ... // выделяем данные о заходах с искалок в отдельный массив Все это уже не столь важно... ... Главное то, что ПРИ ЛЮБОМ ХИТЕ (даже переходе серфера с одной страницы сайта на другую) происходят ВСЕ описанные операции — чтение, разбор, поиск, склейка, запись и выполняются они над ВСЕМ содержимым файла статистики... ... За счет кэширования вы выиграете часть времени на чтении/сохранении файла статистики, но как быть с массивом... ... К тому же не стоит забывать, что пока одна копия запущенного скрипта копается в вашем (пусть и прокэшированном) файле, все другие будут тихо и мирно курить в сторонке... ... Другими словами, пока идет обработка одного посетителя, все остальные будут ждать ибо для них доступ к файлу статистики окажется заблокированным... ... Для данного примера также будем рассматривать работу только с одним «разделом» статистики — данных о поисковых запросах... ... Скрипт должен получить данные из базы о количестве хитов «за сегодня»... ... Индексный файл содержит копию проиндексированного поля (или полей) из таблицы БД, но в отсортированном виде... ... Для работы механизма БД, система должна будет загрузить целиком в память три файла индексов... ... для перехода к нужной записи достаточно просто размер заголовка файла добавить к произведению размера записи в байтах на номер записи и получаем точное смещение от начала файла... ... Запись считали, увеличили на единицу и снова записали НА ТОЖЕ МЕСТО в файле таблицы... ... Поскольку записи в нашей третьей таблице (в данном случае) также будут иметь фиксированную длину, то поиск нужной внутри файла также сведется к одному сложению и одному умножению, а уж прочесть и снова записать на тоже место 12 байт — милисекундное дело (даже с учетом автоматической коррекции индексного файла)... ... Да еще про кэширование вспомним :-) Кстати, если ваш сайт достаточно посещаем, то файл статистики будет расти как на дрожжах и каждое обращение к скрипту будет вызывать чтение/парсинг/поиск/сохранение всех этих десятков мегабайт, а при использовании БД при любом количестве посетителей нам все так же будет нужно читать всего несколько сотен байт (три записи из таблиц), а записать - только 12 байт... ... :-) %%%базы данных, файловые движки, CMS, оптимизация скорости работы%%%... Подробнее: http://fit-media.com/post_1222679684.html


  2. AJAX — WEB 2.0 за 5 минут

    Степень соответствия запросу: 14,95%
    Фрагменты текста поста :
    ... Поскольку вся библиотекуа представляет собой всего один обычный файл с java-скриптом, то и подключается он стандартным HTML-тэгом: Пример кода <... ... наш контейнер, в который мы и будем загружать данные... ... Но эти данные кто-то должен предоставить... ... Поэтому сделаем файл, который будет посылать некий ответ на наш запрос... ... Для этого создадим HTML-файл, например, такого банального содержания: Содержимое файла text... ... Ему в качестве параметра передается URL, с которого необходимо получить данные... ... после выполнения функции mytest() внутри контейнера будет помещено содержимое нашего файла (в данном примере это будет надпись "... ... /a> Итак, полный код примера: Полный код файла index... ... /html> Сохраните файлы index... ... Гораздо чаще встречается ситуация, когда нужно отправить серверу какие-то данные и получить ответ, который, затем необходимо всунуть в контейнер... ... Решается эта задача так же просто, но сперва давайте создадим серверный скрипт, который будет получать данные с нашей страницы и отправлять ответ... ... Файл будет зваться name... ... Код: Файл name... ... > Мы будем отправлять данные (введенное имя) в скрипт методом POST (а почему бы и нет... ... Имейте это в виду прежде чем материться в комментах :) Ну вот мы уже имеем полностью интерактивную страницу с запрограммированным поведением... ... К тому же далеко не всегда полученные данные нужно тупо поместить в контейнер, гораздо чаще требуется провести еще кое-какую обработку полученной информации уже на стороне клиента... ... передает данные на сервер и получает ответ, но при этом он не изменяет содержимое DOM... ... Вместо этого он позволяет создать функцию-обработчик полученных данных... ... считывать данные из полей, этим займется метод serialize(), который сам соберет все данные из формы и упакует их в формат, понятный для метода post()... ... Вместо этого он принимает третьим параметром функцию, которая будет обрабатывать полученные с сервера данные... ... Теперь, если вам нужно передать на сервер больше данных, то просто добавьте в форму сколько угодно полей различных типов (радио-кнопки, текстовые области, пароли, чек-боксы)... ... фреймворк сам определит количество и типы полей и сам соберет из них данные для отправки... ... вы не сможете с его помощью закачать на сервер файлы... ... Он упрощает отправку данных на сервер до предела &mdash... ... вам вообще ничего не придется программировать :) Не станем здесь городить огород с реальной загрузкой файлов, просто выведем данные о загруженном файле... ... Код скрипта (файл file... ... php): Файл file... ... Первая будет вызвана перед началом отправки данных (в данном примере она покажет alert-окно с надписью 'start uploading'), а вторая &mdash... Подробнее: http://fit-media.com/post_1262093659.html


  3. Если не хочется кусать локти

    Степень соответствия запросу: 8,21%
    Фрагменты текста поста :
    ... Именно человеческая лень чаще всего служит причиной отсутствия резервной копии данных... ... Наилучший вариант — создание копии важных данные на сменных носителях... ... Если в вашей системе установлено несколько винчестеров и оригинальные (важные) данные расположены на первом из них, то копия всегда должна быть расположена на втором, третьем, четвертом винчестере, но только не на том, где лежит оригинал... ... Если винчестер выйдет из строя, то информации вы все равно лишитесь, но такой вариант все же позволит вам в некоторых случаях спасти данные... ... В этом случае копия данных должна располагаться в отдельной папке... ... Пояснять тут нечего — если уничтожите оригинал, то сможете поднять данные из резервной папки, но любое более серьезное происшествие (вирус, форматирование, выход из строя носителя) практически 100%-но лишит вас и оригинала и копии... ... Для резервирования данных создана масса специальных программ-бэкаперов — пару минут общения с любым поисковиком и вы найдете ссылки на десятки примеров такого софта... ... Есть даже одна, встроенная прямо в Windows ( Пуск — Программы — Стандартные — Служебные — Архивация данных )... ... Самый простой способ создания резервной копии — тупо откопировать важные файлы (и папки) в место резервного хранения... ... * f:\arhiv\ скопирует все файлы из папки texts диска C: на диск F: в папку arhiv... ... * f:\arhiv\ /Y /S Теперь она скопирует все содержимое папки texts диска C: , включая все вложенные папки и все файлы из них... ... В реальной жизни чаще нужно копировать не все подряд, а файлы определенных типов... ... Дело в том, что эти команды просто тупо копируют файлы из одного места в другое... ... При этом если в папке-приемнике уже есть файл с тем же именем, что и в папке-источнике, то он заменяется... ... Проблема в другом — если в исходной папке какой-либо файл был удален (например он больше вам не нужен), то в копии он все равно останется... ... * /S /F /Q Она уничтожит все файлы из папки архива и всех вложенных в нее папок... ... Но, к сожалению она не умеет удалять папки, поэтому мусор в виде пустых вложенных папок все же останется... ... Обратите внимание на расширение этого файла, оно должно быть именно BAT , а не TXT... ... Достаточно одного файла чтобы создать сколько угодно копий... ... * f:\arhiv\doc\ /Y /S Этот файл создаст полные копии папок texts и prikaz диска C: и папки doc диска D:... ... копируются абсолютно все файлы, хотя делать это каждый раз вовсе не обязательно... ... Хорошо бы, добиться такого эффекта, когда: в копии заменяются только те файлы, которые изменились в оригинале в копию добавляются те файлы, которые появились в папке оригинала из копии удаляются все папки и файлы, которые удалились в оригинале... ... Итак, условимся, что оригинальные данные находятся в папках c:\texts\ , c:\private\passwords\ и d:\work\prikaz\... ... rar d:\work\prikaz В результате его работы в папке arhiv диска F: будут созданы три файла: texts... ... архиватору придется полностью упаковать все файлы из исходных папок... Подробнее: http://fit-media.com/post_1203529769.html


  4. DropBox - убийца фалообменников

    Степень соответствия запросу: 6,24%
    Фрагменты текста поста :
    ... Итак, ввели данные и нажали "... ... инсталлятор свяжется с сервером и проверит ваши регистрационные данные... ... Это значит, что стоит вам удалить какой-то файл из этой папки, как он тут же будет удален с сервера... ... для удаления файла с сервера достаточно просто удалить этот файл из своей папки... ... это не файлообменник, а средство резервирования данных, поэтому именно так он и должен себя вести... ... , а так же валяется непонятный RTF файл, который можете сразу же стереть &mdash... ... Поэтому если вы хотите, чтобы кто-то кроме вас мог скачать файлы из вашего аккаунта, то вы должны разместить эти файлы внутри одной из этих папок... ... Все остальные папки и файлы, которые вы можете создать и которые НЕ будут находиться внутри папок Public или Photos никогда не будут доступны другим пользователям (за одним маленьким исключением, которое называется "... ... и сотрите все, что в ней есть (файл RTF с описанием работы и пример готового альбома)... ... и скопируйте в нее несколько фотографий: Если файлы большие или ваше соединение с интернет не очень быстрое, то вы заметите, что у каждой иконки сперва появляется синий значек с двумя стрелочками, который потом заменяется на зеленый с галочкой... ... файл или папка еще закачивается на сервер, зеленый  ... ... файл или папка успешно закачаны... ... в том, что в ней нельзя расшарить (сделать публично-доступным) один какой-то файл, только целиком альбом (вложенную папку)... ... Если же вам нужно раздавать файлы по одному, то вам нужно воспользоваться папкой "... ... в ней можно получить паблик-ссылку на любой вложенный файл, но нельзя получить такую ссылку на папку... ... раздавать файлы можно только по одному... ... Так что смело копируйте нужные файлы в папку Public , получайте на них паблик-ссылки и заваливайте этим спамом все известные вам форумы... ... Еще раз напомню, что если вы удалите как-нить файлы из ваших папок Public или Photos (или любых других внутри папки My Dropbox ), то эти файлы тут же будут удалены с сервера... ... если какой-любо из закачанных файлов изменился, то перезалита будет только изменившаяся часть, а не весь файл... Подробнее: http://fit-media.com/post_1256945370.html


  5. Привратник-младший. Турбо-решение.

    Степень соответствия запросу: 2,75%
    Фрагменты текста поста :
    ... Но если вам важен каждый процент нагрузки сервера и плевать вы хотели на случайных серферов, пользующихся неправильными броузерами, то замените в файле pr... ... Чуть ниже в файле идет список стоп-слов, найдя которые в юзер-агенте скрипт безаговорочно выплюнет 404... ... Сохраняйте изменения и закачивайте его на сервер в папку с блогом (это папка, в которой расположены файлы functions... ... Теперь, чтобы подключить скрипт к блогу, необходимо внести изменения в файл... ... Настоятельно рекомендую скопировать куда-нибудь этот файл до того, как вы начнете его редакторовать... ... вам достаточно будет вернуть родной файл... ... Итак, вот содержимое файла... ... htaccess, который поставляется Вадимом в комплекте Lasto-Blog-B: Исходный файл... ... php А вот то, что должно быть после изменения: Модифицированный файл... ... php После изменений сохраните файл... ... PS Если вы решили, что данный скрипт для вас полезен, то автор с удовольствием примет вашу благодарность в виде пары монет, отправленных на кошелек Z193099158015 системы WebMoney... ... Он подкинул идею, что данный скрипт может быть опасен, т... Подробнее: http://fit-media.com/post_1225008537.html


  6. Идея глобального контента

    Степень соответствия запросу: 2,18%
    Фрагменты текста поста :
    ... Идея глобального контента Как хранить данные в БД... ... По теме проектирования баз данных написано множество книг и статей, но все они содержат больше технической информации (описания систем индексации, поиска и связывания таблиц) и предлагают дробить всю информацию на множество таблиц, не забыв склеить все это в тугой узел с помощью связей (relations) и зависимостей... ... виды контента сайтов... ... Список полей-атрибутов этого вида контента: Уникальный идентификатор ( id ) - куда ж без него... ... Список полей: Уникальный идентификатор ( id ) Идентификатор статьи с в блоге, к которой относится данный комментарий ( parent_id ) Заголовок ( title ) Собственно текст ( content ) Идентификатор автора ( user_id ) Дата создания ( created ) Флаг промодерированности ( published ) Как видим, поля всё теже, что и для статичной страницы, отличие лишь в количестве... ... Проанализировав описанное выше, можно легко сделать вывод, что при проектировании CMF логично создать всего одну (большую) универсальную таблицу в базе данных для хранения практически любого вида контента... ... При этом для разработчиков модулей можно упростить многие рутинные операции, такие как, программирование ввода одних и тех же данных в разных модулях ( created , modified , title , decsription , keywords и т... ... Разработчику модуля нужно лишь сообщить системе, какие именно поля будет использовать его модуль и система сама сможет создать все необходимые формы для ввода/редактирования данных, с необходимой валидацией... ... Так же этот вариант хранения данных позволяет сделать "... ... %%%контент сайта, проектирование CMF, виды контента CMS, базы данных,  ... Подробнее: http://fit-media.com/post_1242742678.html


  7. Грамотный интерфейс: поля ввода

    Степень соответствия запросу: 1,69%
    Фрагменты текста поста :
    ... Грамотный интерфейс: поля ввода Очень часто в программах данные вводятся в формах, содержащих множество полей: поле фамилии, имени, адреса, номера паспорта, размера обуви... ... Гораздо лучше изначально создать такие условия ввода данных, чтобы подобные ошибки просто не возникали... ... Наиболее популярное на данный момент - разбить форму с десятком полей ввода на несколько форм, по два-три поля в каждом... ... Для интернета это оказывается удобным, но в оффлайновых программах, где вводимых данных гораздо больше, возникает масса проблем: необходимо предусмотреть в каждой следующей форме отображение введенных данных из предыдущих форм, чтобы пользователь мог видеть, что он уже ввел ранее... ... для изменения ранее введенных данных (например неверно введенной фамилии) необходимо сделать в формах навигацию "вперед - назад"... ... Определимся с задачей Нам нужно, чтобы интерфейс каким-то образом подсказывал пользователю, что именно от него (пользователя) требуется в данный момент... ... Окрашивание полей имеет и еще один плюс - если разработчики в будущем поменяют расположение полей, но при этом сохранят их цветовое соответствие (фамилия - розовый, адрес - голубой), то пользователям будет намного легче приспособиться новому виду, т... ... Суть состоит в том, что для ввода новой записи в базу и для редактирования уже введенной записи как правило используется одна и та же форма... ... Так вот, если во время редактирования придать фону формы какой-нибудь оттенок (например сделать ее слегка красноватой), то пользователь, занимающийся только вводом новых данных, сразу же заметит это изменение цвета и не введет по ошибке новые данные поверх старых... ... Ну и чтоб поставить жирную точку в вопросе путаницы при вводе и редактировании данных опишу еще одно простое, но очень полезное улучшение интерфейса... Подробнее: http://fit-media.com/post_1205142560.html


  8. Тормозить тоже нужно уметь.

    Степень соответствия запросу: 1,65%
    Фрагменты текста поста :
    ... 0 не умеет качественно замедлять видео... ... Честно-говоря, качественно разгонять видео он тоже не умеет, просто при разгоне искажения не так сильно бросаются в глаза... ... Собственно, именно эта проблема (качественное изменение скорости видео) и подвигла меня на поиски... ... Изрядно порывшись в форумах видео-монтажников, заметил одну вещь: подавляющее большинство склоняется к мысли, что лучшим изменяющим скорость плагином (plug-in - модуль расширения для программ) для Adobe Premiere PRO (далее - APP) является поделка по имени Twixtor Pro , хотя и он не безгрешен - работает очень медленно и в финальном видео часто присутствуют артефакты... ... Сразу скажу, что люди в форумах не врали :( Короче, вкинул я на тайм-лайн Премьера кусочек видео, применил к нему фильтр Twixtor , установил в его настройках в параметре Output Control/Speed % значение 20% (а чего уж... ... И лучше всего на кластер из 8-ми двуядерных серверных машин, ибо такие тормоза я видел только однажды, при рендере сцены в 3DMax, когда напихал туда пару десятков прозрачных блестящих объектов и включил полную трассировку лучей... ... Обработанное видео действительно выглядит так, словно его снимали на спец-аппаратуре с частотой кадров не меньше сотни FPS... ... Чтоб не утомлять читателей описанием моих дальнейших изысканий, множества тестов и полным переводом документации от Twixtor , просто скажу, что мной найден вполне компромиссный вариант - скорость примерно в 4 раза выше чем при первых тестах плюс полное отсутствие артефактов... ... Артефакты возникали из-за неверной интерпретации Twixtor 'ом черезстрочного видео... ... Поэтому, если вы работаете с черезстрочным видео-материалом (например, видео с камер в формате DV), то вам необходимо выставить значение параметра Source Control / Input: Fields в "... ... , то скорость расчета станет максимальной, но, правда, будет использован упрощенный алгоритм генерации промежуточных кадров - он дает сильное замыливание при замедлении видео более чем в два раза... ... Удачи вам в торможении видео... ... :) %%%Adobe Premiere, редактор видео, нелинейный монтаж, плагин Twixtor, замедление видео, изменение скорости%%%... Подробнее: http://fit-media.com/post_1213776731.html


  9. Статичные файлы vs скрипты. Невидимое зло.

    Степень соответствия запросу: 1,64%
    Фрагменты текста поста :
    ... Статичные файлы vs скрипты... ... Например, многие современные CMS грешат тем, что хранят в БД те данные, которым там совсем не место - шаблоны страниц, стили и т... ... Ведь система однопользовательская и кроме вашей софтины (грубо говоря) ничего на данный момент не выполняется... ... Казалось бы нагрузка не такая уж и существенная, но все же вариант, когда стили хранятся в отдельных файлах гораздо предпочтительнее, т... ... в этом случае вэб-сервер тупо отсылает клиенту готовый файл и никаких запусков скриптов, парсингов, обращений к БД и прочей лабуды не выполняется... ... Сторонники хранения стилей в базе данных приводят два (весьма спорных) аргумента в защиту такого подхода... ... Мазохизм в чистом виде... ... Во-вторых, возможность редактирования файлов через админку вовсе не обязует хранить данные в БД &mdash... ... Но ведь при переносе сайта вам все равно придется переносить и скрипты (сам код CMS), так какая разница переносить только файлы CMS или файлы CMS плюс файлы дизайна... ... он в это время будет скачивать остальные файлы... ... парсить запрос, определять из каких именно шаблонов состоит страница (а для этого придется вызывать все модули, формирующие контент данной страницы, которые, в свою очередь, будут парсить запрос или шаблоны, рыться в БД и т... ... И с первого раза... Подробнее: http://fit-media.com/post_1283692130.html


  10. Залепа №9. Microsoft друзей не признает.

    Степень соответствия запросу: 1,19%
    Фрагменты текста поста :
    ... Голуба "Правила программирования в С и С++" (речь идет именно о C++): Цитата: Как-то раз я видел интерфейс, в котором объект "календарь" позволял пользователю интерактивно выбирать дату, щелкая мышью на каком-либо из дней, показанных на изображении календаря... ... Конечно, "дата" должна также уметь себя вывести, переслать в файл или из файла, сравнить себя с другими датами и так далее... ... // сохранили дату в файл cd... ... // прочи дату из файла int days = cd - new CDate("28... ... Для него предоставлен интерфейс взаимодействия в виде открытых свойств и методов, им пусть и пользуется... ... Отсюда вытекают пункты: 3а) класс календаря не должен быть виден пользователю... ... :( В C++ мы бы просто сделали класс CCalendar другом класса CDate , разрешив тем самым календарю использовать внутренние механизмы в виде вызовов защищенных методов CDate... ... А именно, если распространять свой класс CDate в виде исходников, то он потянет за собой и класс CCalendar , а мы бы не хотели, чтобы пользователь знал о нем... ... Сборки - это здорово по отношению к DLL , но убого по отношению к обычным библиотечным файлам, которые до... Подробнее: http://fit-media.com/post_1199568462.html


История внешних поисковых запросов

Меню

  • Главная страница
  • Оглавление блога
  • Лента новостей
  • Обратная связь
  • Правила блога

Анонсы по темам

  • Все посты блога
  • С миру по нитке
  • Мысли вслух
  • Графика и фото
  • Кривизна платформы .NET
  • Грамотные интерфейсы
  • WEB-программирование
  • FlatCMS - шустрая и гибкая
  • Доработки Lasto-блога

Категории

  • Все посты по порядку
  • С миру по нитке
  • Графика и фото
  • Кривизна платформы .NET
  • Грамотные интерфейсы
  • WEB-программирование
  • FlatCMS - шустрая и гибкая
  • Доработки Lasto-блога

Сервисы

  • Поиск по блогу
  • Поиск по всему сайту
  • Шпионское досье

Реклама


Стоимость сайта

Мой вебсайт стоит 865 404,18 руб

Статистика

    Widgetize!
  • Время работы: 0,48003 сек.
  • Память: 17 664 кБт
  • Статистика привратника
Copyright FIT-Media.com, © 2007-2010
Главная | Общее оглавление | Обратная связь | Правила блога | Лента RSS