Портрет 4X_Pro
Был в Сети сегодня, 01:21
Мультиблог
4X_Pro
Записки лишнего человека

Компьютерное

Majento Position Meter -- программа для отслеживания поисковых позиций

4X_Pro
Полгода назад я писал обзор сервисов для отслеживания поисковых позиций. Однако за прошедшее время Яндекс ужесточил условия проверки, поэтому в большинстве из этих сервисов бесплатные тарифы либо отменили вообще, либо ограничили настолько, что мне стало не хватать их возможностей. Стало ясно, что вместо онлайн-сервисов нужно искать desktop-приложение. И в итоге я нашел такое, которое устраивает меня полностью. Называется эта программа Majento Position Meter.
Читать далее…

Как раскрутить форум

4X_Pro

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

В частности, на мой взгляд, идеальная раскрутка форума выглядит следующим образом:

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

Неочевидные особенности сравнения в PHP

4X_Pro

Однажды делал постраничный вывод сообщений в форуме. Делался он следующим образом: через параметр запроса start передавалось смещение от начала темы, или all, если нужно было показать всю тему, или параметр p, если требовалось показать конкретное сообщение. При этом при передаче p переменная start бралась не из запроса, а рассчитывалась на основе смещения этого сообщения от начала темы минус несколько сообщений. При этом если оно было в начале, то start мог получиться отрицательным, и для этого случая делалась дополнительная проверка с присвоением sstart=0.
Далее у меня в коде была проверка if ($start!='all'), по которой к SQL-запросу добавлялась LIMIT-часть. Но обнаружилось, что в некоторых ситуациях LIMIT-часть не добавляется, и вся тема выводится целиком (что серьезно нагружало сервер, если тема была длинная).

Стал разбираться, в чем дело, и обнаружилось, что ошибка проявляется тогда, когда в start присваивается 0 в результате расчетов. Происходило следующее: в результате проверки в левой части сравнения оказывалась переменная типа integer, и правая часть приводилась также к integer, в результате чего из 'all' получался ноль, и условие оказывалось ложным (то есть по сути проверялось 0!=0). Избавиться от этого оказалось очень просто: заменить тип сравнения на сравнение без приведения типов, т.е. $startl!=='all', после чего все заработало.

А вывод простой: нужно всегда использовать сравнение без приведения типа (т.е. === или !===), если нет явных причин поступать иначе. Оно и выполняется быстрее, и позволяет избежать подобных ошибок (которые, кстати, могут сказаться и на безопасности.)

Особенности обработчика отправки формы при использовании addEventListener

4X_Pro

Чтобы провести проверку формы перед ее отправкой, нужно повесить обработчик на событие onsubmit для тега форм и вернуть false в случае ошибки. Если делать это прямо в HTML-коде (т.е. <form action="" onsubmit="">) или с помощью свойства onsubmit через JavaScript, то все работает без проблем. Но если попытаться сделать то же самое через addEventListener, то без дополнительных мер форма отправляется в любом случае.

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

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

Размер шрифта и поведенческие факторы

4X_Pro

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

Обзор сервисов для проверки позиций сайта

4X_Pro

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

Кроме того, иногда хотелось иметь возможность проверять позиции сайта и с планшетника или даже мобильника, поэтому я решил искать не desktop-приложение, а онлайн-сервис. Замечу, что отслеживать мне нужно было пять сайтов с общим количеством запросов примерно около 70. Читать далее…

Асинхронная загрузка виджетов ВКонтакте

4X_Pro

Как известно, ВКонтакте есть несколько полезных виджетов, которые можно разместить на своем сайте, например, виджет группы или комментариев. Но есть у них недостаток: они вставляются обычным тегом script и подгружаются сервера ВКонтакте, что ощутимо тормозит загрузку сайта целиком, а если вдруг у пользователя по каким-то причинам заблокирован домен vk.com, то он может и вообще не дождаться загрузки сайта. В результате я решил сделать загрузку асинхронной. Первое, что пришло в голову — это использовать свойство defer у тега script, но оказалось, что в этом случае ничего не работает вообще. В результате поступил иначе: Читать далее…

Игры для форумов

4X_Pro
Одним из способов повышения вовлеченности пользователей-новичков в форум могут стать форумные игры. Во-первых, они позволят сделать первый шаг на форуме пользователю даже в том случае, если он не уверен в своих силах и готовности участвовать в серьезных дискуссиях. Во-вторых, позволяют пользователям лучше узнать друг друга, в результате чего пользователь начинает ходить на форум не только (и не столько) из-за информации, сколько из-за других участников, то есть увеличивается λi k — вовлеченность за счет социальных связей, если вспомнить модель развития форума. Вот небольшой список игр, которые можно организовать на форуме: Читать далее…

Авторизация через социальные сети или Немного о Loginza

4X_Pro

Некоторое время назад задумал сделать один проект по соционике, но сильно мешала мысль "опять надо делать авторизацию, регистрацию, восстановление пароля и т.д.", тем более что проект был небольшим и эта часть получалась самой трудоемкой. Решил пойти другим путем: что если отказаться от собственной регистрации вообще, а использовать только авторизацию через социальные сети. Безуспешно попытавшись разобраться с авторизацией ВКонтакте (документация там просто ужасна), стал рассматривать другие варианты и наткнулся на сервис Loginza, который позволяет делать авторизацию через самые разные социальные Сети: не только ВКонтакте, Facebook и My.Mail.Ru, но и еще более десятка.

Стал разбираться в ее API, и оказалось, что все до предельного просто: Читать далее…

Отладка JavaScript и объект console

4X_Pro

Раньше я, как и многие Web-программисты, при отладке JavaScript использовал функцию alert для того, чтобы посмотреть значение той или иной переменной. Однако необходимость постоянно нажимать кнопку Ok и невозможность вывести сложный объект без написания дополнительного кода приводили к тому, что отладка шла медленно и вызывала немало раздражения. Стал искать другие решения, и выяснил что в современных броузерах есть вывод данных в отладочную консоль броузера с помощью объекта console.


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

Страницы:
Задать вопрос

Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.