Архив / 2011

Изменение регистра символов

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

Написал такую функцию:

function lower($str, $charset='UTF-8')
{
	//	Разбиение строки.
	$tmp = explode(' ', $str);

	if (is_array($tmp) && 0 < ($count = count($tmp)))
	{
		for ($i=0;$i<$count;$i++)
		{
			/**
			 * Для определения кириллицы используется тождественное сравнивание,
			 *  т.к. ctype_upper работает некорректно.
			 * 
			 */
			if ($tmp[$i] !== mb_strtolower($tmp[$i], $charset))
			{
				$tmp[$i] = mb_convert_case(mb_strtolower($tmp[$i], $charset), MB_CASE_TITLE, $charset);
			}
		}
	}
	$str = implode(' ', $tmp);
	return $str;
}

Использовать можно так:

$str = 'Записки WEB-ПРОГРАММИСТА';
echo lower($str); // Записки Web-Программиста

Перевод часов в HTC

Мой HTC Legend с Android 2.2 на борту не знал, что перевод времени на зимнее отменили. И, соответственно, в час X перевел время на час назад, получив его от оператора. Решилось это простым отключением автоматического обновления времени и переводом времени.

После этого начались проблемы с сортировкой сообщений. Все сообщения датировались часом ранее локального времени. Решить это можно изменением часового пояса на GMT+4.

Условия в if

В стандартах кодирования в разделе «форматирование блоков if then else» написано, что при сравнении константы необходимо ставить слева, т.е.

if (1 == $var)

Сегодня задумался по поводу сравнения с булевыми константами.
Как лучше писать

if (true === $var)

или использовать восклицательный знак (!)

if (!$var)

Разговор с ГАИ

Недавно мне исполнилось 25 лет и поэтому в субботу мы собирались с друзьями, дабы отметить это событие. В воскресенье, естественно, я не выпивал, т.к. в понедельник на работу.

Сегодня утром по пути на работу меня останавливают на посту для проверки документов. Езжу я по доверенности, которая лежит в документах в свернутом виде, и поэтому при проверке я достал ее и вручил отдельно. Узнав о том, что я езжу по доверенности инспектор предлагает мне пройти на пост, чтобы проверить машину. Ну мало ли. Проверят на угон и отпустят.
Читать полностью →

Раскладки в Fedora 14

После установки Fedora 14 в системе была установлена лишь одна раскладка — USA (dead keys). Добавил Rus и USA, а dead keys удалил. При каждой перезагрузке системы, благо это случается не часто, вновь появляется USA (dead keys).

Кто-нибудь сталкивался с такой проблемой?

Press Ok to enter site

Совершенно случайно обнаружил в своем блоге странный код, который, при заходе на отдельную запись, показывал confirm с текстом Press Ok to enter site.

Для решения этой проблемы необходимо удалить из файла single.php код

 < ?=bloqinfo($post->ID) ?>

и в файле functions.php удалить функцию bloqinfo.

Загрузка файлов с помощью PHP и cURL

При написании приложения для работы с vkontakte.ru Ads API потребовалось загружать данные на их сервер.
С помощью cURL и PHP делается это так:

< ?php
$ch = curl_init();
// URL для обработки.
curl_setopt($ch, CURLOPT_URL, $url);
// Не отправлять заголовки в браузер
curl_setopt($ch, CURLOPT_HEADER, false);
// Название браузера.
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
// Возвращать содержимое.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Заголовки для запроса.
$headers = array(
	'Expect:',
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Сообщаем, что это POST-запрос.
curl_setopt($ch, CURLOPT_POST, true);
// Данные POST-запроса.
$post = array(
	'file' => '@/home/izra/file.ext'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

// Получение ответа.
$return = curl_exec($ch);
// Закрытие соединения.
curl_close($ch);
?>

Ads API vkontakte.ru

Vkontakte.ru выпустил в свет API для управления рекламными объявлениями. Конечно, выпустил он его давно, но Ads API до сих пор имеет статус beta.

Документация не особо объемная, но все же немного помогает. При разработке решений на базе их API проблемы возникли сразу же.
Читать полностью →

exit(); vs die();

Почему-то всегда думал, что между die(); и exit(); есть какая-то небольшая разница. Но никогда не думал проверить это. Как оказалось разницы между этими конструкциями нет вообще.

Скорее всего die(); существует для того, чтобы программисты, работающие с Perl могли более легко перейти на PHP.

SSH авторизация по ключу

Для того, чтобы войти на удаленный сервер по ssh без ввода пароля можно создать ключевую пару (публичная и секретная).
Публичную часть можно скопировать на удаленный сервер в файл ~/.ssh/authorized_keys. Причем каждый публичный ключ должен находиться в одной строке.
Читать полностью →