Меню

Сергей Драган

Разработка игр и разные мысли

Спам в WordPress, когда есть Disqus

Есть блог на WordPress, на нём установлен Disqus. В Дискасе нет спама.

Но в консоли блога всё равно отображаются сотни спам-сообщений о кредитах, машинах, сиськах и легких способах заработать. Хоть их и не видно на сайте — мой внутренний перфекционист неспокоен, видя значок «новые комментарии».

Это происходит оттого, что спам-боты вручную отправляют POST-запросы на <адрес_блога>/wp-comments-post.php. Это не попадает в Дискас — только в сам блог — и висит в консоли.

Чтобы отключить возможность вообще постить комментарии в обход Disqus — нужно зайти в консоль -> «редактирование темы» -> functions.php, и добавить этот код:

add_action('pre_comment_on_post', 'block_wp_comments'); 
 
function block_wp_comments() { 
wp_die( __('Sorry, comments are closed for this item.') ); 
}

Источник: http://beta.beantin.se/wordpress-comment-spam-disqus/

Ubuntu + IntelliJ IDEA

Здесь я оставлю напоминалку о том, что нужно настроить, чтобы хоткеи нормально работали в ИнтеллиЖ на Убунту, и разные мелочи.

Починить Ctrl+Alt+Left / Right, Ctrl+Shift+Up / Down

Settings -> Keyboard -> Shortcuts — убрать оттуда конфликтующие сочетания клавиш.

Починить Alt + ` (VCS operations popup)

Взято отсюда: http://askubuntu.com/questions/132304/how-to-disable-alt

  1. sudo apt-get install compizconfig-settings-manager
  2. CompizConfig Settings Manager -> Desktop -> Ubuntu Unity Plugin -> Switcher
  3. «Key to flip through windows in the switcher» сменить с disabled на что-то другое.

Починить Alt + Left Click (inspect object)

  1. CompizConfig Settings Manager -> Window Management -> Move Window
  2. Initiate Window Move — поставить какое-то дикое мышкосочетание, которое не сделать случайно. Disabled не отключает эту опцию, а возвращает её к «Alt + LMB» по умолчанию.

Установить Consolas

http://slicks.name/ubuntu/ubuntu-consolas-font-install.html

Меню в заголовке окна, а не на верхней панели

Settings -> Appearance -> Behavior -> Show the menus for a window -> In the window’s title bar.

Super + M чтобы сворачивать все окна

  1. /usr/share/unity/scopes/music.scope — удалить строку shortcut=m;
  2. Settings -> Keyboard -> Shortcuts -> Navigation -> Hide all normal windows

Простой веб-сервер

  1. sudo apt-get install python-twisted-core
  2. twistd -n web -p 8000 —path .

Если в Google Chrome мелкий шрифт во вкладках и в меню

  1. Удалить ярлык хрома с панели (кстати, они хранятся в ~/.local/share/applications);
  2. Запустить через консоль с параметром: google-chrome —force-device-scale-factor=1
  3. Закрепить новый ярлык хрома на панели.

Учим 32битное приложение грамотно использовать память в 64битной Windows

В работе с Flash CS5.5 я столкнулся с проблемой, связанной с обработкой больших (>130 Мб) fla с обилием векторной анимации. Периодически при попытке сохранения или при операциях вроде копирования/вставки Flash выдавал мне окно с сообщением о недостаточном объёме памяти. «Алоэ! Ты в своём уме?», — удивлённо бормотал я, глядя на 4 Гб оперативной памяти и столько же — файла подкачки. Да и диспетчер задач как бы показывал, что Flash.exe откушал всего около 1,5 Гб.

low_memory_error

Небольшой гуглёж подсказал, что, оказывается, 32битная Windows не видит не только свыше 4 Гб ОЗУ, но и их-то не все может использовать, а только около 3,5 Гб. Не совсем поняв, как это относится к моей ситуации (флэш-то, вон, только полтора берёт, остальная память, за вычетом скушанного самой Windows да всяким фоновым софтом навроде антивируса, остаётся неиспользованной), решил, что 32битная Windows просто жалеет отдавать всю доступную память флэшу.

О дальнейших экспериментах — под катом. (далее…)

Проверка Flash-приложением наличия звуковой карты

Сегодня, работая над проектом не за своей обычной машиной, а за подвернувшимся под руку Windows-сервером, я случайно узнал о любопытном но, к счастью, документированном нюансе класса Sound. Если в системе отсутствует звуковая карта, то после попытки воспроизведения звука метод play() возвращает null, что может стать причиной ошибки, генерируемой отлично работавшим на других машинах кодом.

Приведу пример:

var music: Sound = new GameMusic;
var musicSoundChannel: SoundChannel = new SoundChannel();
musicSoundChannel = music.play(); // строка выполняется, но после неё musicSoundChannel == null
musicSoundChannel.stop(); // и вот здесь будет null pointer error

Указанный выше код отлично работает на машине со звуковой картой, но поведёт себя так, как написано в комментариях, на системе без неё.

Чтобы избежать подобной ситуации, я предлагаю добавлять при запуске приложения небольшую проверку:

var testSound: Sound = new BlankTestSound; // какой-нибудь тестовый звук
var musicSoundChannel: SoundChannel = new SoundChannel();
musicSoundChannel = testSound.play(); // делаем тестовый запуск звука
if (menuMusicSoundChannel)
{
  trace("Звук есть!");
  musicSoundChannel.stop(); // всё, проверку мы прошли, тестовый звук можно тормозить
}
else
{
  trace("Грусьть и пичяль, звука нет"); // звука нет, потому больше в игре аудио воспроизводить не пытаемся
}

Я согласен, что сейчас практически не встретишь устройство без хоть какого-нибудь звука. Но включить этот нюанс в чек-лист всё равно не помешает.

О доминантной стратегии и цветах для жены

Мне очень нравится данное в книге «Andrew Rollings and Ernest Adams on Game Design» описание и пример доминантной стратегии. Возьму на себя смелость перевести на русский язык пару выдержек из этой книги:

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

(далее…)