СниппетыДата и время на PHP для любого часового пояса

У php такая особенность, что функции time(), mktime() и gmmktime() возвращают одно и то же значение. Используя функции date() или gmdate() можно получить время только в 2 часовых поясах: в локальном и в нулевом. Задачу решает нижеприведённая функция:

function tzDate($format, $offset)
{
    return date($format, time() - date("Z") + $offset * 3600);
}

Альтернативное корявое решение есть ещё на php.net, но это на любителя :)

СтатьиПростой способ установить Sun JDK на Debian

Как оказалось тривиальная задача, но по невнимательности я потратил на это больше часа. Хотя во многих случаях должно хватать и open-jdk, но например для PhpStorm’а необходим именно sun-jdk.

Проще всего это сделать через Synaptic

  1. System > Administration > Synaptic Package Manager
  2. В самом Synaptic’е: Settings > Repositories > Debian Software
  3. Ставим галки напротив DFSG-compatible Software with Non-Free Dependencies (contib) и Non-DFSG-compatible Software (non-free)
  4. Не забываем обновить информацию о репах (жмём Reload)
  5. В Quick search набираем sun-java6-jdk и устанавливаем все необходимые пакеты

Можно и через Терминал

su
nano /etc/apt/sources.list

У всех репозиториев дописываем contrib и non-free

apt-get update
apt-get install sun-java6-jdk

После установки осталось только выбрать sun-jdk по умолчанию в системе

update-alternatives --config java

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

СниппетыPHP функция транслита работающая с UTF-8

Наваял функцию. Проста как угол дома. Преимущество в том, что не использует ни iconv, ни mb_ функции. Сомнительное преимущество, правда?) Зато работать будет везде и в отличии от strtr свободно хавает кириллицу в utf-8

function getTranslit($str)
{
    $cyr = array('А',  'а',  'Б',   'б',   'В',  'в',  'Г',  'г',  'Д',  'д',
                 'Е',  'е',  'Ё',   'ё',   'Ж',  'ж',  'З',  'з',  'И',  'и',
                 'Й',  'й',  'К',   'к',   'Л',  'л',  'М',  'м',  'Н',  'н',
                 'О',  'о',  'П',   'п',   'Р',  'р',  'С',  'с',  'Т',  'т',
                 'У',  'у',  'Ф',   'ф',   'Х',  'х',  'Ц',  'ц',  'Ч',  'ч',
                 'Ш',  'ш',  'Щ',   'щ',   'Ъ',  'ъ',  'Ы',  'ы',  'Ь',  'ь',
                 'Э',  'э',  'Ю',   'ю',   'Я',  'я',  'Є',  'є',  'Ї',  'ї',
                 'І',  'і',  'Ґ',   'ґ');

    $lat = array('A',  'a',  'B',   'b',   'V',  'v',  'G',  'g',  'D',  'd',
                 'E',  'E',  'Yo',  'yo',  'Zh', 'zh', 'Z',  'z',  'I',  'i',
                 'J',  'j',  'K',   'k',   'L',  'l',  'M',  'm',  'N',  'n',
                 'O',  'o',  'P',   'p',   'R',  'r',  'S',  's',  'T',  't',
                 'U',  'u',  'F',   'f',   'H',  'h',  'C',  'c',  'Ch', 'ch',
                 'Sh', 'sh', 'Shh', 'shh', '"',  '"',  'Y',  'y',  '\'', '\'',
                 'E',  'e',  'Yu',  'yu',  'Ya', 'ya', 'Ye', 'ye', 'Yi', 'yi',
                 'I',  'i',  'G',   'g');

    return str_replace($cyr, $lat, $str);
}

Обратное преобразование посчитал ненужной фичей и отказался от него.