В моих правках к модулю Comment Subscribe для его работы с PostgreSQL обнаружилась бага: если кто-то отвечал в треде несколько раз, то он может получить несколько писем-уведомлений, когда ответит кто-то еще.
Drupal-овская Taxonomy import/export via XML в версии 1.1 работала. Я даже научился туда XML-и генерировать и было мне счастье.
А версию 1.2 они сломали (мотивируя починкой Security Advisory). Короткие таксономии работают, а попытка залить туда 200 терминов кончается фиаско.
А ведь это модуль не ежедневного использования, шансов на починку гораздо меньше чем обычно. И обычно то не чинят, а ради одноразовой штуки заморачиваться не хочется вовсе. Я вот перешел на CSV import, хотя он и менее удобен: присвоить ID терминам нельзя.
Несмотря на мой исходный пессимизм, появившееся неделю назад острое отвращение к MySQL заставило меня расчехлить напильник и наконец доработать Drupal 6.5 до устраивающей меня совместимости с PostgreSQL.
В настоящую минуту один из моих сайтов уже работает под PgSQL со всеми нужными мне модулями, а остальные будут переведены после нескольких дней тестирования первого.
Несмотря на мой исходный пессимизм, появившееся неделю назад острое отвращение к MySQL заставило меня расчехлить напильник и наконец доработать Drupal 6.5 до устраивающей меня совместимости с PostgreSQL.
В настоящую минуту один из моих сайтов уже работает под PgSQL со всеми нужными мне модулями, а остальные будут переведены после нескольких дней тестирования первого.
В процессе попыток использования Drupal 6.5 с PostgreSQL выявилась мелкая неприятность: интерфейс к постгресу не вполне правильно эскейпит строки со спецсимволами. Постгрес хочет, чтобы ему давали в виде E '\r\n', а Друпал дает без E.
Пожелание это новое, появилось в какой-то из восьмых версий, на функциональность не влияет, но противно забивать лог неизвестно чем.
Внезапно возникшее отвращение к MySQL (каменты тоже читать) заставило посмотреть на связку Drupal + PostgreSQL еще раз.
Если аккуратно, то все работает. Т.е. к core у меня и раньше претензий не было, а сломался я в модуле Backup-Restore. Сейчас - с минимальным набором 3rd-party (Tagadelic, Inline Tags, Site Menu, Pathauto, Transliteration) все вроде живет. Точнее, Transliteration не транслитерирует, но оно этого и с MySQL не делало, но всяких сообщений об ошибках и прочих безобразий пока нет, за исключением одного:
У меня на разных инсталляциях PostgreSQL стоит разный default client_charset. Где-то KOI8, где-то CP1251, но нигде не стоит UTF8 (базы все, естественно, в UTF). Это все по соображениям совместимости - много где живут скрипты многолетней давности и вставлять в каждый из них set client_charset мучительно.
Drupal о такой подлости не подозревает (MovableType - подозревает и выставляет), что лечится простым патчем:
Завтра и послезавтра (6-7 октября) я буду на Бунинском Хайлоаде. С утра и до непонятно какого времени, думаю что до среднего послеобедья.
Принимаю подношения, раздаю автографы, развлекаю публику.... Желающие что-то обсудить узнают меня по усам, очкам и майке АиП (не перепутайте с Лешей Ивановым)
Для зарегистрированных на сайте пользователей, имя пользователя является ссылкой на профиль, если читающий не залогинен, то даже и ссылки нет. Для сторонних же пользователей, указавших при комментировании линк на сайт, имя является ссылкой на этот сайт. Конечно, эта ссылка защищена от гугла через rel=nofollow, но наши поисковики такого не понимают, а хотят noindex.
Задача: публиковать автоматические ленты новостей на сайтах. Новости берутся с веба, обрабатываются (распознается тематика, присваиваются теги), после чего появляются на сайте.
По идее, для этого предназначен Aggregator, но его интеграция с Taxonomy запланирована только в Drupal 7. Кроме того, pull мне очень не понравился, хочется push. Для push есть BlogAPI, там даже поддерживается установка категорий (тоже довольно диким способом, ибо информация о словарях недоступна, можно получить только список терминов), но вот установка тегов (т.е. терминов, которых в словаре может не быть) через стандартный BlogAPI невозможна. mt_tags - не поддерживаются и не обрабатываются.
Я уже почти поправил BlogAPI (всего то нужно задать один параметр конфигурации - в какой словарь класть теги, остальное все тривиально) и оно уже почти работало, но нашлось готовое решение.
Inline Tags делает все что нужно. Не стандартным путем (т.е. использовать готовое поле tags в blog-редакторе и передачу значений в mt_tags), но вполне приемлемым: список тегов пишется в [tags][/tags] и все работает (проверено).
Все-таки Drupal пишут индусы. Пришлось по уши залезть в код, чтобы выяснить, отчего не работают metaWebLog.getCategories и mt.getCategoryList. Просто забыли проверить авторизацию, отчего, по счастью, просто все сломалось, а не стало отдавать все всем наружу. Не тестируют.
Ссылками в комментариях спамят не только этот блог, но и мои сайты на Drupal (libraw.org,gpgpu.ru и так далее). В отличие от MovableType, антиспам-средства у Drupal развиты еще меньше, приходится пропускать без модерирования только зарегистрированных юзеров, но и это не вполне помогает.
Мировая часть проблемы в Drupal решена - ко всем ссылкам в юзерском контенте можно добавлять rel=nofollow, отчего спамить под гугл становится неинтересно. Остается яндекс, который rel=nofollow не понимает (насколько мне известно), но зато понимает "рамблеровский" (придуманный Димой Крюковым) тег <noindex>.
Сооответственно, нужно добавить три строчки кода к modules/filter/filter.module:
В noscript,noindex, a.. rel=nofollow помещается слово [link] которое и становится ссылкой для Javascript-disabled people (стандартные стили у Drupal такие, что картинка переносится на новую строку и красивая стрелка не получается).
Стандартный дисклеймер. Если вы не знаете что такое патч, то вам все вышеописанное не нужно.
Ссылками в комментариях спамят не только этот блог, но и мои сайты на Drupal (libraw.org,gpgpu.ru и так далее). В отличие от MovableType, антиспам-средства у Drupal развиты еще меньше, приходится пропускать без модерирования только зарегистрированных юзеров, но и это не вполне помогает.
Мировая часть проблемы в Drupal решена - ко всем ссылкам в юзерском контенте можно добавлять rel=nofollow, отчего спамить под гугл становится неинтересно. Остается яндекс, который rel=nofollow не понимает (насколько мне известно), но зато понимает "рамблеровский" (придуманный Димой Крюковым) тег <noindex>.
Сооответственно, нужно добавить три строчки кода к modules/filter/filter.module:
В noscript,noindex, a.. rel=nofollow помещается слово [link] которое и становится ссылкой для Javascript-disabled people (стандартные стили у Drupal такие, что картинка переносится на новую строку и красивая стрелка не получается).
Стандартный дисклеймер. Если вы не знаете что такое патч, то вам все вышеописанное не нужно.
Поапгрейдил варез на MovableType 4.21 (коммерческий, раз уж его всем раздают). Работает. Стало местами поприятнее выглядеть, а так я кардинальной разницы не вижу. Ну плагин для тредовых комментариев теперь прямо в поставке, но он у меня и так был.
Раз уж засунул туда нос, переделал свой патч для <noindex>. У старого была проблема в том, что сам текст ссылки не индексировался Яндексом (ибо ссылка была запихана в noindex целиком). Теперь ссылка устроена иначе - текст подчеркивается, а сама ссылка теперь в иконке (позаимствованной у Википедии).
Пример можно посмотреть в любых комментариях, например тут.
Скачать патч можно тут:
patch-nofollow-img.gz. Возможно, вам захочется поправить URL картинки, но это уже сами.
Чтобы два раза не вставать, полный список остальных моих патчей к MT 4.x:
patch-monday-mt41.gz делает понедельник первым днем недели в стандартном календаре.
patch-rudate.gz - русские названия дат (переведен блок для итальянского языка, его и нужно ставить в настройках блога).
patch-dirify.gz - добавляет русские буквы в таблицы "дирификации".
Поддержка Nikon D90 и P6000, Canon 50D, Sony A900, Panasonic FZ28 и LX3. При этом D90 и A900 поддержаны нормально, а для остальных нет таблиц RGBG-XYZ, цвета могут быть кривоваты (и будут еще апдейты).
Мы уже проползли в KDE (в 4.2, это даже не бета :) отчего масса софта уже использует LibRaw (конечно, если вы возьмете свежую libkdcraw и соберете), цитирую:
digiKam - photo management software
kphotoalbum, an alternative to digiKam but with less features.
gwenview, a image viewer, used to show thumbs in icon view.
dolphin, a file manager, used to show thumbs in icon view.
class Bar
{
public:
int a;
Bar();
void run(void);
};
void Bar::run(void)
{
int i,k;
#pragma omp parallel private(i) firstprivate(k,a)
{
}
}
Ругается вот таким нехорошим словом:
omp-test.cpp: In member function 'void Bar::run()':
omp-test.cpp:22: error: 'Bar::a' is not a variable in clause 'firstprivate'
Ну и что с этим делать?
Update Нашел (тоже не очень легко), что возможен такой синтаксис:
class Bar
{
public:
int a;
#pragma omp firstprivate(a)
}
А что делать, если Bar::a в одном месте должна быть lastprivate, а в другом - reduction? Временные переменные заводить?
Импортирована последняя версия dcraw (8.87), добавлена поддержка шести новых камер: Canon 1000D, A720, SD300;
Nikon D700, Olympus E-520,Kodak C603.
Ввод-вывод через mmap() заменен на (старый) ввод-вывод через FILE. Скорость не пострадала, памяти нужно меньше.
Лицензирование изменено с GNU GPL v3 (или новее) на GNU GPL v2 (или новее).
Пользуюсь случаем, чтобы напомнить:
LibRaw - это библиотека для чтения RAW-файлов, получаемых с цифровых фотокамер (CRW/CR2,NEF,RAF,DNG и других).
LibRaw основана на исходных текстах утилиты dcraw, часть недостатков которой исправлена, а часть будет исправлена в дальнейшем. Пользователям библиотеки предлагается API для встраивания в свои программы.
Если вы не программист, а фотограф, то вам может быть полезна входящая в поставку утилита half_mt, которая функционально эквивалентна dcraw -h, но на многопроцессорных/многоядерных машинах работает в разы быстрее.
Мучаюсь тут с MetaWeblog API: мои перловые изделия ничего, кроме system.listMethods позвать толком не могут, подозреваю косяк с авторизацией, который побороть пока не сумел.
В то же время, всякие w.bloggar и прочие ScribeFire c этим сервером общаются почти нормально, во всяком случае и список блогов получить можно и запостить выходит.
Отсюда вопроc: а есть в природе какой-нибудь удобный отладочный XML-RPC proxy ? Google находит нечто невнятное на питоне, но я на нем плохо розумию.
UPDATE: вы не поверите, но проблема была в том, что у меня был числовой пароль. Эти перловые клиенты, не задумываясь, слали <int>пароль</int> вместо <string>