Я почти уверен, что многие люди думали об этом, но по какой-то причине я не могу найти ее с помощью поиска Google и StackOverflow .
Я хотел бы сделать невидимую ссылку (занесенную в черный список robots.txt) на страницу CGI или PHP, которая будет «ловить» вредоносных ботов и пауков. Пока что пробовал:
Пустые ссылки в теле:
Я хотел бы сделать невидимую ссылку (занесенную в черный список robots.txt) на ... Я почти уверен, что многие люди думали об этом, но по какой-то причине я не могу найти ее с помощью поиска Google и StackOverflow .
Я хотел бы сделать невидимую ссылку (занесенную в черный список robots.txt) на страницу CGI или PHP, которая будет «ловить» вредоносных ботов и пауков. Пока что пробовал:
Пустые ссылки в теле:
Я хотел бы сделать невидимую ссылку (занесенную в черный список robots.txt) на ... Я почти уверен, что многие люди думали об этом, но по какой-то причине я не могу найти ее с помощью поиска Google и StackOverflow .
Я хотел бы сделать невидимую ссылку (занесенную в черный список robots.txt) на страницу CGI или PHP, которая будет «ловить» вредоносных ботов и пауков. Пока что пробовал:
Пустые ссылки в теле:
В большинстве случаев это работает нормально, с двумя небольшими проблемами:
Проблема: Ссылка является частью тела документа. Несмотря на то, что по нему практически невозможно щелкнуть мышью, некоторые посетители все равно случайно нажимают на него во время навигации по сайту с помощью Tab и Enter . Кроме того, если они, например, копируют и вставляют страницу в текстовый редактор или программу электронной почты, ссылка-ловушка копируется вместе и иногда даже становится кликабельной (некоторые программы не любят пустые теги
и скопируйте href как содержимое тега).
Невидимые блоки в теле:
Это устраняет проблему с навигацией с клавиатуры, по крайней мере, в протестированных мной браузерах. Ссылка фактически недоступна при обычном отображении страницы, но все еще полностью видна для большинства роботов-пауков с их текущим уровнем интеллекта.
Проблема: Ссылка все еще является частью DOM. Если пользователь скопирует и вставит содержимое страницы, оно появится снова.
Внутри блоков комментариев:
trap ->
Это эффективно удаляет ссылку из DOM страницы. Что ж, технически комментарий по-прежнему является частью DOM, но он обеспечивает желаемый эффект, заключающийся в том, что соответствующие пользовательские агенты не будут генерировать элемент A, поэтому это не настоящая ссылка.
Проблема: Большинство пауков боты в настоящее время достаточно умны, чтобы анализировать (X) HTML и игнорировать комментарии. Я лично видел ботов, которые используют объекты Internet Explorer COM / ActiveX для анализа (X) HTML и извлечения всех ссылок через XPath или Javascript. Эти типы ботов не обманом переходят по гиперссылке-ловушке.
Я использовал метод № 3 до прошлой ночи, когда меня поразила стая ботов, которые, кажется, действительно избирательно выбирают, по каким ссылкам они переходят. Теперь я вернулся к методу №2, но все еще ищу более эффективный способ.
Любые предложения,
a = a.match (/ (^ \% \ w +) ([\. | \ #] \ w +) + /)
m работает над некоторым кодом SocketChannel-to-SocketChannel, который лучше всего справится с прямым байтовым буфером - долгоживущим и большим (от десятков до сотен мегабайт на соединение). При хешировании точного ...
Я работаю на некотором коде SocketChannel
-to- SocketChannel
, который лучше всего работает с прямым байтовым буфером - долгоживущим и большим (от десятков до сотен мегабайт на соединение). структура цикла с FileChannel
s, я провел несколько микро-тестов производительности ByteBuffer.allocate ()
по сравнению с ByteBuffer.allocateDirect ()
.
сюрприз в результатах, который я не могу объяснить. На приведенном ниже графике есть очень явный провал в 256 КБ и 512 КБ для ByteBuffer. allocate ()
реализация передачи - производительность упала на ~ 50%! Также кажется, что для ByteBuffer.allocateDirect ()
падение производительности должно быть меньше. (Серия% -gain помогает визуализировать эти изменения.)
Размер буфера (байты) в зависимости от времени (MS)
Почему разница кривой производительности между ByteBuffer.allocate ()
и ] ByteBuffer.allocateDirect ()
? Что именно происходит за кулисами?
Это очень хорошо, возможно, зависит от оборудования и ОС, так что вот эти подробности:
- MacBook Pro с двухъядерным процессором Core 2 CPU
- SSD-накопитель Intel X25M
- OSX 10.6.4
Исходный код, по запросу: 7 в / Library / Frameworks
. Я компилирую для Mac OS X 4, поэтому у меня также есть Python 2.3 в /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks
. Если я вызываю gcc
с -F / Library / Frameworks
и смотрю, что он делает с -v
, я вижу следующее:
ignoring duplicate directory "/Library/Frameworks"
as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks (framework directory)
/Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks (framework directory)
Т.е. он игнорирует my / Library / Frameworks
, потому что он является дубликатом (последнего пути, который является символической ссылкой на / Library / Frameworks
), а затем находит собственный фреймворк Python 2.3 до моего 2.7.
Я понимаю, как это обойти (например, используйте -I
с полным путем к подключаемому каталогу), но меня несколько озадачивает порядок поиска. Например, компоновщик ( ld
) , похоже, выполняет поиск в системе / библиотеке и библиотеке в другом порядке .
Допустим, у меня есть два черных изображения с 50% прозрачностью (альфа = 0,5). если они накладываются друг на друга, ...
позволяет предположить, что альфа 1 означает полностью непрозрачный, а 0 означает полностью прозрачный.
допустим, у меня есть два черных изображения с 50% прозрачностью (альфа = 0,5).
если они накладываются друг на друга, результирующая прозрачность будет 0,75, не так ли?
если бы у них альфа была 0,25 , результат будет около 0,5, не так ли?
если бы у них был альфа 0,9, результат был бы около 0,97, верно?
как вы можете получить эти числа?
другими словами, я ищу функцию, которая получает результирующее альфа-значение из двух других альфа-значений.
float alpha = f(float alphaBelow, float alphaAbove)
{
//TODO implement
}