Борьба со спамом на сайте

Боты стали наглыми, за 4 дня накидали почти 17 тыс комментариев, хотя установлены плагины для борьбы со спамом.

Тут же заметил, нагрузка на некоторых серверах выросла почти в 2 раза, в mysql уже огромная база ip + email и другой хлам от плагинов «антиспам». Посмотрев на этот бред, решил избавиться от плагинов и убавить пыл ботов.

Проверка комментариев ручная и оставить комментарий может любой, без капчи. Но среди этих комментариев, которые боты накидали за 4 дня, легко пропустить важные.

WordPress используется на десятке проектов с которыми приходится работать и проверить все эти комментарии не реально. Решил попробовать очень простой способ. Ботов обычно пишут под готовые формы WordPress’a и замена у textarea id на другой, возможно решит все проблемы. Попробовав на паре проектов, поток левых комментариев сразу упал до нуля, обычные стали проходить без проблем.
Читать дальше

Процедурная генерация снежинок

Процедурная генерации снежинок, весьма сложная задача, у неё есть масса решений.

Не все методы дают качественный результат, в этом можно убедиться, если попробовать поискать готовые генераторы снежинок. Среди них можно встретить даже такие экзотические методы как: «Random Snowflake Generator Based on Cellular Automaton».

Для получения результата, совершенно не обязательно использовать сложные формулы, по этому поделюсь своим рецептом.
Читать дальше

Впечатление от поездки на HighLoad++ 2017

В этом году удалось побывать на HighLoad++ 2017. Это уже 11-я ежегодная конференция для разработчиков, проходила 7 и 8 ноября в СКОЛКОВО (Москва).

Было очень жесткое расписание, два дня прошли с максимально полезной нагрузкой. В промежутках между докладами проходило общение с ребятами из разных компаний.
Читать дальше

Импорт Javascript кода

Много времени было потрачено на создание системы преобразования Javascript кода в блок схемы. Это помогло значительно развить структуру программы, доработать основные части, устранить десятки ошибок и превратить редактор блок схем в полноценное приложение. Пользуясь редактором, можно легко модернизировать код. Буквально менять структуру кода на лету изменяя принцип его работы.

Например, следующий код:

var a = 5, c = 3, b = 32, z = "Hello World";
var x = ( ( 4 * a + b ) * ( 2 * c + a) );
console.log( z );
console.log( x );    

Будет преобразован в визуальный вид:

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

Редактор блок схем в браузере (Blueprint)

Визуальное программирование, всё сильнее, проникает в нашу жизнь. Появилась масса гаджетов, где управление осуществляется прикосновениями. В фантастических фильмах, мы видим, как актеры нажимают на плитки (в планшете) и меняют мир. В реальности, у нас всё сложнее и приходится часами писать код текстовом виде. Это далеко не удобно, а устанавливать отдельное приложение на разные платформы для разработки, еще сложнее. Плюс, при разработке, сложно переключаться между браузером и программой, внося изменения в код обоих проектов, по этому решил полностью перенести в веб, свою разработку, о которой рассказывал раньше в блоге.

Изначально, хотел просто портировать свой код в браузер. Но, решил использовать по максимуму JavaScript и написать код в совершенно другом стиле.

Визуальный редактор кода уже работает в браузере. Он отличается визуально от своего предшественника, но уже выполняет работу.

Теперь о применении. Визуальный редактор кода будет добавлен в основные проекты: Студия Флоры, Редактор Моделей, Шутер, Dreams Gate.

 

Оптимизация треугольников

Последние четыре дня были весьма насыщенными. Стояла задача: ускорить созданием базовой модели и исправить недочеты в базовой модели. До оптимизации создание базовой модели занимало 10 и более секунд на 50 костей. Конечно, в современном мире это совершенно неприемлемо. Началась кропотливая работа над ускорением процесса создания модели.

Читать дальше

Преобразование в треугольники

В предыдущей статье, рассказывалось о редакторе моделей для различных форм жизни.

Редактор создавался для быстрого прототипирования моделей, где очень удобно создавать людей и животных. Единственная проблема — они состояли из сфер. И им требовалось преобразование в треугольники. После нескольких бессонных ночей, удалось решить эту задачу.

Читать дальше

Быстрый способ трансформации AABB

При вращении объектов, возникает необходимость перерасчета AABB (Axis Aligned Bounding Box — Параллельный Осям Ограничивающий Прямоугольник). Сразу приходит простая идея — взять 8 вершин и повернуть их. Но в этом случае мы получим весьма дорогой способ. Нам потребуется, посчитать координаты самих вершин и координаты после трансформации, а уже после найти минимальное и максимальное значение.

Наиболее оптимальное решение:

function transformAABB(bbox, matrix)
{
	var min_x = matrix.axisX * bbox.min.x;
	var max_x = matrix.axisX * bbox.max.x;
 
	var min_y = matrix.axisY * bbox.min.y;
	var max_y = matrix.axisY * bbox.max.y;
 
	var min_z = matrix.axisZ * bbox.min.z;
	var max_z = matrix.axisZ * bbox.max.z;

	var pos = matrix.getPosition();

	return [
		vec3.min(min_x, max_x) + vec3.min(min_y, max_y) + vec3.min(min_z, max_z) + pos,
		vec3.max(min_x, max_x) + vec3.max(min_y, max_y) + vec3.max(min_z, max_z) + pos
	];
}

Конечно, есть и другие методы быстрого вычисления AABB после трансформации объекта, но этот способ оказался одним из наиболее быстрых и простых.

1 2 3 4 5