Примеры nginx конфигов

Здесь я буду собирать полезные nginx конфиги.

Текущий набор конфигов включает конфиги для:

  • drupal 6
  • drupal 7

Google Search Engine на своём сайте

Рассмотрим, как вставить поиск google к себе на сайт. А затем настроим внешний вид формы (кастомизируем) google custom search (cse). У меня получилось форма, как на картинке.

кастомизированная форма поиска google

Здесь google custom search подробно описан API google custom search. Получить код поиска google для вставки к себе на сайт можно по этой ссылке http://www.google.com/cse/all.

Сначала нужно добавить поисковую систему, ввести url (домен) вашего сайта. Указать дополнительные настройки, если нужно, и скопировать код в структуру своего сайта.

На вкладке внешний вид можно выбрать наиболее подходящую для сайта тему. Также дополнительно можно изменять цвет фона и цвет границ элементов. Google позволяет изменить достаточно много настроек для Google Search Engine.

Из интересных плюшек еще есть:

  • можно разделить форму поиска и форму результатов. С формы поиска выставить url на страницу с формой результатов. Я сделал так у себя. Справа располагается форма поиска, при поиске редиректит на основную страницу с результатами. Поисковая строка при этом передаётся get параметром.
  • можно указать callback функцию, которая выполнится после загрузки формы. Это сейчас рассмотрим подробней!

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

Модуль analytics Kohana 3.3 для работы с google analytics API

Мне захотелось выводить количество просмотров статьи на странице этой статьи. Был вариант написать свой счётчик, который будет, учитывая cookies и IP, считать просмотры. Но этот вариант показался мне слишком громоздким по нескольким причинам:

  1. Может быть пользовательская накрутка путём удаление кукисов;
  2. Считать по ip не совсем точно. Например, на организации работают 500 человек и попадают на внешний мир через один единственный proxy (под одинаковым ip);
  3. Учитывать приход через определённое время. Если пользователь вернулся через сутки, наверное, это +1 просмотр?
  4. Ну и вообще не хотелось тратить на это мощь и без того дохленького сервера на shared хостинге. А также своё время.

У меня на сайте уже стоял счётчик google analytics. Его возможностями я и решил воспользоваться, а точнее, возможностями google analytics API.

Какие данные мы хотим получать от google analytics API?

Получать количество просмотров конкретной страницы (у каждого поста уникальный адрес). Идентификация по uri.

git. Настройка git

Установка git

sudo apt-get install git

Начало работы с git

Сперва нужно настроить git, установив user.name и user.email. Приятно знать, от кого коммит. Таким образом команда git blame и ваша IDE будут подсказывать имя того, кто закоммитил ту или иную строчку.

git config --global --add user.name 'Name Surname'
git config --global --add user.email 'your@mail.here'

Эти команды автоматически внесут правки в конфигурационный файл git: ~/.gitconfig. Также файл ~/.gitconfig можно редактировать и вручную vim ~/.gitconfig

git current branch

Для удобной работы с бренчами нужно поставить пакет bash-completion (под маком установить git с вариантом +bash_completion) и добавить такую инструкцию в ~/.bash_profile (или ~/.bashrc):

PS1='\h:\W$(__git_ps1 " (%s)") \u\$ '

Теперь имя текущего бренча будет отображаться слева от строки ввода в консоли и будет всегда на виду.

Тестер регулярных выражений на php

Регулярное выражение - это текстовая строка, составленная по определённым законам и правилам. Строка состоит из символов и групп символов, метасимволов, квантификаторов и модификаторов.

В этом посте будет представлен лишь он-лайн тестер регулярных выражений, а описание спец. символов и примеры регулярных выражений будут представлены в других постах.

$pattern - строка, которая задает правило поиска, также иногда называют шаблоном или маской. (например, паттерну @abc@ - соответствуют все строки, в которых присутствуют символы abc именно в таком порядке.
$subject - строка, в которой производим поиск.

Тестер регулярных выражений будет выдавать результат выполнения функции preg_match.

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Установка и настройка nginx + php-fpm на Ubuntu

Предполагается, что операционная система у вас уже установлена, сеть настроена, интернет шустрый, провайдер не жадный (качать будем много)…

Будем ставить всё из репозиториев, собирать в ручную мы ничего не будем.

1. Установка Nginx

Для начала добавим репозиторий проекта Nginx:

sudo vim /etc/apt/sources.list

Добавим туда, официальное зеркало Nginx, то в каком виде представлен данный пакет, отражает видение его разработчиков:

deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx

Далее скачаем GPG ключ:

Отсчёт времени на js, учитывая UTC

Шкалу времени UTC ввели взамен шкалы GMT ещё в 1972 году.

Для всех гражданских нужд сейчас используется именно шкала UTC, и часовые пояса обозначаются сдвигом относительно UTC: UTC+3, UTC+4. Шкала GMT уже никем не поддерживается. Все источники времени (хоть NTP-серверы в инете, хоть GPS-спутники, хоть наземные станции точного времени) сейчас поставляют время только в UTC. Использовать GMT вместо UTC уже давно неверно (ладно ещё в 70-х и 80-х годах прошлого века это делали по старой привычке, но в 21-м веке это уж совсем недопустимо). Тот факт, что в настройках времени Windows часовые пояса обозначены по непонятным причинам через GMT, — это фэйл их разработчиков и нарушение международных стандартов. Они почему-то тупили и исправили эту ситуацию только в Win7 и Win2008-R2 (там уже время обозначено через UTC).

Сделаем вывод текущего времени в браузере средствами js. Вывод времени должнен быть в real time. Если в операционной системе время настроено не верно, то и в браузере будет выводиться не верное время. Также будет указано смещение относительно времени сервера. Время сервера предварительно получаем с помощью php-функции date().

Простая обёртка для mysqli

Напишем простую обёртку для работы с mysqli.

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

Например, если мы извлекаем значение единственного поля, то нам НЕ нужно возвращать объект mysqli_result, объект ряда (пусть даже с единственным property), а нам нужно только одно значение. Для этого будут реализованы следующие функции:

  • select — выбирает любое количество рядов
  • selectRow — выбирает только один ряд
  • selectCol — выбирает значения только из определённого ряда и возвращает их
  • selectCell — выбирает только одно поле
  • query — для выполнения любых запросов, в том числе update

Окончания существительных при использовании их с числительными на php и js

В русском языке существительные с числительными могут быть в единственном и множественном числе: один арбуз, два арбуза, пять арбузов. Различные существительные при склонении имеют разные окончания. Но, при сопряжении с числительным, у существительного может быть всего 3 формы с различными окончаниями.

Нам нужно выводить в следующем виде:

  • 0 комментариев
  • 1 комментарий
  • 2 комментария
  • 3 комментария
  • ...
  • 6 комментариев
  • ...

Задача 1. Написать PHP-функцию, которая это реализует.

Задача 2. Написать JS-функцию, которая это реализует.

Приведение типов в JavaScript

Приведение типов может понадобиться, если нам нужно вернуть данные определённый типа. Банальный пример, нужно вернуть true, если элемент есть на странице, иначе false.

На jquery:

if($('#findID').length == 1))
    return true;
else
    return false;

Лично мне больше нравится вариант:

return toBoolean($('#findID').length);

 

НОВЫЕ ПОЛЬЗОВАТЕЛИ