Перейти к содержимому

14

Какаду в Сиднейском королевском ботаническом саду:

...читать далее "Какадуду"

8

В результате обновления версии поисковой машины Интернет Сочи улучшена проверка правильности слов и имен, имеющих отношение к Сочи, но не вошедших в общедоступную версию словарей aspell для русского языка (впрочем как и для английского).
...читать далее "«Пах омов» больше не видно"

3

Началось всё с того, что aspell периодически падает при предложении вариантов правильного спеллинга если, например, английским словарём проверяются и английские и русские слова. Конечно некузяво юзеру периодически выдеть сообщение о внутренней ошибке сервера, поэтому эту проверку завернул в отдельный процесс, создаваемый при помощи fork(), -- отработал -- хорошо; упал  -- не страшно, родительский процесс пойдёт дальше, пользователь увидит результат, хотя и без проверки спеллинга.

Но не тут-то было, оказывается  Apache и lighttpd  стали выводить HTTP-заголовки, выдаваемые CGI-мождулем дважды, один раз где положено, среди заголовков ответа, второй раз -- непосредственно вначале тела ответа. Причём, если у Apache включен KeepAlive, то всё отрабатывает правильно (проблемы нет).

После нескольких дней разборок, какое именно изменение привело к такому эффекту выяснилось, что виновато применеие fork(). Если чилда прибивать сразу по окончании его работы, то получаем эту проблему, если же отложить прибитие этого чилда до окончания всего вывода CGI-скрипта, то избежим этих грабель.

4

Выпущен DataparkSearch 4.36. Основные новшества:

  • Слегка модифицирован Neo PopRank.
  • Исправлена компиляция с поддержкой aspell под OpenBSD.
  • indexer теперь может работать с cached и stored через NAT.
  • Добавлена команда BodyPattern.
  • Улучшена работа SEA.
  • Исправлен трап при некорректном значении указаном в <BASE HREF
  • Ключ --enable-full-rel у configure заменён на --enable-rel. Поддерживаются методы: full, fast, ultra.
  • Добавлены команды Store и NoStore.
  • Исправлены некоторые баги.

8

Уф, почти два дня ушло, но всё-таки пофиксен трап aspell на некоторых русских словах. Ниже дан патч к common/convert.cpp.

*** convert.cpp.orig    Sun Jun 26 15:21:03 2005
--- convert.cpp Sun Aug 28 15:09:49 2005
***************
*** 521,527 ****
            out.append(*in);
        } else {
          const Chr * stop = reinterpret_cast<const Chr *>(in0 +size);
!         for (;in != stop; ++in)
            out.append(*in);
        }
      }
--- 521,527 ----
            out.append(*in);
        } else {
          const Chr * stop = reinterpret_cast<const Chr *>(in0 +size);
!         for (;in < stop; ++in)
            out.append(*in);
        }
      }

Ошибка прям классическая из цикла "Как не надо программировать на C/C++" 🙂