Настроить автоматическую загрузку демонов при старте Ubuntu - rcconf

Что такое демон? И чем демоны отличаются от сервисов services (служб, процессов)? Ответ - ничем не отличаются.

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

Исторически, демоны пошли из UNIX-подобных систем. А в ОС семейства Windows - это так называемые службы (Windows services), те самые, которые мы видим в диспетчере задач Windows. Иногда их неофициально называют демонами. Впрочем, и наоборот тоже.

Программа rcconf позволяет настроить запуск демонов: демоны, которые должны стартовать при загрузке системы и демоны, которые должны сидеть и ждать. Это самый простой способ добавлять/удалять службы с автозапуска в Linux.

Программа имеет простой консольный интерфейс и должна запускаться с правами root'а.

rcconf - настраиваем автозагрузку служб в linux

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

Установка sphinx на linux. Индексация и поиск.

Статья вводная, будет полезна новичкам, которые впервые хотят установить сфинкс, индексировать и искать контент, или тем, кто имеет небольшой опыт работы с sphinx.

Что такое sphinx?

Сфинкc — это бесплатный полнотекстовый поисковый движок, написанный на C++. С быстрой индексацией документов, стоп-словами, умеет интегрироваться с самыми известными БД: Mysql, MsSql, Oracle и тд, также имеет АПИ с популярными языками программирования PHP, Perl, Java и т.д. И! Имеет поддержку SQL синтаксиса.

Установка sphinx

sudo apt-get install sphinxsearch

Примеры 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
НОВЫЕ ПОЛЬЗОВАТЕЛИ