Nginx: несколько условий в if

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

Не забывайте, что if is evil.

Собака в PHP

На повестке дня 2 вопроса:
1) Для чего используется собака в PHP?
2) Можно ли использовать собаку для отключения вывода ошибок в PHP?

Для тех, кто хочет сразу получить ответ:

1) Отключает вывод ошибок при выполнении последующей конструкции.
2) Можно, но не нужно.

Теперь разберём почему

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

Как надо делать?

Если речь идёт о продакшене, то идеальный вариант это установленное значение error_reporting в E_ALL, при этом нужно установить значение display_errors в off, а error_log устанавливаем в syslog или просто пишем путь к файлу куда хотите писать логи. В таком режиме включается запись ошибок в лог-файл и никакие ошибки не будут выводиться на странице.
Если речь идёт о тестинг-среде, то error_reporting устанавливаем в E_ALL и display_errors в true — это будет выводить все ошибки прямо на странице.

Что делать если ошибки могут возникать в процессе работы скрипта?

Использовать try-catch и эксепшны (Exception). За этим в документацию PHP. :)

JavaScript Singleton Pattern

В этой статье речь пойдёт о реализации шаблона проектирования Singleton в языке JavaScript.

Многие думают, что JavaScript — очень простой в изучении язык с небольшим количеством не менее простых конструкций. Давайте развеем этот миф и взглянем на предоставляемый им функционал.

Итак, я предлагаю вашему вниманию 2 способа реализации данного шаблона:

  • Создание глобальной переменной для хранения объекта и анонимной функции, в области видимости которой будет объявлен сам singleton и его instance.
  • Создание функции, в свойстве которой и будет сохранён её единственный instance.

Попадание точки в полигон

Иногда для решения какой-нибудь задачи требуется проверка попадания точки в многоугольник (другими словами, вхождения точки в полигон). Алгоритм решения этой задачи довольно прост, поэтому будет минимум описаний и исходного кода.

Применение

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

Алгоритм проверки вхождения точки в полигон

Для начала определимся с теорией. Наш полигон [многоугольник] — это набор связанных векторов. Для проверки вхождения точки в полигон нам нужно определить положение нашей точки, относительно каждого из этих векторов по очереди.

Решение задачи

Далее одно из возможных решений задачи на PHP. Замечу, что оно не учитывает попадание в вектор, лишь попадание внутрь фигуры:

Виджеты яндекса и гугла

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

Многие из вас наверняка слышали и, возможно, даже пользовались виджетами для главной страницы яндекса или виджетами для интерактивной страницы гугла, но почему-то не все понимают какую пользу могут принести эти небольшие информационные блоки. Лично я буду говорить про виджеты яндекса, опираясь на то, что различия с гуглом минимальны.

Вопросы

Что из себя представляет виджет? Виджет это небольшой интерактивный информационный блок, в котором может быть размещена любая информация полезная пользователю и не нарушающая наших законов.

Что может быть размещено в виджете? Виджет может представлять из себя ленту новостей вашей компании или, например, отображать изображение популярного товара, или может включать в себя форму для расчёта цены необходимых пользователю товаров — здесь открыто огромное пространство для креативных идей, чем именно вы можете заинтересовать пользователя решайте сами. =)

Что из себя представляет виджет? Это обычная страничка загруженная в iframe, оформленная в соответствии с требованиями системы и загруженная на сервер яндекса или загружающаяся прямо с вашего сайта, вы можете использовать HTML-разметку, JavaScript и другие полезные функции, подробнее об этом читайте здесь.

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

Выводы

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

Перечёркнутый текст для соц. сетей

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

Сам сервис здесь: перечёркнутый текст.

P.S. Делал из собственной необходимости, надеюсь вам тоже сервис будет полезен. =)