MySQL вылечил! Поиск работает …


С помощью долгих и упорных ковыряний в инете и голове все проблемы с MySQL порешались. Поиск сейчас работает нормально.

Кстати для стандартного поисковика написал бота который ищет текст также и в разделе файлов (в котором если что есть свой поиск, расширенный). Найденные файлы отображаются первыми, перед статьями и т.д.

Спасибо Андрею Попову за лечение MySQL, подал несколько дельных мыслей … «лысому шапку» слепили 🙂

Траблы с MySQL


В связи с тем что я что то криво сделал при заливке таблиц в MySQL базу — поиск производится через одно место. У кого есть знания по этому поводу пишите пожалуйста мне на мыло

Проблема в том что у текстовых полей по которым идет поиск стоит кодировка cp1251_swedish_ci. При попытке сменить у данных полей кодировку на cp1251_general_ci — данные в поле безвозвратно превращаются в символы вопроса. Что делать и как дальше жить не знаю … 🙂

Помогайте кто может!

Вышло обновление Opera 9


Добавлено несколько прикольных возможностей…
Блокировка определенных графических файлов с конкретного сайта, блокировка другого контента.

Также добавили возможность делать ссылки на поисковые формы. Т.е. к примеру сделав ссылку на наш поисковик (на сайте) и назначив его на букву v, вы сможете набрать в строке для URL тест «v QUEUE» и получить в результате страницу поиска нашего сайта с результатами поиска по строке «QUEUE» … Приятная фича!

Добавили поддержку виджетов (визуальные объекты), про них можно почитать на сайте www.opera.com, но пока не вижу где я это смогу применить.

На сайте есть поиск… и это радует :)


Для поиска по новостям или статьям нажмите Поиск в главно меню.

Поиск по файлам происходит в разделе Файлы.

Со временем попробую интегрировать поиск по файлам в основной пункт поиска …

NAME(File) или File

ОАР>> А вот {PROP:Name} прекрасно возвращает текущее имя файла.

VS> Но вот у {PROP:Name} есть другая проблема (по крайней мере была на C5
VS> и ранних релизах C55) — инициализировать {PROP:Name} нужно перед
VS> каждой «глобальной» операцией типа OPEN/CREATE/BUILD etc
VS> Так что пользовать {PROP:Name} нужно тоже с осторожностью.

Да тут надо просто понимать, как этот механизм работает! А все довольно просто. Как всегда — дело в трейдовости файлов и в потоках, в которых эти файлы работают. Читать далее

Возвращаюсь у своему вопросу: необходимо подключиться к серверу Velocis программой на Кларионе.

Сразу скажу, что с данным сервером не работал, поэтому мои рекомендации можешь рассматривать просто как мысли вслух программиста с большим стажем работы с БД.

Правильно ли я выбрал формат Dbf. Может, кто предложит что лучше?

Опять-же — для чего «сливаются» данные? Если для дальнейшей работы с ними прямо в этих базах, то — сойдет. Если же предполагается простая закачка данных из этих баз уже в рабочую базу, то в качестве альтернативы я бы предложил рассмотреть простой ASCII-файл.
Чтение из него не медленнее чем из DBF, а то и быстрее. Зато точно не будет никаких сюрпризов, как это бывает при работе с DBF из Клариона. Читать далее

Внутренняя реализация Клариона

Уфф! Разобрался, наконец, с внутренней структурой VIEW.
Теперь можно делать динамические View в любом кол-ве без предварительного описания. И, что самое главное, формировать их структуру «на лету», под конкретную задачу или запрос юзверя!

На днях напишу небольшой класс для реализации этого дела. Будет только одно
ограничение — работать будет ПОКА только с файлами, описанными явно в приложении. Т.е. — как обычно. Класс работы с динамическими файлами пока задерживается — дюже сложная штука «файл»! Намного сложнее GROUP/QUEUE/VIEW вместе взятых. Читать далее

Отследить закрытие потока

>> Самый красивый и универсальный способ, имхо, это — переопределить
>> OLE-хук RTL Клариона:
>> Wsl$OleTermHook
VY> Похоже, это то что надо. А как его переопределить, научи, плиз?

Глобальная секция программы

  MAP
    OleTermHookProc(),TYPE
    MyProcOfEndThread()
    CallOleTermHook(OleTermHookProc _OrigProc),NAME('CallOleTermHook')
    MODULE('')
      CallHookByAddr(LONG _HookAddr),NAME('CallOleTermHook')
    END
  END

GLO:SaveOleTermHook LONG
OleTermHook         LONG,EXTERNAL,DLL(dll_mode),NAME('Wsl$OleTermHook')

Читать далее

А можно ли узнать тип ANY-параметра

AN> вроде этот вопрос уже поднимался, но я не могу найти: можно ли при передаче
AN> в процедуру ANY-параметра определить в процедуре его тип, т.е. чё было было
AN> передано STRING, LONG али ещё чего:

AN> Пример:

AN> SomeProc PROCEDURE(? Param)
AN> code
AN> !вот здесь хочется узнать тип переданного Param и в зависимости от этого
AN> учинить определённые действия

Легально можно узнать только, что переменная, скрытая под ANY, является строкой или нет. Для получения более детальной информации необходимо уже работать непосредственно с самим UFO-обьектом, который скрыт под ANY-оберткой. Проще всего воспользоваться INTERFACE-механизмом и с его помощью использовать методы UFO-обьекта. Уже на протяжении трех версий C50/C55/C60 структура VMT для UFO-обьекта остается неизменной, что позволяет использовать единый INTERFACE для этих версий. Измениться-ли он в будущих версиях — х/з, но хочется надеятся, что нет. Читать далее

Драйвер TPS — прикольно!!!

Все таки решил до конца разобраться с работой процесса транзакции на TPS-драйвере.

Сначала некоторые уточнения и дополнения к предыдущим моим письмам по этой теме.

Во время выполнения оператора COMMIT() физическая запись данных в файлы производится поочередно в порядке, обратном порядку их задания в операторе LOGOUT().

Все это происходит в четыре этапа:

Создается TCF-файл и в него записывается информация о таблицах, участвующих в транзакции. Данные, накопленные в транзакционном буфере, записываются во ВСЕ таблицы в резервные(временные) страницы. Некоторые особенности этих страниц будут описаны ниже. Происходит модификация TCF-файла. В чем она заключается — не разбирался, но это — единственная модификация TCF-файла в рамках транзакции. Очевидно, что при этом записывается информация об окончании этапа N2.
Записи из резервных страниц во ВСЕХ таблицах переписываются в нормальные(постоянные) страницы. Резервные страницы при этом не удаляются. Это произойдет лишь во время закрытия таблиц оператором CLOSE(). Читать далее