12 Сентября 2017 00:08

Veto files в Samba

В мемориз Linux Samba Mac OS

или как не дать маку и другим клиентам писать назойливые .DS_Store и Thumbs.db на файловый сервер.

Решается все достаточно просто - для этого существует директива veto files в конфиге самбы, она может быть установлена глобально или отдельно на каждую шару, вот пример из моего конфига:

veto files = /._*/.DS_Store/.T*/Thumbs.db
delete veto files = yes

И после рестарта самбы рекомендуется зачистить сервер от такого рода файлов командой

find /path/to/samba/shares \( -name ._* -or -name .DS_Store -or -name .T* -or -name Thumbs.db \) -delete

После этого проблема закрыта.

Справочный материал:

PS Так же на стороне мака можно запретить создание подобного рода файлов на сетевых носителях и прочих примонтированных устройствах командой

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

Но по отзывам это применимо не ко всем Mac OS, из быстро-гуглинга так и не понял у кого работает, а у кого нет, но официальный саппорт apple рекомендует именно такой способ.

30 Июня 2017 17:49

Декодируем \x## последовательности в строке

Про работу PHP Linux

Получая данные из unix консоли, в результате exec() и других вызовов, не латинские символы обычно экранируются с помощью \x##, где ## - это шестнадцатеричный код символа, но совсем не UTF8.

Например при получении текста сертификата средствами OpenSSL вместо русских будет что-то вроде этого:

C=RU, L=\xD0\x9C\xD0\xBE\xD1\x81\xD0\xBA\xD0\xB2\xD0\xB0,

Для того чтоб перевести это к читаемому виду в в консоли надо сделать:

<ваша команда> | sed 's@+@ @g;s@%@\\x@g' | xargs -0 printf '%b'

А для PHP вот такой код (на всякий случай, перед x стоит 4 обратных слеша):

preg_replace_callback('/\\\\x([0-9A-F]{2})/', function($a){ return pack('H*', $a[1]); }, $your_string);

В результате получаем русский текст:

C=RU, L=Москва,

20 Апреля 2017 19:00

Фиктивный sendmail для Linux

PHP Linux

Fake Sendmail code

Часто разработчикам требуется отправлять письма так, чтоб они никуда не уходили, а просто складывались в файловую систему для того чтоб можно было посмотреть что отправилось. Ровно для этих целей предлагается этот маленький скрипт.

Читать дальше...

02 Сентября 2016 15:12

Oracle Client вместе с PHP-FPM

PHP Oracle Linux

PHP-FPM

Достаточно часто встречается связка Nginx + PHP-FPM, которая заменяет собой привычный многим Apache + mod_php. А когда требуется добавить возможность работать с Oracle из PHP, то не подготовленный человек, а точнее привычный к настройке Oracle Client для PHP, работающего как модуль Apache, может столкнуться с непредвиденными проблемами, о решении которых я попробую рассказать.

Итак, у нас CentOS (в принципе на других Linux все будет аналогично) на который уже установлен Nginx, PHP, PHP-FPM и Oarcle Client + модуль php_oci8. На всякий случай, в этом можно убедиться командой:

# php -m | grep oci

Если вывод такой же, как в примере ниже, то модуль установлен:

# php -m | grep oci
oci8

Но при попытке использовать oci_connect(...) получаем вот такую ошибку:

Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories in /var/www/...

Когда все известные бубны с прописыванием ORACLE_HOME и LD_LIBRARY_PATH во все скрипты запуска и прочие перебраны, но все равно не работает, то простое решение кажется просто невозможным, но оно есть!

Читать дальше...

21 Марта 2016 17:09

Промышленная модель разработки средствами GIT

Про работу Linux Git

Итак, у нас для начала уже есть сервер на котором настроен gitolite по адресу git.example.com, на нем расположен репозиторий myrepo в котором есть две основные ветки master и develop.

Общий принцип разработки такой:

  1. При необходимости что-то доработать разработчик создает новую ветку из актуального состояния master
  2. Делает в ней доработку и вливает ветку в develop
  3. Проводится тестирование и если все хорошо, то ветка с доработкой вливается в master

Задача заключается в том, чтоб при изменениях в ветке develop они автоматически переносились в рабочую копию на хост develop.example.com, а изменения сделанные в master - на хост production.example.com.

Читать дальше...

Фильтр