Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

Linux

Подписаться на эту рубрику по RSS

Для памяти: как лечить Apache2 Negotiation: discovered file(s) matching request

Просмотров: 5624Комментарии: 2
Linux

В общем, на новом проекте попытался открыть http://%SITE%/ и http://%SITE%/test

http://%SITE%/ - открывался отлично, при запросе же http://%SITE%/test выдает Premission Denided'.

cat ~/WWW/%SITE%/error.log | tail -20 дал следующее:

[error] [client 127.0.0.1] Negotiation: discovered file(s) matching request: /home/alexander/WWW/%SITE%/www/test (None could be negotiated)., referer: http://SITE/

Как оказалось, не один я такой. В частности, здесь решают похожую проблему (на английском):

http://uommo.blogspot.ru/2013/02/apache2-negotiation-discovered-files.html

Ну а если коротко, и по-русски, то действуем так:

sudo nano -w /etc/apache2/sites-available/%SITE%

Там ищем Options Indexes FollowSymLinks MultiViews

Удаляем MultiViews, то есть строка должна стать Options Indexes FollowSymLinks

Выходим, сохраняемся.

Перегружаем апач: sudo /etc/init.d/apache2 reload

Все. В смысле, заработало :)

Для памяти. Как лечить pcfg_openfile: unable to check htaccess file, ensure it is readable, referer:

Просмотров: 8821Комментарии: 3
Linux

В общем, создавая новый проект, налетел на такую ошибку: pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://site

Причем, не подгружались картинки из /themes/%THEME%/images - то есть выглядело это так: `все работает`, но изображения на странице - отсутствуют.

Лечится достаточно просто.

1) Смотрим лог:

cat ~/WWW/%SITENAME%/error.log | tail -20

Видим в нем следующее безобразие:

[crit] [client 127.0.0.1] (13)Permission denied: /home/alexander/WWW/%SITENAME%/www/themes/ap/images/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://site/

2) Проверяем, что за права на папку

ls -li ~/WWW/%SITENAME%/www/themes/ap/

Получаем что-то типа:

6966642 drwx------ 2 alexander alexander  4096 мая   19 20:40 images

3408302 -rw-r--r-- 1 alexander alexander 15709 мая   19 20:36 index.php

Внимательно рассматривая сию картину, понимаем: читать папку images `никому низя`

3) Меням картин мира

chmod +rx ~/WWW/ap-pavel/www/themes/ap/images/

ls -li ~/WWW/%SITENAME%/www/themes/ap/

Получаем:

6966642 drwxr-xr-x 2 alexander alexander  4096 мая   19 20:40 images

3408302 -rw-r--r-- 1 alexander alexander 15709 мая   19 20:36 index.php

Большой ПС.

Я не разбирался конкретно с тем, нужно ли давать всем +rx, просто сделал - так как локальная машина, доступ к локальным сайтам закрыт на уровне IPTables, сайты повешены на нестандартные порты... и по большому счету - думать, действительно ли нужно запускать скрипты в папке всем, просто не хотелось. На реальном хостинге - скорее всего добавлял бы +rx для группы, и +r для всех.

Переход от php::mysql к php::mysqli

Просмотров: 3482Комментарии: 0
Linux

Я писал, что при переходе на 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;

Skype, Ekiga, Viber

Просмотров: 3757Комментарии: 0
androidLinux

Начну, наверное с заявления: меня достал скайп на мобильном. Я не знаю, умеют ли программисты 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 vs Linux Mint 15

Просмотров: 2925Комментарии: 0
Linux

Поставил 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 - версия апача

Во всем остальном - особых отличий не заметил. Все настройки (пользователя и системы) штатно перенеслись (скрипт - архив - облако - скачивание - разархивация) и заработали.

Отдельный вопрос - синхронизация, но про нее как-нибудь позже.

Проверка орфографии в LibreOffice, Fbreader для Linux. Пост для памяти.

Просмотров: 2570Комментарии: 0
Linux

Пост для памяти. Но полезный :)

Fbreader для Linux: http://fbreader.org/content/fbreader-beta-linux-desktop

Проверка орфографии в ЛибреОфис: http://www.informatic.ru/libre-lite

И раньше я писал про конвертацию в fb2 через LibreOffice.

Guake Terminal

Просмотров: 2890Комментарии: 0
Linux

Ну, еще немного порассуждаю про Linux.

Пока я не перешел на Mint, я использовал gnome-terminal или LXDE terminal - в зависимости от того, в какой среде я работал. С gnome, кстати, ушел после того, как он обзавелся Unity - и до сих пор считаю, что это был самый неоднозначный шаг, напрочь перечеркнувший множество достоинства этой среды. Вообще говоря, для десктопа терминал нужен достаточно редко: операций, как правило, никаких - разве что раз в месяц что-то донастроить/улучшить... В общем, я "не парился", и использовал "что дадут". Правда, чисто с пользовательской точки зрения, меня раздражало то, что большинство терминалов не поддерживают Ctrl-C / Ctrl-V. Мелочь, конечно, но и без нее жить можно.

Так было до те пор, пока совершенно случайно не наткнулся на Guake Terminal. Который с момента пробной установки прочно поселился у меня на компе в качестве основного.

Что же в нем хорошего? Да сущие смелочи:

- умеет вызываться по нажатию клавиши (я повесил его на F12) "из коробки". Можно тут сказать - ну и что такого? Можно настроить вызов люой программы по любой клавише или их комбинации. Но, напомню - тут это идет "из коробки".

- умеет Ctrl-C / Ctrl-V.

- умеет внутри себя открывать множество вкладок - эмуляторов терминала, и гибко настраивать создание / удаление таких вкладок, плюс - также гибко настраивать перемещение между ними.

- вообще масса настроек - по умолчанию терминаал распахивается на половину экрана, но это можно поменять.

- множество настроек (для этого есть специальная утилита guake-prefs).

- чисто из "фишек" - настраиваемая прозрачность, возможность задать свой фон (изображение или цвет), свои цвета всего, что можно.

Общее впечатление - must have! однозначно.

Так как Guake есть в репозиториях уубунты, то ставится он элементарно:

$ sudo apt-get install guake

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