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

Или вот еще фича: нельзя отредактировать комментарий к ссылке.

Те, кто ведет блоги или просто читает их натыкаются на спам в комментариях. Для борьбы со спамом нужно понимать как работают спамеры.
(далее...)

В двух словах. На моих сайтах подключена реклама Google AdSense. В последнее время стали приходить письма-предупреждения. Причем на довольно безобидные темы про здоровье. Например, предохранение при половом акте, без анатомических подробностей (в моем случае это было обсуждение препарата Мирамистин). Это довольно дорогая тематика. Тем не менее, это противоречит правилам Гугла. Самое интересное, что в поисковой выдаче Гугла полно рекламы на подобные запросы. Такие дела.
Привожу текст письма: (далее...)

Заметил такую фичу (или баг) в почте Яндекса.
Открываю почту, навожу курсор на первое письмо и кликаю. В этот момент подгружается контекстная реклама от Яндекса. Маленькое замечание: подгружается не в момент наведения, но по времени довольно хорошо совпадает с этим событием. И так получается, что в короткий промежуток между наведением мышки и кликом по ссылке первого письма я кликаю на рекламу. Небольшая картинка для пояснения:

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

Статья для новичков

Уже давно пользуюсь двумя сервисами по статистике индексации и улучшению индексации сайта.
Яндекс.Вебмастер — для регистрации нужен аккаунт на Яндекс.Почте
Google Webmaster Tools — для регистрации нужен аккаунт на Gmail
В целом, функционал похож, но есть интересные особенности.
(далее...)

Заинтересовался темой расшифровки хэша, который Контакт использует для противодействия CSRF-атакам
Если посмотреть POST-запросы, то легко увидеть параметр hash, состоящий из 18 символов.
Какие у меня догадки на этот счет
(далее...)

У Гугла есть полезный сервис Google Webmasters Tools, в котором можно посмотреть скорость загрузки вашего сайта. Выглядит это так (кликабельно)


(далее...)

Нет, я серьезно. Если взять средний московский офис, то хорошо видны постоянные стрессы у менеджеров, звонки, вынос мозга клиентами. И только программистов никто особо не трогает. Учитывая зарплату программистов, то вообще прекрасная профессия получается. Хотя вышесказанное относится не ко всем айтишникам. Например, админам ебут мозг будь здоров.

клиентская база

Пост о создании небольшой клиентской базы на бывшей работе.
Картинки кликабельны (далее...)

Статья для новичков. Меня иногда спрашивают, с чего начать изучение SEO и вообще как сделать, чтобы мой говносайтик, который я сделал вчера, вылез на первое место по запросу «купить пластиковые окна». Если вы совсем новичок (не знаете что такое тег title), то лучше начать с книжки Ашманова. Ну это совсем для чайников. (далее...)

Не знаю почему, но по умолчанию настройки MySQL рассчитаны на десктопы 90-х годов. Например, 8Mb памяти под индексы InnoDB. Помните, как Билл Гейтс заявил, что «640 Кб памяти должно хватать каждому». Дефолтные настройки MySQL из этой серии.

Для начала моя выжимка из конфига (4G RAM, AMD Athlon 64 X2 Dual 5600+)

# ТОЛЬКО UTF! ТОЛЬКО ХАРДКОР!
collation_server=utf8_general_ci
character_set_server=utf8
default-character-set = utf8

# по умолчанию пускай будет InnoDB
default-storage-engine = InnoDB

key_buffer_size = 512M
innodb_buffer_pool_size = 512M
innodb_additional_mem_pool_size = 16M
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8

join_buffer_size = 8M
sort_buffer_size = 8M
read_rnd_buffer_size = 8M
tmp_table_size = 64M
max_heap_table_size = 32M
table_cache = 256

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1

query_cache_type       = 2
query_cache_limit        = 1M
query_cache_size        = 32M

(далее...)