написал очередной рассказ - называется "Смотритель". Не сказал бы, что считаю его шедером (как и все свое "творчество"), о над чем поулыбаться там есть.
Так что на суд почтеннейшей публики: fb2 / fb2.zip / html / html.zip
Страничка с рассказом тут.Не знаю. кому как, а мне - рожденному в СССР, первое мая всегда видилось как день международной солидарности трудящихся. Значит, и первомайский пост - про работу. А чтобы не скучно - про то, как со стороны видится работа проектного менеджера.
Я писал, что при переходе на php > 5.5 вылезает рдостная ошибка "Deprecated: mysql_pconnect(): The mysql extension is deprecated and will
be removed in the future: use mysqli or PDO instead in %file_name%" (при условии, что работа с БД была реализована через расширение php::mysql). В общем, я не мудрствуя лукаво, переписал класс для работы c БД на функции рекомендованного расширения php::mysqli.
В принципе все просто, минут 10 - и вуаля, готов новый класс. Под него - обертка, и все. Все работает. Но! Вылезла одна проблема: при работе с mysqli кодировка слетает напрочь. В общем, как показала практика, лечится это несложно. Для лечения надо помнить, что:
1) под root коннкт будет идти в latin1. Соответственно - если коннект на домашней машине (как у меня) был под root - заводим "правильного" пользователя, даем ему нужные привелегии - и прописываем его.
2) сразу же после коннекта устанавливаем кодировку:
$db_id = mysqli_connect($db_host,$db_user,$db_pass,$db_name);
mysqli_set_charset($db_id, $set_names);
Для памяти:
Как в mysql создать пользователя с правами на базу
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON databasename.* TO 'user'@'localhost' WITH GRANT OPTION;
Хотя все должно подхватываться на лету, "чисто по привычке" рестартую mysql (ну вот такой я извращенец):
$ mysqld restart;
Начну, наверное с заявления: меня достал скайп на мобильном. Я не знаю, умеют ли программисты Microsoft оптимизировать свои Android-приложения, но скайп под андроид на текущий момент просто чудовищен: медленный, тупой, периодически вешает систему. Не, понимаю, что 4 ядра и 2 гига оперативки могут решить проблему... но у меня нет ни того, ни другого. Кроме того - под Linux клиент не обновлялся не рискну предположить сколько времени (из-за чего - проблемы со связью: в режиме чата все гуд, а в режиме звонка... ну, через раз, скажем так, особенно плохо ему от конференций). Так что начал смотреть в сторону альтернатив.
Первое, что нашел - Ekiga (http://www.ekiga.net). Программный телефон + SIP адрес. Плюсы - живет и работает под Linux, есть клиент под Windows. Тестирование показало, что все удобно.... если звонить и говорить. А если в режиме чата, то у меня не получалось :) Это раз. Два - не нашел клиента под Android. Три - коллеги, с которыми приходится общаться в командировках, не очень в курсе, что это за зверь такой.
Второе, что смотрел - чат Фейсбук. Тут ситуация обратная - чат-то есть... да вот звонить и говорить как-то "не получается". Нету такой функциональности. Хотя в ФБ есть вроде как все, кто нужен. (Хотя )
В общем, коллеги же подсказали классную вещь - Viber (http://www.viber.com). Это фактически Скайп-2, а скорее "убийца скайпа", с несколькими плюшками и особенностями. Во-первых, клиенты есть под все ОС (под Linux - только 64bit, об этом чуть позже). Во-вторых, он легкий (не жрет ресурсов телефона и с точки рения трафика). В зоне уверенного приема реально говорить по 3G интернет. В-третьих, он привязывается к номеру телефона - архиудобно (с моей точки зрения) - особенно, в рабочих моментах: добавил коллегу в телефонную книгу, у него есть Viber - звони! Как и в скайп, звонки внутри сети - бесплатны. С точки зрения мобильного трафика - очень даже, трфика жрет мало.
Определенной ложкой дегтя было то, что клиента Viber под Linux 32bit нет (только под 64bit и только в виде .deb пакета, без исходников). Скачанный по прямой ссылке "типа 32-bit клиент" не завелся. В итоге - скачл дистрибутив для Windows, поставил его под Wine - и вуаля, все очень чудесно работает. Кроме разве что того, что кнопки "выход" нет, как класса. Так что пришлось "выходить" из приложения остановкой Вайна. В остальном - полный восторг и без каких-либо нареканий.
Для памяти:
остановить Wine: /usr/bin/wineserver --kill
Поставил Linux Mint 16 (Petra) на домашний неттоп.
И все бы хорошо, но есть несколько "но":
1) Файлы локальных сайтов у меня лежат в домашней директории. Apache 2.4.6 с какого-то перепугу не смог их прочесть (не было доступа для пользователя www-data в директорию пользователя alexander).
Вообще говоря, есть несколько способов решения этой проблемы. Первый, ввести www-data в группу alexander и запускать apache из-под этой группы. Вторй, запускать apache под пользователем alexander, входящего в группу alexander. По идее, так как сайты локальный, и iptables начисто блокирует возможность работы с этими сайтами по локальной сети, то для ленивых второй способ предпочтительнее (минус одно действие).
Итого в файле /etc/apache2/envvars из-под рута вносим правки:
export APACHE_RUN_USER=alexander export APACHE_RUN_GROUP=alexander
2) От ошибки
PHP Warning: getdate() function.getdate]: It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function спасает явно прописать в /etc/php5/apache2/php.ini (из-под рута), в секции [Date]
date.timezone = Europe/Moscow
И да, не забыть рестартовать апапч:
sudo /etc/init.d/apache2 restart
3) А вот ошибка Deprecated: mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in %file_name% так просто не лечится. Дело в том, что начиная с php 5.5 поддержка базового расширения mysql из php "начинает убираться" - сначала предупреждающими сообщениями, а затем - и полностью.
В принципе, ничего страшного - переписать класс для работы с БД и все.
Для памяти:
/etc/init.d/apache2 -v - версия апача
Во всем остальном - особых отличий не заметил. Все настройки (пользователя и системы) штатно перенеслись (скрипт - архив - облако - скачивание - разархивация) и заработали.
Отдельный вопрос - синхронизация, но про нее как-нибудь позже.
Совершенно непонятным образом мой телефон (Fly IQ440 - я писал о нем) уронился в щель шахты лифта и упал на мусор, скопившийся в шахте, с 5 этажа.
Я редко делаю репосты, но этот не мог не сделать.