Купил себе новый мобильный телефон

Целых три года верой и правдой прослужила мне моя любимая Motorola E398. Отличный звук, удобство меню, простота перепрошивки телефона – все устраивало. Но… запросы растут, и тормознутость Java-машины, отсутствие многозадачности послужили толчком к решению о смене «помошника». Я не сторонник дорогих и имидживых телефонов, поэтому бюджет на покупку был сразу жестко ограничен 10000 рублями. При этом мне был нужен именно смартфон с поддержкой многозадачности.
Но найти средства оказалось намного проще, чем выбрать конкретную модель… Перелопатив кучу форумов и перечитав гору отзывов – была выбрана фирма и ОС – Symbian от известной финской компании Nokia. В данной ценовой категории было несколько претендентов: 6120, N73, E51, 6220 и новая модель 5530. В конце концов выбор был сделан в пользу более свежей модели с обновленной ОС.

Поздравьте меня!
Я – счастливый обладатель чудеснейшего сенсорного смартфона Nokia 5530 XpressMusic!

Большое спасибо компании Nokia за такой качественный и доступный аппарат.

Posted in Без рубрики. Tags: . Комментарии отключены »

Номер недели в функции date()

Проблема

Всем известно, что символ W в параметре format заставляет функцию date()

…возвращить порядковый номер недели года по ISO-8601, первый день недели – понедельник (добавлено в PHP 4.1.0) Например: 42 (42-я неделя года)…
(цитата из описания функции)

Но нигде не написано, что если номер недели меньше 10, то он возвращается с ведущим нулем:

<?php
echo(date(‘W’, mktime(0, 0, 0, 2, 1, 2003))); // 1 фев 2003
?> // результат: 05

Решение

Т.к. функция date() возвращат строку, то необходимо сделать преобразование в целое любым удобным способом, например «прибавить к нулю».

Пример

<?php
$nn = 0 + date(‘W’, mktime(0, 0, 0, 2, 1, 2003)));
echo($nn); // результат: 5
?>

Posted in MySQL. Tags: , , . Комментарии отключены »

Не запускаются скрипты по расписанию

Проблема

При запуске из планировщика nCron простые скрипты работают, а скрипты со включениями других скриптов (include/require) не запускаются. Это происходит из-за разности «пути по умолчанию» (корня).
При запуске скрипта «с сайта» (через запрос браузера), корнем является папка /public_html и в include достаточно указать только имя скрипта (библиотеки) без путей.
При запуске из хронометра, корнем будет путь к самому nCron и, соответственно, дойдя до первого include, PHP не найдет необходимые файлы, и выполнение скрипта будет остановлено.

Решение

1 вариант:
Писать в include не только имя вызываемого скрипта, но и полный путь к нему от корня хостинга. Это решение не универсальное. При переезде на другой хостинг пути могут измениться и придется переписывать скрипты.
2 вариант:
Вызвать скрипт из планировщика не через запуск PHP, а через веб-вызов методом GET (как это делает браузер). Для этого есть специальная команда wget <url>. Это решение также не лишено недостатков. Так можно запускать только скрипты, доступные с сайта, и, кроме этого, их смогут запускать все (если, конечно, узнают как они называются).

Пример

1 вариант:
<?php
include(‘/home/mysite.ru/public_html/lib.php’);

?>

2 вариант:
(вызов из nCron)
wget -q -O /dev/null http://mysite.ru/work.php

Небольшие пояснения по параметрам wget:
-q отключает вывод текста при запуске команды (работа «в тихую»)
-O заставляет сохранить результат выполнеия скрипта в никуда (в ноль-устройство /dev/null)

Posted in PHP, Хостинг. Tags: , , . Комментарии отключены »

Отсутствие боковой панели (sidebar) при просмотре отдельной статьи

Проблема

В теме по умолчанию при просмотре отдельной статьи не отображается боковая панель (sidebar). Необходимо чтобы боковая панель была на каждой странице.

Решение

Добавить вызов get_sidebar() в файле ../wp-content/themes/default/single.php. Также придется изменить css-стиль div-контейнера с widecolumn на narrowcolumn.

Пример

В single.php находим и меняем строку:
<div id=»content» class=»widecolumn» role=»main»>
на:
<div id=»content» class=»narrowcolumn» role=»main»>
и вставляем строку:
<?php get_sidebar(); ?>
перед:
<?php get_footer(); ?>

Posted in WordPress. Tags: , , . Комментарии отключены »

Потеря значений переменной сессии

Проблема

Очередная  »особенность» PHP – оказывается, что если перед вызывом команды header() была изменена переменная сессии, то эти изменения не сохраняются!

Решение

Принудительно сохранить переменную сессии, вызвав session_commit(). Но как оказывется этого не достаточно. Необходимо также перегениерить  имя сессии командой session_regenerate_id().

Пример

session_start();
$_SESSION['var1'] = ‘val1′;
// …три волшебные команды
session_commit();
session_start();
session_regenerate_id();
// теперь можно редиректить
header(‘Location: ‘.$next_url);

Posted in PHP. Tags: , , , , . Комментарии отключены »

Подвисание скрипта

Проблема

Обнаружился интересный факт (хотя это описано на php.net, просто читать надо уметь): команда session_start() открывает (захватывает) сессию монопольно и блокирует файл сессии до тех пор, пока не закончится выполнение скрипта. Это значит, что если любой другой скрипт попытается открыть эту же сессию, то он(и) подвиснет в ожидании разблокировки (окончания работы первого скрипта).

Решение

Разблокировать (отпустить) сессию сразу же после окончания работы с ней.

Пример

session_start();
$_SESSION['var1'] = ‘value1′;
// другие команды, изменяющие переменную сессии
// …волшебная команда
session_commit();
// …тут длительное действие…
// и если необходимо еще раз изменить сессию
session_start();
$_SESSION['var2'] = ‘value2′;
// конец скрипта

Posted in PHP. Tags: , , . Комментарии отключены »

Вопросительные знаки вместо русских букв

Проблема

Столкнулся с проблемой – оказалось что на одном хосте мой скрипт (который отлично работал на других хостах) сохраняет в базу вместо русских букв «вопросики». Причем, если выполнить ту же команду через PhpAdmin – все работает нормально…

Решение

Нужно после каждого подключения к базе выполнить SQL-запрос:

SET NAMES cp1251.

Пример

// подключение к базе…
mysql_connect(dbhost, dbadmin, dbpass);
mysql_select_db(dbname);
// …волшебная команда
mysql_query(‘SET NAMES cp1251′);
// дальше как обычно

Posted in MySQL, PHP. Tags: , , . Комментарии отключены »

Начало дневника

Привет всем!

Вот, наконец, я и нашел время чтобы открыть свой дневник. Здесь я собираюсь описывать интересные факты из своей программистской практики.

Кратко о себе

Меня зовут Андрей, я системный администратор из одного крупного города на реке Волга. Мое хобби (а также и дополнительный доход) – программирование. Свою первую программу я написал на Assemberе еще в школе. На сегодняшний день владею всеми основными языками программирования. Сейчас, в основном, пишу на Object Pascal (Delphi/Lazarus) и на PHP. Свои продукты я всегда подписываю как AGLSoft (первые три буквы – это мои инициалы).

P.S. Как оказалось,  в сети уже есть компания с таким же именем AGLSoft (их офф. сайт на домене «.com»).
Заявляю, что никакого отношения к ним я никогда не имел и сейчас не имею, но и ничего менять в своей подписи не планирую!

Posted in Без рубрики. Комментарии отключены »