IT-Expert
  IT-Expert / Веблог / Ключевые слова / Parser
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2023 год
 за 2022 год
 за 2021 год
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 
      входит в:
      Web Development

      Parser

      включает:
      MySQL

      Два домена на одном сайте.

      09:27, 20 апреля 2005 ( )
      Источник: http://www.parser.ru/forum/?id=39589

      У меня такая проблема:
      Имеется домен с хостингом www.name.ru и домен без хостинга www.name2.net.ru. Требуется сделать так, чтобы при запросе www.name2.net.ru открывался физически www.name.ru/domain/, при наборе www.name2.net.ru/news/ — www.name.ru/domain/news/. Причем в строке браузера отображалось попрежнему www.name2.net.ru/news/.
      C помощью DNS прописал, что при наборе name2 открывается name. Но получить то, что требуется не могу. Пробовал решить ситуацию с помощью rewrite, но не помогло (смотрел примеры на egoroff.spb.ru).

      Если это возможно, то как будет вести себя Парсер (ведь получается, что корневой каталог не "/" a "/domain/")?

      Знаю, что сообщение немного не в тему, но единственным оправданием будет то, что сайт name2 работает на Парсере. :-)

      Ответ от PAF:

      давайте два правила перепишем в одно, что-то вроде:
      #нужный host
      RewriteCond %{HTTP_HOST} name2
      #его ещё не загнули
      RewriteCond %{REQUEST_URI} !^/domain/
      #загибаем
      RewriteRule (.*) /domain/$1 [L,QSA]
       

      Пишем баннерную систему

      15:00, 24 марта 2005 ( )

      Баннерную подсистему лучше всего организовывать как вызов внешнего ресурса через iframe.

      1. Показ в рандомном порядке у меня был реализован примерно так:
      Яваскриптом на странице генеришь случайное число(как правило для того чтобы сраницы с баннерами не кешировались), это число подставляешь параметром к вызову страницы баннера. Таким образом баннеры вызванные с одной страницы будут иметь одинаковый параметр.
      Далее после выборки баннера делаем update поля last_pid, в которое заносим наше рандомное число со страницы. При следующей выборке уже показанный баннер попадет под условие last_pid!="наше рандомное число со страницы" и повторно на одной странице показан не будет.

      2. Вводишь в таблицу такое понятие как вес(weight) баннера, т.е. число в пределах, к примеру, 1..5. При выборке используем его след. образом:

      ...
      order by
      views*weight
      ...
      где views = количество просмотров.

      Таким образом при весе в 3,2,1 из 6 показов будут показаны первый - три раза, второй - два и третий один.


      И еще пару моментов, которые тебе однозначно пригодятся.

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

      При выборках баннера обязательно делать LOCK/UNLOCK таблицы с баннерами, т.к. повторный select может не включить в себя результаты после update, и на странице вылезет два одинаковых баннера.

       

      Рекурсивное построение дерева из "плоского XML"

      14:58, 24 марта 2005 ( )

      Преобразование "плоского" XML в древовидный.
      С помощью этого форум пишется раз-два.
      И код в примере "пишем форум" сокращается до минимума.
      Исходный XML :
      <?xml version="1.0" encoding="windows-1251"?>
      <collection>
       <item text="test5" id="5" pid="3"/>
       <item text="test1" id="1" pid="0"/>
       <item text="test2" id="2" pid="0"/>
       <item text="test3" id="3" pid="1"/>
       <item text="test4" id="4" pid="2"/>
      </collection>
      Наш XSL :
      <?xml version="1.0" encoding="windows-1251"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" encoding="windows-1251"/>
       <xsl:param name="topid" select="0"/>

           <xsl:template match="collection">
           <test>
                   <xsl:value-of select="."/>
                   <xsl:apply-templates select="item[@pid=$topid]">
          <xsl:with-param name="x" select="1"/>
          </xsl:apply-templates>
       </test>
           </xsl:template>

           <xsl:template match="item">
        <xsl:param name="x"/>
               <item id="{@id}" name="{@text}" pid="{@pid}" depth="{$x}">
                  <xsl:apply-templates select="//item[@pid=current()/@id]">
          <xsl:with-param name="x" select="$x+1"/>
         </xsl:apply-templates>
               </item>

           </xsl:template>

      </xsl:stylesheet>
      Получаем :
        <?xml version="1.0" encoding="windows-1251" ?>
       <test>
       <item id="1" name="test1" pid="0" depth="1">
              <item id="3" name="test3" pid="1" depth="2">
                   <item id="5" name="test5" pid="3" depth="3" />
               </item>
        </item>
        <item id="2" name="test2" pid="0" depth="1">
               <item id="4" name="test4" pid="2" depth="2" />
        </item>
        </test>

       

      Что использовалось при разработке сайта

      14:39, 24 марта 2005 ( )

      При разработке сайта использовались такие инструменты:

      • Для кодирования классов:
        Far Manager с плагином colorer "4ever" и схемой подсветки синтаксиса Parser3
      • Для создания макета сайта:
        Photoshop CS. Для порезки макета ImageReady CS
      • для работы с XSL и верстки шаблонов XSeleretor 2.5
        Почему он удобен для меня?
        Потому что есть: подсветка синтаксиса, autocomplete, XSL дебаггер, удобный навигатор по шаблонам. А это, как правило, все что нужно для полноценной работы с XSL.
      • Для тестирования сайта:
        IE 6, FireFox 1.0, Opera
      • CVS и TortoiseCVS в качестве клиента для поддержания дерева исходников проекта.
      • Для редактированя CSS:
        TopStyle 3.11
      • Для работы с MySQL:
        MySQLFront 2.5 (разработка которого, к сожалению прекратилась).
      • Веб-сервер Apache в сборке Denver (+BaseParserModule) и mod_rewrite для красивых ЧПУ(человекопонятныхурл).
      • Google API в разделе "Эксперименты"
       

      Пример использования mod_rewrite

      15:10, 21 марта 2005 ( )

      Kavredo из форума www.parser.ru:

      /news/12.html --> /news.html?id=12
      RewriteRule ^news/([0-9]+)\.html$ news.html?id=$1 [QSA]
      /news/12/ --> /news.html?id=12
      RewriteRule ^news/([0-9]+)/$ news.html?id=$1 [QSA]
      Домашнее задание
      (чтобы хоть как-то компенсировать вред моего прямоответа):

      Теория
      1. Что делает флаг QSA?
      2. Всегда ли нужно прописывать RewriteBase?

      Практика
      1. Сравните мои варианты и ваши. Проанализируйте их, используя документацию по mod_rewrite.
      2. Подумайте, как обработать отсутствие закрывающего слеша в последнем варианте и привести к виду со слешом.
      3. Приведите /news/category_name/31122005.html к /news.html?cat=category_name&y=2005&m=12&d=31. Где category_name может принимать значения длиной не более 7 символов, включая цифры и латиницу разных регистров. Причем, первый символ в названии категории - буква.

      P. S. Имхо, лучше использовать конкретное имя параметра GET, вместо nameless. Удобочитаемость кода возрастает, так как уже частично будет понятно, что за информация придет - id в моем случае.

       

      Как корректно обрезать текст.

      14:47, 16 марта 2005 ( )
      $result[^body.match[(.{50,400}[\.|\?|\!]).*][gi]{$match.1}]Что даст обрезку текста не менее 50 и не более 400 знаков до знака препинания, что, конечно, гораздо эффективнее нежели обрезка текста на полуслове, как приктикуется на многих напраснорожденных сайтах. 
      страницы: 1
       2 
      © Максим Прокопов 2005-2024 О сервере