2

Сергей Петренко, директор Яндекс-Украина, в своем блоге путает два понятия в одно.

Изначально, в более узком смысле, Согласование содержимого (Content negotiation) - это механизм, заложенный в протокол HTTP, позволяющий показывать по одному URL контент, наиболее удобным способом отображаемый конретным агентом для конкретного пользователя. В частности, речь идет о выборе языка документа и его вида (MIME Type).

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

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

Более быстрая версия MurmurHash 2.0, не чувствительная к порядку записи байтов целого:


#include<stdio.h>
#include <netinet/in.h>

#define mmix(h,k) { k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; }



unsigned int MurmurHash2B ( const void * key, int len, unsigned int seed )
 {

	const unsigned int m = 0x5bd1e995;

	const int r = 24;

	unsigned int l = len;



	const unsigned char * data = (const unsigned char *)key;



	unsigned int h = seed;



	while(len >= 4)
 {

		unsigned int k = htonl(*(unsigned int*)data);



		mmix(h,k);



		data += 4;

		len -= 4;

	}



	unsigned int t = 0;



	switch(len)
 {

	case 3: t ^= data[2] << 16;

	case 2: t ^= data[1] << 8;

	case 1: t ^= data[0];

	};



	mmix(h,t);

	mmix(h,l);



	h ^= h >> 13;

	h *= m;

	h ^= h >> 15;



	return h;

}


main() {
	char testKey[] = "Hello, World!";
	unsigned int h = MurmurHash2B(testKey, sizeof(testKey), 0);
	printf("h=%08x\n", h);
}

Результат выполнения на little-endian (x86):

h=5bc5cf02

Проверить на big-endian платформе возможности нет...

1

Еще более быстрый вариант функции memcpy а-ля Duff’s device и используя конвеер (предыдущий вариант). Результаты сравнения времени выполнения теста, сравнивающего новый и старый варианты и стандартную библиотечную реализацию на невыровненных данных:

test0: FreeBSD memcpy in C 2.7686
test1: <new dps_memcpy>    0.43485
test2: <old dps_memcpy>    2.50218
test3: <standard memcpy>   0.456584
ratio(1/2): 0.17
ratio(1/0): 0.16
ratio(2/0): 0.90
ratio(1/3): 0.95

...читать далее "Еще более быстрая memcpy"

2

Еще более быстрый вариант функции strncpy а-ля Duff's device (предыдущий вариант). Результаты сравнения времени выполнения теста, сравнивающего новый и старый вариант ы и стандартную библиотечную реализацию:

test1: <new dps_strncpy>  3.00593
test2: <old dps_strncpy>  3.39416
test3: <standard strncpy> 5.06081
ratio(1/2): 0.89
ratio(1/3): 0.59
ratio(2/3): 0.67

...читать далее "Еще более быстрая strncpy"

1

В продолжение пузырьков, кэшей и предсказателей переходов вариант пузырьковой сортировки а-ля Duff’s device:
...читать далее "Duff’s device bubblesort"

Google выпустил тулзу для веб-мастеров Page Speed, аналогичную YSlow от Yahoo (точнее разработчик, точнее один из, но руководитель группы, Стив Саудерс (Steve Souders) теперь работает в Google).

Page Speed реализована в виде плагина к Файрфоксу. Дает гораздо больше советов, чем YSlow, по оптимизации веб-страницы, которая анализируется. Рекомендуется веб-мастерам, даже если они больше любят Яндекс - вряд ли стоит ждать от него аналогичного инструмента в ближайшее время.

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

2

Оказывается в мире уже установлено столько открытых MediaWiki, что запросто можно разместить ISO-образ Линукса на базе всех этих серверов (их список почти достигает 4Мб), причем обеспечив защиту от удаления админами какого-либо куска в любое время.

Graffiti Networks -- домашняя страничка проекта, доступны исходные тексты (на Питоне), в данный момент производится сбор статистики, как быстро администрация сайта удаляет "неуместные" посты. Впрочем, обещают убрать все свои художества к 1 июня.

Добавка: Это прототип системы файл-шаринга, типа торрентов, когда для временного хранения данных используются "забытые" сервера (как правило с небольшой посещаемостью), позволяющие анонимно и без проверки капчи размещать пользовательские данные, В прототипе использованы сайты с MediaWiki, теоретически может быть любой сайт с доской объявлений, блоги, и т.п.

Статья для IPTPS'09 находится внутри исходников в поддиректории publications.

Дополнения к словарю русского языка для ispell от Александра Лебедева:
...читать далее "соловей, ручей ; чаёк, ручеёк ; дверьми"

3

Google Sets -- один из проектов Google Labs, который по нескольким примерам, вводимым пользователем пробует строить множества (маленькое и большое) аналогичных элементов. Например, для набора из Сочи, Адлер, Хоста выводится список курортов, в основном на Чёрном море.

Как это работает ? Судя по всему при разборе индексируемых документов, Google смотрит на списки, организованные при помощи HTML-тэгов UL, OL, DL, H1..H6; размещенные в одном столбце или строке таблицы; элементы, перечисленные с разделением запятыми, точками с запятой или табуляцией; возможно каким-то другим способом. При этом собирается статистика, какое слово с какими другими словами чаще всего попадает в подобные списки.

Для чего это нужно ? В первую очередь для классификации незнакомых слов. Ну и само-собой эта статистика возможно используется в системе контекстной рекламы Google Adwords для подбора релеватной рекламы (в первую очередь в результатах поиска).

//SEO by the SEA