Модуль 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);

 

Установка Memcached на Ubuntu для PHP и его использование в kohanaframework

Тут будет рассмотрена установка демона Memcached на систему c Ubuntu для его использования в php. А также использование memcache во фреймворке kohana.

Memcached (Memcache) - ПО, которое позволяет кэшировать данные в оперативной памяти сервера, на котором запущен демон memcached, и устанавливать время жизни кэша.

Для начала нужно установить службу Memcached:

sudo apt-get install memcached

По умолчанию, сервис Memcached запускается на порту 11211. Если захотите, порт можно изменить.

Установить php-расширение для работы с Memcache:

sudo apt-get install php5-memcache
 

Полезные горячие клавиши браузеров

Большинство браузеров по умолчанию поддерживают следующие комбинации:

 F5  - обновить браузер  
 ctrl + F5  (или ctrl + R ) - обновить страницу с очисткой кэша (смотря в каком браузере)   
 ctrl + T  - открыть новую пустую вкладку в браузере  
 ctrl + N  - открыть вкладку в новом окне (в другом экземпляре браузера) 
 ctrl + Shift + N — открыть браузер в режиме Инкогнито
 ctrl + L  - перейти к редактированию (установить фокус) адресной строки  
 ctrl + U  - открыть исходный HTML-код страницы
 ctrl + H  - посмотреть историю просмотренных страниц 
 ctrl + PageUp  - переместиться на одну вкладку вправо  
 ctrl + PageDown  - переместиться на одну вкладку влево  
 ctrl + F - поиск текста на странице 

 

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