О блоге

@nger-блог - место, где Вы можете почитать про меня и события в моей жизни, а также найти интересные материалы, собранные из разных уголков Всемирной Сети

Rss -каналы

Пара слов о рыбалке

Нет, не о той рыбалке, что на озере, рано утром, под пиво\водку и ухой вечером, а о сборе "рыбы", то есть текстов, нужных лишь для того, чтобы заполнить ими что-то. Дизайнеры, верстальщики используют рыбу для заполнения каких-то блоков информации, когда необходимый контент от заказчика ещё не пришёл. Программисты используют рыбу для проверки БД, скриптов и программ эмулируя действия пользователя, якобы он передаёт какие-то тексты программе. В общем, удел рыбных текстов - тестирование чего-либо, имеющего дело с текстовой информацией.
Создать рыбу можно разными способами:
  • Взять любое художественное произведение и выдрать оттуда главы, которые и будут текстами рыбы
  • Взять любой достаточно большой текст и сгенерировать множество текстов, используя цепи Маркова
  • Взять где-то базу уже нагенерированых текстов
Эти способы пришли мне в голову, особо эту тему я нигде не встречал, поэтому руководствуюсь лишь своим опытом. Вначале для тестирования скриптов я использовал лишь простой генератор записей "добавить строку тест тест тест", однако это не отражает реальных ситуаций - такие записи без проблем кешируются и вообще не очень пригодны для тестирования в условиях, приближённых к боевым.
После этого, используя готовый класс для генерации текстов используя цепи Маркова, я нагенерировал около 1000 текстов, однако, толи класс содержал ошибку(которую мне не очень хотелось искать, а беглый осмотр кода не дал результата), толи звёзды не так встали, но из 900-кб текста Сильмариллиона он выдрал только 3 слова и все тексты содержали только 3 различных слова. Затем я этот же текст разобрал на главы, коих насчиталось около 20. Затраты явно не оправдались. Поэтому я начал искать другой способ генерации рыбы, и тут мне на глаза попался сервис Яндекс.Рефераты. Он создаёт совершенно несвязный текст по заданой тематике, но для тестирования - само то. Далее был написан простенький парсер, который берёт записи по случайным темам. Его код привожу ниже:
<?php

function process_urls($urls)
{
  $errno = 0;
  $errstr = '';
  $texts = array();
  $ids = array();
  $eofs = array();
  $counter = 0;
  while (in_array(false, $ids) || (count($urls) != 0 && count($ids) == 0))
  {
    foreach ($urls as $id => $href)
    {
      if (!isset($ids[$id]) || $ids[$id] === false)
      {
        if ($counter != 0 && ceil($counter / 100) == $counter / 100)
          sleep(1);
        $counter ++;
        $href = parse_url($href);
        $ids[$id] = fsockopen('213.180.204.20', 80, $errno, $errstr, 5);
        if ($ids[$id])
        {
          $out = "GET ".$href['path']."?".$href['query']." HTTP/1.1\r\n";
          $out .= "Host: ".$href['host']."\r\n";
          $out .= "Connection: Close\r\n\r\n";
          fwrite($ids[$id], $out);
          $eofs[$id] = false;
          $texts[$id] = '';
        }
      }
    }
  }
  while (in_array(false, $eofs))
  {
    foreach ($eofs as $id => $eof)
    {
      if ($eof == false)
      {
        $texts[$id] .= fread($ids[$id], 4096);
        $eofs[$id] = feof($ids[$id]);
      }
    }
  }
  foreach ($ids as $id => $id_val)
    fclose($ids[$id]);

  foreach ($texts as $id => $href)
  {
    $text = $texts[$id];
    $text = str_replace(array("\n", "\r", '', $text);
    preg_match(
      '#<h1 style="color\:black\; margin\-left\:0\;">Тема\: \«([^»]+)»</h1>((<p>[^<]+>/p<+)</div></td>#Sim',
      $text, $matches);
    preg_match_all('#<p>([^<]+)</p>#Sim', $matches[2], $matches2);
    mysql_query(
      'INSERT DELAYED INTO data (title, textdata) VALUES ("'.mysql_escape_string($matches[1]).
      '", "'.mysql_escape_string(implode("\r\n", $matches2[1])).
      '"');
  }
}

set_time_limit(3600);

mysql_connect('localhost', 'root', 'root');
mysql_select_db('data');
mysql_query('CREATE TABLE IF NOT EXISTS `data` (
`title` VARCHAR( 255 ) NOT NULL ,
`textdata` TEXT NOT NULL
);');
mysql_query('TRUNCATE TABLE `data`');

$themes = array('astronomy', 'geology', 'gyroscope', 'literature', 'marketing', 'mathematics', 'music', 'polit',
'agrobiologia', 'law', 'psychology', 'geography', 'physics', 'philosophy', 'chemistry', 'estetica');
$urls = array();

for ($i = 0; $i <= 50000; $i++)
{
  $themes_copy = $themes;
  $use_themes = array();
  do
  {
    $rand_index = array_rand($themes_copy);
    $use_themes[] = $themes_copy[$rand_index];
    unset($themes_copy[$rand_index]);
  } while (count($themes_copy) && rand(0, 5));
  $urls[] = 'http://referats.yandex.ru/all.xml?mix='.implode('%2c', $use_themes).'&'.implode('=on&', $use_themes).'=on';
}

while (count($urls))
{
  process_urls(array_splice($urls, -10));
}
Собственно ради него и затевалось написание данной заметки. Достаточно шустро обрабатывает страницы и помещает тексты, пригодные для занесения, например, в раздел новостей на сайте, в БД. Использовать его нужно осторожно, естественно только для тестирования.
Мне интересно увидеть комментарии по поводу скрипта и вообще идеи создания рыбы, ведь действительно, идею почти никто не освещает.

Комментарии [1] | опубликовано: 1 марта 2008, 17:34

SimCity 4 Rush Hour. Советы

Постараюсь описать советы оптимальной застройки городов в SimCity 4 Rush Hour. Этот аддон содержит улучшения по части транспортных магистралей. В оригинальном SimCity 4 главной проблемой был неимоверный трафик на дорогах и справиться старыми средствами было крайне затруднительно.

Итак, вот что я рекомендую:
- Лучший способ создать хороший город - представить в голове какой-нибудь реальный город.
- Специализация рулит. У меня в моём текущем развивающемся регионе(2 500 000 жителей) практически каждый город зависит от другого. Есть промышленные города, а есть постиндустриальные(промышленности либо нет вообще, либо 2-5% площади и та High Tech).
- Самый эффективный способ производить электроэнергию - угольные станции. Но они очень загрязняют окружающую среду, поэтому их лучше строить в центре промышленных районов города, либо вообще в отдельных промышленных городах(у меня на каждый средний город по 2 маленьких промышленных придатка, где только промышленность, дороги и электростанции). Передавать энергию в соседний город можно посредством ЛЭП.
- Грязной промышленности и производству не так важна вода, к тому же они её очень загрязняют, поэтому в промышленные районы\города я не провожу воду.
- Размечая промышленный район, следует помнить, что удаление клетки более чем на 2-3 клетки от дороги означает транспортную недоступность. Поэтому я строю промышленные районы полосками по 4 клетки между 2-мя проспектами или дорогами.
- Промышленность очень огнеопасна, поэтому такие районы должны быть обязательно прикрыты пожарными станциями.
- Сельскохозяйственные города также нужны, иначе симы умрут от голода(сам такого не встречал, но говорят что есть такое).

С промышленностью разобрались, переходим к коммерции:
- Не стоит строить коммерцию слишком далеко - покупатели и работники не любят долгих поездок.
- Плаза(торговая площадь) стимулирует коммерцию.
- Коммерция хорошо развивается только при наличии воды.
- Для коммерции максимальное удаление от дороги - 4 клетки. Но это только в благоприятных районах. В обычных - 3 клетки.
- Продавцам не нравятся ночные погромы, поэтому такие зоны лучше брать в кольцо защиты полицией.
- Работникам не мешает шум стадиона, поэтому последний окружать лучше коммерческими зонами, чем жилыми.
- Небоскрёбы врядли появятся на 1 клетке, но вот на 4-12ти(да-да, одно здание может занимать 12 клеток!) - вполне.

Советы по использованию жилых районов:
- Строить лучше клетками 2х3 или 3х3. Реже удаётся построить клетки 4х3.
- Жилые районы для процветания должны быть в полной мере медецинскими, образовательными(школы, колледж(можно 1-2 на город), библиотеки, музеи(3-4 на город)) учреждениями, парками, игровыми площадками для детей, спортсооружениями(в том числе большие стадионы, но их лучше строить подальше от жилых районов, ибо очень шумны), остановками общественного транспорта или метро, дорогами(начиная от обычной дороги и заканчивая шоссе для больших городов, где проспекты просто не справляются с массами автомобилей, либо с перемещением симов в другие города региона), охраной полиции и пожарников.
- Большим городам крайне необходима связь с внешним миром. Для этого подойдут порты, аэропорты, Ж\Д, уходящая за пределы города, шоссе в другие города и т.д.
- Вода является обязательным фактором развития жилых районов.

Советы касательно строительства зданий:
- Здания с простым покрытием территории для достижения результата можно строить вполне разреженно, но не упускать более 5% территории города(то есть можно поставить 1 большую пожарную станцию на маленький город и её будет вполне достаточно), а здания с "наполнением" (школы, больницы и т.д.) следует строить почаще, например, соседнюю школу строить не с расчётом на покрытие соседнего округа, а стрить на границе области покрытия предыдущей школы\больницы потому, что очень часто в ином случае эти учреждения оказываются переполнены.
- Зону действия лучше обеспечить по максимуму, ведь +$50 к 0 это небольшая территория, а +$50 к $200 это едва ли не двукратное увеличение площади(уже весьма солидной). Однако обратная сторона медали - чем больше территория, тем больше посетителей. В больших городах это ключевой фактор.
- Здания, которые негативно влияют на стоимость земли лучше строить скоплением подальше от жилых и коммерческих районов.
- Федеральная тюрьма - очень полезный объект. Она даёт 250 долларов в бюджет ежемесячно, может содержать очень много заключённых, но при этом потребляет много энергии и даётся только при проблемах с бюджетом.
- В SimCity 4 есть интересное здание - Казино. Оно даётся при наличии закона, легализирующего азартные игры. Выглядит красиво, даёт 300 долларов в бюджет, но навлекает преступность.

Советы по строительству транспортных развязок:
- Метро очень полезное, но дорогое удовольствие. Выживаемо только в хороших развитых городах. Размещать следует достаточно часто(где-то 1 станция на 25-36 клеток).
- Автобусные остановки дешвле, но зависят от городских дорог(которые обычно и так переполнены).
- Сторожки способны оздоровить городскую казну, но затрудняют движение автомобилей. Строю только если совсем туго с деньгами.
- В слаборазвитых городах достаточно и проспектов, но в развитых необходимо шоссе, ведь для таких городов 10 000 автомобилей, движущихся в одном направлении не редкость, а повсеместное явление.
- Съезды и въезды для шоссе лучше строить почаще. Например, каждые 12 клеток.
- Поднятое шоссе эффективнее, но дороже наземного. Но оно того стоит, поэтому я чаще строю поднятое.
- Паромы вполне могут заменить всяческие шоссе и ж\д сообщение между городами. Но, естественно, для этого нужна река. Строю по возможности.

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

Комментарии [9] | опубликовано: 29 июля 2007, 20:59

Ещё 4 сертификата!

На этот раз – от RetraTech. Тесты там посложнее. PHP4 вообще по минимуму прошёл(правда из-за глюка инета у меня 2 вопроса не засчитали). Новые картинки:
Работа в Windows XP
Основы глобальной сети Интернет
HTML программирование
Создание интернет-приложений в PHP 4

Комментарии [3] | опубликовано: 7 мая 2007, 23:26

Invision Power Board 2.2 + Internet Explorer

На днях столкнулся с проблема невозможности логина юзеров IE на форуме с системой IPB 2.2.1. У меня на локалхосте всё было ок, но на хостинге чего-то глючило. Начал искать проблему. Перерыл файлы форума, понял что дело в авторизации. Нашёл функцию авторизации, начал идти по ней… Наткнулся на проверку юзерагента пользователя. Ботовским агентам выдавался статус гостя, даже если они пытались залогиниться. Потом начал в настройках искать список этих агентов. Оказался в самом очевидном месте – админпанели, в специальной ветке – Search Engine Spiders. Там последней строкой стоит некий бот Mozilla с сайта mozilla.org. Не знаю что за бот, но вот IE отдаёт юзерагентом строку ”...Mozilla/4.0…”, так что я со спокойной душой убил последнюю строку в списке ботов и смог залогиниться из-под IE. На локалхосте всё было ок потому, что я ещё при настройке форума удалил эту глупую строчку и благополучно об этом забыл.

Комментарии | опубликовано: 21 марта 2007, 21:27

Запись в моём дневнике

Что-то я забыл в последнее время про дневник… Сейчас вернулся немного в DestinySphere, помаленьку играю, иногда захожу в SanCity, там безработица и скука. Работаю над проектом, по завершении которого у меня будет собственная CMS, которую потом можно будет использовать очень для многих целей. Весьма занятная вещь получается. Познакомился с рокером, хотим вместе сайты делать, так что если Вам нужен сайт – обращайтесь, сделаем В личной жизни всё супер, подарил любимой слоника со звездой с неба. Вроде понравилось Мне она подарила часики, шоколадку(ммм… и открыточку(мега). Сессию сдал на пятерки, пока иду без 4 и 3 в сессиях... Типа даже на красный диплом. Если всё так и будет, то это супер. В общем, в ближайшем будущем пополнится резюме очередным проектом, ждём весны или хотя бы хорошей погоды, в дальнейшем постараюсь не забывать вести дневник

До новых встреч!

Комментарии [3] | опубликовано: 3 января 2007, 23:46

<< Предыдущая страница